RAID1和RAID0不一样,RAID0的目的是为了让多块硬盘功能分担数据,但是RAID1的目的却是备份数据。
当我们使用RAID1的时候,同一份数据将会同时写入到两块硬盘上,这样就可以保证当其中一块硬盘损毁时,可以通过另一块硬盘来恢复数据,所以他的安全性比较高,但是因为要将同一份数据写入两次,所以他的写入操作性能会比较低。
看这个方式,都是有比较明显的缺点,那么有没有比较居中的方案呢?
居中的方案RAID-1-0
所谓的RAID10其实就是同时使用RAID1和RAID0,比如先组成RAID1,然后多个RAID1在组成给一个RAID0,当然反过来也是可以的,这样我们就可以在兼顾性能的同时也拥有安全性了。
性能和安全兼备的RAID-5
首先,RAID5至少要有三块硬盘才能组成。
他的性能比RAID1好,安全性比RAID0高,下图是他的实现方案(图取自鸟哥的linux私房菜)
他在写入的时候会多出一个同位检查码,而且这个同位检查码不会和数据存放在同一块硬盘中,这样当我们其中一块硬盘损坏的时候,我们剩下的两块硬盘至少可以保证一个持有数据,另一个持有同位检查码,这个同位检查码是通过异或位运算计算出来的,这样我们就可以反计算出损坏硬盘中对应的数据了。
PS:如果这儿不明白,可以看一下百度百科对
RAID5的介绍,这儿,最开始我也是挺好奇他是怎么实现的,百度了一下才发现原来如此。
不过,RAID5最多支持一块硬盘损坏,当硬盘损毁两块及以上的时候,就无法恢复数据了。
好了,上面都是一些关于RAID的概念,那么应该如何实现RAID呢?
其实RAID的实现可以分为两种方式,一种是硬件级别的RAID,另一种是软件级别的RAID。
硬件级别的实现方式就是通过RAID卡或者主板集成的RAID功能。
软件级别的就是通过操作系统来实现的RAID功能。
这里就不给出具体的实现方式了,网上都会有教程,而且不算很复杂(想要在linux上使用RAID可以使用 mdadm 包)。
逻辑卷管理LVM
LVM针对的问题是当我们对系统分区的时候,往往会很纠结我们应该给每个分区多少大小(PS:我上周将我的工作机换成linux的时候就遇到了这个问题)。
分的大了用不了就浪费了,分小了不够用就很尴尬了。
LVM在分区和文件系统之间添加了一个逻辑层,文件系统不直接作用在分区上,而是作用在这个逻辑卷上,这样文件系统和分区就不直接沟通,当我们就可以较方便的改变大小了。