web-dev-qa-db-ja.com

/ dev / disk / by-pathを使用したUDEVでの永続ドライブラベルの作成

私は新しいBackBlazeポッドを持っています( BackBlaze Pod 2. )。

45台の3TBドライブがあり、最初にセットアップしたときは、/ dev/sdaから/ dev/sdz、/ dev/sdaaから/ dev/sdasというラベルが付けられていました。

Mdadmを使用して、3つの非常に大きな15ドライブRAID6アレイをセットアップしました。

ただし、数週間前の最初のセットアップ以降、いくつかのハードドライブで障害が発生しました。それらを交換しましたが、不足しているドライブが見つからないため、アレイが文句を言っています。ディスクを一覧表示すると...

ls -l /dev/sd*

私はそれを見る

/dev/sda
/dev/sdf
/dev/sdk
/dev/sdp

表示されなくなり、4つの新しいものがあります...

/dev/sdau
/dev/sdav
/dev/sdaw
/dev/sdax

私もこれができることに気づきました...

ls -l /dev/disk/by-path/
total 0
lrwxrwxrwx 1 root root 10 Sep 19 18:08 pci-0000:02:04.0-scsi-0:0:0:0 -> ../../sdau
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-0:1:0:0 -> ../../sdb
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-0:2:0:0 -> ../../sdc
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-0:3:0:0 -> ../../sdd
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-0:4:0:0 -> ../../sde
lrwxrwxrwx 1 root root 10 Sep 19 18:08 pci-0000:02:04.0-scsi-2:0:0:0 -> ../../sdae
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-2:1:0:0 -> ../../sdg
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-2:2:0:0 -> ../../sdh
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-2:3:0:0 -> ../../sdi
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-2:4:0:0 -> ../../sdj
lrwxrwxrwx 1 root root 10 Sep 19 18:08 pci-0000:02:04.0-scsi-3:0:0:0 -> ../../sdav
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-3:1:0:0 -> ../../sdl
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-3:2:0:0 -> ../../sdm
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-3:3:0:0 -> ../../sdn
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:02:04.0-scsi-3:4:0:0 -> ../../sdo
lrwxrwxrwx 1 root root 10 Sep 19 18:08 pci-0000:04:04.0-scsi-0:0:0:0 -> ../../sdax
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:04:04.0-scsi-0:1:0:0 -> ../../sdq
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:04:04.0-scsi-0:2:0:0 -> ../../sdr
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:04:04.0-scsi-0:3:0:0 -> ../../sds
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:04:04.0-scsi-0:4:0:0 -> ../../sdt
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:04:04.0-scsi-2:0:0:0 -> ../../sdu
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:04:04.0-scsi-2:1:0:0 -> ../../sdv
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:04:04.0-scsi-2:2:0:0 -> ../../sdw
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:04:04.0-scsi-2:3:0:0 -> ../../sdx
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:04:04.0-scsi-2:4:0:0 -> ../../sdy
lrwxrwxrwx 1 root root  9 Sep 19 18:08 pci-0000:04:04.0-scsi-3:0:0:0 -> ../../sdz

私はそれらすべてをリストしませんでした....あなたは上記の問題を見ることができます。ここではscsiidでソートされていますが、sdaがありません... sdauに置き換えられています...など...

したがって、明らかに配列は不平を言っています。 Linuxにドライブラベルを正しい順序で再読み込みさせることは可能ですか、それとも私は失敗していますか?

15個のドライブアレイを使用した最初の設計は理想的ではありません。 3TBドライブでは、再構築に3〜4日かかりました。多分それ以上でした。デザイン全体を廃棄し、6 x 7のRAID5ディスクアレイと3つのホットスペアを使用して、アレイの管理を少し簡単にし、再構築時間を短縮すると思います。ただし、ドライブラベルをクリーンアップして、故障しないようにします。私はまだこれを行う方法を理解していません。

誰かがこれをまっすぐにする方法を知っていますか?

ありがとう、

マット

3
Matt Mencel

私の解決策

それが最善の解決策かどうかはわかりません。他の回答にも興味がありますが、これが私がしたことです。

SCSIパスに基づいて強制的にマップする方法がわかりませんでした(例:pci-0000:02:04.0-scsi-0:0:0:0)。その代わりに、ドライブモデルとシリアル番号であるUUIDに基づいてマッピングしています。ドライブを交換するときは、UDEVエントリを更新する必要があることを覚えておく必要があります。


UUIDの検索

次のコマンドのエントリを使用して、現在のドライブ名、それらがマップされたSCSI PATH、およびそれらのUUIDを識別しました。

# ls -l /dev/disk/by-path
# /lib/udev/scsi-id -gu /dev/sdX

作成されたUDEVエントリ

このようなエントリを、/ etc/udev/rules.d /59-persistent-disk.rulesという新しいファイルに配置します。それぞれ3つのバックプレーンが3列あるので、私はこのようなことをしました。

# ROW 1 BACKPLANE 1
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/$name", RESULT=="1ATA_WDC_WD30EFRX-68AX9N0_WD-WMC1T0076306", SYMLINK+="pci24scsi00"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/$name", RESULT=="1ATA_WDC_WD30EFRX-68AX9N0_WD-WMC1T0073437", SYMLINK+="pci24scsi01"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/$name", RESULT=="1ATA_WDC_WD30EFRX-68AX9N0_WD-WMC1T0073085", SYMLINK+="pci24scsi02"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/$name", RESULT=="1ATA_WDC_WD30EFRX-68AX9N0_WD-WMC1T0072374", SYMLINK+="pci24scsi03"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/$name", RESULT=="1ATA_WDC_WD30EFRX-68AX9N0_WD-WMC1T0071564", SYMLINK+="pci24scsi04" 

# ROW 1 BACKPLANE 2
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/$name", RESULT=="1ATA_WDC_WD30EFRX-68AX9N0_WD-WMC1T0077571", SYMLINK+="pci24scsi20"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/$name", RESULT=="1ATA_WDC_WD30EFRX-68AX9N0_WD-WMC1T0077346", SYMLINK+="pci24scsi21"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/$name", RESULT=="1ATA_WDC_WD30EFRX-68AX9N0_WD-WMC1T0074773", SYMLINK+="pci24scsi22"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/$name", RESULT=="1ATA_WDC_WD30EFRX-68AX9N0_WD-WMC1T0071238", SYMLINK+="pci24scsi23"
KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/lib/udev/scsi_id --whitelisted --replace-whitespace /dev/$name", RESULT=="1ATA_WDC_WD30EFRX-68AX9N0_WD-WMC1T0076264", SYMLINK+="pci24scsi24"
.......etc

配列の作成

永続的なデバイス名ができたので、次のように5つの9ドライブアレイ(1つのスペアを持つRAID5)を作成しました。各アレイのバックプレーンごとに1つのドライブを使用したため、バックプレーン全体(または2つ)が失われ、アレイは実行されたままになりました。この方法ではパフォーマンスが低下する可能性がありますが、アーカイブとオフサイトバックアップ用に購入したので、パフォーマンスは主な関心事ではありません。

mdadm --create --verbose /dev/md0 --level=5 --raid-devices=8 --spare-devices=1 /dev/pci24scsi00 /dev/pci24scsi20 /dev/pci24scsi30 /dev/pci44scsi00 /dev/pci44scsi20 /dev/pci44scsi30 /dev/pci64scsi00 /dev/pci64scsi20 /dev/pci64scsi30
mdadm --create --verbose /dev/md1 --level=5 --raid-devices=8 --spare-devices=1 /dev/pci24scsi01 /dev/pci24scsi21 /dev/pci24scsi31 /dev/pci44scsi01 /dev/pci44scsi21 /dev/pci44scsi31 /dev/pci64scsi01 /dev/pci64scsi21 /dev/pci64scsi31
mdadm --create --verbose /dev/md2 --level=5 --raid-devices=8 --spare-devices=1 /dev/pci24scsi02 /dev/pci24scsi22 /dev/pci24scsi32 /dev/pci44scsi02 /dev/pci44scsi22 /dev/pci44scsi32 /dev/pci64scsi02 /dev/pci64scsi22 /dev/pci64scsi32
mdadm --create --verbose /dev/md3 --level=5 --raid-devices=8 --spare-devices=1 /dev/pci24scsi03 /dev/pci24scsi23 /dev/pci24scsi33 /dev/pci44scsi03 /dev/pci44scsi23 /dev/pci44scsi33 /dev/pci64scsi03 /dev/pci64scsi23 /dev/pci64scsi33
mdadm --create --verbose /dev/md4 --level=5 --raid-devices=8 --spare-devices=1 /dev/pci24scsi04 /dev/pci24scsi24 /dev/pci24scsi34 /dev/pci44scsi04 /dev/pci44scsi24 /dev/pci44scsi34 /dev/pci64scsi04 /dev/pci64scsi24 /dev/pci64scsi34

LVMを使用してVGとLVを作成する

これらは、ボリュームを作成してリモートでiSCSIマウントできるようにするためのLVMの手順です。

PVCREATE

pvcreate /dev/md0
pvcreate /dev/md1
pvcreate /dev/md2
pvcreate /dev/md3
pvcreate /dev/md4

VGCREATE

vgcreate VgArr0 /dev/md0
vgcreate VgArr1 /dev/md1
vgcreate VgArr2 /dev/md2
vgcreate VgArr3 /dev/md3
vgcreate VgArr4 /dev/md4
vgcreate VgArr5 /dev/md5

LVCREATE for iSCSI

LVを作成しますが、ボリュームをフォーマットまたはマウントしないでください。それらはリモートでフォーマット/マウントされます

lvcreate -L100%FREE VgArr0 -n LvISCSI0

iSCSI

/etc/iet/ietd.confと/etc/iet/initiators.confを編集します

他のホストにiSCSILUNをリモートでマップします

4
Matt Mencel