使用 mdadm 来调整/重新排列 RAID1 的大小

使用 mdadm 来调整/重新排列 RAID1 的大小

在基于 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 设备空间添加到卷组上,为下一个分区创建卷,复制数据并重新启动下一个分区的进程

相关内容