RAID

RAID

[toc]
RAID:redundant Arrays of Inexpensive Disks
Independent
级别:多块磁盘组织在一起的工作方式有所不同,划分为不同的级别
提高IO能力
磁盘并行读写
提高耐用性
磁盘冗余

RAID实现方式:

外接式磁盘阵列:通过扩展卡提供适配能力
内接式RAID:主板集成RAID控制器
Software RAID

RAID0 strip


RAID 0亦称为带区集。它将两个以上的磁盘并联起来,成为一个大容量的磁盘。在存放数据时,分段后分散存储在这些磁盘中,因为读写时都可以并行处理,所以在所有的级别中,RAID 0的速度是最快的。但是RAID 0既没有冗余功能,也不具备容错能力,如果一个磁盘(物理)损坏,所有数据都会丢失,危险程度与JBOD相当。

chunk分散存储,chunk没有冗余

读写性能提升
可用空间:N*min(S1,S2,…)
没有容错能力
最少磁盘数量:2+

RAID1 mirror

raid1
两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,理论上读取速度等于硬盘数量的倍数,另外写入速度有微小的降低。只要一个磁盘正常即可维持运作,可靠性最高。其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。因为有镜像硬盘做数据备份,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的。但无论用多少磁盘做RAID 1,仅算一个磁盘的容量,是所有RAID中磁盘利用率最低的一个级别。

chunk分散存储,chunk有冗余

读性能提升,写性能不变或略微下降
可用空间:1*min(S1,S2,…)
有容错能力
最少硬盘数量:2+

RAID4

raid4
它与RAID 3不同的是它在分区时是以区块为单位分别存在硬盘中,但每次的数据访问都必须从同比特检查的那个硬盘中取出对应的同比特数据进行核对,由于过于频繁的使用,所以对硬盘的损耗可能会提高。(块交织技术,Block interleaving)

chunk分散存储,chunk没有冗余,但是chunk之间有校验

校验盘容易成为系统瓶颈

RAID5

raid5
RAID Level 5是一种储存性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分区)技术。RAID 5至少需要三块硬盘,RAID 5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高。RAID 5具有和RAID 0相近似的数据读取速度,只是因为多了一个奇偶校验信息,写入数据的速度相对单独写入一块硬盘的速度略慢,若使用“回写缓存”可以让性能改善不少。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较便宜。

chunk分散存储,轮流校验
左对称、右对称

读写性能提升
可用空间:(N-1)*min(S1,S2,…)
有容错能力,一次只能坏一块硬盘
最少磁盘数量:3+

RAID6

raid6
与RAID 5相比,RAID 6增加第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,任意两块磁盘同时失效时不会影响数据完整性。RAID 6需要分配给奇偶校验信息更大的磁盘空间和额外的校验计算,相对于RAID 5有更大的IO操作量和计算量,其“写性能”强烈取决于具体的实现方案,因此RAID6通常不会通过软件方式来实现,而更可能通过硬件/固件方式实现。
同一数组中最多容许两个磁盘损坏。更换新磁盘后,数据将会重新算出并写入新的磁盘中。依照设计理论,RAID 6必须具备四个以上的磁盘才能生效。

chunk分散存储,两块校验盘

读写性能提升
可用空间:(N-2)*min(S1,S2,…)
有容错能力
最少磁盘数量:4+

RAID01

raid01
RAID 01则是跟RAID 10的程序相反,是先分区再将数据镜射到两组硬盘。它将所有的硬盘分为两组,变成RAID 1的最低组合,而将两组硬盘各自视为RAID 0运作。

chunk先1后0

RAID10

raid10
RAID 10是先镜射再分区数据,再将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。

chunk先0后1
分散存储后再镜像

JBOD

jbod
Just a bunck Of Disks
将多块磁盘的空间合并一个大的连续空间使用

CentOS6 Software RAID

CentOS6通过内核模块中的md(multi devices)模块实现RAID。
mdadm:nulti device administrater
模式:
创建:-C
装配:-A
监控:-F、-D
-D表示raid细节
管理:-f、-r、-a、-S
-f表示raid中的标记某个损坏
-a表示添加
-r表示移除磁盘
-S表示停止RAID

创建模式

-n #:使用#个块设备来创建此RAID
-l #:指明要创建的RAID的级别
-a {yew|no}:自动创建目标RAID设备的设备文件
-c CHUNK_SIZE:指明chunk大小
-x #:指明空闲盘个数

查看md设备
cat /proc/mdstat
连续查看
watch cat /proc/mdstat
- 创建四个fd类型分区
fdisk /dev/sda
- mdadm -C /dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sda{7,8,9,10}
创建md0设备
- mke2fs /dev/md0
格式化md0
- mount /dev/md0 /dir
挂载,最好使用UUID,因为下次开机设备名称可能就不一样了
- mdadm -D /dev/md0
查看raid详细信息
- mdadm -f /dev/md0 /dev/sda10
设置sda10在md0阵列中损坏

下面是详细过程
[root@localhost ~]# fdisk /dev/sdb
然后创建三个主分区,一个扩展分区和一个逻辑分区,大小都是5G,并且要把他们的id设置为fd即Linux raid autodetect
创建raid所需分区
将分区信息写入内核并查看
分区写入内核
创建RAID5
创建RAID5
对整个RAID实施文件系统的创建,并实现对raid的挂载,查看md0的使用情况
创建RAID文件系统
设置raid5开机自动挂载,注意这一步中要使用UUID或者label设置,因为下次开机raid的名称就可能不再是/dev/md0了

[root@localhost ~]# blkid /dev/md0
/dev/md0: UUID="bb82c568-de26-49f1-a5e6-466897dc5c36" TYPE="ext4"

设置raid开机自动挂载
可以看到raid的大小为10G
查看raid5的详细使用信息
raid详细使用信息
从上图可以发现raid5一共有4块硬盘(这里使用一块硬盘中的单个分区来软件模拟RAID),其中sab{1,2,3}正在使用中,sdb5作为空闲硬盘。
模拟一块硬盘损坏,以下是raid5自动的重建过程

[root@localhost raid5]# mdadm -f /dev/md0 /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md0

空闲硬盘重建
raid重建完成
删除RAID
[root@localhost ~]# mdadm -S /dev/md0
[root@localhost ~]# mdadm –zero-superblock /dev/sdb1
这样整个RAID就被删除了
以上就是整个软件raid的模拟过程

练习

#

创建一个可用空间为10G的RAID1设备,要求其chunk大小为128k,文件系统为ext4,有一个空闲盘,开即可自动挂载至/backup目录

#

创建一个可用空间为10G的RAID10设备,要求其chunk大小为256k,文件系统为ext4,开即可自动挂载至/mydata目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值