RAID 磁盘阵列
Raid
磁盘阵列:Redundant Arrays of Independent Disks RAID,数块独立磁盘构成具有冗余能力的阵列
磁盘阵列是由很多块独立的磁盘,组合成一个容量巨大的磁盘组:
提高IO能力:
磁盘并行读写
提高耐用性:
磁盘冗余来实现
级别:多个磁盘组织在一起的工作方式有所不同;
RAID实现的方式:
外接式磁盘阵列:通过扩展卡提供适配能力
内接式RAID:主板集成RAID控制器
RAID的组成方式有很多级别
级别:level
RAID-0:0,条带卷,strip;
RAID-1:镜像卷,mirror;
..........
RAID-5:
RAID10:
RAID01:
RAID-0:
RAID-0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。
RAID-0的缺点是不提供数据冗余,因此一旦用户数据损坏,损坏的数据将无法恢复。只要其中一块硬盘出现问题就会导致整个数据的故障
读写性能提升;
可用空间:N*min(s1,s2,.....)
无容错能力
最少磁盘数:2,2+
RAID-1:
RAID-1通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID-1可以提高读取性能。RAID-1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。
读性能提升、写性能略有下降;
可用空间:1*min(s1,s2,.....)
有冗余能力
最少磁盘数:2,2+
RAID-5
RAID-5是RAID-0和RAID-1的折中方案。RAID-5具有和RAID-0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID-5的磁盘空间利用率要比RAID-1高,存储成本相对较低,是目前运用较多的一种解决方案。
读写性能提升RAID-5把数据和相对应的奇偶校验信息存储到组成RAID-5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上,其中任意N-1块磁盘上都存储完整的数据,也就是说有相当于一块磁盘容量的空间用于存储奇偶校验信息。因此当RAID-5的一个磁盘发生损坏后,不会影响数据的完整性,从而保证了数据安全。当损坏的磁盘被替换后,RAID还会自动利用剩下奇偶校验信息去重建此磁盘上的数据,来保持RAID-5的高可靠性。
可用空间:(N-1)*min(s1,s2,....)
有容错能力:1快磁盘
最少磁盘数:3,3+
RAID10:
Raid-10其实结构非常简单,首先创建2个独立的Raid-1,然后将这两个独立的Raid-1组成一个Raid-0,当往这个逻辑Raid中写数据时,数据被有序的写入两个Raid-1中。磁盘1和磁盘2组成一个Raid-1,磁盘3和磁盘4又组成另外一个Raid-1;这两个Raid-1组成了一个新的Raid0。如写在硬盘1上的数据1、3、5、7,写在硬盘2中则为数据1、3、5、7,硬盘中的数据为0、2、4、6,硬盘4中的数据则为0、2、4、6,因此数据在这四个硬盘上组合成Raid-10,且具有raid0和raid1两者的特性。
虽然Raid-10方案造成了50%的磁盘浪费,但是它提供了200%的速度和单磁盘损坏的数据安全性,并且当同时损坏的磁盘不在同一Raid-1中,就能保证数据安全性。假如磁盘中的某一块盘坏了,整个逻辑磁盘仍能正常工作的。
当我们需要恢复RAID-10中损坏的磁盘时,只需要更换新的硬盘,按照RAID-10的工作原理来进行数据恢复,恢复数据过程中系统仍能正常工作。原先的数据会同步恢复到更换的硬盘中。
读、写性能提升
可用空间: N*min(s1,s2,....)/2
有容错能力,每组镜像最多只能坏一块
最少磁盘数:4,4+
mdadm:模式化的工具
命令的语法格式: mdadm [mode] <raiddevice> [options] <component-devices>
支持的RAID级别:LINEAR,RAID0, RAID1, RAID4,RAID5, RAID6, RAID10;
模式:
创建:-C
装配:-A
监控:-F
管理:-f,-r,-a
<raiddevice>: /dev/md#
<component-devices>: 任意块设备
-C:创建模式
-n # : 使用#个块设备来创建此RAID;
-l #:指明要创建RAID的级别;
-a {yes|no} : 自动创建目标RAID设备的设备文件;
-c CHUNK_SIZE:指明块大小;
-x #:指明空闲盘的个数;
例如:创建一个10G可用的空间的RAID5:
-D:显示raid的详细信息:
mdadm -D /dev/md#
管理模式:
-f:标记指定磁盘为损坏
-a:添加磁盘
-r:移除磁盘
观察md的状态:
cat /proc/mdstat
虚拟机创建RAID-10测试
虚拟机添加了4快硬盘
启动虚拟机
fdisk -l 查看现有的硬盘 ,可以看到新加的sbd,sdc,sdd,sde
mdadm -C /dev/md0 -n 4 -c 256 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
创建RAID10
cat /proc/mdstat
查看加载状态
mkfs.ext4 /dev/md0
格式化md0 为ext4文件格式
mkdir /home/mydata
创建挂载目录
blkid /dev/md0
查看文件类型和UUID
vim /etc/fstab
编辑fstab 开机自动挂载