前言

相信比较喜欢硬件的同学都对Raid这个东西都有所耳闻,可能没有实践操作过,借此文我也想科普一下服务器的磁盘阵列(Redundant Arrays of Independent Disks,RAID)

磁盘阵列是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上

常见的磁盘阵列模式有

  • Raid 0
  • Raid 1
  • Raid 5
  • Raid 10
  • Raid 50

Raid0

RAID0 是一种非常简单的的方式,它将多块磁盘组合在一起形成一个大容量的存储。当我们要写数据的时候,会将数据分为N份,以独立的方式实现N块磁盘的读写,那么这N份数据会同时并发的写到磁盘中,因此执行性能非常的高。

RAID0 的读写性能理论上是单块磁盘的N倍(仅限理论,因为实际中磁盘的寻址时间也是性能占用的大头)

但RAID0的问题是,它并不提供数据校验或冗余备份,因此一旦某块磁盘损坏了,数据就直接丢失,无法恢复了。因此RAID0就不可能用于高要求的业务中,但可以用在对可靠性要求不高,对读写性能要求高的场景中。

Raid1:

RAID1 是磁盘阵列中单位成本最高的一种方式。因为它的原理是在往磁盘写数据的时候,将同一份数据无差别的写两份到磁盘,分别写到工作磁盘和镜像磁盘,那么它的实际空间使用率只有50%了,两块磁盘当做一块用,这是一种比较昂贵的方案。

RAID1其实与RAID0效果刚好相反。RAID1 这种写双份的做法,就给数据做了一个冗余备份。这样的话,任何一块磁盘损坏了,都可以再基于另外一块磁盘去恢复数据,数据的可靠性非常强,但性能就没那么好了

Raid5:

这是目前用的最多的一种方式。
因为 RAID5 是一种将 存储性能、数据安全、存储成本 兼顾的一种方案。

在了解RAID5之前,我们可以先简单看一下RAID3,虽然RAID3用的很少,但弄清楚了RAID3就很容易明白RAID5的思路。

RAID3的方式是:将数据按照RAID0的形式,分成多份同时写入多块磁盘,但是还会另外再留出一块磁盘用于写「奇偶校验码」。例如总共有N块磁盘,那么就会让其中额度N-1块用来并发的写数据,第N块磁盘用记录校验码数据。一旦某一块磁盘坏掉了,就可以利用其它的N-1块磁盘去恢复数据。

但是由于第N块磁盘是校验码磁盘,因此有任何数据的写入都会要去更新这块磁盘,导致这块磁盘的读写是最频繁的,也就非常的容易损坏。

RAID5的方式可以说是对RAID3进行了改进。

RAID5模式中,不再需要用单独的磁盘写校验码了。它把校验码信息分布到各个磁盘上。例如,总共有N块磁盘,那么会将要写入的数据分成N份,并发的写入到N块磁盘中,同时还将数据的校验码信息也写入到这N块磁盘中(数据与对应的校验码信息必须得分开存储在不同的磁盘上)。一旦某一块磁盘损坏了,就可以用剩下的数据和对应的奇偶校验码信息去恢复损坏的数据

实际应用

实际应用过程中,Raid1 和Raid0 一个成本太高 一个风险太高,所以大部分人都会选择折中的Raid5

比如实验室的实训平台总共有5块 日立HGST 600G SAS硬盘

  • 两块组Raid1 做系统引导盘
  • 三块组Raid5 做数据盘

事情在一次断电重启后,有一块盘硬盘背板报警,但毕竟是Raid5,坏掉一块盘数据没问题

初步是怀疑这块盘寄掉了,但是为了保险起见,我还是打算先进阵列卡看看,这台服务器用的AVAGO的阵列卡,开机进入阵列卡后,看到这块硬盘处于“foreign”状态,也就是不在阵列中。查看SMART信息我发现这块盘健康程度还可以,所以我就对这块盘进行强制上线试试。

随后该盘处于“Rebuilding”,阵列重建中

没想到一晚上过后重建完成,硬盘重新Online了

写在最后

一些大厂的服务器比如戴尔、联想、浪潮、HPE等厂商都是OEM定制版阵列卡,在IPMI管理卡中即可操作阵列,而在自己组装或是PCIE阵列卡的时候,就比较考验对原始的阵列卡操作界面的适应了

没想到这块硬盘徐晃我一枪....



届ける言葉を今は育ててる
最后更新于 2023-03-20