【轉】在RHEL5上,使用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。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14184018/viewspace-701668/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- rhel 7.x 使用 udev scsi rules 配置裸裝置dev
- 使用 udev 高效、動態地管理 Linux 裝置檔案devLinux
- 使用udev高效、動態的管理Linux裝置檔案devLinux
- linux udev裸裝置繫結Linuxdev
- 裝置分配與回收
- 使用adb如何批量給裝置安裝apkAPK
- AssetBundle在移動裝置上丟失
- 在 Android 裝置上搭建 Web 伺服器AndroidWeb伺服器
- MobileBERT:一個在資源有限裝置上使用的BERT模型模型
- Linux裝置名稱的查詢Linux
- Microsoft WPBT漏洞可讓黑客在Windows裝置上安裝rootkitROS黑客Windows
- 使用 Syncthing 在多個裝置間同步檔案
- 乾貨 | 裝置快速上雲,輕鬆搞定裝置與雲端通訊
- 裝置地址
- 字元裝置驅動 —— 字元裝置驅動框架字元框架
- 在Linux中,什麼是裝置驅動程式?如何安裝和解除安裝裝置驅動程式?Linux
- 怎麼給手持裝置新增特殊樣式?
- 滅火器充裝裝置
- 【轉載】WSL 如何連線USB裝置
- 裝置id openpolit
- 網路裝置
- 裝置適配
- modbustcp封裝使用獲取裝置資料示例TCP封裝
- IO裝置在OS中的權衡
- 使用者不是外圍裝置
- 手把手教你在 SuperEdge 上用 EdgeX Foundry 接入 IoT 裝置
- 在 Mac 上通過 VirtualBox 將 Windows 10 安裝到可移動裝置中MacWindows
- 實用的 IEC61850 裝置裝置模擬器
- 如何透過裝置基站獲取裝置經緯度
- 在不同裝置上如何使用代理IP:桌面端、移動端和瀏覽器瀏覽器
- 2023年印度智慧裝置使用者對晶片組在塑造智慧裝置體驗感受(附原資料表) 晶片
- docker容器中佈置靜態網站Docker網站
- Profinet轉ModbusTCP:從站裝置轉換與整合案例TCP
- 在 macOS 系統中使用串列埠轉藍芽介面卡配置網路裝置Mac串列埠藍芽
- codemirror diff-match-path不同裝置、不同裝置狀態下的對比結果不穩定
- ubuntu 為USB串列埠繫結固定的裝置名Ubuntu串列埠
- 如何使用同一BluetoothGatt連線不同的android應用程式在相同的裝置上?Android
- 在Android裝置上使用極光推送id重複的原因分析和解決辦法Android
- 自帶裝置(BYOD)