|
Falko Timme|怎样调整RAID分区(压缩&扩展)(软RAID)
--------------------------------------------------------------------------------
How To Resize RAID Partitions (Shrink & Grow) (Software RAID)
Version 1.0
Author: Falko Timme <ft [at] falkotimme [dot] com>
Last edited 11/24/2008
原文地址:http://www.howtoforge.com/how-to-res...-software-raid
怎样调整RAID分区(压缩&扩展)(软RAID)
本文向你介绍如何缩减或增加已有的软RAID分区。我用ext3文件系统上的非LVM RAID1分区做了测试。下面内容将说明针对完整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是我的系统分区(挂载点是 / ),因此我得用rescue system(比如Knoppix Live-CD)来重调阵列的大小。如果要调整的阵列不是系统分区,你也许就不用进入recue system了;但是在任何一种情形下,请确保阵列没被挂载!
2 完整的阵列
这里我要讲解下如何重新调整/dev/md2阵列的大小,它由/dev/sda3和/dev/sdb3组成
2.1 压缩完整阵列
启动到rescue system然后激活所有所需模块:
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。大小必须是KiBytes (30 x 1024 x 1024 = 31457280)的形式,确保它能被64整除。
mdadm --grow /dev/md2 --size=31457280
接下来我们把文件系统扩大到最大(不指定大小的话,resize2fs会使用可能的最大值)
resize2fs /dev/md2
... 然后再次检查文件系统:
e2fsck -f /dev/md2
好了,你可以再次启动系统了。
2.2 扩展完整阵列
启动到rescue system然后激活所有所需模块:
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
之后你就可以正常启动进入系统了。
.
3 不完整的阵列
这里我要讲解如何调整不完整阵列/dev/md2,由/dev/sda3和/dev/sdb3组成,其中/dev/sda3已经坏掉。
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:~#
3.1 压缩不完整的阵列
在进入rescue system前,必须保证已把/dev/sda3从阵列中移除。
mdadm --manage /dev/md2 --fail /dev/sda3
mdadm --manage /dev/md2 --remove /dev/sda3
然后覆盖/dev/sda3上的superblock (这个相当重要-如果忘了,调整后系统可能就启动不了了):
mdadm --zero-superblock /dev/sda3
启动到rescue system然后激活所有所需模块:
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。大小必须是KiBytes (30 x 1024 x 1024 = 31457280)的形式,确保它能被64整除:
mdadm --grow /dev/md2 --size=31457280
接下来我们把文件系统扩大到最大(不指定大小的话,resize2fs会使用可能的最大值)
resize2fs /dev/md2
... 再次检查文件系统:
e2fsck -f /dev/md2
正常启动然后运行以下命令来把/dev/sda3 添加回/dev/md2阵列:
mdadm --zero-superblock /dev/sda3
mdadm -a /dev/md2 /dev/sda3
看一下:
cat /proc/mdstat
应该看到/dev/sdb3和/dev/sda3正在进行同步了。.
3.2 扩展不完整的阵列
在进入rescue system前,必须保证已把/dev/sda3从阵列中移除。
mdadm --manage /dev/md2 --fail /dev/sda3
mdadm --manage /dev/md2 --remove /dev/sda3
然后覆盖/dev/sda3上的superblock (这个相当重要-如果忘了,调整后系统可能就启动不了了):
mdadm --zero-superblock /dev/sda3
启动到rescue system然后激活所有所需模块:
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
正常启动然后运行以下命令来把/dev/sda3添加回/dev/md2阵列:
mdadm --zero-superblock /dev/sda3
mdadm -a /dev/md2 /dev/sda3
看一下:
cat /proc/mdstat
应该会发现/dev/sdb3和/dev/sda3正在同步:
4 链接
Knoppix: http://www.knoppix.net/ |
|