在Linux系统中用户层以前使用raidtool工具集 来管理MD设备,目前广泛使用mdadm软件来管理MD设备,mdadm提供增加或减少阵列中设备个数的功能(reshape),使用模式—grow和 --raid-disks(或者其缩写-n)参数再加上合适的设备个数。扩展后阵列中原来的热备盘变为活跃磁盘,所以阵列的设备个数增加,阵列的大小也相应增加。下面是在虚拟机上做的实验(raid 5 ):
mdadm -D /dev/md0
............
Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       2       8       49        2      active sync   /dev/sdd1
       3       8       65        -      spare   /dev/sde1
..................
mdadm --grow /dev/md0 --raid-disks=4
这样,原来的RAID 5由 3 active disk + 1 spare disk就变成了 4 active disk
相应的,在/dev/md0上的文件系统也应该变大了,原来在/etc/fstab中已经加有记录,
请问,怎样调整目前的/dev/md0上的文件系统的大小。多谢了!


接着上贴的步骤,执行fsck.ext3  、resize2fs
[root@centos ~]# fsck.ext3 /dev/md0
e2fsck 1.39 (29-May-2006)
/dev/md0 is mounted.WARNING!!!  Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.Do you really want to continue (y/n)? yes/dev/md0: recovering journal
/dev/md0: clean, 15/261120 files, 17180/522048 blocks
[root@centos ~]# resize2fs /dev/md0
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/md0 is mounted on /mnt/raid; on-line resizing required
Performing an on-line resize of /dev/md0 to 783072 (4k) blocks.
The filesystem on /dev/md0 is now 783072 blocks long.

然后 df -h 查看,文件系统的大小确实也变大了!
不过一直是在虚拟机上做实验,上面的警告没有理会,在生产环境中,执行e2fsck,非得把文件系统
umount下来吗。还得在研究研究。

--------------------------------------------------------

Linux 软RAID---mdadm

.RAID建立

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb{1,2}

mdadm --create /dev/md0 --level=5 --raid-devices=2 /dev/sdb{1,2}

添加热备:

mdadm --create /dev/md0 --add /dev/sdb3

创建raid10

# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb{1,2}

# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb{3,4}-a yes

# mdadm --create /dev/md2 --level=10 --raid-devices=2 /dev/md{0,1}-a yes

. /proc/mdstat

[root@station20~]# cat /proc/mdstat

Personalities: [raid1] [raid6] [raid5] [raid4]

md1: active raid5 sdb10[3] sdb9[1] sdb8[0]

196224 blocks level 5, 64k chunk,algorithm 2 [3/2] [UU_]

[===============>.....] recovery = 79.1% (78592/98112) finish=0.0minspeed=4136K/sec

md0: active raid1 sdb7[1] sdb6[0]

98112 blocks [2/2] [UU]

bitmap: 0/12 pages [0KB], 4KB chunk

unuseddevices: <none>

.位图: --bitmap=internal

原理描述:

mdadm操作中,bitmap用于记录RAID 阵列从上次同步之后更改的部分,即记录RAID阵列有多少个块已经同步(resync)RAID 阵列会定期将信息写入到bitmap 中。在一般情况下,磁盘阵列在重启之后会有一个完整的同步过程。如果有bitmap,那么只有被修改后的数据才会被同步。在另一种情况下,如果阵列一块磁盘被取出,bitmap不会被清除,当这块磁盘重新加入阵列时,同样只会同步改变过的数据。所以bitmap能够减少磁盘阵列同步的时间,起到优化raid1的作用。Bitmap一般写入的位置是磁盘的metadata或者我们成为外部的另外,要注意的是,bitmap只是对raid1的功能,对raid0等其他设备来说是没有意义的.

注意: 此功能只对RAID1有效

Example: mdadm --create /dev/md0 --level=1 --raid-devices=2 -a yes-b internal

在已存在的RAID1上启用视图

mdadm --grow /dev/md0 --bitmap=internal

. 共享热备盘及邮件通知

[root@server109~]# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda{5,6} -a yes -binternal

[root@server109~]# mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/sda{7,8,9} -a yes

[root@server109~]# mdadm /dev/md0 --add /dev/sda10

[root@server109~]# cat /proc/mdstat

Personalities: [raid1] [raid6] [raid5] [raid4]

md1: active raid5 sda9[2] sda8[1] sda7[0]

196736 blocks level 5, 64k chunk,algorithm 2 [3/3] [UUU]

md0: active raid1 sda10[2](S) sda6[1] sda5[0]

98368 blocks [2/2] [UU]

bitmap: 0/13 pages [0KB], 4KB chunk

unuseddevices: <none>

[root@server109~]# mdadm --examine --scan > /etc/mdadm.conf

[root@server109~]# cat /etc/mdadm.conf

ARRAY/dev/md1 level=raid5 num-devices=3 UUID=891d6352:a0a4efff:4f162d90:c3500453

ARRAY/dev/md0 level=raid1 num-devices=2 UUID=b070e059:fe2cf975:aac92394:e103a46d

spares=1

可以实现热备共享及邮件通知的配置文件如下(直接修改mdadm.conf):

[root@server109~]# cat /etc/mdadm.conf

##Share Host Spares

ARRAY/dev/md1 level=raid5 num-devices=3 UUID=891d6352:a0a4efff:4f162d90:c3500453spare-group=1

ARRAY/dev/md0 level=raid1 num-devices=2 UUID=b070e059:fe2cf975:aac92394:e103a46dspare-group=1

spares=1

##Mail Notification

MAILFROM root@localhost ## 邮件发出,不写默认为root

MAILADDR raider@localhost ##邮件接收

[root@server109~]# /etc/init.d/mdmonitor start

[root@server109~]# useradd raider

[root@server109~]# echo redhat | passwd --stdin raider

[root@server109~]# cat /proc/mdstat

Personalities: [raid1] [raid6] [raid5] [raid4]

md1: active raid5 sda9[2] sda8[1] sda7[0]

196736 blocks level 5, 64k chunk,algorithm 2 [3/3] [UUU]

md0: active raid1 sda10[2](S) sda6[1] sda5[0]

98368 blocks [2/2] [UU]

bitmap: 0/13 pages [0KB], 4KB chunk

unuseddevices: <none>

[root@server109~]# mdadm /dev/md1 -f /dev/sda7 -r /dev/sda7

mdadm:set /dev/sda7 faulty in /dev/md1

mdadm:hot removed /dev/sda7

[root@server109~]# cat /proc/mdstat

Personalities: [raid1] [raid6] [raid5] [raid4]

md1: active raid5 sda10[3] sda9[2] sda8[1]

196736 blocks level 5, 64k chunk,algorithm 2 [3/2] [_UU]

[====>................] recovery = 24.7% (25472/98368) finish=0.1minspeed=6368K/sec

md0: active raid1 sda6[1] sda5[0]

98368 blocks [2/2] [UU]

bitmap: 0/13 pages [0KB], 4KB chunk

[root@server109~]# mail -u raider

Mailversion 8.1 6/6/93. Type ? for help.

"/var/mail/raider":1 message 1 new

>N 1 root@server109.examp Tue Jan 4 04:28 35/1262 "Fail event on/dev/md1:server109.example.com"

&1

Message1:

Fromroot@server109.example.com Tue Jan 4 04:28:48 2011

Date:Tue, 4 Jan 2011 04:28:47 +0100

From:root@server109.example.com

To:raider@server109.example.com

Subject:Fail event on /dev/md1:server109.example.com

.........................

AFail event had been detected on md device /dev/md1.

Itcould be related to component device /dev/sda7.

...............................

.RAID扩展 --grow

如果某天RAID 空间不够用了,如何增加RAID的空间呢?

Thesteps for adding a new disk are:

1. Add the new disk to the active 3-device RAIDS (starts as a spare):

mdadm -add /dev/mdO/dev/hda8

2 Reshape the RAID5:

mdadm --grow /dev/md0 --raid-devices=4

3. Monitor the reshaping process and estimated time to finish:

watch -n 1 'cat/proc/mdstat'

4.Expand the FS to fill the new space:

resize2fs /dev/md0

[root@server109 ~]# mdadm /dev/md1 --add /dev/sda11

关于mdadm --grow 的问题 - zhuzhu - 五事九思
 

 

linux下使用mdadm进行软raid升级

mdadm代码中有这样的:

mdadm -CR $md0 -l6 -n5 $dev0 $dev1 $dev2 $dev3 $dev4
check wait
check raid6
testdev $md0 3 19456 512
mdadm -G $md0 -l5
check wait
check raid5
testdev $md0 3 19456 512
mdadm -G $md0 -l0
check wait
check raid0
testdev $md0 3 19456 512


linux下的软raid也可以进行升级,目前我只知道可以进行硬盘数目的添加。具体操作方法如下:

1,先添加逻辑盘到阵列中做备用盘(spare)

mdadm --add /dev/md1 /dev/sdf1

2,然后升级阵列到你想要的硬盘数目。示例中的4就是阵列中不包括备用盘的硬盘数目为4个

mdadm --grow /dev/md1 --raid-devices=4

3,最后进行分区检查并进行逻辑容量扩容。

fsck.ext3 /dev/md1
resize2fs /dev/md1

 

 

 

这是 羽飞 老师的 Linux系列 培训 视频,讲解Linux中的RAID 技术,希望大家喜欢!

本 作品一共三集,本集是第一集
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐