何らかの理由で、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配列に名前を保持させるにはどうすればよいですか? -つまり-ブート間でデバイスファイルを保持するにはどうすればよいですか?
--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の投稿を参照してください。
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
最後に、再起動します。
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>
構文を使用して明示的に宣言する必要があります。
これは、たとえばマシン名の変更後などに役立ちます。
あなたが求める答えは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することです。
名前を変更した後、mdadm.conf
を更新しようとしましたか?
mdadm --examine --scan --config=mdadm.conf >> /etc/mdadm.conf
rAIDボリュームが名前にスペースを使用して内部的に作成された場合、mdadmにバグがあります。生成された/etc/mdadm/mdadm.confファイルのフォーマットエラーのため、これらのボリュームは正しくマウントされません。そこで名前を変更する必要がありますが、永続的ではありません。したがって、内部名の名前を変更する必要があります...しかし、メタデータをブロックし、nameオプションをサポートしないすべてのRAIDコントローラーではサポートされていません。これらのボリュームの名前を変更する方法がわかりません(UUIDによって内部的に参照されている場合でも、名前はLinuxで使用されるものです。反対側のWindowsにはそのようなバグはなく、名前にスペースを含むRAIDボリュームを完全にマウントします)!