有沒有一種方法可以可靠地判斷 RAID 中的哪個實體磁碟機與作業系統為其指定的軟體裝置名稱相關?
我在連接到 PC 的集線器上有一個 RAID5 消費級 USB 磁碟陣列(以及一個備用磁碟)。這是一個廉價的 NAS。
/proc/mdstat
每個設備都透過其設備名稱來識別(例如sdb
,sdc
)。
據我所知,Linux 設備名稱取決於啟動時讀取硬體的順序。因此,我不應該在每個驅動器上貼上帶有這些設備名稱的貼紙,因為sdc
今天可能是sdb
將來。
如果發生故障,我可以透過停止 RAID 來測試當前的設備名稱映射,然後dmesg -W
逐一刪除進行查看,直到透過排除過程刪除故障設備。但還有更好的辦法嗎?
我發現我無法單獨標記 RAID 成員 - 它們都必須共用陣列的名稱:https://wiki.archlinux.org/title/persistent_block_device_naming#by-label
我已經看過,ledctl
但這不適用於消費性驅動器:https://linux.die.net/man/8/ledctl
答案1
用於lsblk -S
將每個裝置對應到磁碟的序號(如果新增則為 WWN -o +wwn
)。
由實體USB連接埠顯示的USB集線器路徑lsusb.py -ci
或udevadm info /dev/sdd | grep ID_PATH=
應該具有到實體USB連接埠的固定映射,例如在我的伺服器上「1-1.1」和「1-1.2」連接到前面板連接埠。外部集線器上的連接埠順序可能並不總是顯而易見,但一旦您弄清楚,它仍然應該保持靜態。
LED 的替代方案: sg3_utils 中的scsi_start
/scsi_stop
腳本可以使 HDD 按需旋轉或旋轉(無需實際斷開它們的連接)。如果陣列空閒,請停止所有磁碟並逐一旋轉它們,直到將所有盤櫃與 HDD 序號相符。
答案2
我寫了一個答案,但後來發現使用 lsblkUUID_SUB
值它不是一個解決方案。最近的一次磁碟故障事件表明,UUID_SUB
似乎並沒有像我最初想像的那樣附加到磁碟分割的超級區塊。
因此,我將刪除我原來的答案,並將其留給其他人投票刪除。
迄今為止,該問題唯一經過驗證的答案是使用裸磁碟,其序號在驅動器外殼本身上可見,而不是在可能不同的外殼上。然後用於lsbk -S
確定在發生故障時要處理哪個實體驅動器。