MD デバイスの一貫したデバイス パスを取得するにはどうすればよいですか?
mdadm --create /dev/md/foobar ...
の後 、両方 hostname
そして name
mdadm --examine
で確認する必要があるため、mdadm メタデータに格納されます。 または mdadm --detail
:
# mdadm --detail /dev/md/foobar
Name : ALU:foobar (local to host ALU)
ALU
私の ArchLinux マシンのホスト名です:
# hostname
ALU
作成時に保存するホストを指定できます:
# mdadm --create /dev/md/foobar --homehost=barfoo
# mdadm --detail /dev/md/foobar
Name : barfoo:foobar
...しかし、通常、誰もそれを覚えていません.
そして、それはすでに問題の始まりです... LiveCD などから RAID アレイを作成した可能性があり、その環境のホスト名はメインのインストールとまったく一致しませんでした。そして、メタデータにはまったく関係のないホスト名が保存されます。
同様に、すべてを正しくセットアップした後、RAID で問題が発生し、レスキュー システムを起動してチェックアウトしても、やはりホスト名に不一致があります。
または、逆に、2 つの独立したシステムに同じホスト名を使用してからドライブを移行した場合、ホスト名が間違ったマシンであっても一致する場合があります。その後、エイリアン アレイは元のアレイの名前を引き継ぎます...
これで、mdadm --assemble --update=homehost
を使用して後でメタデータを変更することもできます または --update=name
、それは問題に対処する 1 つの方法です。正しく設定する必要がありますが、(なんらかの理由で) メタデータを直接 16 進編集しないと変更が難しく、アセンブリ時にしか変更できません。
別の方法は、システム hostname
を無視することです 代わりに --homehost
を指定します アセンブリまたはセット HOMEHOST
mdadm.conf
で .これについては、mdadm.conf マンページで詳細に説明されています。
ホームホスト
homehost 行は、 --homehost=オプションのデフォルト値を mdadm に指定します。通常、行には他の単語が 1 つだけあるはずです。ホスト名か、特殊な単語 <system>
のいずれかである必要があります 、 <none>
そして <ignore>
. <system>
の場合 が与えられた場合、gethostname(2) システムコールを使用してホスト名を取得します。これがデフォルトです。
[...]
アレイが作成されると、このホスト名がメタデータに格納されます。自動アセンブリを使用してアレイをアセンブルすると、メタデータに正しいホームホスト名が記録されていないアレイは、「外部」名を使用してアセンブルされます。 「外国の」名前は常に、可能なローカル名と区別するためにアンダースコアが前に付いた数字列で終わります。例えば/dev/md/1_1 または /dev/md/home_0.
HOMEHOST ALU
を設定してみてください。 (私の場合)、またはより一般的な HOMEHOST <ignore>
(または HOMEHOST <none>
) mdadm.conf
で .ただし、その mdadm.conf
の場合にのみ機能します 存在します。また、ignore を設定して別のマシンからアレイを接続すると、名前の競合が発生する可能性があります。
したがって、メタデータと mdadm.conf でホスト名を正しく設定し、それを無視しないことが最善です。さらに、アセンブリの前に initramfs で実際のホスト名を設定することをお勧めしますが、実践するのは難しい場合があります。
私の個人的な好みは、古典的な数値スタイルに固執することです。 UUID のみで識別:
ARRAY /dev/md1 UUID=8fe790ca:f3fa3388:4ae125b6:2c3a5d44
ARRAY /dev/md2 UUID=f14bef5b:a5356e51:25fde128:09983091
ARRAY /dev/md3 UUID=0639c68d:4c844bb1:5c02b33e:00ab4a93
これも一貫しています(ただし、この方法で作成されているか、メタデータで適切に設定されているかにも依存します。そうでない場合は、--update
する必要がある場合もあります) それ)。また、指定された UUID に一致しないエイリアン配列は、/dev/md127+
として終了する必要があります .
結局のところ、何をするにしても、/dev/mdX
に盲目的に頼るべきではありません。 または /dev/md/name
/dev/sdX
にやみくもに依存しないのと同じ方法です 文字。常にファイルシステム UUID を使用して、それらのアレイにあるものを識別してください。
名前が予期せず変更される可能性があるまれなケースが多すぎるため、せいぜい、これはシステム管理者へのオリエンテーションのヘルプまたはヒントになる可能性があり、すべての問題に対する答えではありません.