Linux【6】-硬盘管理4-1-RAID技术

RAID 的全称是廉价磁盘冗余阵列( Redundant Array of Inexpensive Disks ), 于 1987 年由美国 Berkeley 大学的两名工程师提出。

RAID技术确实提供了大存储、比通常的磁盘存储更高的性能指标、数据完整性和数据可用性,很高的数据传输效率。尤其是在当今面临的I/O总是滞后于CPU性能的瓶颈问题越来越突出的情况下,RAID解决方案能够有效地弥补这个缺口。

概要:

  • RAID 0 是最快,最有效率的阵列类型,但是不支持容错功能。
  • RAID 1 适合性能要求高且需要容错的阵列。RAID1是在只有少于2个磁盘的环境下支持容错功能的唯一选择。
  • RAID 0+1 适用于既有大量数据需要存取,同时又对数据安全性要求严格的领域,如银行,档案馆等。
  • RAID 5 是在多用户对数据写入的性能要求不高的环境下的最好选择。它要求至少3个,通常用5个磁盘来执行。

一、RAID 1 (GameDB 都做了 Raid 1)

RAID 1又称为Mirror或Mirroring(镜像),它的宗旨是最大限度的保证用户数据的可用性和可修复性。 RAID 1的操作方式是把用户写入硬盘的数据百分之百地自动复制到另外一个硬盘上。

如图所示:当读取数据时,系统先从RAID 0的源盘读取数据,如果读取数据成功,则系统不去管备份盘上的数据;如果读取源盘数据失败,则系统自动转而读取备份盘上的数据,不会造成用户工作任务的中断。当然,我们应当及时地更换损坏的硬盘并利用备份数据重新建立Mirror,避免备份盘在发生损坏时,造成不可挽回的数据损失。

由于对存储的数据进行百分之百的备份,在所有RAID级别中,RAID 1提供最高的数据安全保障。同样,由于数据的百分之百备份,备份数据占了总存储空间的一半,因而Mirror(镜像)的磁盘空间利用率低,存储成本高。

Mirror虽不能提高存储性能,但由于其具有的高数据安全性,使其尤其适用于存放重要数据,如服务器和数据库存储等领域.

二、RAID 0

RAID 0又称为Stripe(条带化)或Striping,它代表了所有RAID级别中最高的存储性能。RAID 0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。

如图所示:系统向三个磁盘组成的逻辑硬盘(RADI 0 磁盘组)发出的I/O数据请求被转化为3项操作,其中的每一项操作都对应于一块物理硬盘。我们从图中可以清楚的看到通过建立RAID 0,原先顺序的数据请求被分散到所有的三块硬盘中同时执行。从理论上讲,三块硬盘的并行操作使同一时间内磁盘读写速度提升了3倍。 但由于总线带宽等多种因素的影响,实际的提升速率肯定会低于理论值,但是,大量数据并行传输与串行传输比较,提速效果显著显然毋庸置疑。

RAID 0的缺点是不提供数据冗余,因此一旦用户数据损坏,损坏的数据将无法得到恢复。

RAID 0具有的特点,使其特别适用于对性能要求较高,而对数据安全不太在乎的领域,如图形工作站等。对于个人用户,RAID 0也是提高硬盘存储性能的绝佳选择。

三、RAID 0+1 (也称 RAID10)

正如其名字一样RAID 0+1是RAID 0和RAID 1的组合形式,也称为RAID 10。

以四个磁盘组成的RAID 0+1为例,其数据存储方式如图所示:RAID 0+1是存储性能和数据安全兼顾的方案。它在提供与RAID 1一样的数据安全保障的同时,也提供了与RAID 0近似的存储性能。

由于RAID 0+1也通过数据的100%备份功能提供数据安全保障,因此RAID 0+1的磁盘空间利用率与RAID 1相同,存储成本高。

RAID 0+1的特点使其特别适用于既有大量数据需要存取,同时又对数据安全性要求严格的领域,如银行、金融、商业超市、仓储库房、各种档案管理等。

四、RAID 5 (唯一做奇偶校验的RAID)

RAID 5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。 以四个硬盘组成的RAID 5为例,其数据存储方式如图4所示:图中,P0为D0,D1和D2的奇偶校验信息,其它以此类推。由图中可以看出,RAID 5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。

RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比Mirror低而磁盘空间利用率要比Mirror高。RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低。

RAID分类:

软件 RAID由于是操作系统下实现 RAID ,软 RAID 不能保护系统盘,当系统崩溃,需重新安装时, RAID 的信息也会丢失,因为RAID 的配置信息存在系统信息中,而不是存在硬盘上。当运行 I/O 增强应用程序,如文件服务器或应用程序服务器,可适当的使用软件 RAID 。 RAID 5 是 CPU 的增强方式,所以不建议使用软件 RAID 在增强的处理器服务器中。Windows NT 、 Windows2000 、 LINUX 、 OPENSERVER 支持 RAID 0, RAID1 和 RAID5 。

硬件 RAID 硬件 RAID 是采用集成的阵列卡或专用的阵列卡来控制硬盘驱动器,这样可以极大节省服务器系统 CPU 和操作系统的资源。从而使网络服务器的性能获得很大的提高。现在的 RAID 卡产品,都支持在线更换,热插拔或热交换。并在部分操作系统下实现软件监控和管理。

五、linux下判断磁盘是否为raid

(这里并没有适用我的平台)

有时想知道服务器上有几块磁盘,如果没有做raid,则可以简单使用fdisk -l 就可以看到。 但是做了raid呢,这样就看不出来了。那么如何查看服务器上做了raid?

软件raid:

只能通过Linux系统本身来查看   cat /proc/mdstat   可以看到raid级别,状态等信息。  

硬件raid:

最佳的办法是通过已安装的raid厂商的管理工具来查看,有cmdline,也有图形界面。如Adaptec公司的硬件卡就可以通过下面的命令进行查看:   # /usr/dpt/raidutil -L all   可以看到非常详细的信息。   当然更多情况是没有安装相应的管理工具,只能依靠Linux本身的话一般我知道的是两种方式:   # dmesg |grep -i raid  # cat /proc/scsi/scsi   显示的信息差不多,raid的厂商,型号,级别,但无法查看各块硬盘的信息。

如下信息作为案例, 命令为

# fdisk -l 
Disk /dev/sda: 145.9 GB, 145999527936 bytes
255 heads, 63 sectors/track, 17750 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14       17750   142472452+  8e  Linux LVM

# cat /proc/scsi/scsi

Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: SEAGATE  Model:  ST3146356SS      Rev: HS09
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi0 Channel: 00 Id: 01 Lun: 00
  Vendor: SEAGATE  Model: ST3146356SS      Rev: HS09
  Type:   Direct-Access                    ANSI SCSI revision: 05
Host: scsi0 Channel: 01 Id: 00 Lun: 00
  Vendor: Dell     Model: VIRTUAL DISK     Rev: 1028
  Type:   Direct-Access                    ANSI SCSI revision: 05

通过以上信息可以看出,该服务器有两块磁盘。品牌是希捷的,磁盘代号为 ST3146356SS,如果你熟悉细节磁盘的代号命名规则,你会轻易判定该磁盘大小为146G 。再根据fdisk 得出的结果可以判定,该服务器是拿两块146G的硬盘做的raid1.

RAID 实战:

http://www.raid.org.cn

参考资料

这里是一个广告位,,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn