在预安装中重复使用现有的 RAID

在预安装中重复使用现有的 RAID

我正在尝试自动化现有 Ubuntu 安装的重新安装过程。

分区布局:

  • md0(raid1,/dev/sda1#/dev/sdb1)-交换(2G)
  • md1 ( raid1,/dev/sda2#/dev/sdb2 ) - / (20G)
  • md2( raid1, /dev/sda3#/dev/sdb3 ) - PV(剩余空间)

我想要实现的目标是:

  • 重复使用现有 RAID(如果存在)

最重要的是保留现有 PV 上的数据。我通过在 lvm.conf 中设置过滤器来实现这一点,该过滤器排除所有块设备,因此 lvm 支持被禁用。

问题是安装完成后我必须重新创建 /dev/md/2,希望数据完好无损。

配置的预置部分是:

d-i partman/early_command string sed 's/filter\ =\ \[\ "a\/.*\/\"\ \]/filter\ =\ \[\ "r\/.*\/\"\ \]/g' -i /etc/lvm/lvm.conf

d-i partman-auto-raid/recipe string \
    1 2 0 swap  -   /dev/sda1#/dev/sdb1     .\
    1 2 0 ext3  /   /dev/sda2#/dev/sdb2     .

d-i partman-auto/expert_recipe  string  \
    multiraid ::    \
        2000 10 2000 raid   $primary{ } method{ raid } format{ }  .\
        20000 11 20000 raid $primary{ } method{ raid } format{ }  . \
        20000 12 2000000 raid    $primary{ } method{ keep }    .

也许还有其他更确定的方法来解决这个问题?

答案1

Ubuntu 论坛中有一些 late_command 示例,建议的示例基于其中一个。但首先,有两点:

1) 自动安装会强制格式化一个文件系统,同时保留另一个文件系统,这本身就很危险。如果您在继续操作之前没有备份,您将丢失数据。“也许不是今天。也许不是明天,但很快就会发生,而且会持续一生。” ;-)

2) 重新创建 /dev/md2 实际上是最安全的部分。这是一个 mdadm 镜像 RAID,除非同时发生两个硬盘故障,否则您的数据是完整的。

无论如何,您应该能够执行类似这样的操作来重建 /dev/md2 并将其安装在您想要的位置:

d-i preseed/late_command string \
in-target sed 's/^ARRAY/#&/g' -i /etc/mdadm/mdadm.conf; \
in-target mdadm --detail --scan >> /etc/mdadm/mdadm.conf; \
in-target mkdir /md2; \
in-target echo '/dev/md2  /md2  ext3  defaults 0 0' >>/etc/fstab;

我将测试我的解决方案并根据我的结果添加评论,我现在正在为 14.04 LTS 进行预配置。

相关内容