计划:
多年来,我一直在个人服务器中开发 Raid5 阵列,现在是时候转向更适合此应用程序的东西了。我已经积累了 6 个 8tb 驱动器,其中包含媒体、备份等。
我买了一台 Synology 8 托架设备来容纳我的所有驱动器,但现在我正尝试跨区域移动数据,这就是麻烦开始的地方......
我额外购买了一台 8tb 设备,Raid5 中的一台设备出现故障,然后使用这两台设备在 Synology 上创建 Raid1 卷。 Synology 允许在添加另一个驱动器(或 5 个)时将 Raid1 升级到 Raid5。我已将 8 tb 的数据移至此新驱动器,并使用了现有的每一点存储空间,从原始 40 tb Raid 卷中清除了总共 16 tb 的数据。
现在的计划是将原始卷减少到 24tb,将 Raid5 重塑为 3+2 Raid6,对额外的两个驱动器进行故障处理并将它们添加到 Synology,然后移动大部分剩余空间。重复一遍,所有数据都应该包含在内。
到目前为止的步骤:
/dev/md127 挂载在 /srv/media 上,包含 LVM 中的 vg_data/lv_media。首先,卸载卷。
umount /srv/media
在继续之前确保 fs 是健康的
e2fsck -ff /dev/vg_data/lv_media
将 LVM 中的逻辑卷减少可用量 (16tb)
lvreduce -L -16t -r -v vg_data/lv_media
检查 LVM 创建段的位置(正如我多年来分配的那样,lv_media 不再是连续的)
pvs -v --segments /dev/md127
有些段位于物理卷的末端,中间有空闲空间间隙。手动将尾部移动到距离驱动器开头更近的间隙。这可能涉及分割段或创建新段,但就我而言,我只需移动一个段即可释放足够的空间。
pvmove --alloc anywhere /dev/md127:4982784-5046783 /dev/md127:284672-348671
调整 LVM PV 的大小以释放 RAID 上的空间。
pvresize -v --setphysicalvolumesize 24000g /dev/md127
缩小 RAID(在重塑之前)
mdadm --grow /dev/md127 --size=25769803776
这就是我陷入困境的地方。 mdadm raid 拒绝承认/看到 LVM 现在使用更少的空间,并抱怨它无法将数组缩小到超过已分配的空间:
mdadm:无法设置 /dev/md127 的设备大小:设备上没有剩余空间
任何想法如何安全地减小数组的大小?
答案1
@frostschutz 你好美!我不知道我是怎么错过的,但上周我一定读了太多手册页!
mdadm --grow /dev/md127 --array-size=25769803776
这是一种临时、安全、可逆的方法,用于检查大小更改后数据是否仍然完好无损。如果不是,可以用同样的方式恢复大小,而不会影响数据。
e2fsck -ff /dev/mapper/vg_data-lv_media
这项检查顺利通过,没有错误,所以我们可以开始了。看起来从 Raid5 到 Raid6 的更改引入了额外的复杂性,这对于我的迁移来说是不需要的,并且更改阵列形状的最安全方法是在此过程中拥有额外的备用磁盘,所以我选择了
mdadm --grow /dev/md127 -l5 -n4 --backup-file /srv/cache/raid.backup
备份文件在SSD上,希望对我们有一点帮助。到目前为止进展顺利,如果这个故事有一个幸福的结局,我会接受这个答案......