今天測試部匯報了一個設備出現問題:” 8個1g電口 +8個1g光口+4個10g bp光口+4個10g非bp光口,其中有4個口沒有up起來,ifconfig看不到接口“
拿到這個問題我就在想:“怎樣確定是不是只有4個網口沒有up?ifconfig 只是一個查看內核虛擬設備,那么物理網卡設備呢? 怎樣確定這個4個口就是測試人員所說的10g非bp光口?
æÙ---所以為了弄清楚上述問題,需要確認什么信息,使用什么工具作為輔助?----€
物理拓撲:簡要情況就是 網口插入PCIe板卡
所以首先要確認PCIe板卡是否被識別!
那么有什么工具幫助查看呢?
linux 的lspci命令可以幫助查看
-
執行lspci 命令如下:lspci |grep Eth
03:00.0 Ethernet controller: Intel Corporation Device 1521 (rev 01) 03:00.1 Ethernet controller: Intel Corporation Device 1521 (rev 01) 03:00.2 Ethernet controller: Intel Corporation Device 1521 (rev 01) 03:00.3 Ethernet controller: Intel Corporation Device 1521 (rev 01) 04:00.0 Ethernet controller: Intel Corporation Device 1521 (rev 01) 04:00.1 Ethernet controller: Intel Corporation Device 1521 (rev 01) 04:00.2 Ethernet controller: Intel Corporation Device 1521 (rev 01) 04:00.3 Ethernet controller: Intel Corporation Device 1521 (rev 01) 07:00.0 Ethernet controller: Intel Corporation Device 1521 (rev 01) 07:00.1 Ethernet controller: Intel Corporation Device 1521 (rev 01) 07:00.2 Ethernet controller: Intel Corporation Device 1521 (rev 01) 07:00.3 Ethernet controller: Intel Corporation Device 1521 (rev 01) 08:00.0 Ethernet controller: Intel Corporation Device 1521 (rev 01) 08:00.1 Ethernet controller: Intel Corporation Device 1521 (rev 01) 08:00.2 Ethernet controller: Intel Corporation Device 1521 (rev 01) 08:00.3 Ethernet controller: Intel Corporation Device 1521 (rev 01) 0a:00.0 Ethernet controller: Intel Corporation Device 1533 (rev 03) 0b:00.0 Ethernet controller: Intel Corporation Device 1533 (rev 03) 0c:00.0 Ethernet controller: Intel Corporation Device 1572 (rev 02) 0c:00.1 Ethernet controller: Intel Corporation Device 1572 (rev 02) 0c:00.2 Ethernet controller: Intel Corporation Device 1572 (rev 02) 0c:00.3 Ethernet controller: Intel Corporation Device 1572 (rev 02)
可以看到 PCIe 數目不對,可知為PCIe板卡沒有被識別到
這次主要想說的問題是:
0c:00.3 Ethernet controller: Intel Corporation Device 1572 (rev 02)
這些數值是什么意思??
以及lspci 還能查看那些信息; 除了lspci 還有哪些工具可以幫助分析問題
先看lspci幫助:lspci - 列出所有PCI設備
-v 使得 lspci 以冗余模式顯示所有設備的詳細信息。 -vv 使得 lspci 以過冗余模式顯示更詳細的信息 (事實上是 PCI 設備能給出的所有東西)。這些數據的確切意義沒有在此手冊頁中解釋,如果你想知道更多,請參照 /usr/include/linux/pci.h 或者 PCI 規范。 -n 以數字形式顯示 PCI 生產廠商和設備號,而不是在 PCI ID 數據庫中查找它們。 -x 以十六進制顯示 PCI 配置空間 (configuration space) 的前64個字節映象 (標准頭部信息)。此參數對調試驅動和 lspci 本身很有用。 -xxx 以十六進制顯示所有 PCI 配置空間的映象。此選項只有 root 可用,並且很多 PCI 設備在你試圖讀取配置空間的未定義部分時會崩潰 (此操作可能不違反PCI標准,但是它至少非常愚蠢)。 -b 以總線為中心進行查看。顯示所有 IRQ 號和內存地址,就象 PCI 總線上的卡看到的一樣,而不是內核看到的內容。 -t 以樹形方式顯示包含所有總線、橋、設備和它們的連接的圖表。 -s [[<bus>]:][<slot>][.[<func>]] 僅顯示指定總線、插槽上的設備或設備上的功能塊信息。設備地址的任何部分都可以忽略,或以“*”代替 (意味着所有值)。所有數字都是十六進制。例如:“0:”指的是在0號總線上的所有設備;“0”指的是在任意總線上0號設備的所有功能塊;“0.3”選擇 了所有總線上0號設備的第三個功能塊;“.4”則是只列出每一設備上的第四個功能塊。 -d [<vendor>]:[<device>] 只顯示指定生產廠商和設備 ID 的設備。 這兩個 ID 都以十六進制表示,可以忽略或者以“*”代替 (意味着所有值)。 -i <file> 使用 <file> 作為 PCI ID 數據庫而不是使用默認的 /usr/share/hwdata/pci.ids。 -p <dir> 使用 <dir> 作為包含 PCI 總線信息的目錄而不是使用默認的目錄 /proc/bus/pci。 -m 以機器可讀的方式轉儲 PCI 設備數據 (支持兩種模式:普通和冗余),便於腳本解析。
常用問題&命令:
首先在x86系統中PCIe支持256個Bus, 每條Bus支持32個Device, 每個Device支持8個Function,所以PCIe設備關鍵信息組成為:DBDF(Domain,Bus,Deivce,Function)
PCIe的拓撲和Linux的PCIe ID
lspci –vt
所以使用lspci -vt 可以查看PCIe拓撲;根據拓撲就可以看出,接入幾個板卡,每個板卡下面接入了多少設備
dmidecode –t slot”命令查看PCIE Slot的信息
dmidecode,讀取DMI表中的數據來提取硬件信息,可查看bios,cpu,memory等信息
結合/proc和/sys可以查詢硬件使用的驅動信息