如何调整RAID分区(收缩和增长)(软件RAID)
版本1.0
作者:Falko Timme
本文介绍如何缩小和扩展现有的软件RAID分区。 我已经使用非LVM RAID1分区进行了测试,该分区使用ext3作为文件系统。 我将描述完整的RAID阵列以及降级的RAID阵列的这个过程。
如果您在RAID分区上使用LVM,则过程将不同,因此在本例中不要使用本教程!
我不会保证这将为您工作!
1初步说明
几天前,我发现我的一台服务器有一个退化的RAID1阵列( / dev / md2
,由/ dev / sda3
和/ dev / sdb3组成
; / dev / sda3
失败, / dev / sdb3
仍然活动):
server1:~# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sdb3[1]
4594496 blocks [2/1] [_U]
md1 : active raid1 sda2[0] sdb2[1]
497920 blocks [2/2] [UU]
md0 : active raid1 sda1[0] sdb1[1]
144448 blocks [2/2] [UU]
unused devices: <none>
server1:~#
我试图修复它(使用本 ),但不幸的是在同步过程结束(完成99.9%),同步停止并重新开始。 正如我发现的,这是因为在(工作)分区/ dev / sdb3
结尾处存在一些缺陷扇区 - 这在/var/log/kern.log中
:
Nov 22 18:51:06 server1 kernel: sdb: Current: sense key: Aborted Command
Nov 22 18:51:06 server1 kernel: end_request: I/O error, dev sdb, sector 1465142856
所以这是最糟糕的情况,可能会发生 - / dev / sda
死和/ dev / sdb
即将死亡。 为了解决这个问题,我想我可以缩小/ dev / md2
,以便在/ dev / sdb3
的结尾省略破碎的扇区,然后将新的/ dev / sda3
(从更换的硬盘驱动器)添加到/ dev / md2
,让同步完成,从数组中删除/ dev / sdb3
,并将/ dev / sdb
替换为新的硬盘,将新的/ dev / sdb3
添加到/ dev / md2
,然后再次增加/ dev / md2
。
这是以下过程的一个用例(我会描述一个完整的数组和一个退化的数组)的过程。
请注意, / dev / md2
是我的系统分区(mount point /
),所以我不得不使用一个救援系统(例如Knoppix Live-CD )来调整数组的大小。 如果要调整大小的阵列不是您的系统分区,则可能不需要启动进入救援系统; 但是无论在哪种情况下,请确保该阵列已卸载!
2完整数组
我将介绍如何调整由/ dev / sda3
和/ dev / sdb3
组成的数组/ dev / md2
。
2.1收缩一个完整的数组
启动您的救援系统并激活所有需要的模块:
modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10
然后激活您的RAID阵列:
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
mdadm -A --scan
跑
e2fsck -f /dev/md2
检查文件系统。
/ dev / md2
的大小为40GB; 我想缩小到30GB。 首先我们必须使用resize2fs
缩小文件系统; 为了确保文件系统适合30GB,我们使其稍微小一点(25GB),所以我们有一点安全余地,将/ dev / md2
缩小到30GB,并将文件系统(再次使用resize2fs
)调整为最大 可能价值:
resize2fs /dev/md2 25G
现在我们将/ dev / md2
缩小到30GB。 --size
值必须为KiBytes(30 x 1024 x 1024 = 31457280); 确保可以除以64:
mdadm --grow /dev/md2 --size=31457280
接下来,我们将文件系统增长到最大可能的值(如果没有指定大小,则resize2fs
将使用尽可能大的值)...
resize2fs /dev/md2
...并再次运行文件系统检查:
e2fsck -f /dev/md2
就是这样 - 你现在可以再次启动进入正常系统。
2.2成长一个完整的阵列
启动您的救援系统并激活所有需要的模块:
modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10
然后激活您的RAID阵列:
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
mdadm -A --scan
现在我们可以增长/ dev / md2
如下:
mdadm --grow /dev/md2 --size=max
--size = max
表示最大可能的值。 您还可以以KiBytes指定大小(请参阅上一章)。
然后我们运行一个文件系统检查...
e2fsck -f /dev/md2
...,调整文件系统的大小...
resize2fs /dev/md2
...并再次检查文件系统:
e2fsck -f /dev/md2
之后,您可以启动回您的正常系统。