如何更改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重命名为与我喜欢的名称不同的名称。

Answers:


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数组:

较新的数组不存储“ Preferred Minor”数字,并且不支持“ --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设备。
弗拉德

这个解决方案在理论上是正确的,但是对于我来说,要在生命系统上实现它是困难的。选项#1也不适合我。我去了superuser.com/questions/287462/…–
gorn

解决方案的最后一部分+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


2

版本0.9的超级块没有名称,它们是在版本1中引入的。/dev/md127不是阵列的名称,它是阵列的设备文件的名称,这是raid块设备的次要数字的直接结果。组装阵列时,可以随意选择这个较小的数字。

如果需要,UUID为阵列提供唯一的标识符。如果您希望使用易于理解的名称或结构化名称,请在阵列中放入LVM物理卷。


我知道从更高版本开始使用--homehost的可能性,这就是为什么我故意声明这是一个v0.90元数据数组。但是,这不是我的意图,也不是兼容的。通过我的帖子,我也有点不知道我在哪里提到/ dev / md127数组名称。我想我已经提供了我想做的确切细节。因此,问题仍然存在,如何更改它以及该“次要号码”存储在哪里?我想它是超级街区的一部分?十六进制编辑时,会破坏超级块校验和吗?
XXL

@XXL该数字未存储在任何地方,在组装数组时可以任意选择。
吉尔斯(Gilles)“所以,别再邪恶了”,

嗯..我不明白。那为什么我在mdadm -Esv时总是得到/ dev / md127?除了静态名称之外,我是否还应该得到其他随机的东西?那是真的
XXL
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.