【轉】在RHEL5上,使用udev給SCSI裝置分配靜態裝置名

spectre2發表於2011-07-08
在紅帽企業版Linux 5上,怎樣使用udev給SCSI裝置分配靜態名字?
解決方法:

限制條件:

本文提到的udev規則只適用於紅帽企業版Linux 5。udev規則的語法在紅帽企業版Linux 5和4上稍有不同。適用於紅帽企業版Linux 4的規則可以參考 http://kbase.redhat.com/faq/FAQ_85_8082.shtm

1. 首先是要獲得SCSI裝置的WWID。例如,要獲得/dev/sdc的WWID, 執行命令:

 # scsi_id -g -u -s /block/sdc

將得到類似下面的輸出:

[root@rhel5 rules.d]# scsi_id -g -u -s /block/sdc
3600a0b800013275100000015427b625e

scsi_id命令發出一個SCSI INQUIRY指令給裝置,訪問vital product data (VPD)頁0x83的資料,那裡包含裝置的WWID和其他的資訊,或者頁0x80的資料,那裡包含單元序列號(unit serial number)。

scsi_id命令的執行結果(一長串字元)是裝置的WWID,當前對映到/dev/sdc(/sys/block/sdc)。每一條到裝置的路徑和裝置上的每一個分割槽的WWID都是相同的。裝置的WWID不會改變,即使將其他的裝置新增到系統或者從系統中刪除。但是,對映到/dev/sdc的裝置可能會改變。這就是為什麼需要建立一個靜態的裝置名。可以根據WWID建立裝置名。


2. 為命名裝置建立規則。建立檔案/etc/udev/rules.d/20-names.rules。在這個檔案裡,新增命名規則。規則的格式是:

KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="WWID", 
SYMLINK+="devicename%n"

這將使得系統檢查所有名字元合/dev/sd*的SCSI裝置,並且檢查指定的WWID。當發現匹配的裝置時,系統將會建立裝置節點/dev/devicename。如果裝置上有分割槽,第一個分割槽將會是/dev/devicename1,第二個分割槽是/dev/devicename2,等等。現在,將上面的WWID和devicename替換成之前獲得的真實WWID和想要的裝置名。在這個例子中,規則應該是:

KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", 
RESULT=="3600a0b800013275100000015427b625e", SYMLINK+="mydevice%n"

這條規則為WWID是3600a0b800013275100000015427b625e的SCSI裝置建立裝置名(一個符號連結)/dev/mydevice。裝置上的所有分割槽名將會是/dev/mydevice1,/dev/mydevice2 等等。

3. 使用udevtest測試這條規則:

[root@rhel5 rules.d]# udevtest /block/sdc | grep mydevice udev_rules_get_name: 
add symlink 'mydevice' udev_node_add: creating symlink '/dev/mydevice' to 'sdc'

如果在/dev/sdc上有分割槽,執行這條命令測試將為/dev/sdc1建立的裝置:

[root@rhel5 rules.d]# udevtest /block/sdc/sdc1 | grep mydevice udev_rules_get_name: 
add symlink 'mydevice1' udev_node_add: creating symlink '/dev/mydevice1' to 'sdc1'

4. 最後,執行start_udev使得udev建立這些裝置。

start_udev

確認裝置/dev/mydevices*已經被建立,並且連結到/dev/sdc*。只要WWID是3600a0b800013275100000015427b625e的裝置被紅帽企業版Linux檢測到,那麼它將被udev固定地對應到/dev/mydevice。

轉自:http://blog.sina.com.cn/s/blog_4c165ed30100ddn9.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14184018/viewspace-701668/,如需轉載,請註明出處,否則將追究法律責任。

相關文章