RAID技术
简介
raid全称为Redundant Arrays of Independent Drives,即磁盘冗余阵列。这是由多块独立磁盘(多为硬盘)组合的一个超大容量磁盘组。Raid技术意图在于把多个独立的磁盘设备组成一个容量更大,安全性更高的磁盘阵列组,将数据切为多个区段之后分别存储在不同的物理硬盘上。利用分数读写技术提升磁盘整体性能,数据同步在不同的多个磁盘,数据也得到了冗余备份的作用。
raid特性
Raid磁盘阵列能够提升数据冗余性,当然也增加了硬盘的价格成本,只不过数据本身的价值是超过硬盘购买的价格的,Raid处理能够保障数据丢失造成的严重损失,还能提升硬盘读写效率,被广泛应用在企业中。
磁盘的模式
独立模式:一块硬盘单独的工作,读写数据
热备模式:为了防止单独的一块磁盘损坏,随时准备好另一块硬盘准备接替工作
集群模式:一堆硬盘共同提高服务,提高读写效率
raid技术级别
raid技术分为多个级别,不同的级别由于技术角度的考虑,还有公司运营成本的考虑,不同的企业选择不同级别的raid技术。raid0,raid1,raid5,raid10。
Raid0–(>=2)
将两个或两个
以上相同型号
,容量
的硬盘组合
,磁盘阵列的总容量便是多个硬盘的总和。
数据依次写入到物理磁盘,在理想状态下,写入速度是翻盘的。
特点:
数据写入到两块磁盘中,没有备份的功能,但凡任意一块磁盘损坏,数据都将被破坏。
适用场景:
使用追求极致性能的场景,而不是关注于数据安全性的场景,读写效率高,但是数据没有安全性保障。
raid1-- (>=2)
将两块以上硬盘绑定,数据同时写入多块硬盘,因此即使硬盘故障损坏,也不惧怕数据丢失,因为由备份。但是这种方式极大降低了磁盘利用率,假设两块硬盘一共4T,真是数据只有2T,利用率只有50%,如果是三块硬盘组成raid1,利用率只有33%,也是不可取的。大小可以一样,以小的为准。缺点是浪费资源,成功过高。
raid3-- (>=3)
至少需要3块硬盘,只要校验盘没有损坏,坏了一块数据盘可以通过异或运算反推数据来恢复。特点是:存储着异或值的磁盘不得损坏。
异或运算
A | B | AXORB |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
raid5-- (>=3)
校验码均匀的放在每一刻硬盘上,依次即使挂了任意一块硬盘都能反推出原来的数据。读性能一般,写性能较差。
raid10-- (>=4)
raid10其实是raid0加速raid1,即由raid0的效率,又有raid1的安全性,因此至少需要四块硬盘搭建raid10。
1.通过raid1两两镜像复制,保证数据安全性
针对两个raid1部署raid0,进一步提升磁盘读写速度
只有坏的不是同一组中所有硬盘,那么就算坏掉一半硬盘读不会丢失数据
总结:
冗余从好到坏:1,10,5,0
性能从好到坏:0,10,5,1
成本从低到高:0,5,1,10
根据数据的存储和访问需求,匹配对应raid级别:
单台服务器,很重要,磁盘不多,系统盘,raid1
数据库服务器,主库,raid10,从库raid5\0
web服务器,如果没有太多的数据的情况下,raid5,raid0
有多台监控应用服务,raid0和raid5
部署raid10
mdadm命令
用于建设,管理和监控raid技术的命令
安装: yum install mdadm -y
参数:
-C 用于未使用的设备,创建raid
-a yes or no ,自动创建阵列设备
-A 激活磁盘阵列
-n 指定设备数量
-l 指定raid级别
-v 显示过程
-S 停止raid阵列
-D 显示阵列详细信息
-f 移除设备
-x 指定阵列中备用盘的数量
-s 扫描配置文件或/proc/mastat,等到阵列信息
--misc --zero-superblock 卸载磁盘
raid10的创建和使用
环境准备
准备四块硬盘
[root@localhost ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sdb /dev/sdc /dev/sdd /dev/sde
2.创建raid10
[root@localhost ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Fail to create md0 when using /sys/module/md_mod/parameters/new_array, fallback to creation via node
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
3.检查raid10分区
[root@localhost ~]# fdisk -l |grep /dev/md
Disk /dev/md0: 42.9 GB, 42914021376 bytes, 83816448 sectors
4.格式化磁盘阵列文件系统
[root@localhost ~]# mkfs.xfs /dev/md0
5.挂载使用
[root@localhost ~]# mkdir /myraid10
[root@localhost ~]# mount /dev/md0 /myraid10/
[root@localhost ~]# mount -l |grep md0
/dev/md0 on /myraid10 type xfs (rw,relatime,attr2,inode64,sunit=1024,swidth=2048,noquota)
6.检查挂载分区使用情况
[root@localhost ~]# df -hT | grep md0
/dev/md0 xfs 40G 33M 40G 1% /myraid10
7.检查raid10磁盘阵列的信息
mdadm -D /dev/md0
8.将raid10加入开机挂载配置文件,让它开机自动挂载
[root@localhost ~]# echo -e "/dev/md0 /myraid10 xfs defaults 0 0" >> /etc/fstab
[root@localhost ~]# tail -1 /etc/fstab
/dev/md0 /myraid10 xfs defaults 0 0
#至此raid10创建完成
raid故障修复
1.剔除一块硬盘,模拟一块硬盘故障
[root@localhost ~]# mdadm /dev/md0 -f /dev/sdd
mdadm: set /dev/sdd faulty in /dev/md0
2.检查raid10的状态
[root@localhost ~]# mdadm -D /dev/md0
#结论:挂掉一块磁盘并影响使用,只需重新替换损坏硬盘即可
3,修复
a.在无人使用的时候先取消raid阵列的挂与开机自动挂载
b.从重启操作系统 reboot
4.添加新设备
mdadm /dev/md0 -a /dev/sdd
在此有一个修复过程,等待raid10修复完毕
可用是mdadm -D /dev/md0 #检查进程
[root@localhost ~]# mdadm -D /dev/md0 | grep Rebuild
Rebuild Status : 25% complete
# 等到修复完毕即可
软raid10 重启
注意要配置raid配置文件,否则如果停止软raid后就无法激活了,严格按照笔记操作。
1.手动创建配置文件
[root@localhost ~]# echo DEVICE /dev/sd[b-e] > /etc/mdadm.conf
#扫描磁盘阵列信息,追加到/etc/mdadm.conf下
[root@localhost ~]# mdadm -Ds >> /etc/mdadm.conf
[root@localhost ~]# cat /etc/mdadm.conf
DEVICE /dev/sdb /dev/sdc /dev/sdd /dev/sde
ARRAY /dev/md/0 metadata=1.2 name=localhost.localdomain:0 UUID=a6783a55:84dea1f9:ad400817:d7aac4ed
2.取消挂载
[root@localhost ~]# umount /dev/md0
umount: /dev/md0: not mounted
3.停止raid10
[root@localhost ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0
# 检查
[root@localhost ~]# mdadm -D /dev/md0
mdadm: cannot open /dev/md0: No such file or directory
4.在有配置文件的情况下,可用正常启动raid10
mdadm -A /dev/md0
5.检查激活情况
mdadm -D /dev/md0
删除raid10
1.先卸载磁盘
[root@localhost ~]# umount /dev/md0
umount: /dev/md0: not mounted
2.停止raid服务
mdadm -S /dev/md0
3.卸载raid中所有的硬盘
mdadm --misc --zero-superblock /dev/sdb
mdadm --misc --zero-superblock /dev/sdc
mdadm --misc --zero-superblock /dev/sdd
mdadm --misc --zero-superblock /dev/sde
4.删除raid配置文件
rm /etc/mdadm.conf
5.删除开机自动挂载配置文件中的相关内容
sed '$d' /etc/fstab -i
raid与备份盘
1.用四块硬盘做演示,三块盘搭建raid阵列组,一块左备份盘
以raid5来配置三块磁盘,加上一块备份盘
[root@localhost ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Fail to create md0 when using /sys/module/md_mod/parameters/new_array, fallback to creation via node
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
2.检查raid状态
mdadm -D /dev/md0
3.格式化文件系统
mkfs.xfs -f /dev/md0
4.挂载文件系统开始使用分区
mount /dev/md0 /mnt
5.检查挂载情况
mount -l |grep md0
6.写入数据,检查raid阵列是否可用正常使用
[root@localhost ~]# df -hT |grep md0
/dev/md0 xfs 40G 74M 40G 1% /mnt
7.查看备用盘
[root@localhost ~]# mdadm -D /dev/md0 |grep spare
3 8 64 - spare /dev/sde
8.见证备份磁盘的作用,提出一块磁盘
[root@localhost ~]# mdadm /dev/md0 -f /dev/sdd
mdadm: set /dev/sdd faulty in /dev/md0
8.惊喜发现备份磁盘自动补上
[root@localhost ~]# mdadm -D /dev/md0 |grep sd
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
3 8 64 2 active sync /dev/sde
4 8 48 - faulty /dev/sdd
[root@localhost ~]# mdadm -D /dev/md0 |grep spare
3 8 64 2 spare rebuilding /dev/sde
# rebuilding 重建,使复原
# faulty 错误的
9.恢复
# 取消挂载
umount /dev/md0
# 重新加进来
mdadm /dev/md0 -a /dev/sdd
#此时备份盘已经变成了sdd
[root@localhost ~]# mdadm -D /dev/md0 |grep spare
4 8 48 - spare /dev/sdd