您可以更改现有阵列上的元数据版本吗?

xen*_*ide 21 linux raid mdadm software-raid

所以 grub 需要元数据版本 0.90 我想知道我是否可以更改我现有的数组来使用它而不是默认值 1.2。这样我就不用重新安装了。如果是,我该怎么做?

小智 16

这些信息对 OP 有帮助可能为时已晚,但也许会对其他人有所帮助。

第一个命令擦除超级块,第二个命令创建一个新阵列,但假定设备是干净的。我刚刚执行了此操作,一切似乎都正常。在这样做之前,我肯定会推荐一个备份。我没有要丢失的数据,因此没有要检查的完整性。我只是想避免再同步 4 小时。

$ mdadm --zero-superblock /dev/sd[a-z]1
$ mdadm --create /dev/md0 --assume-clean \
    --level=10 --raid-devices=10 /dev/sd[a-z]1 --metadata=0.90
Run Code Online (Sandbox Code Playgroud)


小智 8

使用上面建议的假设干净和不一致的元数据创建数组肯定有可能损坏现有数据,因为 0.90 和 1.2 元数据块不仅大小不同,位置也不同。

它可能适用于 0.90 <-> 1.0,这是一个例外。

https://raid.wiki.kernel.org/index.php/RAID_superblock_formats


And*_*rew 5

GRUB维基确认:

此外,(从 1.96+20080724 开始)GRUB 只能从使用 0.90 版元数据超级块的 RAID 引导(即使用 mdadm 的 --metadata=0.90 选项创建的)。

奇怪的是,mdadm手册页

-e , --metadata=

声明要使用的超级块(raid 元数据)的样式。--create 的默认值为 0.90,并猜测其他操作。

我会仔细检查mdadm -Q -D <device>以确定。

之后,您运行的是什么 RAID 级别?我能想到的镜像(RAID 1)的最佳方案是

  1. 进行备份
  2. 卸载阵列 0
  3. 从阵列0除去设备An的设备
  4. 设备 A 上的零超级块
  5. 使用设备 A 和n-1备件创建阵列 1 ,明确使用旧的超级块格式
  6. 通过n-1设备重复剩余的 B
  7. (可选)重新编号数组

...但绝对要检查您是否绝对需要完成此操作!