explorer

万丈高楼平地起,勿在浮沙筑高台

0%

[What]RAIDs

看看大师是如何解释磁盘阵列的。

RAID(Redundant Array of Inexpensive Disks) 是由多个磁盘组合而成的存储系统,使得存储更为快速、容量更大、数据更安全。

RAID 的接口

对于文件系统来讲,RAID 被抽象化为了一个可读写的硬盘。 当文件系统发出 I/O 请求时,RAID 的管理系统会来识别应该对哪些硬盘进行操作。

RAID Level 0:striping

Level 0 模式下,RAID 将所有硬盘组合成一个大的硬盘,其容量很大,性能也较强。

每个硬盘的 block 是 4 K,那么假设有 4 块硬盘,它们在逻辑上 block 的排列可以如下:

Disk 0 Disk 1 Disk 2 Disk 3
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15

这样子当 I/O 请求读写 16 KB 连续数据的话,RAID 可以并行的操作 4 块硬盘读写。

当然还有其他的排列方式:

Disk 0 Disk 1 Disk 2 Disk 3
0 2 4 6
1 3 5 7
8 10 12 14
9 11 13 15

每个硬盘每两个 block 组合成一个 chunk,大小为 8 KB,抽象出来 RAID 操作一行的大小就是 32 KB.

chunk size 的大小

chunk size 的大小会影响 RAID 系统整体的性能,假设访问一个同样大小的文件:

  • 当 chunk size 比较小时,RAID 会将操作拆分为多个并行处理,这提高了并发度。但是由于要同时操作多块硬盘,每次都需要每个硬盘定位成功以后才能进行操作,这又增加了定位时间。
    • 定位时间是多块硬盘中定位最长的时间
  • 当 chunk size 比较大时,RAID 可能只需要操作其中一块硬盘就可以满足,这降低了并发度。但由于仅仅需要定位一块硬盘,所以其定位时间就降低了。

RAID-0 的缺陷

由于数据是依次存放在各个硬盘上的,一旦其中任何一个硬盘损坏,那么数据便会损坏了。

  • 比如假设一个硬盘一部分 block 损坏了,而这部分是有关文件系统 metadata ,那么有可能整个文件系统的数据都无法很好的浏览了。

评估 RAID 的性能

RAID 的性能评估一般从下面两个指标:

  1. 单次请求延迟
  2. 稳态吞吐率

吞吐量的测试又分为顺序读写和随机读写两种。

  • 对于磁盘来讲顺序读写模式下,没有大量的磁头移动和等待磁盘转动到目的位置的时间,所以其吞吐量很大。
  • 而随机读写模式下磁头移动和等待磁盘转动消耗了太多时间,所以其吞吐量很小,远远小于顺序读写模式。

对于 RAID-0 来讲:

  • 其单次请求延迟等同于单个硬盘的请求延迟
  • 稳态吞吐量等同于多个硬盘的吞吐量之和

RAID Level 1:Mirroring

Last Updated 2020-07-12 Sun 23:35.
Render by hexo-renderer-org with Emacs 26.3 (Org mode 9.3.7)