Linux RAID で物理ディスクを識別する方法

Linux RAID で物理ディスクを識別する方法

RAID 内のどの物理ドライブが OS によって割り当てられたソフトウェア デバイス名に関連しているかを確実に判別できる方法はありますか?

私は、PC に接続されたハブに、消費者向け USB ディスク (および予備 1 台) の RAID5 アレイを持っています。これは安価な NAS として機能します。

各デバイスは、/proc/mdstatデバイス名 (例sdb: sdc) によって識別されます。

私の知る限り、Linux のデバイス名は、起動時にハードウェアが読み取られる順序に依存します。したがって、たとえば、デバイス名を記載したステッカーを各ドライブに貼るべきではありません。今日が未来にsdcなるかもしれないからです。sdb

障害が発生した場合、RAID を停止し、dmesg -W消去法で障害のあるデバイスを削除するまで 1 つずつ削除しながら、現在のデバイス名マッピングをテストできます。しかし、もっと良い方法があるでしょうか?

RAID メンバーに個別にラベルを付けることはできないようです。メンバーはすべてアレイの名前を共有する必要があります。https://wiki.archlinux.org/title/persistent_block_device_naming#ラベルによる

調べてみましたledctlが、コンシューマー向けドライブでは動作しません。出典: linux.die.net

答え1

lsblk -S各デバイスをディスクのシリアル番号 (または を追加した場合は WWN) にマッピングするために使用します-o +wwn

lsusb.py -ciまたはによって表示される USB ハブ パスはudevadm info /dev/sdd | grep ID_PATH=、物理 USB ポートに固定マッピングされている必要があります。たとえば、私のサーバーでは、「1-1.1」と「1-1.2」がフロント パネル ポートに接続されています。外部ハブのポートの順序は必ずしも明らかではありませんが、一度把握してしまえば、静的なままであるはずです。

LED の代替: sg3_utils のscsi_start/scsi_stopスクリプトを使用すると、必要に応じて HDD をスピンアップまたはスピンダウンできます (実際に切断する必要はありません)。アレイがアイドル状態の場合は、すべてのディスクを停止し、すべてのエンクロージャが HDD のシリアル番号と一致するまで、ディスクを 1 つずつスピンアップします。

答え2

回答を書きましたが、その後、lsblkUUID_SUB値を使用するのは解決策ではないことがわかりました。最近のディスク障害イベントでは、UUID_SUB最初に考えていたようにディスク パーティションのスーパーブロックに接続されていないようです。

したがって、私は元の回答を削除し、削除の投票を他の人に任せることにします。

これまでのところ、この質問に対する唯一の証明された答えは、シリアル番号がドライブのケース自体に表示され、外側のエンクロージャに表示されていないベア ディスクを使用することです。外側のエンクロージャは異なる可能性があります。次に、lsbk -S障害が発生した場合にどの物理ドライブを処理するかを判断します。

関連情報