我正在尝试自动化现有 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 进行预配置。