Linux学习第三十一篇--RAID和LVM

前言

感觉这一部分的内容还是比较重要的,在大概两三个月前,通读了李智慧大大的《大型网站技术架构·核心原理与案例分析》一书,在里面就提到了RAID这个名词,当时是不知道这个名词的具体含义的,然后百度的了一下,感觉不明觉厉,这一定是一个挺复杂的技术,但是实际上RAID远远比我想象的要简单很多,当然还有LVM这个概念,在最开始装linux的时候,分区时看到了这个名词,然后我就一脸懵逼了,这是个啥???不管了, 反正一定很厉害。
然后大概在上周的时候,我才看到了这一部分的知识,这才恍然大悟。

磁盘阵列:RAID

RAID就是通过技术(软件/硬件)来将多个磁盘整理成一个磁盘使用,就像我们喝饮料的时候,吸管不够长,我们可以接两根吸管组成一根长吸管一样(就我自己这么干过?好糗,手动捂脸),这里就是将多个硬盘组成一个大硬盘来使用,但是,他的作用不只是这么简单,如果只是为了大的话,替代方案太多了,比如前段时间的黑科技50T的SSD,相对而言,RAID还有一定的数据保护作用。

根据组成RAID的实际方案,RAID还可以分为多种形式。

性能最好或最差且安全最低的RAID-0

我们先说 一下RAID0的组成方式。
RAID0的只是单纯的将多块硬盘组合在一起,写入数据的时候,会将数据分为【硬盘数量】份,然后写入到这些硬盘中,这个每一块硬盘都会负责保存一部分的数据,因此这样的话,理想情况下组成RAID0的硬盘数据越多,那么写入数据的性能就会越强,但是为什么我的标题会说他的性能或许会最差呢,因为假设我们组成RAID的硬盘大小是不一致的,那么当数据存储到最小硬盘的存储量*硬盘数量的大小之后,那么性能就会比最初的时候变差,因为这时最小的那块硬盘已经存满,这样写入数据时就会变成(数据大小/(硬盘数-1)),相对于(数据大小(/硬盘数))来说,剩余的硬盘负责的数据量变大了。
而且,因为这些数据时同步写入的多块硬盘的,因此假设有一块硬盘损坏,那么最坏的结果就是所有的数据都不能使用.

性能差但是安全的RAID-1

RAID1和RAID0不一样,RAID0的目的是为了让多块硬盘功能分担数据,但是RAID1的目的却是备份数据。
当我们使用RAID1的时候,同一份数据将会同时写入到两块硬盘上,这样就可以保证当其中一块硬盘损毁时,可以通过另一块硬盘来恢复数据,所以他的安全性比较高,但是因为要将同一份数据写入两次,所以他的写入操作性能会比较低。
看这个方式,都是有比较明显的缺点,那么有没有比较居中的方案呢?

居中的方案RAID-1-0

所谓的RAID10其实就是同时使用RAID1和RAID0,比如先组成RAID1,然后多个RAID1在组成给一个RAID0,当然反过来也是可以的,这样我们就可以在兼顾性能的同时也拥有安全性了。

性能和安全兼备的RAID-5

首先,RAID5至少要有三块硬盘才能组成。
他的性能比RAID1好,安全性比RAID0高,下图是他的实现方案(图取自鸟哥的linux私房菜)
Linux学习第三十一篇--RAID和LVM_第1张图片
他在写入的时候会多出一个同位检查码,而且这个同位检查码不会和数据存放在同一块硬盘中,这样当我们其中一块硬盘损坏的时候,我们剩下的两块硬盘至少可以保证一个持有数据,另一个持有同位检查码,这个同位检查码是通过异或位运算计算出来的,这样我们就可以反计算出损坏硬盘中对应的数据了。
PS:如果这儿不明白,可以看一下百度百科对 RAID5的介绍,这儿,最开始我也是挺好奇他是怎么实现的,百度了一下才发现原来如此。
不过,RAID5最多支持一块硬盘损坏,当硬盘损毁两块及以上的时候,就无法恢复数据了。
当然还有一种RAID6,最多可以支持两块硬盘的损毁,但是性能要比RAID5差一些, RAID6的实现原理看这儿~
好了,上面都是一些关于RAID的概念,那么应该如何实现RAID呢?
其实RAID的实现可以分为两种方式,一种是硬件级别的RAID,另一种是软件级别的RAID。
硬件级别的实现方式就是通过RAID卡或者主板集成的RAID功能。
软件级别的就是通过操作系统来实现的RAID功能。
这里就不给出具体的实现方式了,网上都会有教程,而且不算很复杂(想要在linux上使用RAID可以使用 mdadm 包)。
这儿给出更详细的RAID的介绍

逻辑卷管理LVM

LVM针对的问题是当我们对系统分区的时候,往往会很纠结我们应该给每个分区多少大小(PS:我上周将我的工作机换成linux的时候就遇到了这个问题)。
分的大了用不了就浪费了,分小了不够用就很尴尬了。
LVM在分区和文件系统之间添加了一个逻辑层,文件系统不直接作用在分区上,而是作用在这个逻辑卷上,这样文件系统和分区就不直接沟通,当我们就可以较方便的改变大小了。
戳这儿看LVM的信息~
戳这儿看LVM的操作~



你可能感兴趣的:(linux)