- 一、概念
- 二、分类
- 三、操作过程(raid0为例)3
- 四、其他操作
- 此时查看状态,发现概念刚才的热备盘已经顶替了故障盘的位置,
- 并且进度条显示数据重建过程:
- 指定停止某个阵列
- 停止配置文件中定义的所有阵列
- -s –scan去查询配置文件或没有配置文件时查询mdstat中的所有阵列
- -s –scan:根据配置文件开启所有的阵列,此时由于故障恢复过,
- 但是由于未重建配置文件,阵列我不能加载上新添加的硬盘;(需要停掉,重新手动指定)
- 注:将一个raid设备添加入md阵列后,md的信息会写入到该设备分区的superblock中;
- 在手动装配时;mdadm工具会自动验证阵列配置是否合法,并且做出相应的动作;
- 该处显示出的是该分区superblock中包含的md信息;没有配置文件时,可以依据该信息装配md;
- —zero-superblock 加上该选项时,会判断如果该阵列是否包
- 含一个有效的阵列超级快,若有则将该超级块中阵列信息抹除。
- 设置时,需要用-E选项进行扩展
一、概念
廉价磁盘冗余阵。是一些列放在一起,成为一个逻辑卷的磁盘集合。
二、分类
- raid0是条带化(将切片数据随机存储到多个磁盘。至少要用两块磁盘。)
- 好处是读写速度快。
- 坏处是零容错。
- raid1是镜像化(镜像用来自动备份数据。保存相同的内容到其他磁盘。)
- 好处是当一个坏掉可以完全恢复。
- 坏处是磁盘利用率变为原来的1/2,写性能也会变慢
- raid4是奇偶校验(一块磁盘做校验)
- 好处是如果坏了一块磁盘的话可以恢复数据,利用率为n-1/n。
- 坏处是每次存储数据都要访问校验磁盘
- raid5是分布式奇偶校验
- 校验码分布在不同磁盘块。
- 好处是如果坏了一块磁盘的话可以恢复数据,利用率为n-1/n。
- 但坏两块就不行了
- raid0+1(先组成RAID0,然后组成RAID1)
- RAID10
- 先组成RAID1,然后组成RAID0
- 先镜像再条带或先条带再镜像。
- 1/2利用率,可重建。可用于数据库存储
来自 [https://blog.csdn.net/u012749168/article/details/52798711](https://blog.csdn.net/u012749168/article/details/52798711)
三、操作过程(raid0为例)3
- 准备好磁盘并进行分区
- 修改磁盘分区类型
- 建立磁盘阵列
- -C :创建一个阵列,后跟阵列名称
- -l :指定阵列的级别;
- -n :指定阵列中活动devices的数目
- 查看阵列状态
- 在第一行中首先是MD的设备名md0,
- active和inactive选项表示阵列是否能读/写
- 接着是阵列的RAID级别raid0,
- 后面是属于阵列的块设备,方括号[]里的数字表示设备在阵列中的序号
- 将软raid信息写入到配置文件中去
- 创建文件系统
- 创建挂载点
- 挂载设备
- 查看详细信息
- 写入配置文件
-
四、其他操作
- 制作raid1(方法同上,不再赘述)
- 模拟磁盘故障(sdc出现故障,使用sdd进行替换)
- 热移除故障的硬盘:
- 给raid-1新增一个sdd盘
- 查看状态
- 给raid-5新增一个spare盘:
- [root@bogon ~]# mdadm -a /dev/md0 /dev/sda5
- mdadm: added /dev/sda5
- 此时查看状态:
- [root@bogon ~]# cat /proc/mdstat
- Personalities : [raid6] [raid5] [raid4]
- md0 : active raid5 sda53 sdd1[2] sdc1[1] sdb1[0]
- 9783296 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
- unused devices:
- 模拟硬盘故障:
- [root@bogon ~]# mdadm -f /dev/md0 /dev/sdd1
- mdadm: set /dev/sdd1 faulty in /dev/md0
此时查看状态,发现概念刚才的热备盘已经顶替了故障盘的位置,
并且进度条显示数据重建过程:
- [root@bogon ~]# cat /proc/mdstat
- Personalities : [raid6] [raid5] [raid4]
- md0 : active raid5 sda5[3] sdd14 sdc1[1] sdb1[0]
- 9783296 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
- [>………………..] recovery = 1.3% (66912/4891648) finish=6.0min speed=13382K/sec
- unused devices:
- 热移除故障的硬盘:
- [root@bogon ~]# mdadm -r /dev/md0 /dev/sdd1
- mdadm: hot removed /dev/sdd1
- [root@bogon ~]# cat /proc/mdstat
- Personalities : [raid6] [raid5] [raid4]
- md0 : active raid5 sda5[3] sdc1[1] sdb1[0]
- 9783296 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
- [===>……………..] recovery = 16.1% (792136/4891648) finish=4.6min speed=14828K/sec
- unused devices:
- 对于有冗余的raid形式,在单一磁盘故障时一般能在一段时间内重建数据;但是数据量非常大时,重建会非常缓慢,且重建过程系统压力比较大,此时需要多关注系统负载,防止重建过程出现错误;在热移除故障盘一户,也需要尽快的换上新硬盘,并且添加spare盘;在故障修复,重建重建之后,需要重新生成配置文件,防止在下次开启时,按照最初的定义模式开启;
- 停止RAID:
指定停止某个阵列
- [root@bogon ~]# mdadm -S /dev/md0
停止配置文件中定义的所有阵列
- [root@bogon ~]# mdadm -Ss
- mdadm: stopped /dev/md0
-s –scan去查询配置文件或没有配置文件时查询mdstat中的所有阵列
- 开启RAID:
- [root@bogon ~]# mdadm -As
- mdadm: /dev/md0 has been started with 2 drives (out of 3).
-s –scan:根据配置文件开启所有的阵列,此时由于故障恢复过,
但是由于未重建配置文件,阵列我不能加载上新添加的硬盘;(需要停掉,重新手动指定)
- [root@bogon ~]# cat /proc/mdstat
- Personalities : [raid6] [raid5] [raid4]
- md0 : active raid5 sdb1[0] sdc1[1]
- 9783296 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
- unused devices:
- 若此时没有配置文件,就需要手动指定设备名称:
- [root@bogon ~]# mdadm -A /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sda5
- mdadm: /dev/md0 has been started with 3 drives.
注:将一个raid设备添加入md阵列后,md的信息会写入到该设备分区的superblock中;
在手动装配时;mdadm工具会自动验证阵列配置是否合法,并且做出相应的动作;
- 若新接手一个raid,没有配置文件,或忘记设备的准确组成,就需要按分区逐个检查是否是raid设备及其他信息,然后根据信息装配阵列:
- [root@bogon ~]# mdadm -E /dev/sdb1
- /dev/sdb1:
- Magic : a92b4efc
- Version : 0.90.00
- UUID : e0d929d1:69d7aacd:5ffcdf9b:c1aaf02d
- Creation Time : Tue Mar 15 08:17:52 2011
- Raid Level : raid5
- Used Dev Size : 4891648 (4.67 GiB 5.01 GB)
- Array Size : 9783296 (9.33 GiB 10.02 GB)
- Raid Devices : 3
- Total Devices : 3
- Preferred Minor : 0
- Update Time : Tue Mar 15 09:25:10 2011
- State : clean
- Active Devices : 3
- Working Devices : 3
- Failed Devices : 0
- Spare Devices : 0
- Checksum : b0cd088f - correct
- Events : 8
- Layout : left-symmetric
- Chunk Size : 64K
- Number Major Minor RaidDevice State
- this 0 8 17 0 active sync /dev/sdb1
- 0 0 8 17 0 active sync /dev/sdb1
- 1 1 8 33 1 active sync /dev/sdc1
- 2 2 8 5 2 active sync /dev/sda5
该处显示出的是该分区superblock中包含的md信息;没有配置文件时,可以依据该信息装配md;
- 删除阵列:
- 若需要彻底清除这个阵列:
- [root@bogon ~]# umount /dev/md0
- mdadm -Ss /dev/md0
- [root@bogon ~]# mdadm —zero-superblock /dev/sd{b,c,d}1
—zero-superblock 加上该选项时,会判断如果该阵列是否包
含一个有效的阵列超级快,若有则将该超级块中阵列信息抹除。
- [root@bogon ~]# rm /etc/mdadm.conf
- RAID优化:
- (1) 设置stride值
- The stride is the software RAID device’s chunk-size in filesystem blocks.For example,with an ext3 filesystem that will have an 4KB block size on a RAID device with a chunk-size of 64KB, the stride should be set to 16:(翻译的很纠结,就贴上教材原文了。)
- mk2fs -j -b 4096 -E stride=16 /dev/md0
设置时,需要用-E选项进行扩展
- 设定良好的stride值,可以在后期使用时,减少写入数据时对数据块计算的负担,从而提高RAID性能;
- 附:RAID 1-0双层架构的方法:
- 首先创建两个底层RAID-1
- [root@bogon ~]# mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sd[bc]1
- mdadm: array /dev/md0 started.
- [root@bogon ~]# mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sd[bc]2
- mdadm: array /dev/md1 started.
- 用两个RAID-1实现上层RAID-0:
- [root@bogon ~]# mdadm -C /dev/md2 -a yes -l 0 -n 2 /dev/md[01]
- mdadm: array /dev/md2 started.
- 查看阵列状态:
- [root@bogon ~]# cat /proc/mdstat
- Personalities : [raid6] [raid5] [raid4] [raid0] [raid1]
- md2 : active raid0 md0[0] md1[1]
- 9783232 blocks 64k chunks
- md1 : active raid1 sdb2[0] sdc2[1]
- 4891712 blocks [2/2] [UU]
- md0 : active raid1 sdb1[0] sdc1[1]
- 4891648 blocks [2/2] [UU]
- unused devices:
- 创建配置文件:
- [root@bogon ~]# mdadm -Ds > /etc/mdadm.conf
- 停止与开启阵列:
- [root@bogon ~]# mdadm -Ss
- mdadm: stopped /dev/md2
- mdadm: stopped /dev/md1
- mdadm: stopped /dev/md0
- [root@bogon ~]# mdadm -As
- mdadm: /dev/md0 has been started with 2 drives.
- mdadm: /dev/md1 has been started with 2 drives.
- mdadm: /dev/md2 has been started with 2 drives.
上述关闭与开启过程,系统能只能识别层级,关闭先关闭上层,
后开启上层;防止了冲突;