おそらくこれXYの問題、完全な状況は次のとおりです。
これで、ストレージ/データベースとして使用されるサーバーがたくさんあります。すべて同様の設定があります。オペレーティングシステム(Ubuntu 18.04.2 LTS)用のSSDドライブとJBOD用の6台のHDDです。これらの6つのドライブは、mdadmを介してRAID-10アレイにグループ化する必要があります。
私は6つのサーバーを使用し(Cloud-Initなし)、ライブサーバーではなくサーバーISOを使用して手動でUbuntuをインストールしました。インストール中および起動後、「システム」パーティションの/dev/sda
名前が一部のサーバーとは異なるサーバーで同じであることがわかりました/dev/sdg
。この場合、xCat、Ansible、およびその他の「自動化」ユーティリティの特定のスクリプトからmdadmコマンドを実行してRAIDアレイを自動的に作成することはできません。
「レガシー」モードでUbuntuをインストールし、6つのHDDにMBRパーティション構成があるため、実行するとls -l /dev/disk/by-uuid
。ウデブこれは役に立ちますが、選択したサーバーのルールを手動で作成して実行する必要があるため、そうしないで手動でRAIDを作成することをお勧めします。しかし、私たちは合計100を超えるサーバーを持つことになるので、このルーチンを最大限に自動化したいと思います。どんなアイデアがありますか?
答え1
カーネルの動作は長年文書化されており、他のサーバーではもちろん同じサーバーを再起動しても、一貫したドライブデバイスの命名に頼ることはできません。
システムのドライブを検出し、ルートSSDとストレージJBODドライブを区別するには、自動化されたRAID設定スクリプトを作成する必要があります。
ルートドライブを検出する1つの確実な方法はmount | grep " on / "
。
/dev/disk/by-id/
それ以外の場合は、塗りつぶされたシンボリックリンクフィールドを使用できますudev
。各エントリはドライブの製造元とシリアル番号に基づいて名前が付けられたシンボリックリンクであり、シンボリックリンクはドライブのブロックデバイス(およびパーティションがある場合)を指します。たとえば、私のシステムの1つには/dev/disk/by-id
次のものがあります。
lrwxrwxrwx 1 root root 9 Jul 24 16:56 ata-ST2000DL003-9VT166_5YD1QFAG -> ../../sdb
lrwxrwxrwx 1 root root 10 Jul 24 16:56 ata-ST2000DL003-9VT166_5YD1QFAG-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Jul 24 16:56 ata-ST2000DL003-9VT166_5YD1QFAG-part9 -> ../../sdb9
lrwxrwxrwx 1 root root 9 Jul 24 16:56 ata-WDC_WD20EARS-00MVWB0_WD-WCAZA5353040 -> ../../sdd
lrwxrwxrwx 1 root root 10 Jul 24 16:56 ata-WDC_WD20EARS-00MVWB0_WD-WCAZA5353040-part1 -> ../../sdd1
lrwxrwxrwx 1 root root 10 Jul 24 16:56 ata-WDC_WD20EARS-00MVWB0_WD-WCAZA5353040-part9 -> ../../sdd9
lrwxrwxrwx 1 root root 9 Jul 24 16:56 ata-WDC_WD20EARS-00MVWB0_WD-WCAZA5379164 -> ../../sdc
lrwxrwxrwx 1 root root 10 Jul 24 16:56 ata-WDC_WD20EARS-00MVWB0_WD-WCAZA5379164-part1 -> ../../sdc1
lrwxrwxrwx 1 root root 10 Jul 24 16:56 ata-WDC_WD20EARS-00MVWB0_WD-WCAZA5379164-part9 -> ../../sdc9
lrwxrwxrwx 1 root root 9 Jul 24 16:56 ata-WDC_WD20EARX-008FB0_WD-WCAZAJ827116 -> ../../sda
lrwxrwxrwx 1 root root 10 Jul 24 16:56 ata-WDC_WD20EARX-008FB0_WD-WCAZAJ827116-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Jul 24 16:56 ata-WDC_WD20EARX-008FB0_WD-WCAZAJ827116-part9 -> ../../sda9
これはSeagate 2TBドライブ1個とWD 2TBドライブ3個で、それぞれ2つのパーティション(パーティション1と9 - はい、zfsプール用)があります。
スクリプトが各RAIDドライブにパーティションを作成し(推奨)、ドライブ全体の代わりにそのパーティションを使用している場合は、すでに使用されているドライブ(つまりパーティションがある)と未使用のドライブ(したがって)を簡単に識別できます。レイドアレイには安全です)。
wwn-
で始まるデバイス名はほぼ確実です。これらは世界の共通名各ドライブに属する識別子です。 OUIコードを製造元に変換するためにルックアップテーブルを使用せず、ドライブを物理的に識別するための確実な方法を提供しないので、ベンダー+シリアル番号名よりも有用ではないと思います。