raid 0에 드라이브 힙을 추가하면 성능이 향상됩니까?


10

raid 0에 드라이브 힙을 추가하면 성능이 향상됩니까? 스트라이프 레이드의 두 드라이브가 일반적으로 단일 드라이브보다 빠르지 만 스트라이프 레이드의 두 드라이브와 8 사이의 성능 차이를 알 수 있습니까? 더 이상 혜택을 얻지 않기 전에 습격에있는 드라이브 수에 대한 일반적인 제한이 있습니까?

비슷한 질문이 여기에 요청되었습니다

RAID 10 어레이에 더 많은 드라이브를 추가하면 성능이 향상됩니까?

그러나 실제로 RAID 0에 많은 드라이브를 추가하면 2 또는 4를 추가하는 것보다 개선되었는지 여부가 실제로 묻습니다. 성능이 계속 향상됩니까?

답변:


11

이론적으로, raid0에있는 더 많은 드라이브는 더 많은 드라이브에서로드가 공유되므로 성능이 향상됩니다. 그러나 실제로는 RAID 컨트롤러의 대역폭, CPU 및 메모리 성능 및 유사성에 의해 제한됩니다. 성능 향상은 선형 적이 지 않습니다. 즉, 4 개의 디스크는 2 개의 디스크보다 정확히 2 배 빠르지 않습니다.

RAID 컨트롤러가있는 합리적 현대 시스템이나 Linux의 mdadm으로 소프트웨어 RAID를 사용하는 경우에도 8 개의 드라이브를 사용하는 것이 2를 사용하는 것보다 빠르며 나머지 시스템 성능에 의해 지연되지 않아야합니다. CPU, RAID 및 / 또는 디스크 컨트롤러, 메모리, 모두 처리 할 수 ​​있어야합니다. 더 많은 드라이브를 추가할수록 시스템 리소스 사용량이 증가 할 수 있습니다. 특히 온보드 SATA 컨트롤러를 softraid 조합으로 사용하는 경우. 그러나 실제로 전체적인 유용성을 방해하는 것은 없습니다. Linux를 사용하는 경우 서버 지향 작업이 사용자 응답보다 우선하도록 "선점"없이 구성된 커널을 사용할 수 있습니다.

https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO

물론 더 많은 드라이브를 추가할수록 그 중 하나가 실패하고 전체 공격대가 파괴 될 가능성이 높아집니다. 운이 좋으면 8 개 드라이브의 raid0이 1 년 또는 2 년 이상 지속되지 않을 것으로 예상됩니다. 16 개의 드라이브 중 raid0은 문제를 요구하고 raid10을 고려할 것입니다. 여전히 충분히 빠르므로 걱정할 필요가 없습니다.

시스템 리소스를 최대로 사용하는 드라이브 수에 대해서는 자세한 시스템 사양이 없으면 알 수 없습니다. 디스크가 약 16 개가 넘으면 실패율에 의해 더 제한 될 것이라고 생각합니다.

당연히 문제없이 언제라도 손실 될 수있는 데이터에 대해서만 raid0을 사용합니다. 빌드 서버와 같은 작업이나 대규모 과학 계산을위한 스크래치 공간에 적합합니다. 실제로 이러한 시나리오는 내가 종종 raid0을 사용하는 방식이며 먼지를 모으고있을 수있는 더 오래되고 용량이 작고 저렴한 디스크에서 수명을 늘리는 좋은 방법입니다. 최소한 mdadm을 사용하여 크기를 혼합 할 수도 있습니다.

mdadm을 사용하는 경우 특정 구성에서 raid0의 성능에 가까울 수 있으므로 raid0의 성능에 가까울 수 있으며 raid0의 읽기 성능이며 이미 다른 raid 수준 (write0 제외)보다 쓰기 성능이 향상되었으므로 raid10 만 사용하는 것이 좋습니다. raid0에 비해 약간의 속도 저하만으로 다른 레이드 레벨보다 중복성이 향상됩니다. 그것은 두 세계에서 가장 좋을 것입니다.

https://ko.wikipedia.org/wiki/RAID#Non-standard_levels

Linux MD RAID 10은 "가까운"레이아웃에서 기본적으로 2 개의 드라이브가있는 표준 RAID 1 및 4 개의 드라이브가있는 표준 RAID 1 + 0으로 기본 RAID 드라이버를 제공합니다. 그러나 홀수를 포함하여 여러 드라이브를 포함 할 수 있습니다. "원거리"레이아웃을 사용하면 MD RAID 10은 f2 레이아웃에 2 개의 드라이브 만 있어도 스트라이프 및 미러링을 모두 실행할 수 있습니다. 이것은 RAID 0의 읽기 성능을 제공하는 스트라이프 된 읽기로 미러링을 실행합니다. Linux 소프트웨어 RAID에서 제공하는 일반 RAID 1은 읽기를 스트라이프하지 않지만 읽기를 병렬로 수행 할 수 있습니다.

주석에서 제안한 것처럼 mdadm과 크기를 혼합하면 가장 작은 디스크가 어레이의 크기를 정의하게하는 대신 모든 디스크 공간을 활용하는 경우 속도가 증가하지 않습니다.

또한 탐색 시간은 raid0에서 향상되지 않으며 조금 느려질 수도 있습니다. SSD 기반 raid0의 경우 탐색 시간이 너무 짧습니다 (0.08에서 0.16ms 사이 https://en.wikipedia.org/wiki/Hard_disk_drive_performance_characteristics#cite_note-HP_SSD-6 ) 그것은 중요하지 않습니다.


크기를 혼합하려면 최소한 디스크에있는 모든 공간을 사용하기 위해 RAID0을 적용 할 수 없습니다. 성능을 향상시키지 않는 JBOD를 사용해야합니다.
Tero Kilkanen

mdadm을 사용하여 크기를 혼합 할 수 있으며 매우 유연하며 mdadm을 사용하여 3 개의 디스크 raid10을 구성 할 수도 있습니다. 나는 당신이 RAID 컨트롤러에서 크기를 혼합 할 수 있다고 기대하지 않을 것입니다.
aseq

1
이것을 확인하고 RAID0을 원하면 어레이의 가장 작은 장치가 전체 어레이의 크기를 정의합니다. 즉, 100GB, 200GB 및 300GB 드라이브가있는 경우 다른 용도로 사용할 300GB RAID0 어레이와 100GB 및 200GB 여유 공간이 제공됩니다. 선형 모드에서는 모든 장치의 완전한 용량을 얻을 수 있지만 병렬 성능은 아닙니다.
Tero Kilkanen

1
그렇습니다.
aseq

2
회전식 미디어의 경우 탐색 시간과 전송 시간 문제가 있습니까? 더 많은 디스크를 추가하면 더 많은 플래터에서 읽고 쓰는 양이 분산되지만 (각각 덜 == 더 빠를 필요는 없음) 모두 검색 작업을 수행해야합니다 (드라이브를 더 추가하여 줄이지 않음). 따라서 수행중인 작업 유형 (예 : 작은 읽기 손실과 몇 개의 큰 읽기 손실)에 따라 (더 많은 드라이브를 추가하여) 전송 속도를 높이면 작은 차이가 생길 수 있습니다.
Molomby

1

워크로드에 따라 다르지만 IMHO는 기존 2 개의 디스크 어레이에 2 개의 디스크를 추가하면 전반적인 성능이 향상됩니다.

병목 현상의 위치를 ​​알아야합니다.

  • CPU-CPU가 처리 할 수있는 데이터 흐름 양
  • 버스 / 컨트롤러-얼마나 많은 데이터를 전송할 수 있는지,
  • SSD / HDD-주고받을 수있는 데이터 양.

의는 다음 두 개의 추가 디스크를 추가 리눅스 소프트웨어 RAID,이 있다고 가정 해 봅시다 수있다 결과는 :

  • 충분히 큰 데이터 블록에 대한 액세스 시간이 2 배 짧아 져 결과적으로 발생합니다.
  • ~ 이중 IOPS
  • ~ 컨트롤러에 충분한 버스가 있고 CPU가 트래픽을 처리 할 수 ​​있다고 가정하면 처리량은 두 배가됩니다.

* ~ 이것은 다음과 같은 요소에서 두 번의 시간 증가가 아니며 항상 10-20 % 미만입니다. 다소 선형 인 것처럼 보입니다. 정식 답변으로 취급하지 마십시오. 나는 그것에 대해 연구하지 않았습니다.

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