软RAID需要内核支持md模块
mdadm可以将任何块设备做成RAID
mdadm:模式化命令
创建模式 -C|--create
-l|--level=:指定级别
-c|--chunk=:指定数据块大小,默认为64,单位为K
-n|--raid-devices=:指定设备数
-a:自动创建设备文件,yes|no
-s| --scan Scan config file or /proc/mdstat for missing information.
-x|--spare-devices=,指定空闲磁盘个数
监控模式 -F|--folow|--monitor
增长模式 -G|--group
装配模式 -A|--assemble
管理模式
-a|--add,添加,若使用-f模拟损坏后,不能直接-a添加,要先-r移除后在-a添加
-r|--remove,移除
-f|--fail|--set-fault,模拟某个磁盘损坏,用于实验
-S|--stop,停止阵列
查看详细信息
# mdadm -D|--detail /dev/md0
实验1 创建4G RAID 0
磁盘准备
1 创建2个2G分区,调整格式为fd
2 重读分区表
# partprobe /dev/sdb
# cat /proc/partitions
3 创建RAID 0
# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{1,2}
mdadm: array /dev/md0 started.
4 查看
# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 sdb2[1] sdb1[0]
3919616 blocks 64k chunks
查看RAID详细信息
# mdadm -D|--detail /dev/md0
5 格式化
# mke2fs -j /dev/md0
6 挂载
# mount /dev/md0 /mnt/
实验2 创建2G RAID 1
磁盘准备
1 创建2个2G分区,调整格式为fd
2 重读分区表
# partprobe /dev/sdb
# cat /proc/partitions
3 创建
# mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/sdb{3,4}
mdadm: array /dev/md1 started.
说明:RAID 1创建速度比RAID 0慢,因为有磁盘块同步
4 格式化
# mke2fs -j /dev/md1
挂载
# mount /dev/md1 /media/
5 测试
模拟损坏
# mdadm /dev/md1 -f /dev/sdb4
mdadm: set /dev/sdb4 faulty in /dev/md1
# mdadm -D /dev/md1查看到/dev/sdb4已经损坏
移除
# mdadm /dev/md1 -r /dev/sdb4
mdadm: hot removed /dev/sdb4
添加
# mdadm /dev/md1 -a /dev/sdb4
6 停止RAID
先卸载
# umount /media/
再停止
# mdadm -S /dev/md1
mdadm: stopped /dev/md1
7 重新启用,使用装配模式
# mdadm -A /dev/md1 /dev/sdb{3,4}
mdadm: /dev/md1 has been started with 2 drives.
说明:热空闲盘RAID 1
可在原有的raid1基础上直接添加空闲raid磁盘,使其作为备用
实验3 创建2G RAID 5,1个磁盘做热备用
1 创建4个1G分区,调整格式为fd
2 重读分区表
# partprobe /dev/sdc
3 创建 RAID 5
# mdadm -C /dev/md2 -a yes -l 5 -n 3 -x 1 /dev/sdc{5,6,7,8}
4 格式化,格式化时指定条带大小,可以优化RAID性能
# mke2fs -j -E stride=16 -b 4096 /dev/md2
5 查看RAID信息
# mdadm -D /dev/md2
Number Major Minor RaidDevice State
0 8 37 0 active sync /dev/sdc5
1 8 38 1 active sync /dev/sdc6
2 8 39 2 active sync /dev/sdc7
3 8 40 - spare /dev/sdc8
说明:条带size=chunk/block
实验4 创建2G RAID 01
1 创建4个1G分区,调整格式为fd
2 重读分区表
# partprobe /dev/sdc
3 先创建两个RAID 1
# mdadm -C /dev/md3 -a yes -n 2 -l 1 /dev/sdc{5,6}
# mdadm -C /dev/md4 -a yes -n 2 -l 1 /dev/sdc{7,8}
4 再在RAID 1基础上创建RAID 0
# mdadm -C /dev/md01 -a yes -n 2 -l 0 /dev/md{3,4}
# mdadm -D /dev/md01
Number Major Minor RaidDevice State
0 9 3 0 active sync /dev/md3
1 9 4 1 active sync /dev/md4
5 格式化和挂载
# mke2fs -j -E stride=16 -b 4096 /dev/md01
# mount /dev/md01 /media
6 查看磁盘使用
# df -h
/dev/md01 1.9G 35M 1.8G 2% /media
将当前raid信息保存至配置文件,便于以后装配
# mdadm --detail --scan
ARRAY /dev/md0 level=raid0 num-devices=2 metadata=0.90 UUID=899e0793:2ff1001b:c671487f:ce8b31d4
ARRAY /dev/md1 level=raid1 num-devices=2 metadata=0.90 spares=1 UUID=6c6ed1c0:e6faccf0:2c47bfa6:d4bce3ee
# mdadm --detail --scan > /etc/mdadm.conf
# mdadm -S /dev/md1
mdadm: stopped /dev/md1
# mdadm -A /dev/md1
mdadm: /dev/md1 has been started with 2 drives and 1 spare.