RAID1은 Linux mdadm의 성능을 향상합니까?

RAID1은 Linux mdadm의 성능을 향상합니까?

저는 2TB HDD가 장착된 저렴한 2베이 NAS를 가지고 있습니다. 디스크 장애에 대비하기 위해 두 번째 2TB HDD를 구입하여 Linux mdadm을 사용하여 RAID1에 넣을 생각입니다. 파일 시스템은 ext4입니다.

이로 인해 NAS 성능이 증가하거나 감소합니까? 읽기 또는 쓰기 성능은 어떻습니까?

온라인에서는 이에 대해 많은 의견이 있지만 합의된 의견은 없는 것 같습니다.

감사해요.

편집하다:

그래서 저는 이미 "조금 더 빠르다", "눈에 띄지 않을 것", "어쨌든 성능이 저하될 것입니다"라는 세 가지 다른 대답을 얻었습니다. (저는 주로 읽기 성능에 관심이 있습니다.) Wikipedia에서는 "읽기 성능은 대략 사본 수의 선형 배수로 올라갈 수 있습니다"라고 말합니다. 어떤거야?

편집 2:

MD 맨페이지를 포함하여 RAID1의 읽기 성능 향상을 지원하는 증거가 많이 있습니다.

변경 사항은 모든 장치에 병렬로 기록됩니다. 데이터는 어느 한 장치에서 읽혀집니다. 드라이버는 성능을 최대화하기 위해 모든 장치에 읽기 요청을 분산하려고 시도합니다.

--layout=f2또한 RAID0의 읽기 성능으로 RAID1의 중복성을 제공하고 단 두 개의 드라이브에서만 사용할 수 있는 MD의 RAID10을 발견했습니다 . 그러나 순차 쓰기에는 드라이브의 먼 부분 사이를 앞뒤로 탐색하는 두 드라이브가 모두 포함되므로 쓰기 성능이 저하됩니다. man md자세한 내용은.

답변1

예,Linux에서 RAID1을 구현하면 두 개의 개별 디스크 읽기 작업이 동시에 수행되는 한 디스크 읽기 작업 속도가 2배 향상됩니다.. 이는 하나의 10GB 파일을 읽는 것이 단일 디스크보다 RAID1에서 더 빠르지는 않지만 두 개의 서로 다른 10GB 파일*을 읽는 것이 더 빠르다는 것을 의미합니다.

이를 시연하려면 dd. 어떤 작업을 수행하기 전에 를 사용하여 디스크 읽기 캐시를 지우십시오 sync && echo 3 > /proc/sys/vm/drop_caches. 그렇지 않으면 hdparm초고속 읽기가 요구됩니다.

단일 파일:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 65,9659 s, 159 MB/s

두 개의 파일:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT skip=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 64,9794 s, 161 MB/s
10485760000 bytes (10 GB) copied, 68,6484 s, 153 MB/s

10GB의 데이터를 읽는 데는 65초가 걸렸지만, 10GB + 10GB = 20GB의 데이터를 읽는 데는 총 68.7초가 걸렸습니다.다중 디스크 읽기는 RAID1에서 큰 이점을 얻습니다.리눅스에서. skip=$COUNT부분이 매우 중요합니다. 두 번째 프로세스는 10GB 오프셋에서 10GB의 데이터를 읽습니다.

Jared의 답변과 ssh의 의견은 다음과 같습니다.http://www.unicom.com/node/459틀렸어. 벤치마크는 디스크 읽기가 RAID1의 이점을 얻지 못한다는 것을 증명합니다. 그러나 테스트는 한 번에 두 개의 개별 읽기를 수행하지 않는 Bonnie++ 벤치마킹 도구를 사용하여 수행되었습니다. 저자는 bonnie++가 RAID 어레이 벤치마킹에 사용할 수 없다고 명시적으로 밝혔습니다(읽어보기를 참조하세요).

답변2

예, 읽기 성능 향상 + 중복성을 얻을 수 있습니다. 파일이 두 HDD에 모두 있으므로 서로 다른 두 HDD에서 동시에 파일의 일부를 읽을 수 있다는 것을 쉽게 상상할 수 있습니다.

따라서 이론적으로 RAID 컨트롤러가 제대로 작동하면 O(n)의 속도 향상을 얻을 수 있습니다.

답변3

아니요, mdadm RAID1에서 읽는 동안 어떤 이점도 얻지 못합니다. 나는 얼마 전에 이것에 대해 나 자신에게 물었습니다.

dstat디스크 사용량을 보여주며, bwm-ng별도의 mdadm RAID 구성원에 대한 읽기/쓰기 사용량을 표시할 수 있기 때문에 특히 이 경우에 정말 도움이 됩니다. n(다음)을 몇 번만 누르면 인터페이스 통계에서 디스크 통계로 전환됩니다. 그런 다음 최대 값으로 전환하여 t각 디스크의 최대 읽기/쓰기를 확인합니다. 다음이 표시됩니다.

RAID1 볼륨 bwm-ng에 쓰기를 수행하면 동시에 2개의 디스크에 쓰기가 2회 표시됩니다. RAID1 볼륨 bwm-ng에서 읽기를 수행하면 단일 드라이브(어레이 구성원)에서 읽는 것으로 표시됩니다.

답변4

그리고 동시에 아니오. 기본적으로 RAID 1의 "미리 읽기" 매개변수는 너무 낮아 단일 파일 전송의 이점을 인식할 수 없지만 이를 조정하기만 하면 됩니다.

값 유형을 확인하려면 다음을 수행하십시오.

# blockdev --getra /dev/md0
256

이제 RAID 장치별로 미리 읽기(512바이트 섹터)를 설정할 수 있습니다. 구문은 다음과 같습니다.

## Set read-ahead to 32 MiB ##
# blockdev --setra 65536 /dev/md0

대부분의 경우 이 매개변수를 설정하면 단일 파일 읽기 속도가 두 배가 됩니다(두 드라이브가 동일하다고 가정).

참고: 이는 모든 RAID 구성에 적용됩니다.

관련 정보