在基于 Debian 的两磁盘 RAID1 (mdadm) 服务器(不涉及 LVM)中得到以下场景:
分区(镜像 /dev/sdb 相同):
- 未分配的空间(以前是 Windows 的 /dev/sda1)。
- /dev/sda2 linux-raid /dev/md0 (/)
- /dev/sda3扩展:
- /dev/sda5 linux-raid /dev/md1(交换)
- /dev/sda6 linux-raid /dev/md2 (/home)
- /dev/sda7 linux-raid /dev/md3 (/usr/local/share/data)
理想情况下,为了磁盘空间,我想实现:
- /dev/sda1 linux-raid /dev/md0 (/)。
- /dev/sda2 linux-raid /dev/md1 (/home)
- /dev/sda3扩展:
- /dev/sda5 linux-raid /dev/md2(交换)
- /dev/sda6 linux-raid /dev/md3 (/usr/local/share/data)
遵循(乍一看)更简单的方法,我也愿意尝试:
- /dev/sda1 linux-raid /dev/md0 (/) (希望mdadm --grow /dev/md0 --size=max命令能够自动处理占用之前未使用的空间)
- /dev/sda3扩展:
- /dev/sda5 linux-raid /dev/md1(交换)
- /dev/sda6 linux-raid /dev/md2 (/home)
- /dev/sda7 linux-raid /dev/md3 (/usr/local/share/data)
我认为所有这些都必须离线完成(即通过实时发行版)。
我不确定(关于第一种方法)是我是否必须首先完全关闭 RAID1 阵列,然后逐个硬拷贝分区,然后重新创建 RAID1,或者还有另一种更简单的方法。
我想知道您对这两种/其他方法的经验/建议。
(几乎)应该可以进行实时迁移,前提是您不需要调整卷的大小。
mdadm --create device=servername:root --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
mount /dev/md/root /mnt/target
mount /dev/md0 /mnt/source
rsync -avr /mnt/source /mnt/target
mount -t proc /mnt/target/proc
mount -t sysfs /mnt/target/sys
mount -t udev /mnt/target/dev
chroot /mnt/target
重新启动后,您应该在新的根 md 设备上(检查 /proc/mounts),然后您只需重复该过程即可将 /dev/md0 分区用于 /home 挂载点。
至于合并 sd[ab]6 和 sd[ab]7,则取决于您在其他分区上有多少可用空间,因为您需要删除并重新创建它们。
就我个人而言,我建议利用这个机会迁移到基于 LVM 的系统: * 创建新 md * 在 md 上创建新 VolumeGroup * 在 VG 上创建新卷“root” * 继续前面的步骤。
然后逐步将释放的 md 设备空间添加到卷组中,为下一个分区创建卷,复制数据并为下一个分区重新启动进程