在基于 Debian 的双磁盘 RAID1(mdadm)服务器中出现以下情况(不涉及 LVM):
分区(与镜像 /dev/sdb 相同):
- 未分配空间(Windows 中原为 /dev/sda1)。
- /dev/sda2Linux 突袭/dev/md0(/)
- /dev/sda3扩展:
- /dev/sda5Linux 突袭/dev/md1(交换)
- /dev/sda6Linux 突袭/dev/md2(/家)
- /dev/sda7Linux 突袭/dev/md3(/usr/local/共享/数据)
理想情况下,为了节省磁盘空间,我想实现:
- /dev/sda1Linux 突袭/dev/md0(/)。
- /dev/sda2Linux 突袭/dev/md1(/家)
- /dev/sda3扩展:
- /dev/sda5Linux 突袭/dev/md2(交换)
- /dev/sda6Linux 突袭/dev/md3(/usr/local/共享/数据)
按照(乍一看)更简单的方法,我也愿意尝试:
- /dev/sda1Linux 突袭/dev/md0(/)(希望mdadm --grow /dev/md0 --size=max命令将能够自动处理之前未使用的空间)
- /dev/sda3扩展:
- /dev/sda5Linux 突袭/dev/md1(交换)
- /dev/sda6Linux 突袭/dev/md2(/家)
- /dev/sda7Linux 突袭/dev/md3(/usr/local/共享/数据)
我认为所有这些都必须离线完成(即通过实时发行版)。
我不确定(关于第一种方法)是我是否首先必须完全关闭 RAID1 阵列,然后逐个硬复制分区,然后重新创建 RAID1,或者还有其他更简单的方法。
我想了解您对这两种/其他方法的经验/建议。
答案1
(几乎)实时迁移应该是可能的,只要您不需要调整卷大小。
- 在 /dev/sd[ab]1 上创建一个新的 md:
mdadm --create device=servername:root --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
- 在此 md 上 Rsync 你的 /
mount /dev/md/root /mnt/target
mount /dev/md0 /mnt/source
rsync -avr /mnt/source /mnt/target
- chroot new root 编辑 fstab 并重新安装引导加载程序:
mount -t proc /mnt/target/proc
mount -t sysfs /mnt/target/sys
mount -t udev /mnt/target/dev
chroot /mnt/target
- [使用新的根设备编辑 fstab]
- [重新安装引导加载程序]
- 重新启动系统(并祈祷你没有忘记任何事情)
重启后,您应该位于新的根 md 设备上(使用 /proc/mounts 检查),然后您只需重复该过程即可使用 /dev/md0 分区作为 /home 挂载点。
至于合并 sd[ab]6 和 sd[ab]7,则取决于其他分区上有多少可用空间,因为您需要删除并重新创建它们。
我个人建议利用这个机会迁移到基于 LVM 的系统:* 创建新的 md * 在 md 上创建新的卷组 * 在 VG 上创建新的卷“根” * 继续前面的步骤。
然后逐步将释放的 md 设备空间添加到卷组上,为下一个分区创建卷,复制数据并重新启动下一个分区的进程