RAID(redundent array of independent disks,独立磁盘冗余阵列) 可以提供较普通磁盘更高的速度、安全性,所以服务器在安装时都会选择创建RAID。RAID 的创建有两种方式:软RAID(通过操作系统软件来实现)和硬RAID(使用硬件阵列卡)。
raid0:striping(条带模式),至少需要两块磁盘,做RAID分区的大小最好是相同的(可以充分发挥并发优势);数据分散存储于不同的磁盘上,在读写的时候可以实现并发,所以相对其读写性能最好;但是没有容错功能,任何一个磁盘的损坏将损坏全部数据,磁盘利用率为100%.
RAID1:mirroring(镜像卷),至少需要两块硬盘,raid大小等于两个raid分区中最小的容量(最好将分区大小分为一样),数据有冗余,在存储时同时写入两块硬盘,实现了数据备份,磁盘利用率为50%,即2块100G的磁盘构成RAID1只能提供100G的可用空间。
RAID5:需要三块或以上硬盘,可以提供热备份实现故障的恢复。只损坏一块,没有问题。但如果同时损坏两块磁盘,则数据将都会损坏。用相对简单的异或逻辑运算(相同为0,相异为1) 这里的A与B值就代表了两个位,从中可以发现,A与B一样时,XOR结果为0,A与B不一样时,XOR结果就是1.而且知道XOR结果和A与B中的任何一个数值,就可以反推另一个数值。空间利用率: (n-1)/n
软 raid 工具 mdadm
mdadm 参数:
热备份盘(hot spare hot standby driver):为了加强容错的功能以及使系统在磁盘故障的情况下能迅速的重建数据,以维持系统的性能,一般的磁盘阵列系统都可使用热备份功能。
chunk(块):raid存储数据时每个数据段的大小。4k,64k
创建 raid0
- 创建 raid0
将/dev/sdb分成/dev/sdb1(100M),/dev/sdb2(100M) 安装 mdadm,创建raid0,查看阵列/dev/md0的详细信息
[root@apenglinux-002 ~]# yum install mdadm -y
[root@apenglinux-002 ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
[root@apenglinux-002 ~]# mdadm -Ds
[root@apenglinux-002 ~]# mdadm -D /dev/md0
- 导出阵列配置文件
生成配置文件
[root@apenglinux-002 ~]# mdadm -Ds > /etc/mdadm.conf
[root@apenglinux-002 ~]# cat /etc/mdadm.conf
ARRAY /dev/md0 metadata=1.2 name=apenglinux-002:0 UUID=7036ec04:98bf82db:d019765d:142f51e1
给raid0:/dev/md0 分区
[root@apenglinux-002 ~]# fdisk /dev/md0 //分区
- 格式化并挂载到指定目录
[root@apenglinux-002 ~]# mkfs.ext4 /dev/md0p1
[root@apenglinux-002 ~]# mkdir /raid0
[root@apenglinux-002 ~]# mount /dev/md0p1 /raid0
- 修改/etc/fstab永久挂载
[root@apenglinux-002 ~]# vim /etc/fstab // 加上下一行
/dev/md0p1 /raid0 ext4 defaults 0 0
创建raid1
- 创建 raid1
创建分区/dev/sdc[1-3],每个分区大小为200M
[root@apenglinux-002 ~]# mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sdc{1,2,3}
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: size set to 204608K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
[root@apenglinux-002 ~]# mdadm -Ds > /etc/mdadm.conf
[root@apenglinux-002 ~]# fdisk /dev/md1
[root@apenglinux-002 ~]# mkfs.ext4 /dev/md1p1
[root@apenglinux-002 ~]# mount /dev/md1p1 /raid1
-
添加热备盘
-
模拟磁盘故障,自动顶替故障盘,移除故障盘
[root@apenglinux-002 ~]# mdadm -f /dev/md1 /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md1
[root@apenglinux-002 ~]# watch -n 1 cat /proc/mdstat
[root@apenglinux-002 ~]# mdadm -r /dev/md1 /dev/sdc1
mdadm: hot removed /dev/sdc1 from /dev/md1
[root@apenglinux-002 ~]# mdadm -Ds > /etc/mdadm.conf
创建 raid5
- 创建 raid5 分区
[root@apenglinux-002 ~]# mdadm -C -v /dev/md5 -l 5 -n 3 -c 32 -x 1 /dev/sde{1,2,3,5}
- 添加热备盘
[root@apenglinux-002 ~]# mdadm -Ds > /etc/mdadm.conf //生成配置文件
[root@apenglinux-002 ~]# mdadm -S /dev/md5 //停止 raid5
[root@apenglinux-002 ~]# mdadm -As /dev/md5 //激活 raid5
[root@apenglinux-002 ~]# fdisk /dev/md5 //对 raid5进行分区
[root@apenglinux-002 ~]# ll /dev/md5*
brw-rw----. 1 root disk 9, 5 4月 3 12:45 /dev/md5
brw-rw----. 1 root disk 259, 3 4月 3 12:45 /dev/md5p1
[root@apenglinux-002 ~]# mkfs.ext4 /dev/md5p1 //格式化
[root@apenglinux-002 ~]# mkdir /raid5
[root@apenglinux-002 ~]# mount /dev/md5p1 /raid5 //挂载
[root@apenglinux-002 ~]# mdadm -a /dev/md5 /dev/sde6 // 增加一个分区到 raid5
[root@apenglinux-002 ~]# mdadm -G /dev/md5 -n 4 // 扩容
[root@apenglinux-002 ~]# watch -n 1 cat /proc/mdstat
[root@apenglinux-002 ~]# mdadm -Ds > /etc/mdadm.conf
建立 raid10
建立 raid1+0 双层架构的方法 方法:先创建 raid1 再使用创建的 raid1设备创建riad0
分区 创建两个底层的 raid1,再创建 raid0
[root@apenglinux-002 ~]# mdadm -C -v /dev/md11 -l 1 -n 2 /dev/sdf[1-2]
[root@apenglinux-002 ~]# mdadm -C -v /dev/md12 -l 1 -n 2 /dev/sdf{3,5}
[root@apenglinux-002 ~]# mdadm -C -v /dev/md10 -l 0 -n 2 /dev/md11 /dev/md12
[root@apenglinux-002 ~]# mdadm -Ss // 批量停止 raid 设备(先卸载)
[root@apenglinux-002 ~]# mdadm -As // 批量激活 raid 设备
软 raid 的删除
[root@apenglinux-002 ~]# umount /raid0 //卸载
[root@apenglinux-002 ~]# mdadm -Ss //停止所有 raid 设备
[root@apenglinux-002 ~]# rm -rf /etc/mdadm.conf //删除 raid 配置文件
[root@apenglinux-002 ~]# mdadm --misc --zero-superblock /dev/sdb1 //清除物理磁盘中的 raid 标识
[root@apenglinux-002 ~]# mdadm --misc --zero-superblock /dev/sdb2