分类: LINUX
2014-08-18 11:06:57
原文地址:[原创] Software-RAID 笔记 - (上篇) 作者:ailms
Software-RAID 笔记
一、
基础知识
1、
什么是 RAID
RAID (Redundency RAID
of Independent Disks),也有把 Independent 换成 Inexpensive 的,不过我更喜欢前者。就是把多个物理硬盘或者分区组合成一个“大的硬盘(或者分区)”,可以带来性能、容错能力方面的提升和增强,也降低了每个物理设备的 MTBF (平均故障间隔时间)。
如有需要了解更多,请前往 :
2、
RAID 的级别
1)
Linear :两个或者多个磁盘组合成一个物理设备,就象把多个硬盘首尾连接一样。所以在写数据时,会先写满第一磁盘,再写第2个,依次类推。各个磁盘的大小无关紧要。该级别不带任何冗余(redudancy)能力,假如有一个磁盘坏了,很大可能所有的数据都会丢失。采用这种方式的 RAID 在单个的读/写的性能上并不会提高,不过如果不同的用户访问不同的磁盘,倒是可以有一些提升。
2)
RAID-0 (条带模式):也称为 stripe 模式。设备应该(不是必须)都是相同的大小,对阵列的操作会“并行”地分散到多个磁盘上。这是所有 RAID 级别中性能最高的一种。和 Linear 模式一样,RAID-0 也不提供冗余
3)
RAID-1 :这是第一个提供冗余的模式。RAID-1 能够用于两个(或者多个)磁盘的环境中,还可以选择是否带 spare 盘(允许多个)。该模式会把第一个盘(源盘)上的数据完全复制到其他的磁盘上。RAID-1 要求所有的设备的大小都一样,否则 RAID 可用的容量等于所有磁盘容量中最小的那个。RAID-1 允许 N-1 个磁盘失效 。假如有 spare 盘,则系统会在检测到磁盘故障后立即开始重建镜像。性能方面,写操作的性能会比对单个磁盘来得差,因为必须把拷贝数据送到多个硬盘上。特别是在大型的 software-RAID-1 中,这可能是一个比较严重的问题,因为多个拷贝可能会使 PCI 总线变得饱和。这也是硬件RAID 要好的一个地方之一。因为在硬件 RAID 中,这些拷贝数据不需要通过 PCI 总线,而是由 RAID 控制器产生的。至于读方面的性能则提高了,内核的代码会自动从多个硬盘中选择磁头最靠近目标数据的位置的磁盘来进行读取,从而减少了寻道的时间。
补充 :也有说在读取数据时,系统会尝试同时从多个盘读取数据,也可以达到提高性能的效果。
4)
RAID-4 :用的不是很多。它能够用于3个或者更多的硬盘上。和 RAID-1 相比,它不会完全拷贝源盘上的数据,而是用一个盘来保存奇偶校验信息,把实际的数据写入到其他 N-1 个磁盘上,所以 RAID-4 的可用空间实际上是 (N-1)*S MB (N 是物理磁盘数量,S 是每个磁盘的大小)。同样,RAID-4 也要求使用相同大小的磁盘,否则会造成空间的浪费。RAID-4 也提供了冗余能力,假如有一个盘坏了,可以通过奇偶校验盘和其他盘上的数据计算出故障盘上原来的数据。RAID-4 只允许有1个盘失效,如果有两个盘坏了,则全部数据都会丢失。RAID-4 之所以比较少用,是因为奇偶校验盘是一个瓶颈,每次写从操作都要更新奇偶校验盘上的信息,久而久之容易造成损坏。所以奇偶校验盘必须是性能最好的那块盘。(RAID-4 就是带奇偶校验的 stripe 模式)
5)
RAID-5 可以说是最常用的模式了。它是 RAID-4 的一种改进,不再单独使用一个盘来保存校验信息,而是分布到每个盘上。RAID-5 的可用空间也是N-1)*S MB。 它也支持 spare 盘的使用,重建过程会在检测到故障后立即进行。同样 RAID-5 也只允许同一时刻只有1个盘出错,如果有2个出错,则数据会全部丢失。RAID-5的读写性能会有所提升,但不会提升很多。在读方面和 RAID-0 差不多,因为 RAID-5 说到底也是一种带分布式奇偶校验信息的 stripe 模式,写方面则不好说,可能会 RAID-1 相同,也可能更糟(因为需要计算奇偶校验,而且还需要先读取其他的信息才能计算出正确的奇偶校验信息
6)
RAID-6 :和 RAID-5 类似,但是有两份奇偶校验信息,所以允许同时有2块盘是坏的。所以需要 N+2 个硬盘。不过由于算法复杂,所以不怎么使用。
7)
RAID-10 (也称为 RAID 1+0) :就是在 RAID-1 的基础上建立 RAID-0 ,一般需要4块盘。
也有见过是 RAID 0+-1 ,不知道究竟是那个。自己是按照 RAID 1+ 0 来做的。
8)
如果需要更多信息,请参考 :
3、
Software-RAID
1) 什么是 Software-RAID :Software-RAID 就是用操作系统(内核和驱动)来实现 RAID 。
2) Software-RAID 和 hardware-RAID 的区别 (性能和易用性、配置方面) :
a.
性能 :一般认为 hardware-RAID 性能要好一些。虽然 Software-RAID 要消耗 CPU 资源,但更大的瓶颈在于总线上,现在的 CPU 已经很快了。
b.
支持的 RAID 级别 :在 2.4.20-8 内核上只支持 linear/riad-0/1/5/multipath ,硬件 RAID 应该看具体的 RAID 卡而定
c.
使用方面 :硬件 RAID 一般有自己的监控软件,software-RAID 没有(虽然 mdadm 可以做到,但也是很简单的)
d.
更换磁盘和重建 :硬件 RAID 一般把新盘插上去就可以了。软件 RAID 则需要一些步骤。而且 resync 过程应该也没有硬件 RAID 来得快。
e.
。。。 (想不出了,各位朋友帮帮忙 ^_^)
3) 使用 Software-RAID 的前提条件
a.
内核的版本必须是 2.4 或者 2.6 ,由于 2.0/2.2 并不直接支持
Software-RAID ,所以必须打补丁。所以强烈建议使用 2.4/2.6 的内核。
b.
至少两个硬盘。如果是 IDE 硬盘,则最好把它们分别接到两个 IDE 控制器上,且不要接任何从盘,这会严重影响性能。
4) Software-RAID 可以建立于大部分的块设备上,不管是 IDE 还是 SCSI
5) 你甚至可以在多个 software-RAID 的基础上建立 software-RAID。
6) Software-RAID 或者硬件 RAID 并不一定可以提升性能,因为性能并不只在于 RAID 方面,还有很多其他的因素
7) 不需要对 SWAP 分区使用 RAID ,因为系统本身就允许多个 swap 分区的存在。
8) 熟悉 fdisk ,sfdisk ,parted 等工具的使用。
4、
Software-RAID 相关工具 :
1) raidtools :这是很久前的工具了,但也是很好用的工具,虽然目前基本上已经不开发了。缺点是需要维护配置文件
2) mdadm :raidtools 的代替品。不使用配置文件也可以完成绝大部分任务,虽然也可以使用配置文件。比 raidtools 多了一些其他方面的功能。
3) sourcefourge 上也有很多关于 RAID 的工具 :
WoW Raid
Planner :
raidmonitor :
SoftwareRAID2web :