前段时间,跟着运维部门一块安装新到的一批服务器,在服务器刚到的时候,需要对新的服务器做RAID,做RAID的目的,是让改善磁盘的访问效率,增强磁盘的可用性和容错能力。当然如何需要看要做什么RAID了。
接下来,对RAID技术的种类进行一下整理。
RAID0
在N块磁盘的情况下:数据在内存缓冲区写入磁盘的时候,根据磁盘的数量将数据分成N分,这些数据同时写入到N块磁盘中,使得数据整体的写入速度是一块磁盘的N倍。读取的时候也一样,所以RAID0具有几块的数据读写速度。但是RAID0没有数据备份,N块磁盘是一个整体,只要有一块磁盘损坏,数据的完整性就被破坏了,那么整个数据就被损坏了。
RAID0原理图:
RAID1
数据在写入磁盘时,将一份数据同时写入到两块磁盘中,任何一块磁盘损坏都不会导致数据丢失。如果有一块损坏,再插入一块新的磁盘,那么这块新的磁盘可以通过复制数据的方式自动修复,具有很高的可靠性。
缺点:利用率低,为50%。举例:2块1T的硬盘,实际使用的是1T的空间。
RAID1原理图:
RAID10
这种方式是结合RAID0和RAID1两种方案,即把所有的磁盘平均分成两份,数据同时在两份磁盘中写入,但还是在一半的磁盘中重复存储。既提高了可靠性又改善了性能,不过RAID1的缺点没有解决。
RAID3
为了解决RAID1磁盘利用率低的问题,考虑到一台服务器同时出现两块磁盘损坏的可能性比较低,如何换一种存储方式来提高磁盘的利用率。
假设在a(1)+a(2)+a(3)+……+a(n-1)=a(n)的情况下。对于n个数据来说,知道其中的任何(n-1)个数据,那么第n个数据,都可以用已知的(n-1)个数据计算得到。
所以RAID3采用这种思路来进行存储,即N块磁盘,使用其中的(N-1)块磁盘做存储,另外一块做校验使用。这样做的话,任何一块磁盘损坏,都可以通过其他的N-1块磁盘进行数据修复。这样磁盘的利用率就被提高了。
RAID3原理图:
RAID5
对于RAID3来说,第n块磁盘做校验用。考虑到在数据修改较多的场景中,任何磁盘的数据修改,都会影响第n块磁盘校验数据的重写。这样做的后果,会导致,做校验的这块磁盘比其他的磁盘更容易损坏,需要频繁更换。
为了避免这种情况,所以提出了RAID5.
RAID5也是采用RAID3的这种思想,只不过是,RAID5不指定某一块磁盘作为校验。而是采用螺旋式地写入到所有的磁盘中。这样校验的数据修改,也被平均分到所有磁盘上,避免了RAID3频繁写坏一块磁盘的情况。所以RAID5将经常在实践中使用。
RAID6
在掌握RAID5的情况下,服务器基本就可以有较高的可用性了。允许一块磁盘损坏而不影响数据。当然,如果同时出现两块或两块以上磁盘的损坏,那就有事了。
RAID6和RAID5相类似,但是数据只写入N-2块磁盘,并使用不同的算法,螺旋式地在两块磁盘中写入校验信息。
原理图:
几种RAID技术的比较:
总结
RAID技术在传统关系型数据库及文件系统中应用比较广泛,但是在大型网站来说,可以使用分布式文件系统,对多台服务器进行数据并发读写和备份,实现了类似RAID的功能。不管怎么说,数据一定要备份。