MDデバイスの名前を変更する方法(mdadm)


25

mdadm -Esvの出力は次のとおりです。

ARRAY / dev / md127 level = raid0 num-devices = 2 UUID = d89d9d45:9a420812:c44c77eb:7ee19756 devices = / dev / sdb8、/ dev / sda8

これはv0.90配列です。質問は次のとおりです。mdadmは、対応するデバイスの名前をどのように割り当て、どこに保存し、どのように変更しますか?

私が達成したいのは、md127の名前を自分の好みとは異なる名前に変更することです。

回答:


31

警告:ここに記載されているアドバイスに従う前に、バックアップを作成してください:-)

オプション1:

編集/etc/mdadm.conf

ARRAY / dev / md1 level = raid0 num-devices = 2 UUID = d89d9d45:9a420812:c44c77eb:7ee19756 devices = / dev / sdb8、/ dev / sda8

独自の出力を入力し、127を1に変更しました。再起動すると、md1になります。

オプション#2:

がなくmdadm.conf自動的にmd1にアセンブルしたい場合、これを行うことができます:

mdadmには、「優先されるマイナー」という概念があります。たとえば、特定のマイナー番号が配列に割り当てられ、スーパーブロックに保存されると、この配列が自動アセンブルされるたびに使用されます。これを確認してください:

mdadm --detail / dev / md127

「Preferred Minor:127」と表示されている場合、これが問題です。優先マイナーを更新する必要があります。これを行う方法:

優先マイナーを変更することはできません。これがルートデバイスである場合は、リカバリモードまたはシングルユーザーモードで起動し、その後ファイルシステムをアンマウントする必要があります:

mdadm --stop / dev / md127
mdadm --assemble --update = super-minor / dev / md1 / dev / sdb8 / dev / sda8

次に、md127をmd1としてアセンブルします。そして、それは将来もこのままであるはずです。

1.x配列の場合:

新しい配列は「優先マイナー」番号を保存せず、「-update = super-minor」をサポートしません。代わりに、以下を使用して変更できる名前を保存します。

mdadm --stop / dev / md127
mdadm --assemble --update = name --name = 2 / dev / md1 / dev / sdb8 / dev / sda8

または、「hostname:2」を指定して、他の配列との一貫性を保つことができます(現在の名前を--detailで検索します)。


とても良い!ちょうど私が探していたもの。だから、超マイナーも更新するのがコツだった..ありがとう!
XXL

あなたは命の恩人です!これを使用して、mdを使用するWD NASデバイスのブロックを解除しました。
Vlad

この解決策は理論的には正しいのですが、私が生きたシステムに実装することは私にとって困難でした。また、オプション#1は機能しませんでした。私はsuperuser.com/questions/287462/で

ソリューションの最後の部分に対して+1。これは、RAIDアレイをあるマシンから別のマシンに移動するときに非常に役立ちました。'hostname:2'とmd127をmd1に変更することは、名前の一貫性を保つためにまさに必要でした
yahol

13

haimgの優れた答えに追加するだけです。mdadm.confを使用しても、システム(少なくともUbuntuの場合)がmdadm.confを読み取る前にアレイを自動組み立てする場合があります。そのため、それが見つかると、とにかく組み立てられたばかりの配列を無視します。

そのために、実行sudo update-initramfs -uして適切なinitrdを再生成します。

関連リンク:http : //ubuntuforums.org/showthread.php?t=1764861%29%3a


2
これにより、Ubuntu 16.04での(別の再起動後の)問題が修正されました。私の場合、アレイを再作成し、新しいUUIDがあったためです。で更新した後mdadm.conf、再起動だけでは不十分でした。initramfsを更新するとうまくいきました。
nh2

3

他の答えは私には役に立たなかったが、Centosでは次のガイドを使用した。問題は、ブート時に/etc/mdadm.confが実際には使用されず、新しいカーネルがインストールされるか、initramfsが手動で再作成されるときにのみ更新されることです。だから本質的にあなただけが必要です:

dracut --force

ソース:http : //realtechtalk.com/mdadm_change_wrong_device_name_md127_fix_and_solution_in_Linux-1783-articles


2

バージョン0.9のスーパーブロックには名前/dev/md127がありません。バージョン1で導入されました。アレイの名前ではなく、アレイのデバイスファイルの名前です。これは、RAIDブロックデバイスのマイナー番号の直接的な結果です。このマイナー番号は、アレイを組み立てるときにかなりarbitrarily意的に選択されます。

UUIDは、必要に応じて、アレイの一意の識別子を提供します。人間が読める名前または構造化された名前を希望する場合は、LVM物理ボリュームをアレイに配置します。


私は、後のバージョンから--homehostの可能性を認識しています。それが、これがv0.90メタデータ配列であると意図的に述べた理由です。しかし、それは私の意図ではなく、互換性もありません。私の投稿を見ると、/ dev / md127配列の名前であると言った場所に気付かないこともあります。私がやりたいことの正確な詳細を提供したと思う。質問はまだ残っていますが、どうすれば変更できますか?この「マイナー番号」はどこに保存されますか?スーパーブロックの一部だと思いますか?16進編集すると、スーパーブロックのチェックサムが台無しになりますか?
XXL

@XXLその番号はどこにも保存されず、配列が組み立てられるときに任意に選択されます。
ジル 'SO-悪であるのをやめる'

うーん..わかりません。そして、なぜ私は常に入手できますかは/ dev / md127を私はとき-Esvをmdadmの?静的な名前以外の何か、ランダムなものを取得すべきではありませんか?それが本当に「任意」の場合です
。.-XXL
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.