RAID 5의 쓰기 성능이 때때로 어려울 수 있다고 들었습니다. 중복성을 원하지만 데이터베이스 삽입 / 업데이트 시간을 희생하고 싶지 않습니다.
이 중복 얻을 수있는 권장 사항 일 것입니다 무슨 내가 대해 그렇다면 걱정해야 뭔가가 와 좋은 쓰기 성능을?
RAID 5의 쓰기 성능이 때때로 어려울 수 있다고 들었습니다. 중복성을 원하지만 데이터베이스 삽입 / 업데이트 시간을 희생하고 싶지 않습니다.
이 중복 얻을 수있는 권장 사항 일 것입니다 무슨 내가 대해 그렇다면 걱정해야 뭔가가 와 좋은 쓰기 성능을?
답변:
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보다 훨씬 더 안전합니다.
트랜잭션 데이터베이스
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 볼륨에 배치해야합니다. 그러나 디스크의 비용 절감은 상당히 적습니다.
글쎄, 그것은 당신의 결함 / 위험 허용 오차에 크게 의존합니다. RAID5에는 많은 문제가 있습니다 . 내 DB 서버에는 현재 두 개의 미러 드라이브가 있으며,이를 확장하려면 RAID6 또는 RAID10과 같이 더 많은 패리티가있는 것을 원할 것입니다.
또한 응용 프로그램의 가동 시간이 중요한 경우 마스터-마스터 또는 핫 스페어 등 복제 기능이있는 두 개의 데이터베이스 서버를 사용하는 것이 좋습니다. RAID는 디스크 장애에 대해서만 도움이되지만 서버에는 잘못 될 수있는 것이 더 많습니다. :)
글을 얼마나 쓰느냐에 따라 다릅니다.
상당히 가벼운 "웹 앱"이라면 RAID5에서 성능이 저하 될 가능성이 적습니다.
ETL이 큰 멀티 GB 데이터웨어 하우스를 구축하는 경우 RAID 5의 쓰기 버퍼가 빠르게 오버플로되고 RAID 5의 "쓰기 성능 저하"로 바로 넘어갑니다.
모든 RAID5 쓰기는 최소 3 회의 쓰기 (및 CRC 계산)를 유발합니다. 버퍼링 될 때, 이는 훌륭하고 빠릅니다 (작은 짧은 작업 버스트-단일 레코드 업데이트 및 삽입). 이것이 지속적인 쓰기 (대량 대량 삽입 / 업데이트) 인 경우이를 알 수 있습니다.
성능과 공간의 균형입니다. RAID 10 (스트라이프 드라이브의 미러)은 성능과 복원력을 모두 제공하지만 용량은 50 % 감소합니다.
RAID5는 더 높은 용량, 좋은 읽기 성능을 제공하지만 쓰기 성능은 좋지 않습니다.
RAID 1, 이것이 나의 최종 답변입니다
원인:
미러링 된 쌍은 장애가 발생한 디스크에 대한 적절한 중복성을 제공하며 RAID는 마지막 디스크에 계속 작동합니다.
데이터와 인덱스를주의해서 배치하면 미러 쌍이 읽기에 대한 I / O 성능을 향상시킵니다 ... [힌트 : 데이터와 해당 인덱스에 별도의 볼륨을 사용하십시오]. 컨트롤러를 이중화하여 더 많은 성능을 얻을 수 있습니다.
몇 가지 "왜 안되나"가이드를 위해, 이것은 내가 작업 한 Oracle DBA의 인기가 항상 높았다 ...
레이드 파이브와의 전쟁-http: //www.miracleas.com/BAARF/
우수한 쓰기 성능으로 중복성을 얻는 권장 사항은 무엇입니까?
대용량 후기 입 캐시. 하드웨어 RAID 컨트롤러의 RAM 또는 소프트웨어 RAID 솔루션에 사용 가능한 RAM을 늘리십시오 (예 : Linux의 MDADM의 경우 시스템 RAM이 증가하고 MDADM 풍선은 사용하지 않는 시스템 RAM을 쓰기 캐시로 사용하도록 확장). 이 조언은 주어진 "large"값에 대해 적용됩니다. 쓰기 캐시를 채울 수있을만큼 빠른 속도로 데이터를 자주 쓰는 경우 (5 %)? 큰 차이가 없습니다.
OS 파일에서 데이터 파일, 로그 파일을 분리하는 것에 관한 것입니다. 순차적으로 로그 쓰기 데이터에 많은 임의 읽기 및 임의 쓰기가 발생 함
이러한 특성을 지원하는 RAID 구성을 구축하면 성능을 크게 향상시킬 수 있습니다
RAID 1-미러링은 로그 파일에 적합 Raid 10은 데이터 파일에 적합합니다. 또한 TempbDB와 백업을 별도의 드라이브로 분리하는 것이 좋습니다. 파일 그룹 추가는 성능을 향상시키는 또 다른 방법입니다. SAN에 관해서는 그렇게 명확하지 않습니다. 각 LUN에 대해 특정 RAID 구성을 구축하는지 또는 스핀들 수에 의존하는지 여부에 따라 다릅니다.
의 정신에서 최근 StackOverflow의 블로그 글 우리는 인터넷에서 이미 답 존재를 다시 안 말, 나는 당신을 가리킬 이
RAID-5는 제공하는 중복성이 독특하지 않으며 일부 대체 제품보다 디스크를 적게 소비하면서 수행합니다. 동일하거나 더 나은 중복성과 더 나은 쓰기 성능으로 다른 것을 선택할 수 있습니다