通过删除磁盘来缩小RAID?


14

我有12个托架的Synology NAS。最初,我们决定为一个RAID-6卷分配所有12个磁盘,但是现在我们希望将卷缩小为仅使用10个磁盘,并分配两个HDD作为备用磁盘。

卷管理器向导”可以通过添加硬盘轻松地扩展卷,但是我发现没有办法通过移除硬盘缩小卷。我该怎么做而不必重新初始化整个系统?


这里的目标是什么?当前,两个磁盘用作奇偶校验,因此该阵列可以容忍两个故障。如果您需要两个备用磁盘,也可以将它们放在附近并具有相同的容差,但是磁盘空间更大。
保罗

可以,但是我必须去办公室,弹出一个磁盘,然后插入替换磁盘。拥有备用件可以远程执行此操作。
皮埃尔·阿诺

如果您使用Synology,是否已内置MDADM?
保罗

是的,我可以使用mdadm工具。
皮埃尔·阿诺

Answers:


20

为此,我将假设阵列中有12个磁盘,每个磁盘都有1TB大。

这意味着有10TB的存储空间。例如,假设您使用的磁盘存储量不超过6个磁盘(6TB),那么它们的大小无关紧要。

明确免责声明:Synology可能不支持所有这些,因此我将与他们核查此方法是否会引起问题,事先备份并提前关闭任何Synology服务。据我所知,Synology使用标准的md raid阵列,如果将磁盘移动到支持md的标准服务器,则可以访问它们-因此应该没有问题。

总览

该序列如下所示:

  1. 减少文件系统大小
  2. 减少逻辑卷大小
  3. 减少阵列大小
  4. 调整文件系统的大小
  5. 将备用磁盘转换为热备用

文件系统

使用查找主分区,df -h它应该类似于:

Filesystem                Size      Used Available Use% Mounted on
/dev/vg1/volume_1         10T       5T   5T         50% /volume1

使用此命令将大小调整到所需的最大值,并且不再执行以下操作:

umount /dev/vg1/volume_1
resize2fs -M /dev/vg1/volume_1

现在检查:

mount /dev/vg1/volume_1 /volume1
df -h

Filesystem                Size      Used Available Use% Mounted on
/dev/vg1/volume_1         5T       5T    0T        100% /volume1

体积

要减小卷的大小,请使用lvreduce(以防万一,请稍大一些):

umount /dev/vg1/volume_1
lvreduce -L 5.2T /dev/vg1/volume_1

现在已经减小了逻辑卷,请使用pvresize减小物理卷的大小:

pvresize --setphysicalvolumesize 5.3T /dev/md0

如果调整大小失败,请参见另一个问题,以将在物理卷末尾分配的数据部分移到开头。

现在,在10T阵列上有5.3T的卷,因此我们可以安全地将阵列大小减小2T。

数组

找出md设备:

 pvdisplay -C
 PV         VG      Fmt  Attr PSize   PFree
 /dev/md0   vg1     lvm2 a--  5.3t    0.1t

第一步是告诉mdadm减少数组大小(使用grow):

mdadm --grow -n10 /dev/md0
mdadm: this change will reduce the size of the array.
       use --grow --array-size first to truncate array.
       e.g. mdadm --grow /dev/md0 --array-size 9683819520

这就是说,为了使当前阵列适合10个磁盘,我们需要减小阵列大小。

 mdadm --grow /dev/md0 --array-size 9683819520

现在变小了,我们可以减少磁盘数量:

 mdadm --grow -n10 /dev/md0 --backup-file /root/mdadm.md0.backup

这将花费大量时间,可以在此处进行监视:

 cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]
md4 : active raid6 sda4[0] sdb4[1] sdc4[2] sdd4[3] sde4[4] sdf4[5] sdg4[6] sdh4[7] sdi4[1] sdj4[1] 
      [>....................]  reshape =  1.8% (9186496/484190976)
                              finish=821.3min speed=9638K/sec [UUUUUUUUUU__]

但是我们不需要等待。

将PV,LV和文件系统的大小最大调整为:

pvresize /dev/md0
lvextend -l 100%FREE /dev/vg1/volume_1
e2fsck -f /dev/vg1/volume_1
resize2fs /dev/vg1/volume_1

将备用磁盘设置为备用磁盘

无需执行任何操作,阵列中的任何备用磁盘都会自动成为备用磁盘。重塑完成后,请检查状态:

cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]
md4 : active raid6 sda4[0] sdb4[1] sdc4[2] sdd4[3] sde4[4] sdf4[5] sdg4[6] sdh4[7] sdi4[S] sdj4[S] 

非常感谢您提供这些详细说明。更换硬盘后,我将首先等待RAID阵列完成重建(总容量:17.86 TB,这需要一些时间)。
皮埃尔·阿诺

还可以查看mdadm备忘单(ducea.com/2009/03/08/mdadm-cheat-sheet)。
皮埃尔·阿尔诺

@保罗- superuser.com/questions/1274328/...标志去除您确定后,如果你能帮助用户此评论
Ramhound

谨防!我认为这个答案可能会导致数据丢失,因为:无法检查lvm lv确实位于pv的开头!(lvm不能保证)。见unix.stackexchange.com/questions/67702/...(和unix.stackexchange.com/questions/67702/...一种方式,以保证所述PV的端部在错误的情况下)自由地收缩。
Ekleog

@Ekleog谢谢,如果没有回答,此注释会更好地作为答案的一部分
Paul
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.