最近我们公司有一台做VPS的服务器内存不足了。一开始配置的时候是8G内存,随着客户越来越多,8G内存已经吃紧,于是考虑到升级硬件。我们的技术人员发现服务器的CPU、主板什么的都是很好的产品,完全可以加到16G内存,于是就让机房升级到16G内存了。不过硬盘是个问题,起先按照机房的默认配置是2*250GB SATA RAID 1,说是说2块250G硬盘,不过因为做了RAID,实际能使用的只有1块硬盘,这样就必须取消RAID。而机房回复说,如果要取消RAID,数据都要丢失,只能新上一台不是RAID的服务器,然后把重新配置服务器并把数据全部转移过去。通过这次经历,说明我们对RAID的概念还不清晰,对VPS主机是否需要RAID也没有更深的认识。下面就这两个问题详细阐述下。
首先谈谈VPS母服务器到底是否需要RAID,当然是在尽可能低成本的前提下。按照目前的市场情况要做VPS,内存一般都是8G,16G或者更大的。试想8G内存加上1块250G的硬盘,一般可以放10多个VPS,基本上硬盘容量捉襟见肘,当然也是够用了。不过要是16G内存,就可以放20多个VPS,250G肯定不够了,必须用500G。随之问题又来了,20多个VPS都挤在一块500G的SATA硬盘里面,由于硬盘的读写速度是有限的,这么多VPS有时候会造成硬盘速度缓慢,从而VPS的性能也会下降,所以最好还是采用2块250G硬盘分流的办法。
好了,我们确定下来是16G内存加上2*250G硬盘这样的组合,已经是2块硬盘了。考虑到成本问题,如果再做RAID,要增加硬盘数量,那相应的价格就更贵了,所以只能是这样的组合了。RAID技术在低成本的VPS主机中不现实。下面我们接着讨论下具体什么是RAID。
RAID也即磁盘阵列(Redundant Arrays of Inexpensive Disks),英文的字面意思就是“价格便宜且多余的磁盘阵列”之意。原理是利用数组方式来作磁盘组,配合数据分散排列的设计,提升数据的安全性。磁盘阵列是由很多便宜、容量较小、稳定性较高、速度较慢磁盘,组合成一个大型的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。
磁盘阵列有哪些优点呢?一、提高传输速率。RAID通过在多个磁盘上同时存储和读取数据来大幅提高存储系统的数据吞吐量。在RAID中,可以让很多磁盘驱动器同时传输数据,而这些磁盘驱动器在逻辑上又是一个磁盘驱动器,所以使用RAID可以达到单个磁盘驱动器几倍、几十倍甚至上百倍的速率。二、通过数据校验提供容错功能。普通磁盘驱动器无法提供容错功能,如果不包括写在磁盘上的CRC(循环冗余校验)码的话。RAID容错是建立在每个磁盘驱动器的硬件容错功能之上的,所以它提供更高的安全性。
现在比较流行的RAID技术是RAID 1和RAID 1+0。RAID 1是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能。RAID 1磁盘阵列是十分安全的,不过也是较贵一种RAID磁盘阵列解决方案,因为两块硬盘仅能提供一块硬盘的容量。RAID 1磁盘阵列主要用在数据安全性很高,而且要求能够快速恢复被破坏的数据的场合。下面是RAID 1磁盘阵列的示意图:
还有一种RAID 1+0也被称为RAID 10标准,实际是将RAID 0和RAID 1标准结合的产物,在连续地以位或字节为单位分割数据并且并行读/写多个磁盘的同时,为每一块磁盘作磁盘镜像进行冗余。它的优点是同时拥有RAID 0的超凡速度和RAID 1的数据高可靠性,但是CPU占用率同样也更高,而且磁盘的利用率比较低。RAID 10的特点使其特别适用于既有大量数据需要存取,同时又对数据安全性要求严格的领域,如银行、金融、商业超市等。下面是RAID10磁盘阵列的示意图: