web-dev-qa-db-ja.com

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

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

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

~$ 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配列に名前を保持させるにはどうすればよいですか? -つまり-ブート間でデバイスファイルを保持するにはどうすればよいですか?

23
Zaz

--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の投稿を参照してください。

19
pille

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

最後に、再起動します。

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

10
Swoogan

PilleとN.Nによる最初の回答は機能します。

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

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

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

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

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

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

8
Khassad

あなたが求める答えは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することです。

2
ppetraki

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

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

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

0
verdy_p