存储多路径问题以及RAID介绍

存储多路径问题

在我们的生产环境中,为了保证业务的高可用性,我们一般都会使用全冗余组网的连接方式。而我们的存储服务器为了保证自身冗余,一般也有两个控制器,比如A控和B控,两个控制器做冗余。如下图所示,当我们要把一个5G的LUN存储资源给一个主机使用,如果采用全冗余组网的方式,那么就一共有4条链路,就是下图中的蓝色线条。这个时候因为有4条链路,所以我们的主机会看到4个5G的存储资源,即可以看到4个磁盘(如下图所示,图中是拿2G做的例子))但是其实只有一个是可以使用的,这就是存储多路径问题。

 

 

 

 

 

 

那么怎么解决存储多路径问题呢?这就要用到多路径软件。不同的厂商有不同的多路径软件,一般都会直接提供给我们,比如华为的多路径软件就是UltraPath,通过多路径软件,可以将4条链路做一个逻辑上的聚合,最终只显示一个磁盘,如下图所示,这就很好的解决了多路径问题。

 

 

 

RAID 技术

RAID:Redundant Arrays of Independent Disks。有"数块独立磁盘构成具有冗余能力的阵列”之意。独立磁盘冗余阵列(RAID,redundant array of independent disks)是把相同的数据存储在多个硬盘的不同的地方的方法。通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了平均故障间隔时间(MTBF),储存冗余数据也增加了容错。

 
RAID技术主要有以下三个基本功能:
 
(1)通过对磁盘上的数据进行条带化,实现对数据成块存取,减少磁盘的机械寻道时间,提高了数据存取速度
(2)通过对一个阵列中的几块磁盘同时读取,减少了磁盘的机械寻道时间,提高数据存取速度。
(3)通过镜像或者存储奇偶校验信息的方式,实现了对数据的冗余保护。

RAID技术主要为了解决两大问题:1、磁盘性能 2、数据冗余,安全性。

 

根据不同的功能和组合方式,可以将RAID分为不同的级别。主要有RAID0,1,3,5,6,10,50等,下面详细的介绍一下他们的区别。

RAID0:为了提升磁盘性能。如下图所示,假设有两块500G的盘做了RAID0,磁盘写入数据的时候是在两块磁盘上依次写入的,比如在盘1上写了1,就会在盘2上写2,这样的话磁盘利用率是最高的,1T的容量都可以被完全使用。但是假如两块盘配置不一样,可以做Raid0吗?比如一块盘的容量是320G,转速是5400/分,另一块盘的容量是500G,转速是7200/分,这两个磁盘可以做Raid 0吗?答案是可以的。但是会默认使用低配置的盘来进行配置,高配置的500G 的盘只有320G可用,转速也只有5400/分,这就会造成资源浪费。所以我们一般会使用同配置的磁盘做RAID0。另外一个问题是一块盘可以做RAID 0 吗? 答案也是可以的,但是磁盘的性能不会得到提升。

我们可以看到RADI 0的优点是磁盘利用率最高,性能最好,但是缺点是完全没有数据冗余。

 

RAID 1:至少需要两块盘。数据写入方式如下图所示,两块盘完全做了冗余,互为镜像,写入的数据是一模一样的。所以RAID 1的磁盘利用率只有50%,两块500G 的盘只能写500G的数据。RAID1只能是偶数的磁盘才能做,比如2,4,6等,3个盘,5个盘是不能做RAID1 的。RAID1的缺点是利用率低,性能差,优点是有数据冗余,保证了安全性。这里有一个问题,如果第一快盘上的数据2被删掉了,那么第二块盘上的数据2还在吗?答案是第二块盘上的数据2也不在了。因为这两块盘是完全互为镜像的,上边的数据始终保持一致。

 

 我们可以看到RAID0,1各有优缺点,那么能不能把他们的优点结合起来呢?于是RAID3就出现了。

RAID3:RAID3至少需要3块盘。数据写入方式如下图所示。我们可以看到对于每一个条带的数据,它都会算出来一个校验位,这个校验位是根据前两快盘的数据算出来的,这个盘也叫做校验盘。RAID3允许任一块盘损坏,比如如果盘1坏了,根据盘2的数据和校验位,我们可以把盘1的数据算出来进行恢复;如果是盘2坏了,同样也是可以算出来的;如果是校验盘坏了,因为校验盘上本来就没有数据,所以也不会丢数据。但是RAID3最多也只能损坏一块盘。所以RAID3即保证了性能,也有数据冗余。 但是RAID3的瓶颈在于校验盘,这块校验盘心想,只有你们两个盘来写数据,而我只用来做校验,觉得不公平,而且当需要写的数据很多时,校验盘的性能有限,可能算校验位的时间就比较慢,这就是RAID3的缺点。 于是为了解决这个问题,RAID 5就出现了

 

 

RAID 5

RAID5至少需要3快盘。RAID5数据写入方式如下图所示,每个盘上都有校验位,相当于分布式校验。所以RAID5相比于RAID3性能又有了提升。不管用多少快盘来做RAID5,RAID5也是最多只能损坏一快盘,损坏的再多的话就没法根据其他盘来计算数据,就会发生数据丢失。那么RAID的磁盘利用率是多少呢?有一个公式可以来计算:(n-1)/ n

 

 

 

RAID 6

RAID6要求至少有4块盘。数据写入方式如下图所示。每两个盘拿来做一个校验位。RAID6最多允许损坏两块盘。RAID6在平常使用的很少,很少见。

 

 

RAID 10

相当于把RAID1和0结合起来,先做RAID1,在做RAID 0。数据写入方式如下图,既保证了性能,又做了冗余。RAID10可以损坏两块盘,但是只能损坏两侧之中的各一个,不能同时损坏一个RAID1中的。

 

RAID50

类似于RAID10,先做RAID5,在做RAID0。

 

最后的题外话-----------------------------------------------------------------------------------------------------------------------

对于一个服务器来说,CPU不是最重要的,内存不是最重要的,磁盘才是最重要的。因为我们的数据都是存放在磁盘中的,而数据是最为重要的。那么CPU,内存,磁盘都是干什么的呢?CPU是我们电脑的运算核心,处理各种运算,所以CPU的速度是最快的,比磁盘快特别多。内存是非持久化存储,他就是用来给CPU提供数据的,如果CPU要使用磁盘中的数据,因为磁盘太慢,内存会先将这些数据调用过来,CPU再从内存调用。所以像一些大的电脑游戏或者PS等大的软件运行的时候,因为内存要跑他们的文件,所以如果电脑内存不够的话电脑就会特别卡。磁盘是持久化存储,是真正用来存数据的,他的速度也是最慢的。

 

posted @ 2022-03-24 19:20  云计算成长路  阅读(2013)  评论(0编辑  收藏  举报