在预置安装中重用现有的 RAID

Fra*_*ank 5 ubuntu debian lvm preseed md

我正在尝试自动执行现有 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 }    .
Run Code Online (Sandbox Code Playgroud)

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

nor*_*lly 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;
Run Code Online (Sandbox Code Playgroud)

我将测试我的解决方案并添加对结果的评论,我现在正在研究 14.04 LTS 的预置配置。