$lspci
這個 SATA Controller有 6-port
PHY ID: 1,2,3,4 是 SATA 6G
PHY ID: 5,6 是 SATA 3G
udevadm Source Code:
How To Compiler udev
===========================================================
使用 udevadm 列出 HDD 連結到那個 SATA Port
下面是SATA Port 1,2,3,4 連接HDD; SATA Port 5 連接 CD-ROM
可以很容易看出來 是從 Host 0 排到 5
也就是 SATA Controller的 PHY ID: 1,2,3,4 連接HDD; PHY ID:5 連接 CD-ROM
$ udevadm info -q all -n /dev/sda | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda
$ udevadm info -q all -n /dev/sdb | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb
$ udevadm info -q all -n /dev/sdc | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sdc
$ udevadm info -q all -n /dev/sdd | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata4/host3/target3:0:0/3:0:0:0/block/sdd
$ udevadm info -q all -n /dev/sde | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata5/host4/target4:0:0/4:0:0:0/block/sde
$ udevadm info -q all -n /dev/sr0 | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata6/host5/target5:0:0/5:0:0:0/block/sr0
# udevadm info -q all -n /dev/sda
===========================================================
下面是把 SATA Port 3的HDD 實體移除
只剩下 SATA Port 1,2,4 連接HDD; PHY-5 連接 CD-ROM
SATA Port 3 是空的, 沒有接 HDD
# udevadm info -q all -n /dev/sda | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda
# udevadm info -q all -n /dev/sdb | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb
# udevadm info -q all -n /dev/sdc | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata4/host3/target3:0:0/3:0:0:0/block/sdc
# udevadm info -q all -n /dev/sdd | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata5/host4/target4:0:0/4:0:0:0/block/sdd
# udevadm info -q all -n /dev/sde | grep DEVPATH
device node not found
# udevadm info -q all -n /dev/sr0 | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata6/host5/target5:0:0/5:0:0:0/block/sr0
表示這個 Host X 就是連接到 PHY ID
===========================================================
下面是把 SATA Port 2的HDD 實體直接插到 SATA Port 3只剩下 SATA Port 1,3,4 連接HDD; PHY-5 連接 CD-ROM
SATA Port 2 是空的, 沒有接 HDD
root@jun-ubuntu-prg:~# udevadm info -q all -n /dev/sda | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda
root@jun-ubuntu-prg:~# udevadm info -q all -n /dev/sdb | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sdb
root@jun-ubuntu-prg:~# udevadm info -q all -n /dev/sdc | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata4/host3/target3:0:0/3:0:0:0/block/sdc
root@jun-ubuntu-prg:~# udevadm info -q all -n /dev/sdd | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata5/host4/target4:0:0/4:0:0:0/block/sdd
root@jun-ubuntu-prg:~# udevadm info -q all -n /dev/sr0 | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata6/host5/target5:0:0/5:0:0:0/block/sr0
root@jun-ubuntu-prg:~# udevadm info -q all -n /dev/sde | grep DEVPATH
===========================================================
如果主機版的 BIOS 的 SATA Port Hot Plug 有打開可以將原來 SASATA Port 2 是空的, 不關電狀態下, 直接插上一顆 HDD
這樣 SATA Port 2 會自動連接
root@jun-ubuntu-prg:~# udevadm info -q all -n /dev/sda | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda
root@jun-ubuntu-prg:~# udevadm info -q all -n /dev/sdb | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sdb
root@jun-ubuntu-prg:~# udevadm info -q all -n /dev/sdc | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata4/host3/target3:0:0/3:0:0:0/block/sdc
root@jun-ubuntu-prg:~# udevadm info -q all -n /dev/sdd | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata5/host4/target4:0:0/4:0:0:0/block/sdd
root@jun-ubuntu-prg:~# udevadm info -q all -n /dev/sde | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sde
root@jun-ubuntu-prg:~# udevadm info -q all -n /dev/sr0 | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata6/host5/target5:0:0/5:0:0:0/block/sr0
每一個 Port 的 Hot Plug 都是獨力的
也就是說Hot Plug打開後
SATA Controller 只要通電開機會
SATA PHY都會不停的一直發出偵測訊號
又因為是空 Channel 訊號, 對面的無人接收
這會造成那個Channel的壽命減短
(一個類比訊號專長同事告知的, 但不知是否真的是這樣)
可以使用 udevadm監控Hot Plug的狀態
$ udevadm monitor
也可以參考這篇
http://blog.csdn.net/fjb2080/article/details/5009791
這還一篇 Windows 版本
http://blog.csdn.net/fjb2080/article/details/5428589
Mode 1: 已連接的 HDD 列表
Mode 2: 移除 HDD
Mode 3: 重新連接HDD
重新連接上HDD後, Target ID會自動增加, 並非原來的 Target ID
/dev/sdx 也和原來的不一樣
也就是說 當發生HOT-PLUG後, Device 一定要重新 scan一次
===========================================================
連接 HDD 時
移除 HDD 時
===========================================================
請注意, MAX Target ID 並不是只有 254, 可以一直增加
如果有兩片以上的 SATA Controller
想要分辨 HDD 是那一片的
請參考 lspci 或者 lshw 程式
===========================================================
如果是 LSI SAS Controler 則不適用這種方法
$ udevadm info -q all -n /dev/sdb | grep DEVPATHE: DEVPATH=/devices/pci0000:00/0000:00:01.0/0000:01:00.0/host4/port-4:0/end_device-4:0/target4:0:0/4:0:0:0/block/sdb
$ udevadm info -q all -n /dev/sdc | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:01.0/0000:01:00.0/host4/port-4:1/end_device-4:1/target4:0:1/4:0:1:0/block/sdc
要使用 udevadm 列出 HDD 連結到那個 SAS Port
請看用另一篇 lsiutil 的文章
沒有留言:
張貼留言