Ubuntu 18.04では、次のようにRAID 1アレイを作成しました。
mdadm --create /dev/md/myarray --level=1 --run --raid-devices=2 /dev/sdc /dev/sdd
mdadm --detail --scan /dev/md/myarray
その後、/etc/mdadm/mdadm.confに出力を追加しました。次のようになります。
ARRAY /dev/md/myarray metadata=1.2 name=MYHOSTNAME:myarray UUID=...
デバイス名の前には「MYHOSTNAME:」が付いています。この時点ではシンボリックリンクが/dev/md/myarray
まだ存在していましたが、最初の再起動後に変更されて/dev/md/MYHOSTNAME:myarray
問題が発生しました。さらに悪いことは、これが次の場合にのみ発生することです。一部マシン - 他のマシンにはシンボリックリンクがまだ存在します/dev/md/myarray
。すべてUbuntu 18.04を実行しているので、理由がわかりません。
私のMDデバイスへの一貫したデバイスパス、好ましくは私が指定したパス( "/dev / md / myarray")を取得するにはどうすればよいですか?ホスト名を削除するためにmdadm.confを編集しようとしましたが、その行にも次のようなものがあります。
ARRAY /dev/md/myarray metadata=1.2 name=myarray UUID=...
ホスト名が「必要な」システムでは、再起動時にシンボリックリンクが変更され続けます。また、別の方法で2つの場所にホスト名を追加してみました。
ARRAY /dev/md/HOSTNAME:myarray metadata=1.2 name=HOSTNAME:myarray UUID=...
しかし、ホスト名を「望ましくない」システムでは、再起動後にシンボリックリンクが/dev/md/myarrayになりました!
デジタルデバイス(/dev/md127)も使用できません。このように複数のMDデバイスを作ると、md126とmd127も交互に使う傾向があるからです!これはクレイジーなことだ!
ベストアンサー1
私のMDデバイスへの一貫したデバイスパス、好ましくは私が指定したパス( "/dev / md / myarray")を取得するにはどうすればよいですか?
その後はmdadm --create /dev/md/foobar ...
mdadm メタデータに保存され、hostname
以下を使用して確認する必要があります。name
mdadm --examine
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つの別々のシステムに同じホスト名を使用してからドライブを移行する場合は、誤ったシステムであってもホスト名が一致する可能性があります。その後、Alien Arrayは元の名前を置き換えました。
mdadm --assemble --update=homehost
これでメタデータを後で使用または変更することができます。--update=name
これは問題を解決する1つの方法です。正しく設定する必要がありますが(何らかの理由で)、直接的な16進編集メタデータが不足してアセンブリ時間にのみ実行できるため、変更するのは困難です。
別のアプローチは、システムを無視し、hostname
代わりに--homehost
アセンブリに割り当てるHOMEHOST
かmdadm.conf
。 mdadm.confのマンページに、これの詳細な説明を示します。
ホームホスティング
ホームホストの動作 mdadm は --homehost= オプションのデフォルト値を提供します。通常、1行には別の単語が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
そこにいる場合にのみ機能します。同様に、無視を設定してから別のコンピュータの配列を接続すると、名前の競合が発生する可能性があります。
したがって、メタデータと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を使用します。
名前が予期せず変更される可能性がある極端なケースが多すぎるため、これはせいぜいすべての質問に答えるのではなく、システム管理者に指向のヒントやヒントを提供することです。