Linux에서 하이브리드 RAID를 사용하여 몇 가지 실험을 하고 있습니다. 내 테스트는 다음으로 구성됩니다.
RAID 0의 2x256GB SSD( /dev/md1
)
RAID 0의 2x256GB HDD( /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는 870MB/초를 제공합니다.
RAID 0 HDD는 270MB/초를 제공합니다.
RAID 1 HYBRID는 437MB/초를 제공합니다.
HDD RAID가 --write-mostly로 표시되었으므로 순수 읽기 테스트에서는 HDD에 전혀 영향을 미치지 않을 것이라고 가정합니다. 그렇다면 여기서 무슨 일이 일어나고 있습니까? 하이브리드 벤치마크는 순수 RAID 0 SSD와 유사한 결과를 제공할 것이라고 가정합니다.
언뜻 보면 HDD가 부분적으로 읽기에 사용되어(HDD에서 읽지 말라고 했지만) RAID의 속도를 늦추는 것처럼 보입니다. 그러나 hdparm 벤치마크를 실행하는 동안 HDD에서 파일 복사본이 실행되고 있으면 동일한 결과를 얻습니다! HDD의 경우~이었다벤치마크 중에 HDD를 다른 작업에 사용하면 벤치마크 결과가 더 느려질 것이라고 가정합니다.
일부 Linux RAID 전문가가 내 문제를 밝혀줄 수 있기를 바랍니다.