由于某种原因,当我尝试将 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,命名的设备文件还是消失了,并被替换为标准格式的文件。(/dev/md125 或类似)
如何使重命名的 mdadm 阵列保留其名称? - 即 - 如何让 ubuntu 在启动之间保留设备文件?
答案1
您必须给它指定一个名称,--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 的帖子以获得完整解释。
答案2
让 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
第三个命令应该返回类似的内容:
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
最后,重新启动。
答案3
pille 和 NN 的第一个答案有效。
这里的技巧是,当您不指定选项时,--name
唯一的重命名方法mdadm
是从已分配的设备号中分配数组名称。在本题中,它是 0,因此新的数组名称是 0。
由于您在 assemble 命令中指定了要使用的设备名称(此处为“alpha”),因此它将创建并使用此设备名称。但在自动启动时,它会mdadm
根据在超级块中看到的名称创建一个设备,在本例中为 0,因此您在 assemble 命令中指定的设备名称会丢失。
为了使名称更改具有粘性和连贯性,您必须在设备名称的最后一部分和新阵列名称中使用相同的名称。在这种情况下,对于设备“alpha”,您必须使用以下命令行:
mdadm --assemble /dev/md/alpha --name=alpha --update=name /dev/sd[gf]
您还可以更改主机名,为此您必须使用语法明确声明它-name=<hostname>:<array_name>
。
例如在机器名称更改后这可能会有用。
答案4
更改名称后,您是否尝试更新您的mdadm.conf
?
mdadm --examine --scan --config=mdadm.conf >> /etc/mdadm.conf