15.2.3软件磁盘阵列的设置
mdadm命令语法
mdadm --detail /dev/md0
mdadm --create --auto=yes /dev/md[0-9] --raid-devices=N --level=[015] --spare-devices=N /dev/sdx /dev/hdx
参数
--create:新建RAID的参数
--auto=yes:决定新建后面接的软件磁盘阵列设备,即/dev/md0,dev/md1等。
--raid-devices=N:使用几个磁盘作为磁盘阵列的设备
--spare-devices=N:使用几个磁盘作为备用spare设备
--level=[015]:设置这组磁盘阵列的等级。
--detail:后面接的那个磁盘阵列设备的详细信息。
上
面的语法中,最后会接许多的设备文件名(/dev/sdx
/dev/hdx),这些设备文件名可以是整块磁盘,例如/dev/sdb也可以是分区,例如/dev/sdb1之类,不过,这些设备名的总数必须要等于
--raid-devices与--spare--devices的个数总和才行
基本语法 : mdadm [mode] <raid-device> [options] <component-devices>
mode 有7种:
Assemble:将以前定义的某个阵列加入当前在用阵列。(如果umount /dev/mdx 则可能需要使用此命令恢复阵列)
Build:Build a legacy array ,每个device 没有 superblocks
Create:创建一个新的阵列,每个device 具有 superblocks
Manage: 管理阵列,比如 add 或 remove
Misc:允许单独对阵列中的某个 device 做操作,比如抹去superblocks 或 终止在用的阵列。
Follow or Monitor:监控 raid 1,4,5,6 和 multipath 的状态
Grow:改变raid 容量或 阵列中的 device 数目
可用的 [options]:
-A, --assemble:加入一个以前定义的阵列
-B, --build:Build a legacy array without superblocks.
-C, --create:创建一个新的阵列
-Q, --query:查看一个device,判断它为一个 md device 或是 一个 md 阵列的一部分
-D, --detail:打印一个或多个 md device 的详细信息
-E, --examine:打印 device 上的 md superblock 的内容
-F, --follow, --monitor:选择 Monitor 模式
-G, --grow:改变在用阵列的大小或形态
-h, --help:帮助信息,用在以上选项后,则显示该选项信息
--help-options
-V, --version
-v, --verbose:显示细节
-b, --brief:较少的细节。用于 --detail 和 --examine 选项
-f, --force
-c, --config= :指定配置文件,缺省为 /etc/mdadm.conf
-s, --scan:扫描配置文件或 /proc/mdstat以搜寻丢失的信息。配置文件/etc/mdadm.conf
mdadm.conf 格式:
DEVICE 所用到的设备分区列表(在mdadm扫描时,将扫描这些分区)
ARRAY 定义实际的磁盘阵列
简单实例:
DEVICE /dev/sda10 /dev/sda11 /dev/sdb10 /dev/sdb11
ARRAY /dev/md0 devices=/dev/sda11, /dev/sda10
[root@RHEL6 /]# mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/sd{c,d,e,f}
mdadm:
You haven't given enough devices (real or missing) to create this
array
#这报了一个错误,没有足够的设备,也就是,raid-devices+spare-devices>/devsd{c,d,e,f}
[root@RHEL6 /]# mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 /dev/sd{c,d,e,f}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
还有一种写法是
[root@RHEL6 /]# mdadm -C /dev/md0 -l 5 -n 3 /dev/sda{6,7,8} -x 1 /dev/sda9 #-l 5 做raid5,-n 3 需要3块磁盘, -x 1 需要一块热备
[root@RHEL6 /]# mdadm --detail /dev/md0
/dev/md0: #RAID设备文件名
Version : 1.2
Creation Time : Mon Jul 6 15:07:37 2015 #RAID被创建的时间
Raid Level : raid5 #RAID等级为RAID 5
Array Size : 2095104 (2046.34 MiB 2145.39 MB) #此RAID的可用磁盘容量
Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB) #每个设备的可用容量
Raid Devices : 3 #作用RAID的设备数量
Total Devices : 4 #全部的设备数量
Persistence : Superblock is persistent
Update Time : Mon Jul 6 15:07:47 2015
State : clean
Active Devices : 3 #启动活动的(active)设备数量
Working Devices : 4 #工作的设备数量
Failed Devices : 0 #出现错误的设备数量
Spare Devices : 1 #预备磁盘的数量
Layout : left-symmetric
Chunk Size : 512K
Name : RHEL6.4x64:0 (local to host RHEL6.4x64)
UUID : 04fb4194:c2f800ce:ca084fe9:6aa014aa #此设备(RAID)标识符
Events : 18
Number Major Minor RaidDevice State #最后4行就是这五个设备目前的情况,包括四个active sync一个spare,RaidDevice指的是此RAID内的磁盘顺序
0 8 32 0 active sync /dev/sdc
1 8 48 1 active sync /dev/sdd
4 8 64 2 active sync /dev/sde
3 8 80 - spare /dev/sdf
[root@RHEL6 /]#
[root@RHEL6 /]# cat /proc/mdstat #除了mdadm --detail命令之外,也可以查阅如下文件看系统软件磁盘阵列的情况;
Personalities : [raid6] [raid5] [raid4]
md0
: active raid5 sde[4] sdf[3](S) sdd[1] sdc[0]
#md0为raid5,且使用了sdc、sdd、sde、sdf四块磁盘设备,每个设备后面的[]内的数字为此磁盘在RAID中的number,(S)表
示sdf[3]为spare之意。
2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
#每个block单位为1KB,所以容量约为2GB,使用RAID5等级,写入磁盘的小区块(chunk)大小为512KB,使用aigorithm2磁
盘阵列算法。[m/n]也就是[3/3],代表此数组需要m个设备,且n个设备正常运行。[UUU]代表3个所需的启动设备正常运行,若为_则代表不正
常。
unused devices: <none>
[root@RHEL6 /]#
格式化与挂载使用RAID
[root@RHEL6 /]# mkfs -t ext4 /dev/md0 #格式化md0设备
[root@RHEL6 /]# mkdir /media/raid
[root@RHEL6 /]# mount /dev/md0 /media/raid/ #挂载
[root@RHEL6 /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 16G 1.7G 14G 11% /
tmpfs 937M 0 937M 0% /dev/shm
/dev/sda1 194M 26M 159M 14% /boot
/dev/sdb5 2.3G 362M 1.8G 17% /home
/dev/sr0 3.5G 3.5G 0 100% /mnt
/dev/md0 2.0G 35M 1.9G 2% /media/raid
[root@RHEL6 /]#
15.2.4仿真RAID错误的救援模式
仿真RAID错误命令语法
mdadm --manage /dev/md[0-9] [--add 设备] [--remove 设备] [--fail 设备]
参数
--add:会将后面的设备加入到这个md中;
--remove:会将后面的设备从这个md中删除。
--fail:会将后面的设备设置成为出错的状态。
设置磁盘为错误(fault)
让一个磁盘变成错误,然后让spare disk自动开始重建系统
[root@RHEL6 /]# cp -a /etc /var/log/ /media/raid/ #复制一点东西给RAID,假设RAID已经使用
[root@RHEL6 /]# df /media/raid/; du -sm /media/raid/*
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/md0 2062160 70212 1887196 4% /media/raid
25 /media/raid/etc #确实有数据在里面
5 /media/raid/log
1 /media/raid/lost+found
[root@RHEL6 /]#
[root@RHEL6 /]# mdadm --manage /dev/md0 --fail /dev/sde #假设/dev/sde这个设备出错
mdadm: set /dev/sde faulty in /dev/md0
[root@RHEL6 /]# mdadm --detail /dev/md0 #查看RAID情况
/dev/md0:
Version : 1.2
Creation Time : Mon Jul 6 15:07:37 2015
Raid Level : raid5
Array Size : 2095104 (2046.34 MiB 2145.39 MB)
Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Jul 6 17:01:45 2015
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 1 #有一个磁盘错误
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : RHEL6.4x64:0 (local to host RHEL6.4x64)
UUID : 04fb4194:c2f800ce:ca084fe9:6aa014aa
Events : 37
Number Major Minor RaidDevice State
0 8 32 0 active sync /dev/sdc
1 8 48 1 active sync /dev/sdd
3 8 80 2 active sync /dev/sdf #原有的spare磁盘,现在进入工作状态
4 8 64 - faulty spare /dev/sde #出错的磁盘,进入错误spare状态
[root@RHEL6 /]#
[root@RHEL6 /]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sde[4](F)(这个磁盘错误了) sdf[3] sdd[1] sdc[0]
2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
[root@RHEL6 /]#
将出错的磁盘删除并加入新磁盘
[root@RHEL6 raid]# mdadm --detail /dev/md127 #系统重启后(我要新加硬盘)md0变为md127了,而且原fail的磁盘没有了
/dev/md127:
Version : 1.2
Creation Time : Mon Jul 6 15:07:37 2015
Raid Level : raid5
Array Size : 2095104 (2046.34 MiB 2145.39 MB)
Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Mon Jul 6 17:19:31 2015
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : RHEL6.4x64:0 (local to host RHEL6.4x64)
UUID : 04fb4194:c2f800ce:ca084fe9:6aa014aa
Events : 37
Number Major Minor RaidDevice State
0 8 32 0 active sync /dev/sdc
1 8 48 1 active sync /dev/sdd
3 8 80 2 active sync /dev/sdf
[root@RHEL6 raid]#
[root@RHEL6 raid]# mdadm --manage /dev/md127 --remove /dev/sdf #不能直接remove,也就是一个在用的磁盘,是不能直接remove的,必须有一个踢出的动作
mdadm: hot remove failed for /dev/sdf: Device or resource busy
系统只剩3块盘的情况下我,想在仿真RAID的一块磁盘问题
[root@RHEL6 raid]# mdadm --manage /dev/md127 --fail /dev/sdf
mdadm: set /dev/sdf faulty in /dev/md127
[root@RHEL6 raid]#
[root@RHEL6 raid]# mdadm --detail /dev/md127
/dev/md127:
Version : 1.2
Creation Time : Mon Jul 6 15:07:37 2015
Raid Level : raid5
Array Size : 2095104 (2046.34 MiB 2145.39 MB)
Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Mon Jul 6 17:25:31 2015
State : clean, degraded (这里多了一个degraded降级,还要看一下man mdadm关于state的部分)
Active Devices : 2
Working Devices : 2
Failed Devices : 1
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : RHEL6.4x64:0 (local to host RHEL6.4x64)
UUID : 04fb4194:c2f800ce:ca084fe9:6aa014aa
Events : 38
Number Major Minor RaidDevice State
0 8 32 0 active sync /dev/sdc
1 8 48 1 active sync /dev/sdd
2 0 0 2 removed #状态为removed
3 8 80 - faulty spare /dev/sdf #出错的硬盘状态改为faulty spare
[root@RHEL6 raid]#
[root@RHEL6 raid]# ll -d /media/raid/* #这个磁盘还是能够使用的,,RAID 5两块磁盘也能正常工作吗?
drwxr-xr-x. 76 root root 4096 Jul 6 16:42 /media/raid/etc
drwxr-xr-x. 6 root root 4096 Jul 6 14:43 /media/raid/log
drwx------. 2 root root 16384 Jul 6 16:41 /media/raid/lost+found
[root@RHEL6 raid]#
[root@RHEL6 ~]# cp -a /home /media/raid/
[root@RHEL6 ~]# ll -d /media/raid/*
drwxr-xr-x. 76 root root 4096 Jul 6 16:42 /media/raid/etc
drwxr-xr-x. 25 root root 4096 Jul 5 21:28 /media/raid/home
drwxr-xr-x. 6 root root 4096 Jul 6 14:43 /media/raid/log
drwx------. 2 root root 16384 Jul 6 16:41 /media/raid/lost+found
[root@RHEL6 ~]#
[root@RHEL6 ~]# mdadm --manage /dev/md127 --add /dev/sdg #添加一块好盘
mdadm: added /dev/sdg
[root@RHEL6 ~]# mdadm --manage /dev/md127 --remove /dev/sdf #移除一个坏盘
mdadm: hot removed /dev/sdf from /dev/md127
[root@RHEL6 ~]# mdadm --manage /dev/md127 --remove /dev/sdf #在添加一块好盘
mdadm: hot removed /dev/sdf from /dev/md127
[root@RHEL6 ~]# mdadm --manage /dev/md127 --add /dev/sdh #提示都正常了
mdadm: added /dev/sdh
[root@RHEL6 ~]# mdadm --detail /dev/md127
/dev/md127:
Version : 1.2
Creation Time : Mon Jul 6 15:07:37 2015
Raid Level : raid5
Array Size : 2095104 (2046.34 MiB 2145.39 MB)
Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Jul 6 17:32:21 2015
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Name : RHEL6.4x64:0 (local to host RHEL6.4x64)
UUID : 04fb4194:c2f800ce:ca084fe9:6aa014aa
Events : 83
Number Major Minor RaidDevice State
0 8 32 0 active sync /dev/sdc
1 8 48 1 active sync /dev/sdd
4 8 96 2 active sync /dev/sdg
3 8 112 - spare /dev/sdh
[root@RHEL6 ~]#
15.2.5开机自动启动RAID并自动挂载
mdadm --detail /dev/md0 | group -i uuid
列出的UUID : XXXXX,是这个设备箱系统注册的UUID表示符
开始设置mdadm.conf
vi /etc/mdadm.conf
ARRAY /dev/md0 UUID=XXXX
设置开机自动挂载并测试
vi /etc/fstab
/dev/md0 /media/raid ext4 defaults 0 0
umount /dev/md0; mount -a #需要确定可以顺利挂载,并且没有发生任何错误!
df /media/raid
15.2.6关闭RAID
umount /dev/md0
删除/etc/fstab中关于md0的那一行
mdadm --stop /dev/md0 #关闭md0
cat /proc/mdstat #可以使用cat mdstat检查
删除/etc/mdadm.conf中关于ARRAY的配置
Softraid命令汇总
mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/sd{c,d,e,f}
mdadm -C /dev/md0 -l 5 -n 3 /dev/sda{6,7,8} -x 1 /dev/sda9 #-l 5 做raid5,-n 3 需要3块磁盘, -x 1 需要一块热备
mdadm参数
--create:新建RAID的参数
--auto=yes:决定新建后面接的软件磁盘阵列设备,即/dev/md0,dev/md1等。
--raid-devices=N:使用几个磁盘作为磁盘阵列的设备
--spare-devices=N:使用几个磁盘作为备用spare设备
--level=[015]:设置这组磁盘阵列的等级。
--detail:后面接的那个磁盘阵列设备的详细信息。
mdadm --manage /dev/md127 --add /dev/sdg #添加一块好盘
mdadm --manage /dev/md0 --fail /dev/sde #仿真/dev/sde这个设备出错
mdadm --manage /dev/md127 --remove /dev/sdf #移除一个坏盘
mdadm --manage /dev/md127 --add /dev/sdh #提示都正常了
mdadm --detail /dev/md0 #查看RAID情况
cat /proc/mdstat
mdadm --stop /dev/md127 #关闭md127
阅读(5232) | 评论(0) | 转发(0) |