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


26

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

이것은 NAS의 성능을 높이거나 줄입니까? 읽기 또는 쓰기 성능은 어떻습니까?

이 온라인에 대한 많은 의견이 있지만 합의는 없습니다.

감사.

편집하다:

이미 세 가지 답변이 있습니다. "조금 더 빠르다", "알지 못할 것", "있는 경우 성능 저하" (저는 주로 읽기 성능에 관심이 있습니다.) Wikipedia는 "읽기 성능은 대략 사본 수의 선형 배수로 증가 할 수 있습니다"라고 말합니다. 어떤거야?

편집 2 :

MD 맨 페이지를 포함하여 읽기 성능을 높이는 RAID1을 지원하는 증거를 발견했습니다.

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

또한 MD의 RAID10 with을 발견 --layout=f2하여 RAID0의 읽기 성능으로 RAID1의 중복성을 제공하며 단 두 개의 드라이브와 함께 사용할 수 있습니다. 그러나 순차적 쓰기에는 드라이브의 먼 부분 사이를 오가는 드라이브가 필요하므로 쓰기 성능이 저하됩니다. man md자세한 내용은.


2
쓰기; 조금 느려. 읽습니다; 조금 더 빠릅니다. 내가 이해 한 바에 따르면 쓰기 차이는 거의 0이며 읽기는 꽤 눈에.니다.
Sirex

sirex가 말한 것. 맨 눈으로 성능 차이를 느끼지 못할 것입니다. 두 배 또는 반으로 기대하지 마십시오.
Piotr Kula


1
한 부분이 그립습니다. NAS에 얼마나 빨리 액세스 할 수 있습니까? 하나의 디스크가 이미 네트워크 연결을 채우면 더 많은 내부 속도가 도움이되지 않습니다.
Hennes

답변:


39

예. RAID1을 Linux로 구현하면 한 번에 두 개의 개별 디스크 읽기 작업이 수행되는 한 디스크 읽기 작업 속도가 두 배 빨라집니다 . 즉, 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 초가 걸렸 습니다. 이는 여러 디스크를 읽는 경우 Linux의 RAID1 에서 큰 이점을 얻습니다 . skip=$COUNT부분은 매우 중요합니다. 두 번째 프로세스는 10GB 오프셋에서 10GB의 데이터를 읽습니다.

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


5

예, 읽기 성능이 향상되고 중복성이 향상됩니다. 파일이 두 HDD 모두에있는 것처럼 두 개의 다른 HDD에서 동일하게 파일의 일부를 읽을 수 있다고 쉽게 상상할 수 있습니다.

이론적으로 RAID 컨트롤러가 올바르게 작동하면 O (n)의 속도를 높일 수 있습니다.


5
mdadm은 소프트웨어 RAID이므로 실제로 "RAID 컨트롤러"는 없지만 multplie 읽기를 병렬로 수행 할 때 읽기 향상을 향상시킬 것입니다. 자세한 내용은 여기를 참조하십시오 : freebsdwiki.net/index.php/…
Shadok

1
실제로 Linux Software MD raid에서 읽을 때 성능이 저하됩니다. unicom.com/node/459를 참조하십시오 (해당 테스트에서 읽기 속도가 77MB / s에서 74MB / s로 감소했습니다).
ssh

2
@ ssh unicom.com/node/459 는 완전히 잘못되었습니다. bonnie ++는 readme에 명시 적으로 명시된 RAID 미러 테스트에는 사용할 수 없습니다. 자세한 내용은 내 답변을 참조하십시오. superuser.com/a/757264/68978
Nowaker

4
  • man 4 md상태 : "... 참고 읽기가 운전자에 의해 수행 밸런싱 것을 RAID1 성능 프로파일이 RAID0의 경우와 동일하지 않습니다 , 입력의 단일 스트림이 가속화되지 않습니다 (예를 들어, 하나의 DD), 하지만 여러 순차적 스트림 또는 임의 워크로드는 둘 이상의 스핀들을 사용합니다 . 이론상 N 디스크 RAID1을 사용하면 N 개의 순차 스레드가 모든 디스크에서 읽을 수 있습니다. … "

  • 그것을 위로하기 - 연습 을 기반으로, iostat출력은 없다, 일반적인 2 개의 HDD 소프트웨어 RAID 세트 업에서 관찰되는 균형의 어느 것도 . 실제로 그것은 mdadm옵션 --write-mostly이 항상 켜져있는 것처럼 보입니다 .


3

아니요, mdadm RAID1에서 읽는 동안 아무런 이점이 없습니다. 나는 얼마 전에 이것에 대해 나 자신에게 물었다.

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

RAID1 볼륨에 쓰기를하면 bwm-ng는 2 개의 디스크에 동시에 쓰는 2 개의 쓰기를 보여줍니다. RAID1 볼륨 bwm-ng에서 읽기를 수행하면 단일 드라이브 (어레이 멤버)에서 읽기가 표시됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.