一、基本概念
raid磁盘阵列:也是可以用不同的硬盘分区,组成一个逻辑硬盘
高可用 冗余
raid:高可用
磁盘的组成方式不同也是不同的raid级别
raid0:条带化存储;数据分散在多个物理磁盘的存储方式。利用多个磁盘并行读取和写入。存储性能和读写性能是最好的(不足没有冗余能力)坏了一块盘数据就会丢失 :使用场景高吞吐和低延时的应用场景。视频大数据处理raid 最少要一块
硬盘利用率是100%
raid1:镜像存储两两复制,数据会保存在所有硬盘上,需要磁盘数N(偶数)可以提高读的性能,可以提供读性能,写的性能相对较低,数据在每个磁盘都要备份,可以提供冗余。磁盘利用率50%
raid5:条带 数据是分散存储,根据校验机制。循环均衡储存(有冗余)如果有热备份可以再坏一块盘,读写性能 ,读的性能好,写的性能相对较差,磁盘利用率(n-1)/n 66% raid
raid6:奇偶校验可以坏两块盘需要四块盘N>=4 磁盘利用率n-2/n 有冗余,奇偶校验,每个数据盘上数据一致,循环按照奇数偶数写入磁盘,最多可以坏两块盘,读性能和raid5差不多,比raid强,比raid5强 比raid1 低一些 写性能最差。可靠性安全性是做高的。对数据的完整性要求很高,选择raid6
raid10:最少需要四块,盘数必须是偶数,先做镜像在做条带(有冗余)可以坏两块,每个两两复制的硬盘当中可以坏一块(一组各坏一块)利用率n/2 50%。读写性能高,读性能和raid0差不多,稍低一些,写性能和raid1差不多,比raid1稍等
raid级别 | 使用硬盘数量 | 磁盘利用率 | 冗余能力 | 读写性能 |
---|---|---|---|---|
raid0 | N | 100% | 无 | 读写性能是最好的 |
raid1 | N(偶数) | 50% | 坏一块 | 读性能好,写相对较差 |
raid5 | N>=3 | n-1/n | 坏一块 | 读性能好,写性能一般 |
raid6 | N>=4 | n-2/n | 坏两块 | 读性能好,写性能差 |
raid10 | N>=4(N是整数) | 50% | 每个组中可以各坏一个 | 读性能好,写性能一般 |
一般情况下raid5用的比较多
有四个硬盘你会怎么选择
raid0
raid1
raid5:经济实惠
raid6:可以坏两个
raid10:虽然是可以坏两个,但是磁盘利用率只有50%
当前条件raid5是比较合适的选择
还可以做热备盘
热备份:当阵列中,有一块硬盘坏了,热备份份盘可以随时顶替,相当于磁盘的最后一道保险。
工作原理:热备份相当于给raid又做了一个备份,raid当中坏了一块硬盘,热备盘在顶替过程中,利用校验算法,把阵列当中的数据同步过来
冷:固定
热:活动
二、实验
创建raid5
# mdadm -C -v /dev/md5 -l5 -n3 /dev/sdb1 /dev/sdc1 /dev/sdd1 -x1 /dev/sde1
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 10476544K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
创建好后创建文件系统
# mkfs.xfs /dev/md5
meta-data=/dev/md5 isize=512 agcount=16, agsize=327296 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5236736, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, r
设置挂载点
# mount /dev/md5 /data
# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 38G 5.2G 32G 14% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 9.8M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 179M 836M 18% /boot
/dev/mapper/centos-home xfs 19G 33M 19G 1% /home
tmpfs tmpfs 379M 0 379M 0% /run/user/0
tmpfs tmpfs 379M 12K 379M 1% /run/user/42
/dev/md5 xfs 20G 33M 20G 1% /data
这里,模拟磁盘损坏
# mdadm /dev/md5 -f /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md5
输入命令查看热配盘是否启用
输入命令产查看:mdadm -D /dev/md5
3 8 65 0 active sync /dev/sde1
1 8 33 1 active sync /dev/sdc1
4 8 49 2 active sync /dev/sdd1
0 8 17 - faulty /dev/sdb1 这里显示热配盘已经自动顶上了
raid10
# mdadm -C -v /dev/md10 -l10 -n4 /dev/sdb2 /dev/sdc2 /dev/sdd2 /dev/sde2 -x1 /dev/sdf 这里创建raid10
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 10475520K
mdadm: largest drive (/dev/sdf) exceeds size (10475520K) by more than 1%
Continue creating array?
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md10 started.
创建文件系统
# mkfs.xfs /dev/md10
meta-data=/dev/md10 isize=512 agcount=16, agsize=327296 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5236736, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
设置挂载点
# mkdir /data1
# mount /dev/md10 /data1
# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 38G 5.2G 32G 14% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 9.8M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 179M 836M 18% /boot
/dev/mapper/centos-home xfs 19G 33M 19G 1% /home
tmpfs tmpfs 379M 0 379M 0% /run/user/0
tmpfs tmpfs 379M 12K 379M 1% /run/user/42
/dev/md5 xfs 20G 33M 20G 1% /data
/dev/md10 xfs 20G 33M 20G 1% /data1
模拟磁盘损坏
# mdadm /dev/md10 -f /dev/sdb2
mdadm: set /dev/sdb2 faulty in /dev/md10
# mdadm -D /dev/md10
4 8 80 0 active sync set-A /dev/sdf
1 8 34 1 active sync set-B /dev/sdc2
2 8 50 2 active sync set-A /dev/sdd2
3 8 66 3 active sync set-B /dev/sde2
0 8 18 - faulty /dev/sdb2
显示热备盘已经启用了