我即将将 2x3TB LVM 设置转换为使用带有 2 个附加驱动器的软件 RAID1。我只是想知道以下操作是否安全,以及是否有办法在各个步骤中恢复。
所以我有 /dev/sdb1 和 /dev/sdc1 组成我的 vg_media 卷组。
我正在添加磁盘 /dev/sdd 和 /dev/sde,但首先在它们上设置降级的 RAID。
所以这是我的计划:
# use parted to create GPT partitions on /dev/sdd and /dev/sde
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdd1 missing
mdadm --create --verbose /dev/md1 --level=1 --raid-devices=2 /dev/sde1 missing
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
pvcreate /dev/md0
pvcreate /dev/md1
vgextend vg_media /dev/md0
vgextend vg_media /dev/md1
pvmove /dev/sdb1 /dev/md0
pvmove /dev/sdc1 /dev/md1
vgreduce vg_media /dev/sdb1
vgreduce vg_media /dev/sdc1
据我了解,pvmove 实际上只是复制所有内容,然后更新一些元数据,以便使用新的物理位置。
我只是想知道如果我的降级 RAID 出现问题,此时是否可以撤消 pvmove 并返回到 /dev/sdb1 和 /dev/sdc1 上的数据。
当我确认此时一切似乎正常后,我将这样做来完成 RAID
pvremove /dev/sdb1
pvremove /dev/sdc1
sfdisk -d /dev/sdd | sfdisk /dev/sdb
sfdisk -d /dev/sde | sfdisk /dev/sdc
mdadm --manage /dev/md0 --add /dev/sdb1
mdadm --manage /dev/md1 --add /dev/sdc1
答案1
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
对于 mdadm.conf 来说这是一个很好的起点,但往往过于冗长。仅 UUID 就足够了。
MAILADDR your@address
ARRAY /dev/md0 UUID=d8b8b4e5:e47b2e45:2093cd36:f654020d
据我了解,pvmove 实际上只是复制所有内容,然后更新一些元数据,以便使用新的物理位置。
它就像一个小型 RAID-1 镜像。对于要移动的每个段,它会开始在新位置同步,一旦完全同步,就会删除旧位置。这样,当前处于重定位过程中的段上发生的任何写入也会得到正确处理。
我只是想知道如果我的降级 RAID 出现问题,此时是否可以撤消 pvmove 并返回到 /dev/sdb1 和 /dev/sdc1 上的数据。
这取决于你所说的“出错”是什么意思...... pvmove 镜像完全是临时的,你没有冗余可以回去。如果新的 PV 完全失败,您将丢失一些数据。
如果您以只读模式运行 pvmove,您可能只能使用vgcfgrestore
旧的vgcfgbackup
(在开始移动东西之前创建备份),但是,只有当 pvmove 本身从未执行过与其他任何操作重叠的任何操作(覆盖旧数据)时,这也才有效。的过程。
在开始此操作之前,在所有磁盘上运行长时间的智能自检(并查看其他相关的智能数据)应该可以提前告诉您是否会遇到大麻烦。
替代方法:(不一定更好)
如果您可以离线/从救援系统执行此操作,则只需将两个磁盘 dd(rescue) 到 RAID 即可。然而,在这种情况下,您必须处理大小问题(RAID 设备不得小于 PV 大小)和重复的 UUID 问题。
您可以将 RAID 层放在原始 PV 上,无需复制任何内容,然后只需将新磁盘添加到 RAID 中即可。这可以通过位于分区末尾的元数据来完成0.90
(1.0
可能必须先稍微缩小 PV),或者通过编辑 LV 元数据来释放前几个物理范围,以便为分区开头的 mdadm 元数据腾出空间。然而,这需要您完全理解 LVM 和 MD 元数据布局。