RAID
磁盘阵列RAID(Redundant Arrays of Inexpensive Disk,独立硬盘冗余阵列),RAID可通过一种技术(硬件或软件),将多个磁盘整合为一个大的磁盘装置;而这个大的磁盘功能可能不止储存,还具有资料保护功能。RAID的级别不同,其功能也会不一样,常见级别有:
- RAID-0又称为Stripe和Striping,中文译为集带卷\带区卷,性能最佳
将两个以上的磁盘串联起来,成为一个大容量的磁盘。在存放数据时,分段后分散存储在这些磁盘中,因为读写时都可以并行处理,所以在所有的级别中,RAID 0的速度是最快的。但是RAID 0既没有冗余功能,也不具备容错能力,如果一个磁盘(物理)损坏,所有数据都会丢失。 - RAID-1又称为Mirror或Mirroring,中文译为镜像卷,完整备份
两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,理论上读取速度等于硬盘数量的倍数,另外写入速度有微小的降低。只要一个磁盘正常即可维持运作,可靠性最高。RAID 1就是镜像,其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。因为有镜像硬盘做数据备份,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的。但无论用多少磁盘做RAID 1,仅算一个磁盘的容量,是所有RAID中磁盘利用率最低的一个级别。
如果用两个不同大小的磁盘建RAID 1,可用空间为较小的那个磁盘,较大的磁盘多出来的空间也可以分区成一个区来使用,不会造成浪费。 - RAID0+1,RAID1+0
RAID0性能好,但数据不安全,RAID1数据安全,但性能不佳;我们可以将其整合起来设置RAID,于是就有了RAID0+1。即:先将磁盘组成RAID0,然后在RAID0之上再组成RAID1;反之即RIAD1+0 - RAID5,性能与数据备份均衡考量
使用的是Disk Striping(硬盘分区)技术。RAID 5至少需要三颗硬盘,RAID 5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高。可使用的容量为硬盘总数减去1的差,乘以最小容量。
RAID分为软件RAID和硬件RAID。
- 软件RAID是基于系统的软件工作
优点:廉价
缺点:不稳定,如果系统坏了,RAID阵列也就损坏,容易造成数据丢失 - 硬件RAID,是各大厂商提供的储存解决方案。有专门设备负责处理磁盘间的数据流
相对于软件RAID
优点:可靠性高,易管理,稳定
缺点:成本过高
RAID分区id是fd;在Linux下管理RAID阵列的工具是mdadm,能完成所以的软RAID管理功能。
- create使用空闲设备创建一个新的阵列,每个设备具有元数据块
- assemble将原来属于一个阵列的每个块设备组装为阵列
- bulid创建或组装不需要元数据的阵列,每个设备没有元数据块
- manage管理已存储阵列中的设备,比如增加磁盘或设备某个磁盘失效,然后从阵列中删除此磁盘
- misc报告或修改阵列中相关设备信息,比如查询阵列或设备的状态信息
- grow改变阵列中每个设备被使用的容量或阵列中的设备的数目
- monitor监控一个或多个阵列,上报指定事件
实践
建立一个RAID5级别的分区且有一个备用设备,并将其挂载到本地/mnt/raid目录:
可以看到有三块100G硬盘,sdb因为上面的实验,划分掉了40GB出去。
- 创建物理分区:
现在我们就将这三块硬盘各划出20G来做阵列,由于只有三块硬盘,而要一个备用设备,则将sdc再多划一个20G来做备份设备:
当给sdb再新建分区时,会提示我们硬盘正忙,分区信息下次重启生效,或运行partprobe或kpartx命令;我们就执行过partprobe命令后就已经生效:
- 创建RAID阵列设备
/dev/md0 为新建RAID的设备名
-C等同于–create:创建一个新的阵列
-v等同于–verbose:显示执行过程的细节信息
-a等同于–auto=:指定参数为yes时,表示指定设备不存在则自动创建
-N等同于–name:为RAID设备指定一个名称,默认为md后编号
-l等同于–livel=:设置RAID级别
-n等同于–raid-devices=:用于组成阵列的设备数
-x等同于–spare-devices=:用于作为备用设备的个数
使用cat /proc/mdstat可观察阵列设备的运行状态:
第二行:指出md0为RAID5,使用了sdb2、sdc1、sdc2、sdd1四个装置。每个装置后面的中括号[]内数字为此设备在RAID中的顺序;sdd1后面的[S]则代表此设备为spare,备份设备
第三行:[3/3]第一个3代表设备成员的个数,第二个3代表当前的活动设备个数;“UUU”则为对应成员设备的状态,U为正常,_为不正常。若出现“[3/2]UU_”则代表第3个设备成员sdc2出问题了
还可用mdadm –D /dev/md0;-D等同于–detail来查看阵列信息:
- 格式化并挂载设备
- 设置RAID开机自动启动并挂载
-s等同于–scan:扫描配置文件或 /proc/mdstat以搜寻丢失的信息。配置文件/etc/mdadm.conf。
重启后能自动挂载:
模拟RAID错误处理
- 将阵列某个分区置为失效
mdadm后不跟选项,默认就是–mange。以上就是将sdb2置为失效。
当sdb2失效后,备用设备sdd1则自动代替,RAID5重建系统。
- 移除失效设备并添加新设备:
先建立一个新设备sdd2:
移除sdb2并添加sdd2:
关闭RAID