RAID(Redundant Array of Independent Disk,独立磁盘冗余阵列,旧称Redundant Array of Inexpensive
Disk,廉价磁盘冗余阵列) 是一种可以让我们把多块磁盘当作单独一块磁盘来使用的技术。可使用它来提
高磁盘的可靠性或性能,或二者兼有。一组使用RAID技术的磁盘被称作RAID磁盘阵列。
RAID根据性能的不同,存在着多种配置方式,通常兼顾了速度与容错性。下列是几种最常见的配置方式。
RAID0
使用磁盘分割技术(disk striping)将多个磁盘并列起来以提升性能。每块磁盘保存一部分数据,
与MongoDB中的分片类似。由于存在多个底层磁盘,因此大量数据可在同一时间写入磁盘内。这一方
式可提高写入效率。然而,如果其中一块磁盘发生故障导致数据丢失,则这些数据不会存在备份。这
也会导致读取速度变慢(尤其是在Amazon的Elastic Block Store服务上),因为一些数据卷可能比另
一些要慢。
RAID1
使用镜像来提高可靠性。同样的数据副本会被写入到阵列的每一个成员当中。这一方法的性能要
比RAID0低,因为阵列中一个速度慢的成员会拖慢整个阵列的写入速度。然而,如果其中一块磁盘发
生故障,还可以在阵列中的其他成员上找到数据副本。
RAID5
在使用磁盘分割技术的基础上,额外存储数据的校验信息,以防服务器故障导致数据丢失。一般情况
下,在一块磁盘发生故障时RAID5可以自动处理它,用户并不会感觉到故障的发生。然而,这也使
得RAID5成为这些RAID配置方案中最慢的一种,因为它需要在写入数据时计算校验信息。
而MongoDB所进行的恰恰是典型的多次少量的数据写入工作,因此使用RAID5所带来的代价尤为可
观。
RAID10
RAID10是一种RAID0和RAID1的组合:数据被分割以提升速度,又被复制镜像以提高可靠性。
推荐使用RAID10,它比RAID0更安全,也能解决RAID1的性能问题。有人觉得在副本集的基础上再使
用RAID1有些浪费,从而选择RAID0。这是个人喜好问题:你原意为了性能承担多大的风险呢?
不要使用RAID5,它非常非常慢。