如何更改 MD 设备的名称 (mdadm)

如何更改 MD 设备的名称 (mdadm)

以下是mdadm -Esv

数组 /dev/md127 级别=raid0 设备数量=2 UUID=d89d9d45:9a420812:c44c77eb:7ee19756 设备=/dev/sdb8,/dev/sda8

这是 v0.90 阵列。问题如下:mdadm 如何为相应设备分配名称、将其存储在哪里以及如何更改它?

我想要完成的是重命名MD127与我的喜好不同的东西。

答案1

警告:在遵循此处给出的任何建议之前,请先进行备份:-)

选项1:

编辑/etc/mdadm.conf

数组 /dev/md1 级别=raid0 设备数量=2 UUID=d89d9d45:9a420812:c44c77eb:7ee19756 设备=/dev/sdb8,/dev/sda8

我只是输入了你自己的输出并将 127 改为 1。重新启动,现在它应该是 md1。

选项 #2:

如果你没有mdadm.conf,并且想将其组装到 md1自动地, 你可以这样做:

mdadm 有一个“首选次要”的概念。例如,一旦将某个次要编号分配给某个数组,并将其存储在超级块中,则每次自动组装此数组时都会使用该编号。验证这一点:

mdadm --detail /dev/md127

如果显示“首选次要版本:127”,则这是您的问题。您需要更新首选次要版本。操作方法:

您不能直接更改首选次要文件。如果这是您的根设备,则需要启动到恢复模式或单用户模式,卸载文件系统,然后:

mdadm --stop /dev/md127
mdadm --assemble --update=super-minor /dev/md1 /dev/sdb8 /dev/sda8

然后,您将把 md127 组装为 md1。将来也应该保持这种状态。

使用 1.x 数组:

较新的阵列不存储“首选次要”编号,也不支持“--update=super-minor”。相反,它们存储一个可以使用以下命令更改的名称:

mdadm --stop /dev/md127
mdadm --assemble --update=名称 --name=2 /dev/md1 /dev/sdb8 /dev/sda8

或者您可以指定“hostname:2”以使所有内容与其他数组保持一致(使用--detail 查找当前名称)。

答案2

补充一下 haimg 的出色回答。即使有 mdadm.conf,系统(至少对于 Ubuntu)仍然可能在读取 mdadm.conf 之前自动组装阵列。因此,当它找到它时,它无论如何都会忽略刚刚组装的阵列。

为了解决这个问题,请运行sudo update-initramfs -u以重新生成正确的 initrd。

相关链接:http://ubuntuforums.org/showthread.php?t=1764861%29%3a

答案3

其他答案都不适合我,但在 Centos 中我使用了以下指南。问题是 /etc/mdadm.conf 在启动时实际上并不使用,只有在安装新内核或手动重新创建 initramfs 时才会更新。所以本质上你只需要:

dracut --force

来源:http://realtechtalk.com/mdadm_change_wrong_device_name_md127_fix_and_solution_in_Linux-1783-articles

答案4

0.9 版超级块没有名称,它们是在 1 版中引入的。/dev/md127不是阵列的名称,而是阵列设备文件的名称,这是 raid 块设备次要编号的直接结果。这个次要编号是在组装阵列时任意选择的。

如果需要,UUID 可为阵列提供唯一标识符。如果您更喜欢人性化或结构化的名称,请将 LVM 物理卷放入阵列中。

相关内容