소프트웨어 및 하드웨어 RAID 성능 및 캐시 사용량


73

나는 RAID 컨트롤러 / 설정에 대해 많은 것을 읽었으며 캐시가없는 하드웨어 컨트롤러가 소프트웨어 RAID와 동일한 성능을 제공하는 방법이 많이 있습니다. 이것이 사실입니까?

저는 항상 하드웨어 RAID 카드가 캐시 없이도 더 나은 성능을 제공 할 것이라고 생각했습니다. 작업을 수행 할 전용 하드웨어가 있다는 의미입니다. 이 경우 캐시가없는 RAID 카드를 얻는 이점은 LSI 9341-4i와 같이 저렴하지는 않습니다.

또한 캐시로만 성능을 향상시킬 수 있다면 디스크에 즉시 쓰지만 BBU를 우선 순위로하지 않는 읽기 작업을 위해 데이터를 캐시에 보관하는 캐시 구성이 있습니까?


HW raid를 선호하는 것으로 나타났습니다. 경험상 SW raid를 실행 중이고 시스템이 클린 셧다운 이외의 다른 작업을 수행하면 어레이에 결함이 발생하여 재 구축해야합니다. HW raid는 시스템이 다운되었을 때 쓰지 않았다면 잘못이 아닙니다.
Loren Pechtel

답변:


146

간단히 말해서 , 캐시가없는 로우 엔드 RAID 카드를 사용하는 경우 자신에게 유리한 태도를 취하고 소프트웨어 RAID로 전환하십시오. BBU 또는 NVRAM이있는 미드 투 하이 엔드 카드를 사용하는 경우 하드웨어가 좋은 선택 인 경우가 많습니다 (항상 그런 것은 아닙니다! 참조).

긴 대답 : 컴퓨팅 성능이 제한되었을 때, 하드웨어 RAID 카드는 RAID 체계 (RAID 3/4/5, RAID6, ecc)에 대한 패리티 / 증후 계산을 오프로드하는 데 큰 이점이있었습니다.

그러나 CPU 성능이 계속 향상됨에 따라 이러한 이점은 기본적으로 사라졌습니다. 노트북의 고대 CPU (Core i5 M 520, Westmere 세대)조차도 4GB / s 이상의 XOR 성능과 3GB / s 이상의 RAID-6 증후군 성능을 갖 습니다. 단일 실행 코어 .

오늘날 하드웨어 RAID가 유지하는 이점은 BBU 또는 NVRAM 형식의 전원 손실 보호 DRAM 캐시가 있다는 것입니다. 이 보호 된 캐시는 임의 쓰기 액세스 (및 히트에 대한 읽기)에 대한 대기 시간이 매우 낮으며 기본적으로 임의 쓰기를 순차적 쓰기로 변환합니다. 이러한 캐시가없는 RAID 컨트롤러는 거의 쓸모가 없습니다 . 또한 일부 저급 RAID 컨트롤러는 캐시없이 제공 될뿐만 아니라 디스크의 전용 DRAM 캐시를 강제로 비활성화하여 RAID 카드가없는 것보다 성능이 느려집니다. DELL의 PERC H200 및 H300 카드를 예로들 수 있습니다. 최신 펌웨어로 변경되지 않은 경우 디스크의 개인 캐시를 완전히 비활성화합니다 (디스크가 RAID 컨트롤러에 연결된 동안 다시 활성화 할 수 없음). 호의를 베푸십시오절대 그런 컨트롤러를 사지 마십시오 . 고급 컨트롤러조차도 디스크의 개인 캐시를 비활성화하는 경우가 많지만, 적어도 자체 보호 캐시가있어 HDD (SSD가 아닌!) 개인 캐시가 약간 중복됩니다.

그러나 이것은 끝이 아닙니다. 유능한 컨트롤러 (BBU 또는 NVRAM 캐시가있는 컨트롤러)조차도 SSD와 함께 사용할 때 일관성없는 결과를 제공 할 수 있습니다. 기본적으로 SSD 는 효율적인 FLASH 페이지 프로그래밍 / 삭제를 위해 빠른 개인 캐시 가 필요 하기 때문 입니다. 일부 (대부분의) 컨트롤러를 사용하면 디스크의 개인 캐시를 다시 활성화 할 수 있지만 (예 : PERC H700 / 710 / 710P는 사용자가 다시 활성화 할 수 있음), 개인 캐시가 쓰기 방지되어 있지 않으면 데이터가 손실 될 위험이 있습니다. 전력 손실. 정확한 동작은 실제로 컨트롤러와 펌웨어에 따라 다릅니다 (예 : 256MB WB 캐시 및 활성화 된 디스크 캐시가있는 DELL S6 / i 의 경우 여러 번 계획된 전력 손실 테스트 중에 손실 이 없었 습니다). 불확실성과 많은 우려가 있습니다.

반면에 오픈 소스 소프트웨어 RAID는 훨씬 더 제어 가능한 짐승입니다. 소프트웨어는 독점 펌웨어에 포함되어 있지 않으며 메타 데이터 패턴과 동작이 잘 정의되어 있습니다. 소프트웨어 RAID는 디스크의 전용 DRAM 캐시가 보호되지 않는다고 가정하지만 올바른 성능에 중요합니다. 따라서 일반적으로 디스크를 비활성화하지 않고 ATA FLUSH / FUA 명령을 사용하여 중요합니다. 안정적인 스토리지에 데이터를 제공합니다. 칩셋 SB에 연결된 SATA 포트에서 종종 실행되므로 대역폭이 매우 우수하고 드라이버 지원이 우수합니다.

그러나 기계적 HDD와 함께 사용하면 WB 캐시가있는 하드웨어 RAID 컨트롤러와 비교하여 동기화 된 임의 쓰기 액세스 패턴 (예 : 데이터베이스, 가상 머신)이 크게 어려움을 겪게됩니다. 반면, 엔터프라이즈 SSD (예 : powerloss 보호 쓰기 캐시)와 함께 사용하면 소프트웨어 RAID가 하드웨어 RAID 카드로 달성 할 수있는 것보다 훨씬 뛰어난 결과를 제공합니다. 즉, 읽기 및 비동기 쓰기에 능숙하지만 소비자 쓰기 SSD (읽기 : 보호되지 않은 쓰기 저장 캐시 사용)는 동기화 된 쓰기 워크로드에서 매우 낮은 IOPS를 제공한다는 것을 기억해야합니다.

또한 소프트웨어 RAID가 모두 같은 것은 아닙니다. Windows 소프트웨어 RAID는 평판이 나쁘고 성능면에서 우수하며 스토리지 공간도 그렇게 다르지 않습니다. Linux MD Raid는 매우 빠르고 다재다능하지만 Linux I / O 스택은 최대 성능을 추출하기 위해 신중하게 이해해야하는 여러 개의 독립적 인 조각으로 구성됩니다. ZRAID (ZFS 패리티 RAID)는 매우 고급이지만 올바르게 구성되지 않으면 IOP가 매우 떨어질 수 있습니다 . 반면에 미러링 + 스트라이핑은 성능이 뛰어납니다. 어쨌든 동기식 쓰기 처리 (ZIL)를위한 빠른 SLOG 장치가 필요합니다.

결론 :

  1. 워크로드가 무작위 쓰기 감지로 동기화되지 않은 경우 RAID 카드가 필요하지 않습니다
  2. RAID 카드가 필요한 경우 WB 캐시가없는 RAID 컨트롤러를 구입 하지 마십시오
  3. SSD 소프트웨어를 사용하려는 경우 RAID가 선호되지만 동기화 된 랜덤 쓰기가 높은 경우 powerloss로 보호되는 SSD (예 : Intel S4600, Samsung PM / SM863 등)가 필요합니다. 순수한 성능을 위해 최선의 선택은 아마도 Linux MD Raid이지만, 현재는 일반적으로 스트라이프 ZFS 미러를 사용합니다. 미러로 인해 공간의 절반을 잃을 여유가없고 ZFS 고급 기능이 필요한 경우 ZRAID를 사용하지만 VDEV 설정에 대해 신중하게 생각하십시오.
  4. SSD를 사용하는 경우에도 실제로 하드웨어 RAID 카드가 필요한 경우 쓰기 방지 캐시가있는 SSD를 사용하십시오 (Micron M500 / 550 / 600은 부분적으로 보호 할 수는 있지만 아무것도 아닌 것보다 낫습니다). Intel DC 및 S 시리즈는 전체 전력 손실이 있습니다 기업 삼성 SSD에 대해서도 마찬가지입니다.)
  5. RAID6이 필요하고 일반 기계식 HDD를 사용하는 경우 512MB 이상의 WB 캐시가있는 빠른 RAID 카드를 구입하는 것이 좋습니다. RAID6은 쓰기 성능이 높고, 적절한 크기의 WB 캐시는 최소한 작은 동기 쓰기 (예 : 파일 시스템 저널)를위한 빠른 중간 스토리지를 제공 할 수 있습니다.
  6. HDD가있는 RAID6이 필요하지만 하드웨어 RAID 카드를 구매할 수 없거나 원하지 않는 경우 소프트웨어 RAID 설정에 대해 신중하게 생각하십시오. 예를 들어 Linux MD Raid에서 가능한 솔루션은 저널 쓰기 / DB 로그를위한 작은 RAID10 어레이와 원시 스토리지를위한 RAID6 어레이 (파일 서버)의 두 가지 어레이를 사용하는 것입니다. 반면 SSD가 포함 된 소프트웨어 RAID5 / 6은 매우 빠르므로 모든 SSD 설정에 RAID 카드가 필요하지 않을 수 있습니다.

훌륭한 설명에 감사드립니다. RAID 카드가 HDD의 캐시를 비활성화하는 것을 전혀 몰랐습니다. 이것은 거의 800 달러 이상의 투자를 요구하는 서버 유형이 아니므로 소프트웨어 RAID 설정에 대해 조금 더 읽어보고 아마도 그럴 것입니다.
ItsJustMe

2
OP는 하이퍼 바이저에 대해 이야기하고 있습니다. RAID5는 의심의 여지가 없으며 쓰기 캐시는 필수입니다.
ewwhite

1
실제로 2016 년에도 6 드라이브 소프트웨어 RAID 5/6은 <25MB / s로 기록하는 반면 2010 년의 적절한 하드웨어 RAID 카드는> 500MB / s로 기록됩니다. 이것은 인텔 RSTe 및 Windows 스토리지 공간에 있습니다. 현대 CPU의 병목 현상이 무엇인지 이해하지 못합니다.
Monstieur

1
소프트웨어 RAID 5/6의 문제점은 쓰기가 종종 읽기-수정-쓰기를 트리거하여 디스크 속도가 상당히 느려진다는 것입니다. BBU 가능 하드웨어 RAID 컨트롤러는 단일 디스크 액세스 / 트랜잭션에서 여러 쓰기를 통합하여 성능을 크게 향상시킬 수 있습니다.
shodanshok

1
"[랜덤 읽기] SSD와 함께 사용 하면 성능이 뛰어납니다." -SSD가 엔터프라이즈 SSD가 아닌 경우 (일반적으로 전력 손실 보호를위한 커패시터가 없음을 의미) SSD도 마찬가지입니다. 순차와 같은 작업을 위해 IOPS가 매우 낮습니다 fsync(). 커패시터가없는 Samsung NVMe SSD가 초당 최대 250 fsyncs 만 수행한다는 것을 보여주는 이 기사를 참조하십시오 (나도 이것을 측정했습니다). 커패시터가 장착 된 SSD는 배터리 수가 100 배 이상인 하드웨어 RAID 컨트롤러 인 ~ 30 배 더 많은 fsyncs / s를 제공합니다.
nh2

7

구입 한 모든 하드웨어 컨트롤러에 대해 배터리 또는 플래시 지원 캐시 솔루션이 필요합니다. 그렇게하지 않는 것이 가장 유감 입니다.

그러나 귀하의 질문에 대답하기 위해 대부분의 컨트롤러에는 구성 가능한 캐시 비율이 있습니다. 따라서 100 % 읽기 캐시와 0 % 쓰기 캐시는 BBU 보호가 필요하지 않습니다. 쓰기 성능이 저하됩니다.

귀하의 소프트웨어 RAID 질문에 따라 다를 수 없습니다. Linux MD RAIDZFS 와 다른 Windows Software RAID와 다릅니다 . ZFS와 같은 솔루션은 그들은 서버의 RAM 및 CPU 자원을 활용하기 때문에 하드웨어보다 더 나은 수행합니다.


"쓰기 성능이 저하됩니다"는 캐시가없는 소프트웨어 RAID 또는 하드웨어 RAID와 거의 같을 것입니까? 또는 카드가 캐시를 읽기 전용으로 사용하는 경우 성능을 능가하는 데 페널티가 있습니까?
ItsJustMe

그것은 당신이하는 일에 달려 있습니다. 쓰기 집약적 인 응용 프로그램이 없으면 성능 저하가 문제가되지 않을 수 있습니다.
ewwhite

메일 및 웹 호스팅에 사용되는 Windows VM이있는 Proxmox HOST입니다. 데이터베이스 사용량은 많지 않지만 전자 메일 서비스에는 쓰기 작업이 많을 수 있습니다. 현재 읽기 전용 캐시 카드가 소프트웨어 RAID보다 가치가 있는지 토론 중입니다.
ItsJustMe

가상화에는 플래시 지원 RAID 컨트롤러를 사용하십시오.
ewwhite

1
소프트웨어 RAID를 사용하여 약 4000 개의 계정으로 사이러스 메일 서버를 실행했습니다. 활성 계정은 매일 300 ~ 600 개에 달합니다. 하드웨어 RAID와 BBU가있는 기본 사이러스 메일 서버보다 성능이 현저하게 떨어졌습니다. BBU 및 RAID 컨트롤러 캐시는 데이터 보증을 제공하지만 성능도 제공합니다. 데이터가 컨트롤러에 도달하면 쓰기가 완료되었음을 OS에 알릴 수 있기 때문입니다. 그렇지 않으면 하드 드라이브가 쓰기 완료를 알리기 위해 기다려야합니다. 이것은 상당한 클럭 사이클을 절약합니다. 하드웨어 RAID로 옮겨 해결했습니다.
labradort

7

당신이 당신의 눈을 가지고있는 RAID 컨트롤러는 싸구려이며 기본적으로 fakeraid입니다. 메모리와 같은 일부 기능을 제공하기 위해 메인 보드에 달려 있으며 많은 메인 보드가 지원하지 않으므로 드라이버를로드 할 수 없습니다.

HW vs SW-RAID 자체에 대하여. 예를 들어 EMC 로고가있는 상자가 아니면 HW-RAID를 더 이상 사용하지 않습니다. 다른 모든 것들은 몇 가지 매우 간단한 이유로 SW-RAID 많은 달을 다시 전환했습니다.

  1. 추가 하드웨어가 필요하고 일치해야합니다. 또한 펌웨어를 일치시키고 동기화 상태를 유지해야합니다. 많은 디스크가 올바르게 작동하지 않으며 명확한 이유없이 IO 지연 시간이 급증합니다.

  2. 추가 하드웨어는 비싸므로 작은 솔루션을 위해 추가로 $ 1000 (2/3 디스크의 적절한 컨트롤러)를 추가로 사용할 수 있습니다. 더 많은 디스크와 표준 컨트롤러, ECC 메모리, 더 빠른 CPU에 투자하십시오. 현장 스페어 디스크는 보증 기간보다 오래 운영하거나 야간 배송에 대한 특급 요금을 지불하고 싶지 않은 경우에 발생할 수 있습니다.

  3. 디스크와 컨트롤러 모두에 대한 OS 패치 및 펌웨어를 추적해야하므로 업그레이드가 쉽지 않습니다. 더 이상 업그레이드 / 업데이트가 불가능한 상황이 발생할 수 있습니다.

  4. 디스크 형식 충분한 벤더가 사내 레이아웃을 사용하여 하드웨어 및 펌웨어 조합의 개정과 관련된 데이터를 저장합니다. 교체 부품으로 인해 데이터에 액세스 할 수없는 상황이 발생할 수 있습니다.

  5. SPOF와 병목 현상입니다. 단 하나의 PCI 브리지 뒤에 컨트롤러가 하나만 있어도 실제로 필요한 성능과 중복성을 제공하지는 않습니다. 이로 인해 컨트롤러 외부의 다른 디스크 세트로 데이터를 마이그레이션하기위한 마이그레이션 경로가 존재하지 않습니다.

이러한 점의 대부분은 차세대 SW-RAID 소프트웨어 또는 ZFS 및 BtrFS와 같은 솔루션으로 해결되었습니다. 결국 데이터를 보호하고 빠르게 액세스 할 수는 없지만 여분의 쓰레기를 보호해야합니다.


3
동의하지 않습니다. 많은 사람들이 Dell, HP, IBM 및 고급 LSI RAID 컨트롤러에 만족합니다. 그러나 솔직히 말해서 대부분의 최신 품질의 서버에는 이미 온보드 RAID 솔루션이 있으므로 개별 컨트롤러를 구매한다는 아이디어는 다소 구식입니다. 소프트웨어 RAID 솔루션은 지연 시간이 짧은 쓰기 워크로드를 고려해야합니다. ZFS에는 ZIL이 있지만 그 밖의 다른 많은 소프트웨어 RAID 구현은 부족합니다.
ewwhite

2
또한 마지막 단락과 달리 RAID는 가용성이 보호되지 않는 가용성입니다. 보호에는 RAID가 아닌 백업이 필요합니다.
Rowan Hawkins

4

지난해 (2014-2015 년까지) 2014 년부터 2015 년까지 2 개의 LSI 9300 HBA 구절을 사용하여 여러 병렬 CentOS 6.6 RAID 1 (미러링) 구성을 테스트하고 다음과 같은 시스템을 갖춘 2 대의 LSI 9361-8i RAID 컨트롤러를 테스트했습니다. 2U Supermicro CSE- 826BAC4-R920LPB 섀시, ASUS Z9PE-D16 마더 보드, Intel Xeon E5-2687W v2 8 코어 3.4GHz 프로세서 2 개, Seagate ST6000NM0014 6TB SAS 12Gbs, 512GB RAM. 이것은 완전한 SAS3 (12Gbps) 호환 구성입니다.

튜닝 소프트웨어에 관해 작성된 기사를 살펴 보았고 10 년 이상 Linux 소프트웨어 RAID를 사용해 왔습니다. 기본 I / O 테스트 (dd-oflag = 직접 5k ~ 100G 파일, hdparam -t 등)를 실행할 때 소프트웨어 RAID가 하드웨어 RAID에 유리하게 쌓이는 것처럼 보입니다. 소프트웨어 RAID는 별도의 HBA를 통해 미러링됩니다. 표준 CentOS 6 커널, kernel-lt 및 kernel-ml 구성으로 테스트를 수행했습니다. 또한 Linux 소프트웨어 RAID에 대해 작성된 다양한 온라인 기사에서 제안한 다양한 mdadm, 파일 시스템, 디스크 하위 시스템 및 o / s 조정을 시도했습니다. 튜닝, 테스트, 튜닝 및 테스트에도 불구하고 읽기 세계에서 실행되는 트랜잭션 처리 시스템 (MySQL 또는 Oracle 데이터베이스가 있음)에서 하드웨어 RAID 컨트롤러를 실행하면 성능이 50 배 향상됩니다.

여러 달 동안 나는 하드웨어 RAID가 훨씬 더 나을 것이라고 확신하지 못했지만, Linux 소프트웨어 RAID, 테스트 및 튜닝에 대한 철저한 연구 끝에 그 결과가 나왔습니다.


2

여기의 대부분의 작가는 " 쓰기 구멍 "에 대해 무지 합니다. 이것은 하드웨어 RAID의 배터리 백업 장치를 대충 부르거나 소프트웨어 RAID의 경우를 무시할 수있는 기초입니다. 예를 들어 Linux 소프트웨어 RAID 구현은 쓰기 작업의 비트 맵을 지원하거나 깨끗하지 않은 종료의 경우 전체 "패리티"재 계산을 수행합니다. ZFS는 이러한 불일치를 피하거나 재확인을 연기하기 위해 항상 풀 스트라이프 쓰기에 노력합니다. 요약하자면, 요즘 똑똑하고 충분한 소프트웨어 RAID는 "내부 내용을 알고있는"소위 "하드웨어 RAID"대신 사용하기에 충분할 때가 많습니다.

문제의 캐시 부분에 관해서는, 그것은 실제로 그렇게 중요하지 않습니다. OS 자체 쓰기 캐시가 "하드웨어"어댑터보다 훨씬 더 클 수 있습니다.


1
이는 적절한 보호 WB 캐시가없는 하드웨어 RAID 카드를 피하는 또 다른 이유입니다. Linux MD Raid에 대한 참고 사항 : 쓰기 홀에서 완전히 영향을받지는 않습니다. 전원 손실 보호 기능이 없기 때문에 갑작스런 전원 손실이 발생하면 결국 데이터가 손실됩니다 (전송 중 데이터 및 / 또는 부분 쓰기를 고려하십시오). 단일 디스크 시나리오에서도 이러한 상황이 발생하지만 패리티 특성 또는 RAID5 / 6은이를 증폭시킵니다. 최악의 시나리오에서는 중요한 파일 시스템 메타 데이터가 손상 될 수 있지만 최신 파일 시스템은 복구하기에 충분히 탄력적입니다. 그러나 일부 데이터는 손실 될 수 있습니다.
shodanshok

@ shodanshok, 당신은 완전히 틀 렸습니다. 생각
poige

1
대부분의 배터리는 좋은 상태로 유지하는 경우, 충분한 시간을 제외하고 전원을 복원하는 것입니다 24~96시간에 대한 WB 캐시, 최대 전원을 공급할 수 있습니다 정말 극단적 인 상황을. 또한 최신 컨트롤러는 장기 저장소로 NVRAM (읽기 : 플래시) 메모리로 전환되었으므로 정전시 작은 배터리 / 슈퍼 캡이 NV 메모리에서 캐시 내용을 플러시하여 몇 개월 또는 몇 년 동안 데이터 유지할 수 있습니다 . 즉, BBU RAID 컨트롤러 거의 모든 상황에서 RAID5 / 6 홀을 방지합니다.
shodanshok

1
당신은 구멍을 뚫는 것이 면역이라고 말했습니다. 실제 사용에서는 그다지 중요 하지 않다고 말했지만 개발자는 그렇지 않다고 말합니다 .
shodanshok

1
죄송하지만 귀하 는 다음과 같이 썼습니다 : "이것은 하드웨어 RAID의 배터리 백업 장치와 소프트웨어 RAID에 대한 배터리 부재를 울려주는 기초입니다 . " 이것은 잘못 입니다. 적절한 하드웨어 RAID 카드는 추가 보호 기능을 제공하며, 이것이 동일한 LSR 개발자의 의견이라고 여러 번 말씀 드렸습니다. 이제 나는 당신에게 질문을합니다 : 당신의 진술이 좋은지 틀린가? 잘못되었으므로 귀하의 답변을 편집하십시오.
shodanshok

0

나는 항상이 일을한다. 그것은 당신이하는 일과 공격적인 수준에 크게 좌우됩니다. OS를 위해 Raid 0 또는 1을 실행하는 SW 컨트롤러는 특별하지 않습니다. 데이터베이스에서 Raid 5와 함께 SW 컨트롤러를 실행하면 문제가 발생합니다! 일부 하드웨어 컨트롤러는 더 나은 성능을 제공하지만 RAID 카드의 프로세서 칩셋과 캐시 할 수 있는지 여부에 따라 다릅니다. 또한 모든 소프트웨어 컨트롤러가 모든 OS에서 지원되는 것은 아닙니다. 따라서 때로는 ESXi를 실행하기 위해 HW를 구입해야 할 수도 있습니다. SATA 연결을 사용하지 않는 한.

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