你可以更改现有arrays上的元数据版本吗?

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

    GRUB wiki确认:

    而且,(从1.96 + 20080724开始)GRUB只能从使用版本0.90元数据超级块的RAID(即使用–metadata = 0.90选项创build的超级块到mdadm)进行引导。

    奇怪的是, mdadm的手册页说

    -e,–metadata =

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

    我会仔细检查mdadm -Q -D <device>是肯定的。

    之后,你在运行什么RAID级别? 我能想到的镜像(RAID 1)的最佳场景是

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

    …但非常肯定的检查,你绝对需要通过这个!

    这个信息可能是为了帮助操作,但也许会帮助别人。 第一个命令擦除超级块,第二个命令创build一个新的数组,但假设设备是干净的。 我刚刚完成了这一切,似乎一切正常。 我肯定会在做这个之前build议一个备份。 我没有数据要放松,因此没有完整的检查。 我只是想避免再4小时resync。

    mdadm –zero-superblock / dev / sd [az] 1

    mdadm –create / dev / md0 –assume-clean –level = 10 –raid-devices = 10 / dev / sd [az] 1 –metadata = 0.90

    如上所述,使用假设清理和不一致的元数据创buildarrays肯定有可能损害现有数据,因为0.90和1.2元数据块不仅尺寸不同,而且位置也不同。

    它可以用于0.90 – > 1.0,这是一个例外。

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