我正在 Linux 中对混合 RAID 进行一些实验。我的测试包括以下内容:
RAID 0 中的 2x256GB SSD (/dev/md1)
2 个 256GB 硬盘,RAID 0 (/dev/md2)
然后我将 md1 和 md2 制作成 RAID 1 (/dev/md127) 并将慢速 HDD (md2) 标记为 --write-mostly。
从本质上讲,我的目标是从 SSD 中获得最大性能和磁盘空间,但同时“安全”免受驱动器故障的影响。我知道丢失其中一个 SSD 意味着我只能使用速度较慢的 HDD,但与丢失所有数据相比,这是我愿意付出的代价。此外,更换损坏的 SSD 并修复 RAID 只需要几个小时。
root@s1 / # cat /proc/mdstat
Personalities : [raid0] [raid1] [linear] [multipath] [raid6] [raid5] [raid4] [raid10]
md2 : active raid0 sdd1[1] sdc1[0]
498802688 blocks super 1.2 512k chunks
md127 : active raid1 md1[2] md2[1](W)
498671616 blocks super 1.2 [2/2] [UU]
bitmap: 1/4 pages [4KB], 65536KB chunk
md1 : active raid0 sdb2[1] sda2[0]
498802688 blocks super 1.2 512k chunks
现在,在 3 个 raid 设备上运行简单的吞吐量基准测试会得到(对我来说)令人惊讶的结果:
root@s1 / # hdparm -t /dev/md1
/dev/md1:
Timing buffered disk reads: 2612 MB in 3.00 seconds = 870.36 MB/sec
root@s1 / # hdparm -t /dev/md2
/dev/md2:
Timing buffered disk reads: 812 MB in 3.01 seconds = 270.14 MB/sec
root@s1 / # hdparm -t /dev/md127
/dev/md127:
Timing buffered disk reads: 1312 MB in 3.00 seconds = 437.33 MB/sec
RAID 0 SSD 提供 870 MB/秒
RAID 0 HDD 提供 270 MB/秒
RAID 1 混合提供 437 MB/秒。
由于 HDD raid 已标记为 --write-mostly,我假设纯读取测试根本不会触及 HDD,那么这里发生了什么?我假设混合基准测试会给出与纯 RAID 0 SSD 类似的结果。
乍一看,HDD 似乎因部分用于读取而以某种方式减慢了 RAID 速度(尽管我告诉它不要在 HDD 上进行读取)。但是,如果我在运行 hdparm 基准测试时在 HDD 上运行文件副本,我会得到相同的结果!如果使用 HDD,如果在基准测试期间将 HDD 用于其他任务,我会假设基准测试会给出更慢的结果。