IOPS에 대한 RAID 레벨의 영향 [닫힘]

IOPS와 관련하여 웹에서 특정 디스크 수의 IOPS가 단일 디스크의 IOPS에 디스크 수를 곱한 값이라고 제안하는 여러 소스를 보았습니다.

IOPS에 대한 나의 이해가 정확하다면 (그리고 나는 그것이 확실하지 않다면) 현실은 다른 많은 요인들 중에서도 RAID 레벨에 달려 있다고 생각했을 것입니다. RAID 1/10을 사용하면 모든 데이터가 두 개 이상의 디스크에 복제되므로 일부 IO 패턴에 대한 특정 디스크의 경합이 줄어 듭니다. 그러나 RAID 0/5/6과 같은 스트라이프 RAID 레벨에서는 데이터가 복제되지 않고 분산됩니다. 즉, 동일한 스핀들에 대한 연속 읽기 요청이 발생하여 이전 IO가 완료되는 동안 차단 될 수 있습니다. 쓰기는 더욱 경쟁적입니다.

다양한 최적화 및 기타 요인으로 인해 현실이 훨씬 더 복잡하다는 점을 덧붙여 야합니다. 내 질문은 실제로 매우 기본적인 수준에서 IOPS가 무엇을 의미하는지에 대한 나의 이해가 올바른 길을 가고 있는지에 대한 추진력입니다. IOPS가 RAID 레벨에 의해 영향을받을 수 있다는 주장은 개념에 대한 기본적인 오해를 나타냅니다.



답변

HDD의 경우 IOPS는 일반적으로 디스크의 액세스 시간에 의해 좌우되며, 이는 검색 대기 시간 + 회전 지연 + 전송 지연 합입니다. 이러한 변수는 액세스 패턴에 크게 의존하고 특정 RAID 레이아웃 (예 : 스트라이프 크기) 및 컨트롤러 (예 : 미리 읽기 조정)와 명백한 상호 작용을하기 때문에 간단한 응답은 잘못됩니다.

그러나 야구장을 만들려고합니다. 첫 번째 근사치에서 n 디스크 배열에 의해 보장되는 IOPS는 단일 디스크의 IOPS의 n 배 여야합니다. 그러나 탐색 / 회전 / 전송 대기 시간 사이에 가중치를 이동 하여 RAID 레벨과 데이터 액세스 패턴 모두이 1 차 근사값을 크게 변경합니다.

단일 디스크 당 100 IOPS (7200 RPM 디스크에 대한 팁 값) 및 4 디스크 어레이 (RAID1 제외, 종종 양방향으로 만 제한됨)를 가정하여 몇 가지 예를 살펴 보겠습니다.

  • 단일 디스크는 읽기 및 쓰기 모두 100 IOPS입니다 (참고 : 쓰기 통합으로 인해 쓰기 IOPS는 일반적으로 읽기 IOPS보다 높지만 간단하게 무시할 수 있습니다)
  • RAID0 (4 방향 스트라이핑)가 최대 랜덤 IOPS를 4 배 및 최대 연속 IOPS 4 배. 여기서 핵심 단어는 “최대”입니다. 스트라이핑 및 데이터 정렬의 특성으로 인해 임의 액세스 된 섹터가 단일 디스크에 주로있는 경우 IOPS가 훨씬 낮아집니다.
  • RAID1 (양방향 미러링)은 프로파일 링하기가 더 복잡합니다. 다른 디스크가 다른 데이터를 검색 할 수 있으므로 랜덤 읽기 IOPS는 최대 2 배이지만 오버 헤드로 인해 동일한 1 배 (또는 오버 헤드로 인해 약간 낮음) 랜덤 쓰기 IOPS가 있습니다. 모든 것이 잘 정렬되면 (즉, 100 % 순차 읽기는 크지 않고, 100 % 순차 읽기, 미러링 모드에서도 청크 / 스트라이프 개념 / 처리를 사용하는 RAID 컨트롤러, 미리 읽기가 올바르게 작동하는 등) 순차 읽기는 언젠가 단일의 최대 2 배가 될 수 있습니다 디스크 값, 순차 쓰기는 단일 디스크의 1 배로 제한됩니다 (즉, 속도 향상 없음).
  • RAID10 (4 방향 미러링)은 성능 측면에서 4 방향 RAID0 스트라이핑과 2 방향 미러링의 중간에 있습니다. 랜덤 읽기 IOPS의 최대 4 배와 랜덤 쓰기 IOPS의 최대 2 배입니다. 순차 전송의 경우 RAID1주의 사항이 적용됩니다. 순차 읽기 IOPS는 최대 4 배이지만 순차 쓰기 IOPS는 2 배에 불과합니다. 일부 RAID10 구현 (즉, Linux MDRAID)은 성능 프로파일다른 RAID10 어레이에 다른 레이아웃을 제공 합니다 .
  • RAID5 (스트라이핑 패리티)는 최대 4 배의 랜덤 읽기 IOPS를 갖지만, 랜덤 쓰기 IOPS는 쓰기가 스트라이프 크기와 관련하여 얼마나 큰지, 큰 스트라이프 캐시의 가용성, 스트라이프 재구성 알고리즘과 같은 여러 요인에 따라 다릅니다. 자체 (읽기 재구성 쓰기 / 읽기 수정 쓰기) 등은 단일 디스크의 IOPS가 0.5 배 (또는 그 이하)에서 2 배 사이 일 수 있습니다. 단일 디스크의 IOPS 3 배 (읽기 및 쓰기 모두)로 순차적 워크로드 예측 가능
  • RAID6 (striped double parity)은 RAID5 형제와 매우 유사하지만 쓰기 성능이 떨어집니다. 단일 디스크의 랜덤 읽기 IOPS는 최대 4 배이지만 랜덤 쓰기 성능은 동일한 절대 값 (0.5x-2x)이지만 실제 단어 평균은 낮은 RAID5보다 훨씬 낮습니다. 순차 읽기 및 쓰기는 단일 디스크의 IOPS의 2 배로 제한됩니다.

반복하겠습니다 : 위의 내용은 간단하고 거의 근사치입니다. 어쨌든 (완전히 불완전한) RAID IOPS 계산기를 사용 하려면 여기를보십시오 .

이제 현실 세계로 돌아가십시오. 실제 워크로드에서 RAID10은 종종 더 빠르고 선호되는 선택 이며, 성능 이 저하 된 어레이에서도 성능을 유지 합니다. 읽기 중심적이거나 순차적 인 것이 아니라면 성능에 민감한 워크로드에는 RAID5 및 RAID6을 사용해서는 안됩니다. 심각한 RAID 컨트롤러에는 RAID5 / 6의 낮은 임의 쓰기 성능을 극복하기 위해 주로 강력한 스트라이프 캐싱을 통해 큰 전력 손실로 보호되는 쓰기 저장 캐시가 있습니다. 어레이 속도에 신경 쓰지 않는 한 캐시없는 RAID 컨트롤러와 함께 RAID5 / 6을 사용하지 마십시오 .

SSD는 다른 짐승이라고 생각합니다. 본질적으로 평균 액세스 시간이 훨씬 낮아짐에 따라 패리티 기반 RAID는 훨씬 낮은 성능 오버 헤드를 유발하고 HDD보다 훨씬 더 실용적인 옵션입니다. 그러나 작은 임의 쓰기 중심 워크로드에서는 어쨌든 RAID10 설정을 사용합니다.


답변

정의의 문제 일뿐입니다. 시스템의 다른 수준에서 IOPS를 측정 할 수 있으며 다른 값을 얻을 수 있습니다. 예를 들어, 두 개의 미러 된 디스크가 있고 가능한 한 빨리 쓰고 있다고 가정하십시오. 디스크로가는 IOPS는 단일 디스크가 비슷한 쓰기로드로 처리 할 수있는 IOPS 수의 두 배입니다. 그러나 컨트롤러로 들어가는 IOPS는 단일 디스크가 처리 할 수있는 IOPS의 수와 같습니다.

일반적으로 우리가 관심을 갖는 것은 어레이에 들어갈 수있는 논리적 IOPS의 수이며 디스크 수준에서 일어나는 일에 대해서는 특별히 신경 쓰지 않습니다. 이 경우 정확하며 IOPS는 RAID 레벨, 디스크 수, 개별 디스크의 성능 및 경우에 따라 작업의 특정 특성에 따라 다릅니다.