RAID总结
一、
RAID
定义
RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列或Redundant array of inexpensive disks昂贵冗余磁盘阵列
)起初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使其对数据的访问受损失而开发的具有一定水平的数据保护技术。RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现的。RAID可以充分发挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能,确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会受到损坏硬盘的影响。磁盘阵列还能利用同位检查(Parity Check)的观念,在
数组中任一颗
硬盘出现故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。多个硬盘增加了
平均故障间隔时间(MTBF),储存冗余数据也增加了容错能力。
二、
RAID
功能
1、扩大了存储能力,由多个硬盘组成容量巨大的存储空间;
2、降低了单位容量的成本,采用多个普及型硬盘组成的阵列其单位价格要低得多;
3、可靠性,RAID系统可以使用两组硬盘同步完成镜像存储;
4、容错性,容错阵列中如有单块硬盘出错,不会影响到整体的继续使用;
5、目前还有一个功能就是支持ATA/66/100。RAID也分为SCSI RAID和IDE RAID两类,当然IDE RAID要廉价得多
总的来说,RAID采用存储系统,提高了传输速率和提供容错功能。
三、
RAID
保证数据可用性的方法
RAID技术主要包含RAID 0~RAID 50等几个规范,它们的侧重点各不相同,常见的规范有:RAID0、RAID1、RAID10、RAID01、RAID5、RAID50等,这几种类型是比较常见的。下面分别来说一下这几种类型的用法:
(
1
)
、
RAID 0
:无差错控制的条带,要实现RAID0必须要有两个以上硬盘驱动器,RAID0实现了条带,数据并不是保存在一个硬盘上,而是分成数据块保存在不同驱动器上,并且RAID可以提高数据传输速率,在所有的级别中,RAID 0的速度是最快的。但是RAID 0没有冗余功能,如果一个磁盘(物理)损坏,则所有的数据都无法使用。
(
2
)、
RAID 1
:镜象结构,RAID控制器必须能够同时对两个盘进行读操作和对两个镜象盘进行写操作,使用镜象,提高了系统的容错能力。且RAID1技术支持“热替换”,即不断电的情况下对故障磁盘进行更换,更换完毕只要从镜像盘上恢复数据即可。当主硬盘损坏时,镜像硬盘就可以代替主硬盘工作。镜像硬盘相当于一个备份盘,安全性是非常高的,RAID 1的数据安全性在所有的RAID级别上来说是最好的。但是其磁盘的利用率却只有50%,是所有RAID级别中最低的。
(3)
RAID 10是先镜像再做条带。是将所有硬盘分为两组,可以看做是RAID 0的最低组合,然后将这两组看做是RAID 1运作。RAID 10有着不错的读取速度,而且拥有比RAID 0更高的数据保护性(通常用在企业内部),同组磁盘不能同时坏
(4)
RAID 01
则与
RAID 10
相反,先做条带再镜像,它将所有的硬盘分为两组,变成
RAID 1
的最低组合,RAID 01比起RAID 10有着更快的读写速度,同组磁盘坏掉也有可能不会影响RAID01的工作。
(
5
)
RAID5
:分布式奇偶校验的独立磁盘结构,RAID5的读出效率很高,写入效率一般,块式的集体访问效率不错。因为奇偶校验码在不同的磁盘上,所以提高了可靠性,允许单个磁盘出错。这样,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。
硬盘的利用率为n-1。但是它对数据传输的并行性解决不好,优点是提供了冗余性(支持一块盘掉线后仍然正常运行),
磁盘空间利用率较高(N-1/N),读写速度较快(N-1倍)。RAID5最大的好处是在一块盘掉线的情况下,RAID照常工作,相对于RAID0必须每一块盘都正常才可以正常工作的状况容错性能好多了
(
6
)、
RAID 50
:被称为分布奇偶位阵列条带,同RAID 10相似,它具有RAID 5和RAID 0的共同特性。它由两组RAID 5磁盘组成,RAID 50提供可靠的数据存储,即使两个物理磁盘发生故障(每个阵列中一个),数据也可以顺利恢复过来。
下面我用一张表格来展现这几种类型的优缺点各是:
RAID类型
|
性能表现
|
冗余能力
|
空间利用率
|
所需盘的数
|
RAID0
|
读写提升
|
无
|
nS
|
至少2块
|
RAID1
|
写下降读提升
|
有
|
1/2
|
至少2块
|
RAID10
|
读写提升
|
有
|
1/2
|
至少4块
|
RAID01
|
读写提升
|
有
|
1/2
|
至少4块
|
RAID5
|
读写提升
|
有
|
(n-1)/n
|
至少3块
|
RAID50
|
读写提升
|
有
|
(n-2)/n
|
至少6块
|
四、
RAID
架构以及如何实现
RAID
1、RAID架构包括:硬件RAID和软件RAID,公司用的基本上都是硬件RAID,简单了解一下,在这里我们先了解一下软件RAID。软件RAID很多情况下已经包含在系统之中,并成为其中一个功能,如Windows、Netware及Linux。当然这里我们说的是linux,所有操作都是由
中央处理器负责,所以系统资源的利用率会很高,从而使系统性能降低。
2、如何实现硬件RAID?
简单来讲主板上需要一个控制芯片,因此硬件RAID在服务器的主板上有可能直接集成了硬件控制器,还需要外部设备:机箱或者是存储箱,在机箱上插了n块硬盘,这个设备本身外部有一个接口(SCSI或IDE),使用线缆将这个RAID控制器与这个接口连接起来,就能够在我们当前主机上访问外部存储设备,这个存储设备就是一个专门的存储阵列。
3、如何实现软件RAID?
主板是PC机,上面只接了4块SATA盘,没有额外的配置,软件RAID的实现实际上就是内核上有一个设备模块,md(multi disks)叫多磁盘,多设备。这个模块工作时我们可以配置它,可以读取配置信息,信息中明确标出了哪几盘可以组成RAID,当用户再想往我们的某个盘存数据的时候,首先得请求内核,于是内核就可以往我们之前设好的几个盘上存数据了。但内核识别的是几个相互独立的磁盘,要访问每个磁盘就要拷贝它的设备文件,但它是独立的,所以我们要用md模拟一个RAID(假的)出来,逻辑RAID:/dev/md#(#=0,1,2,,,,表示设备而不是级别),因此在内核中模拟了一个RAID,以后我们在存数据的时候就由内核中的程序把这些数据分散成需要的RAID对应模式。透过RAID来访问模块,模块就是虚拟的RAID,但是直接访问时它就是几个独立硬盘而已,任何一个硬件设备都可以用软件来模拟的。 软件RAID的性能取决于CPU的能力及其CPU分数据片、空闲的能力。
内核可识别的类型:linux软RAID磁盘设备标识成fd比较独特,Swap的是8e
(1)、在用户空间有一个工具(管理工具):mdadm:允许将任何块设备做成RAID ,是模式化的命令:包括以下模式
创建模式 -C:有很多专用选项:
-l:级别
-n:设备个数
-a:自动为其创建设备文件(后跟Yes|No)
-c:CHUNK数据块大小(2的^n,默认是64K)
-x:指定空闲个数
管理模式 --add,--del,--fail,--remove
mdadm /dev/md# -f /dev/sda# :模拟某个设备损坏
监控模式-F
增长模式-G
装配模式
–A
(2)、模拟实现:创建一个2G的RAID0
可以规划成4个521MB的,也可以规划成2个1G的(2个盘大小相同),下面我们采用第二种规划:在创建之前我们首先要准备好几个分区,我们就创建5和6两个分区,步骤用fdisk /dev/sda ——>p——>n——>空格——>+1G——>p——>n——>空格——>+1G——>t——>5——>fd——>t——>6——>fd——>w(保存退出);
partprobe /dev/sda:内核重读分区;
cat /proc/parttitions查看5和6是否被使用;
mdadm –C /dev/mdo -a yes -l 0 –n 2 /dev/sda{5,6}创建/dev/下的sda5,sda6为/md0,自动创建设备文件,级别为0,设备个数为2;
cat /proc/mdstat显示当前设备上的启用设备;
mke2fs –j /dev/md0启用之前先格式化;
mount /dev/md0 /mnt 挂载;ls /mnt 查看挂载是否成功
cp /etc/inittab /mnt 复制一个文件到/mnt下
(3)模拟磁盘损坏:
在管理模式下模拟磁盘损坏:mdadm –D /dev/md# = mdadm –-detail /dev/md# 显示(你所指定的模拟器)RAID的详细信息
下面我们模拟sda5损坏mdadm /dev/md0 -f /dev/sda5
这时sda5已经没用了,我们将它移除mdadm /dev/md0 –r /dev/sda5 移除(热移除)
我们在重新加一个盘进去 mdadm /dev/md1 –a /dev/sda7 (注意加进去的这个盘要和sda5大小相同)
(4)假如你不想用RAID0了,那我们可以停止磁盘阵列 mdadm –S /dev/md0
重新启用:mdadm –A /dev/md0 /dev/sda{5,6}
将当前RAID信息保存至配置文件,以便以后进行装配
mdadm -D --scan --> /etc/mdadm.conf
另外补充一点,创建CHUNK大小:mke2fs –j –E stride=16 –b 4096 /dev/md0
本文出自 “丽的博客” 博客,谢绝转载!