各位大佬,最近遇到一件自己無法獨立解決的問題,所以來請教大家,希望能夠得到答案!
服務器上使用兩張硬碟組了1個raid0,剩下幾塊盤都是和raid控制器直連的,反復重啟后會出現盤符亂序的情況:
比如原本是sda的硬碟變成了sdd。
針對這個問題我嘗試使用了udev進行盤符系結:
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/%k", RESULT=="3600508e00000000016154eee56eab00e", NAME="asm-disk1", MODE="0660"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/%k", RESULT=="35000c5005616feeb", NAME="asm-disk2", MODE="0660"
結果提示NAME不能用于修改內核模塊名稱。查閱資料后得知與2.6內核不同,3.10內核中NAME賦值鍵目前只能用于網口名的命名,已經無法對硬碟進行命名。
查閱3.10內核下udev手冊:man udev,了解到內核提供了新的方法:創建symlink。
于是通過修改rules檔案,設定匹配方式為scsi_id,已經成功為每個硬碟創建了symlink鏈接:
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/%k", RESULT=="3600508e00000000016154eee56eab00e", SYMLINK+="asm-disk1", MODE="0660"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/%k", RESULT=="35000c5005616feeb", SYMLINK+="asm-disk2", MODE="0660"
但是現在還是不知道如何實作盤符的系結!!查了很多資料發現沒有一個講symlink具體是什么、對盤符命名有什么作用的,所以想要請教大家
1、symlink到底能干嘛?
2、如何實作盤符的系結、固定?
uj5u.com熱心網友回復:
目前來說,LSI/Broadcom的RAID卡是不保證盤序的,因為RAID資訊可能需要從硬碟中獲取,無法確保RAID組哪一個先準備好,基本上是誰先回應了test unit ready,誰盤序在前。HBA卡是可以保證排序的,但是需要修改啟動引數。你試一下scsi_mod.scan=sync這個啟動引數,看看能不能讓直連盤保證順序。
RAID盤的一般規則是排在直連后面,除非設定成了啟動盤。
用UDEV可以保證固定盤符,但是在大規模資料中心中又會涉及到不時會有硬碟損壞,這樣你的UDEV規則就得隨著盤損壞而修改的麻煩。
uj5u.com熱心網友回復:
您好,感謝您回復!
scsi_mod.scan=sync我之前已經設定過,同步掃描方式對于板載SATA控制器是可以實作reboot測驗100圈以上盤符不亂序的,然而對于3008控制器IR模式,仍然會出現盤符亂序問題。所以我才決定使用udev系結的方法進行盤符固定。
如您所說,UDEV可以保證固定盤符,那具體應該怎么實作呢?
網上很多相關文章,有的在rhel6系統下,直接使用NAME=**在rules檔案中進行命名,但2.6到3.10內核的變化導致NAME= 這一賦值鍵不能再對塊設備進行命名,所以該方法對用rhel7的我來講是無效的。
還有的文章生成了symlink符號鏈接,就說實作了盤符系結,針對這個說法我存在很大的不解與懷疑:
如果盤符名稱發生變化,symlink確實不會改變,因為我的rules檔案進行匹配時沒有用盤符明進行匹配,而是使用scsi_id,所以無論盤符怎么變化,symlink的指向都是不會變的。但是,symlink只是sda/sdb等設備的快捷方式,怎么就實作了盤符固定的呢?盤符的分配和symlink是無關的呀
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/121256.html
標籤:系統維護與使用區
