mdadm raidアレイの名前を変更するにはどうすればよいですか?


23

何らかの理由で、mdadm raid配列の名前をテキスト名に変更しようとしても、変更はかかりません。

このserverfaultの質問からアドバイスを試しましたが、役に立ちませんでした。

~$ mdadm --version
mdadm - v3.1.4 - 31st August 2010

~$ sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
  Creation Time : Tue Sep 27 08:32:32 2011
     Raid Level : raid1
     Array Size : 1953513424 (1863.02 GiB 2000.40 GB)
  Used Dev Size : 1953513424 (1863.02 GiB 2000.40 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent
    Update Time : Sun Oct  2 17:59:37 2011
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : omicron:0  (local to host omicron)
           UUID : 75c4a555:482aecd0:ade70dfc:1547926a
         Events : 17

Number   Major   Minor   RaidDevice State
   0       8       80        0      active sync   /dev/sdf
   1       8       96        1      active sync   /dev/sdg

~$ sudo mdadm --stop /dev/md0
mdadm: stopped /dev/md0

~$ sudo mdadm --assemble /dev/md/alpha --update=name /dev/sd[gf]
mdadm: /dev/md/alpha has been started with 2 drives.

~$ sudo mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Tue Sep 27 08:32:32 2011
     Raid Level : raid1
     Array Size : 1953513424 (1863.02 GiB 2000.40 GB)
  Used Dev Size : 1953513424 (1863.02 GiB 2000.40 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent
    Update Time : Sun Oct  2 18:06:11 2011
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : omicron:0  (local to host omicron)
           UUID : 75c4a555:482aecd0:ade70dfc:1547926a
         Events : 17

Number   Major   Minor   RaidDevice State
   0       8       80        0      active sync   /dev/sdf
   1       8       96        1      active sync   /dev/sdg

~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdf[0] sdg[1]
      1953513424 blocks super 1.2 [2/2] [UU]

md126 : active (auto-read-only) raid1 sdd[0] sde[1]
      1953513424 blocks super 1.2 [2/2] [UU]

md127 : active (auto-read-only) raid1 sdb[0] sda[1]
      976762496 blocks [2/2] [UU]

unused devices: <none>

ご覧のとおり、名前はまだ報告されてomicron:0おり、古いデバイスファイルからも到達可能です。試してみてsudo mdadm --detail /dev/md/alphaも動作し、次回の再起動まで動作しない同じ名前を報告します。

どの名前を入れるかを考え出すと、mdadmは混乱し、代わりにデバイスファイルを作成するように見えます。


サイド

スーパーブロックを明示的に再作成せずに、mdadmにスーパーブロックの名前部分の更新を強制する(つまり、配列に付ける名前を明示的に設定する)方法はありますか?(すなわちsudo mdam --zero-superblock /dev/sd[fg]; sudo mdadm --create /dev/md/alpha --raid-devices=2 --level=1 --assume-clean --name=alpha /dev/sd[fg]


問題は、リブート後ARRAY /dev/md/alpha metadata=1.2 name=omicron:alpha UUID=c66a267...にmdadm.confに追加しても、指定されたデバイスファイルが消え、標準形式の1つに置き換えられることです。(/ dev / md125または同様)

名前を変更したmdadm配列に名前を保持させるにはどうすればよいですか?-すなわち-どのようにubuntuがブート間でデバイスファイルを永続化させることができますか?

回答:


19

次の--name=ように実際に名前を付ける必要があります。

sudo mdadm --assemble /dev/md/alpha --name=newname --update=name /dev/sd[gf]

再起動時に一貫した動作を行うには、デバイスの最後の部分と同じ名前を--name引数で使用する必要があります。sudo mdadm --assemble / dev / md / alpha --name = alpha --update = name / dev / sd [gf]

完全な説明については、以下のKhassadの投稿を参照してください。


1
わかりやすくするために、このコマンドラインのマイナーアップデートでは、ブーブのように、「-update =」の後にアレイの元の名前を入力しました。 sudo mdadm --assemble /dev/md/alpha --name={newname} --update=name /dev/sd[gf] 理にかなっている、または明確になっていることを願っています
。...-アナストロフ

こんにちは、コマンドを発行した後#sudo mdadm --assemble / dev / md127 --name = md0 --update = name / dev / sd [ab] mdadm:/ dev / sda is busy-スキップmdadm:/ dev / sdb忙しい-考えをスキップしますか?もちろん、最初にアレイをアンマウントしました!
razor7

2
@ razor7mdadm --stop --scan md127
ダニエル・ディニーズ14年

12

Ubuntuが起動後も名前の変更を保持するようにする方法は、initramfsを更新することです。アレイ名とmdadm.confを更新したら、次のコマンドを発行する必要があります。

sudo update-initramfs -u

プロセス全体:

sudo mdadm --stop /dev/md125
sudo mdadm --assemble /dev/md/alpha --name=alpha --update=name /dev/sd[fg]
sudo mdadm -Db /dev/md/alpha

3番目のコマンドは次のようなものを返すはずです。

ARRAY /dev/md/alpha metadata=1.2 name=omicron:alpha UUID=5b024352:3a940335:233aa23f:5c6b2a1f

結果を/etc/mdadm/mdadm.confに貼り付けます(古い行を置き換えます)。または実行:

sudo mdadm -Db /dev/md/alpha >> /etc/mdadm/mdadm.conf

次の実行:

sudo update-initramfs -u

最後に、再起動します。

この議論は役に立ちました


8

pilleとNNによる最初の答えは機能します。

ここでのコツは、--nameオプションを指定しない場合、名前の変更mdadmは割り当てられたデバイス番号から配列名を割り当てることだけです。この質問では0なので、新しい配列名は0です。

アセンブルコマンドで使用するデバイス名(ここでは「アルファ」)を指定するため、このデバイス名を作成して使用します。ただし、自動起動でmdadmは、スーパーブロックに表示される名前(この場合は0)に基づいてデバイスが作成されるため、アセンブルコマンドで指定したデバイス名は失われます。

名前をスティッキーで一貫性のあるものにするには、デバイス名の最後の部分と新しいアレイ名で同じ名前を使用する必要があります。この場合、デバイス「alpha」については、次のコマンドラインを使用する必要があります。

mdadm --assemble /dev/md/alpha --name=alpha --update=name /dev/sd[gf]

ホスト名を変更することもでき-name=<hostname>:<array_name>ます。これを行うには、構文を使用して明示的に宣言する必要があります。

これは、たとえばマシン名の変更後などに役立ちます。


2

あなたが求める答えはmdadmのmanページにあるようです

[create, build, grow]
      -N, --name=
          Set  a name for the array.  This is **currently only effective when creat‐
          ing an array** with a version-1 superblock, or an  array  in  a  DDF  con‐
          tainer.   The  name is a simple textual string that can be used to iden‐
          tify array components when assembling.  If name is needed but not speci‐
          fied, it is taken from the basename of the device that is being created.
          e.g. when creating /dev/md/home the name will default to home.

組み立て用

       -N, --name=
          Specify the name of the array to assemble.  **This must be the  name  that
          was  specified  when  creating the array**.  It must either match the name
          stored in the superblock exactly, or it  must  match  with  the  current
          homehost prefixed to the start of the given name.

これは、名前属性が設定された後にスティッキーでない理由を説明しています。あなたがそれを機能させたなら、答えがあなたのためにトリックをしたコメントでackしてください。または、udevルールと配列のUUIDをアンカーとして使用して、常にシンボリックリンクを作成できます。

/etc/mdadm.confに偽の名前を追加しても意味がありません。すでに標準的なアレイ名であるUUIDを使用しています。変更に適していると思われる別の変数を追加することは、単に不必要なメンテナンスであり、アレイの起動に失敗するなどのトラブルを要求するだけです。

これらの観察を超えて、実行時に名前を更新できない理由を理解するのに最適な場所は、linux-raidメーリングリストをpingすることです。


1

名前を変更した後、更新しようとしましたmdadm.confか?

 mdadm --examine --scan --config=mdadm.conf >> /etc/mdadm.conf

0

RAIDボリュームが名前にスペースを使用して内部的に作成された場合、mdadmにはバグがあります。生成された/etc/mdadm/mdadm.confファイルのフォーマットエラーのため、これらのボリュームは正しくマウントされません。そこで名前を変更する必要がありますが、永続的ではありません。したがって、内部名の名前を変更する必要があります...しかし、メタデータをブロックし、名前オプションをサポートしないすべてのRAIDコントローラーでサポートされているわけではありません。これらのボリュームの名前を変更する方法がわかりません(UUIDによって内部的に参照されている場合でも、名前はLinuxで使用されます。反対側のWindowsにはそのようなバグはなく、名前にスペースを含むRAIDボリュームを完全にマウントします)!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.