数日間髪が抜け始めた問題を扱っています。ここで誰かが私の問題を解決できるアイデアがあることを願っています。 :-).
24台の3.5インチドライブを備えた大型ストレージサーバーがあります。ドライブは、ITモードで動作する3つのLSI 9211-8iコントローラに分散されています。 2つの
1TBがあります。マザーボードSATAポート@ソフトウェアraid-1(mdraid)にOSドライブとして直接接続されているSSDは、ドライブの永続名を除いて正常に機能します。
何らかの理由で再起動するたびに、マザーボードに直接接続されているSSDドライブの名前がほとんど変わります。時には名前が「sda + sdb」、次回の再起動時に名前が「sdy + sdz」、または時にはアルファベットの途中にランダムな文字が表示されることがあります。ホットスワップドライブベイラベルのため、これは非常に面倒です。 LSIコントローラに接続されている24台のドライブではこれは発生しません。常に正しい順序になっています。
OS SSDが常に「sda + sdb」または「sdy + sdz」として識別されるようにしたい。名前が静的で再起動しても変更されない限り、どの名前なのか気にしません。
「/etc/udev/rules.d/01-disk-bay.rules」でカスタムudevルールを設定してみました。これらのルールは機能しないか、何も変更されないため、OSはルールを無視します。私が何か間違っている可能性があります。
このファイルの内容は
########## Map SATA 0 to /dev/sdy ##############
KERNEL=="sd?", SUBSYSTEM=="block", DEVPATH=="*1f.2/ata1/host*", NAME="sdy", RUN+="/usr/bin/logger My disk ATTR{partition}=$ATTR{partition}, DEVPATH=$devpath, ID_PATH=$ENV{ID_PATH}, ID_SERIAL=$ENV{ID_SERIAL}", GOTO="END_20_PERSISTENT_DISK"
KERNEL=="sd?*", ATTR{partition}=="1", SUBSYSTEM=="block", DEVPATH=="*1f.2/ata1/host*", NAME="sdy%n", RUN+="/usr/bin/logger My partition parent=%p number=%n, ATTR{partition}=$ATTR{partition}"
########## Map SATA 1 to /dev/sdz ##############
KERNEL=="sd?", SUBSYSTEM=="block", DEVPATH=="*1f.2/ata2/host*", NAME="sdz", RUN+="/usr/bin/logger My disk ATTR{partition}=$ATTR{partition}, DEVPATH=$devpath, ID_PATH=$ENV{ID_PATH}, ID_SERIAL=$ENV{ID_SERIAL}", GOTO="END_20_PERSISTENT_DISK"
KERNEL=="sd?*", ATTR{partition}=="1", SUBSYSTEM=="block", DEVPATH=="*1f.2/ata2/host*", NAME="sdz%n", RUN+="/usr/bin/logger My partition parent=%p number=%n, ATTR{partition}=$ATTR{partition}"
LABEL="END_20_PERSISTENT_DISK"
SSDの識別情報は次のとおりです。最初のSSD(現在「sda」と表示)
# udevadm info --name /dev/sda
P: /devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda
N: sda
S: disk/by-id/ata-Crucial_CT1024MX200SSD1_1619128D4E19
S: disk/by-id/wwn-0x500a0751128d4e19
S: disk/by-path/pci-0000:00:1f.2-ata-1
E: DEVLINKS=/dev/disk/by-path/pci-0000:00:1f.2-ata-1 /dev/disk/by-id/wwn-0x500a0751128d4e19 /dev/disk/by-id/ata-Crucial_CT1024MX200SSD1_1619128D4E19
E: DEVNAME=/dev/sda
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda
2番目のSSD(現在は「sdb」と表示されます)。
# udevadm info --name /dev/sdb
P: /devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb
N: sdb
S: disk/by-id/ata-Crucial_CT1024MX200SSD1_1619128B9EC5
S: disk/by-id/wwn-0x500a0751128b9ec5
S: disk/by-path/pci-0000:00:1f.2-ata-2
E: DEVLINKS=/dev/disk/by-id/wwn-0x500a0751128b9ec5 /dev/disk/by-id/ata-Crucial_CT1024MX200SSD1_1619128B9EC5 /dev/disk/by-path/pci-0000:00:1f.2-ata-2
E: DEVNAME=/dev/sdb
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb
ここにこのようなことを処理する方法を経験した人はいますか? :-)
答え1
/dev/sdX
長い間ドライブの安定した識別子ではありませんでした(実際にはおそらくそうではありませんでした)。検索順に展開され、複数のコントローラを並列に検索します。それだけでなく、運転手がバスから降りて帰ると、通常は新しい手紙が届きます。または、時には故障したドライブを交換する場合(どちらもmd-raidの「失敗した」エントリなど、以前のドライブを参照しているために発生します)。
そこはい代わりに安定した識別子を使用してください。出力udevadm info
結果は次のとおりです。
S: disk/by-id/ata-Crucial_CT1024MX200SSD1_1619128D4E19
S: disk/by-id/wwn-0x500a0751128d4e19
これら2つの一意の識別子運転する別のポートに移動しても同じです。
S: disk/by-path/pci-0000:00:1f.2-ata-1
これは識別ポートドライブが挿入される場所です。ドライブを交換すると、新しいドライブにもこの識別子が付与されます。
たとえば、そのポートのドライブのSMARTステータスを確認するには、次のようにしますsmartctl -x /dev/disk/by-path/pci-0000:00:1f.2-ata-1
。いいえ /dev/sda
。誰かが別のポートに移動しても特定のドライブを確認するには、を使用できますsmartctl -x /dev/disk/by-id/wwn-0x500a0751128d4e19
。
(必要に応じてudevルールを使用して追加の短い名前を設定できます。ルールでSYMLINK+=
これを実行できます。例を参照してください。/lib/udev/rules.d/60-persistent-storage.rules
ただし、設定ファイルにのみ存在する場合は通常短い名前は必要ありません。)