如何调整RAID分区(缩小和增长)(软件RAID)

如何调整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

之后,您可以启动回您的正常系统。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏