RAID 5 구성에서 데이터베이스를 실행해야합니까?


13

RAID 5의 쓰기 성능이 때때로 어려울 수 있다고 들었습니다. 중복성을 원하지만 데이터베이스 삽입 / 업데이트 시간을 희생하고 싶지 않습니다.

이 중복 얻을 수있는 권장 사항 일 것입니다 무슨 내가 대해 그렇다면 걱정해야 뭔가가 좋은 쓰기 성능을?


1
어느 DB? 이전에는 Oracle + RAID 5가 없었습니다. 이것이 여전히 해당되는지 확실하지 않습니다.
cagcowboy 2009

이 특정 예에서 데이터베이스는 MySql 및 MSSQL에서 실행됩니다.
Scott Saad

응용 프로그램 (DB 읽기 / 쓰기 혼합, 가동 시간 및 복구 시간 요구 사항)과 관련하여 질문에서 좀 더 구체적으로 설명하면 더 적합한 답변을 얻을 수 있습니다. 이러한 것들이 최상의 솔루션을 변화시킬 수 있습니다.
Jay Stevens

답변:


23

I / O는 임의이므로 RAID 10이 권장됩니다. 다음은 예입니다. 계산은 약간 단순화되었지만 꽤 대표적입니다.

6 개의 드라이브 어레이가 있고 드라이브가 초당 100 개의 I / O (IOPS)를 수행 할 수 있다고 가정합니다. 읽기가 100 %이면 6 개의 드라이브가 모두 사용되며 RAID 10 및 RAID 5 모두에 대해 약 600 IOPS가됩니다.

최악의 시나리오는 100 % 쓰기입니다. 이 시나리오에서 RAID 10의 성능은 절반으로 줄어 듭니다 (각 쓰기는 두 개의 드라이브로 진행되므로) 300 IOPS가됩니다. RAID-5는 각 쓰기를 두 개의 읽기로 변환 한 다음 두 개의 쓰기로 변환하므로 성능의 1/4 또는 약 150 IOPS를 얻습니다. 꽤 큰 타격입니다.

실제 읽기 / 쓰기 패턴은이 두 극단 사이에 있지만 데이터베이스에 RAID 10이 권장되는 이유입니다.

그러나 사용중인 데이터베이스 서버가없는 경우 RAID-6을 수행 할 수도 있습니다. 데이터베이스가 병목 현상이 발생하지 않는다는 것을 알고 있다면 종종 RAID 10 또는 RAID 5보다 훨씬 더 안전합니다.


22

트랜잭션 데이터베이스

RAID-5 는 쓰기에서 패리티를 다시 계산하기 위해 컨트롤러가 충분한 데이터를로드해야하므로 쓰기 속도가 상대적으로 느립니다. 쓰기 작업은 최소 4 개의 디스크 작업이 수행됩니다.

  • 패리티 블록에서 읽기

  • 패리티 블록과 함께 값을 XOR하기 위해 이전 블록을 읽습니다 (아직 캐시에 없다고 가정).

  • 새 패리티 블록 작성 (이전 패리티 블록 XOR 이전 데이터 블록 XOR 새 데이터 블록)

  • 새로운 데이터 블록을 작성합니다.

시스템이 후기 입 캐싱을 사용하지 않는 경우 이러한 모든 옵션이 I / O 완료를위한 중요한 경로에 있음을 의미합니다. 데이터베이스 쓰기의 경우가 종종 있습니다. 실제로 Microsoft (예 : Microsoft)에는 공급 업체가이 동작을 보증해야하는 SQL 서버와 함께 사용할 SAN 장비에 대한 인증 프로그램이 있습니다. 때때로 구형 RAID-5 장비는이 최적화를 사용하지 않았으며 전체 스트라이프에서 패리티를 다시 계산해야했습니다.

RAID-10 에는 모든 단일 드라이브에 대한 미러가 있으며 패리티를 계산하기 위해 추가 데이터를 읽을 필요가 없습니다. 즉, 쓰기에는 훨씬 적은 물리적 I / O가 필요합니다.

RAID-50 은 중앙 어딘가에 위치하며, 볼륨은 여러 개의 RAID-5 볼륨으로 분할되고 차례로 스트라이프됩니다. 3 + 1 구성표로 스트라이프 된 그룹으로 만들어진 RAID-50에서 쓰기는 최대 3 개의 추가 디스크 I / O 요청을 생성합니다. 너무 기울어 졌다면 RAID-5와 RAID-10을 RAID-50의 특별한 경우로 볼 수 있습니다. RAID-50은 주로 많은 물리 디스크에 큰 볼륨을 제공하는 데 사용됩니다

RAID-6과 같은 다른 패리티 구성표 (세트당 2 개의 중복 디스크가있는 패리티 구성표)도 존재합니다. 최신 디스크는 어레이를 되감기하는 데 시간이 오래 걸릴 수있을만큼 충분히 큽니다. 재건은 상당히 중요합니다. RAID-6은 두 번째 패리티 디스크를 사용하여 데이터 손실을 유발하는 세 가지 디스크 장애가 발생하여 이러한 위험을 완화합니다. RAID-50 구성표와 유사한 트릭을 사용하여 RAID-60 어레이를 만들 수 있습니다.

마지막으로 단일 미러링 쌍 (RAID-1)은 일부 작업에 중복성과 충분한 성능을 제공 할 수 있습니다. 특히 RAID-1은 많은 데이터베이스 로그 트래픽을위한 충분한 처리량을 제공합니다. 이에 대한 자세한 내용은 아래를 참조하십시오.

쓰기가 많은 워크로드가있는 경우 RAID-10 볼륨에서 성능이 향상 될 수 있습니다. 디스크에 충분한 공간이 있다고 가정하면 적은 수의 물리 디스크에서 필요한 처리량을 얻을 수 있기 때문에이 방법이 도움이 될 수 있습니다. 데이터베이스 서버의 로그 또는 temporay 영역과 같은 일부 항목은 쓰기 트래픽이 많으므로 RAID-1 또는 RAID-10 볼륨에 있어야합니다.

로그

로그 볼륨은 대부분 순차적 인 데이터 액세스 패턴을 특징으로하며 본질적으로 '이 데이터를이 블록에 쓰기'라인을 따라 명령으로 구성된 링 버퍼입니다. 이들은 핵심 DBMS 엔진에서 생산자로 작성되어 소비자로 처리됩니다 로그 리더 기능으로. 단일 미러링 쌍은 실제로 많은 로그 트래픽을 처리합니다.

읽기가 많은 시스템 및 파일 서버

데이터웨어 하우스와 같이 읽기가 많은 시스템에서는 하나 이상의 RAID-5 볼륨을 사용할 수 있습니다. 파일 서버에서 디스크 액세스는 주로 전체 파일 기반으로 수행되므로 쓰기는 아마도 패리티 블록을 구성하는 대부분의 블록을 쓸 것입니다. 이 경우 RAID-5의 성능이 저하됩니다.

과거에는 디스크의 비용 절감 효과는 크지 만 지금은 문제가되지 않습니다.

후기 입 캐싱 및 RAID-5

배터리 백업 캐시가있는 SAN 또는 내부 RAID 컨트롤러에서 '쓰기 백'캐싱을 활성화 할 수 있습니다. 이것은 캐시를 작성하고 애플리케이션에 제어를 리턴합니다. 컨트롤러가 I / O를 완료된 것으로보고합니다. 그러나 반드시 데이터를 디스크에 즉시 기록 할 필요는 없습니다. 이 기능을 사용하면 RAID-5 패리티 읽기 / 쓰기 작업을 실질적으로 최적화하고 RAID-5x 볼륨의 쓰기 성능 저하를 완화 할 수 있습니다.

그러나 여전히 데이터 무결성 문제의 위험이 적습니다. 호스트 시스템은 실제로는 그렇지 않은 경우이 쓰기가 완료되었다고 들었습니다. 하드웨어 장애로 인해 데이터베이스 서버의 로그와 데이터 볼륨간에 데이터 불일치가 발생할 수 있습니다. 이러한 이유로 ETL 프로세스와 같은 경우 성능 상승이 될 수 있지만 트랜잭션 시스템에는 후기 입 캐싱이 권장되지 않습니다.

요약

디스크 공간 은 현재 매우 저렴하므로 트랜잭션 시스템은 아마도 로그 볼륨에 RAID-1 또는 RAID-10을 사용하고 데이터 볼륨에 RAID-10을 사용해야합니다. 물리적 디스크 크기는 데이터베이스보다 훨씬 클 가능성이 높으며 RAID-10은 같은 수의 디스크에 대해 더 많은 쓰기 처리량을 허용하므로 시스템을 지원하는 데 필요한 디스크 볼륨 수가 줄어 듭니다.

데이터웨어 하우스와 같은 경우에도 인덱스가 많고 인덱스가 큰 팩트 테이블을 사용하여 공간을 씹어 RAID-5 또는 RAID-50 데이터 볼륨으로 적은 가격으로 승리 할 수 ​​있습니다. 그러나 로그 및 tempdb는 여전히 ETL 처리 중에 많은 작업을 수행하므로 RAID-10 볼륨에 배치해야합니다. 그러나 디스크의 비용 절감은 상당히 적습니다.


후기 입 캐시 : "배터리 백업"후 기록 캐시가있는 RAID 컨트롤러를 구매하는 경우 배터리가 포함되지 않은 것 같습니다. 공급 업체에 포함 시키도록하십시오.
David Hicks

어떤 사람들은 그렇지 않습니다. 나는 배터리와 함께 제공되지 않은 Adaptec 2200을 꽤 많이 가지고 있습니다. 일부는 표준으로 제공됩니다.
ConcernedOfTunbridgeWells

1
응답에 오류가 있습니다. 패리티를 다시 계산하기 위해 모든 드라이브를 읽을 필요 는 없습니다 . 쓰기는 2 개의 읽기와 2 개의 쓰기가됩니다. 14- 드라이브 어레이 예의 다른 12 개 드라이브는 RAID5에 의해 손대지 않습니다.
TorgoGuy

사실, 나는 그 사람이 옳다고 믿는다. 블록의 이전 값으로, 그리고 블록의 새 값으로 다시 패리티를 읽고 XOR 할 수 있습니다. 전에 설명한 것을 본 적이 없지만 작동합니다.
ConcernedOfTunbridgeWells

3

글쎄, 그것은 당신의 결함 / 위험 허용 오차에 크게 의존합니다. RAID5에는 많은 문제가 있습니다 . 내 DB 서버에는 현재 두 개의 미러 드라이브가 있으며,이를 확장하려면 RAID6 또는 RAID10과 같이 더 많은 패리티가있는 것을 원할 것입니다.

또한 응용 프로그램의 가동 시간이 중요한 경우 마스터-마스터 또는 핫 스페어 등 복제 기능이있는 두 개의 데이터베이스 서버를 사용하는 것이 좋습니다. RAID는 디스크 장애에 대해서만 도움이되지만 서버에는 잘못 될 수있는 것이 더 많습니다. :)


3

글을 얼마나 쓰느냐에 따라 다릅니다.

상당히 가벼운 "웹 앱"이라면 RAID5에서 성능이 저하 될 가능성이 적습니다.

ETL이 큰 멀티 GB 데이터웨어 하우스를 구축하는 경우 RAID 5의 쓰기 버퍼가 빠르게 오버플로되고 RAID 5의 "쓰기 성능 저하"로 바로 넘어갑니다.

모든 RAID5 쓰기는 최소 3 회의 쓰기 (및 CRC 계산)를 유발합니다. 버퍼링 될 때, 이는 훌륭하고 빠릅니다 (작은 짧은 작업 버스트-단일 레코드 업데이트 및 삽입). 이것이 지속적인 쓰기 (대량 대량 삽입 / 업데이트) 인 경우이를 알 수 있습니다.

성능과 공간의 균형입니다. RAID 10 (스트라이프 드라이브의 미러)은 성능과 복원력을 모두 제공하지만 용량은 50 % 감소합니다.

RAID5는 더 높은 용량, 좋은 읽기 성능을 제공하지만 쓰기 성능은 좋지 않습니다.


2

RAID 1, 이것이 나의 최종 답변입니다

원인:

미러링 된 쌍은 장애가 발생한 디스크에 대한 적절한 중복성을 제공하며 RAID는 마지막 디스크에 계속 작동합니다.

데이터와 인덱스를주의해서 배치하면 미러 쌍이 읽기에 대한 I / O 성능을 향상시킵니다 ... [힌트 : 데이터와 해당 인덱스에 별도의 볼륨을 사용하십시오]. 컨트롤러를 이중화하여 더 많은 성능을 얻을 수 있습니다.


RAID 1 + 0이 아닌 이유는 무엇입니까?
Brian Knoblauch


2

짧은 대답 : 아닙니다.

긴 대답 : 데이터베이스가 매우 작거나 요구 사항이 최소가 아니라면 그렇지 않습니다. 데이터 검색은 초당 디스크 I / O 작업에 크게 좌우되며 스트라이핑 오버 헤드로 인해 시간이 지남에 따라, 특히 긴 쿼리 실행 에서 디스크 액세스가 줄어 듭니다 . 대부분의 데이터베이스는 RAID 10 스타일 설정 또는 데이터 파티션을 보유한 특정 볼륨에서 실행됩니다. 예, RAID 10은 쓰기 비용이 들지만, 올바른 설정으로 읽기 성능이 향상 됩니다 .


1

우수한 쓰기 성능으로 중복성을 얻는 권장 사항은 무엇입니까?

대용량 후기 입 캐시. 하드웨어 RAID 컨트롤러의 RAM 또는 소프트웨어 RAID 솔루션에 사용 가능한 RAM을 늘리십시오 (예 : Linux의 MDADM의 경우 시스템 RAM이 증가하고 MDADM 풍선은 사용하지 않는 시스템 RAM을 쓰기 캐시로 사용하도록 확장). 이 조언은 주어진 "large"값에 대해 적용됩니다. 쓰기 캐시를 채울 수있을만큼 빠른 속도로 데이터를 자주 쓰는 경우 (5 %)? 큰 차이가 없습니다.


1

OS 파일에서 데이터 파일, 로그 파일을 분리하는 것에 관한 것입니다. 순차적으로 로그 쓰기 데이터에 많은 임의 읽기 및 임의 쓰기가 발생 함

이러한 특성을 지원하는 RAID 구성을 구축하면 성능을 크게 향상시킬 수 있습니다

RAID 1-미러링은 로그 파일에 적합 Raid 10은 데이터 파일에 적합합니다. 또한 TempbDB와 백업을 별도의 드라이브로 분리하는 것이 좋습니다. 파일 그룹 추가는 성능을 향상시키는 또 다른 방법입니다. SAN에 관해서는 그렇게 명확하지 않습니다. 각 LUN에 대해 특정 RAID 구성을 구축하는지 또는 스핀들 수에 의존하는지 여부에 따라 다릅니다.


0

의 정신에서 최근 StackOverflow의 블로그 글 우리는 인터넷에서 이미 답 존재를 다시 안 말, 나는 당신을 가리킬

RAID-5는 제공하는 중복성이 독특하지 않으며 일부 대체 제품보다 디스크를 적게 소비하면서 수행합니다. 동일하거나 더 나은 중복성과 더 나은 쓰기 성능으로 다른 것을 선택할 수 있습니다


0

RAID5에서 데이터베이스를 실행하는 것은 일반적으로 실수입니다. 필자는 적은 쓰기로 읽기 집약적 인 잘 설계된 데이터베이스와 RAID5로 인한 "공간 낭비"가 정치적으로 실행 가능하지 않은 데이터베이스의 두 가지 경우에만 수행되는 것을 보았습니다.

RAID5는 트랜잭션 성능을 파괴합니다.

또한 RAID5를 고려중인 경우 RAID6가 작동하는지 확인하십시오. 실제 신뢰성은 미성숙 한 구현으로 인해 종종 악화되지만 이론적 신뢰성은 훨씬 더 좋습니다.

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