RAID1 또는 5 대신 RAID0, 이것이 미쳤습니까?


14

SQL Server 클러스터 중 하나에 RAID0 설정을 사용하려고합니다. 상황을 설명하고 이것이 왜 나쁜 생각인지 찾고 있습니다. 또한 유스 케이스, 백서 또는 기타 문서를 가지고있는 누군가 가이 주제에 대해 알려 줄 수 있다면 좋을 것입니다.

2 개의 데이터 센터에 3 개의 서버가 있으며 SQL 클러스터의 일부입니다. 모두 가용성 그룹에서 SQL Server를 실행하고 있습니다. 기본은 바로 옆에 다른 데이터 센터의 복제본이 있습니다. 자동 장애 조치로 동기식 복제를 실행하고 있습니다. 모든 드라이브는 엔터프라이즈 급 SSD입니다. SQL Server 2017 또는 2019를 실행합니다.

나는 실제 단점이 거의 없다면 다른 방법보다 RAID0 어레이에서 RAID0 어레이에서 실행하면 여러 가지 이점이 있다고 생각합니다. 현재 내가보고있는 유일한 단점은 기본 서버의 중복성이 부족하여 증가하지 않는다는 것입니다. 전문가로서 :

  1. 누군가가 수동으로 작동한다는 통지를받을 때까지 드라이브가 느려지고 성능이 저하 된 상태로 실행되지 않고 드라이브가 작동하면 서버는 즉시 2 차적으로 작동하여 전체 운영 기능을 유지합니다. 이는 장애 조치에 대해 알려주는 이점이 있으므로 원인을 더 빨리 조사 할 수 있습니다.

  2. TB 용량 당 전체적인 실패 가능성을 줄입니다. 패리티 또는 미러 드라이브가 필요하지 않으므로 어레이 당 드라이브 수를 줄입니다. 드라이브 수가 적을수록 드라이브 장애가 발생할 가능성이 줄어 듭니다.

  3. 이것이 더 싸다. 필요한 용량에 필요한 드라이브 수가 적을수록 비용이 절감됩니다.

나는 이것이 기존의 비즈니스 사고가 아니라는 것을 알고 있지만 고려하지 않는 것이 있습니까? 나는 찬반 양론을 원합니다.

쿼리 성능 향상을 위해이 작업을 수행하려고하지는 않지만 의미있는 것이 있으면 자유롭게 지적하십시오. 저의 주요 관심사는 내가 생각하지 못한 신뢰성 또는 중복 문제를 고려하거나 해결하지 못하는 것입니다.

OS는 별도의 미러링 된 드라이브에 있으므로 서버 자체는 그대로 있어야합니다. 해당 드라이브 중 하나를 교체하고 다시 미러링 할 수 있습니다. 크기가 작으며 시스템 DB 이외의 데이터베이스 파일이 없습니다. 몇 분 이상 걸리는 것을 상상할 수 없습니다. 데이터 어레이 중 하나에 장애가 발생하면 드라이브를 교체하고 어레이를 재구성하고 AG와 복원 및 재 동기화합니다. 개인적 경험상 복원은 RAID5 드라이브 재 구축보다 훨씬 빠릅니다. RAID1 오류가 없었으므로 재구성이 더 빠를 지 여부를 모르겠습니다. 복원은 백업에서 제공되고 기본 서버와 일치하도록 롤 포워드되므로 기본 서버의로드 증가는 최소 몇 분 동안 로그를 복구 된 복제본과 동기화하는 것만으로도 매우 적어야합니다.


1
이 질문에 대한 토론이 채팅 으로 이동 되었습니다 .
Paul White 9

답변:


19

평가에서 누락 된 것으로 생각되는 매우 중요한 측면이 있습니다.

어떻게 복구 할 계획입니까?

raid5가 드라이브를 잃으면 자동으로 복구 될 때까지 성능이 저하 된 상태로 실행됩니다. (적어도 핫 스페어가있는 경우)

raid0이 드라이브를 잃어 버리면 전혀 복구 할 수 없습니다. 즉, 중복성을 상실하고 복구하려면 raid0을 재 구축하고 현재 프로덕션로드 상태 인 보조 드라이브에서 모든 데이터 (깨진 드라이브의 데이터뿐만 아니라)를 다시 복사 해야 합니다. 즉 , 성능이 저하되는 단일 성능 저하 된 raid5 어레이 대신 이제 전체 프로덕션 설정이되었습니다.

raid5 (또는 raid6) 저하 된 상태 성능 페널티가 대처할 수없는 것이 아니라면 raid 1 + 0을 대신 사용해야 합니다. . 그렇습니다. 비용이 더 많이 들지만 디스크 가격은 원래 가격이므로 돈을 잘 쓸 것입니다.

어쩌면 "드라이브 5 상태를 능동적으로 모니터링하고 드라이브가 고장 났을 때 기본에서 부하를 전송"하는 것이 단점없이 대부분의 이점을 제공하는 솔루션일까요? (그렇다 물론, 로컬 중복없이 실행의 차가움 요인을 잃고에서.) 당신의 RAID5 드라이브 복구 중 하나 공격대 소프트웨어가 이상하게 행동, 또는 당신은, 전체 데이터베이스의 데이터 동기화보다 훨씬 더 오래 걸리는 경우 심각하게 대형 디스크, 생각합니다.


16

여기에서 드라이브 고장을 고려해야합니다.

특정 날짜의 드라이브에 1/1000의 고장률이 있다고 잠시 상상해보십시오. 3 개의 어레이 각각에 20 개의 드라이브가 있다고 상상해보십시오.

따라서 어레이에서 단일 드라이브가 고장날 가능성은 20/1000 = 1/50입니다. 동일한 어레이 내에서 두 개의 드라이브가 고장날 가능성은 20/1000 * 20/1000/2 = 200/1000000 = 1/5000에 가깝습니다. 따라서 RAID 0에서 RAID 5로 전환함으로써 우리는 이미 어레이 중 하나를 죽일 가능성이 훨씬 낮습니다.

따라서 하루 더 어레이가 고장날 확률이 1/50이면 하루에 2 개의 어레이가 고장날 확률은 1 / (50 * 50) = 1/2500입니다. 동일한 디스크 세트를 가정 할 때 두 개의 동일한 RAID 0 어레이가 실패 할 가능성은 하나의 RAID 5 어레이가 실패하는 것의 두 배입니다. 한 번에 두 개 이상의 어레이가 고장날 가능성이 크게 증가하기 때문에 이러한 실패 가능성이 기하 급수적으로 증가해야합니다 .

이러한 디스크의 수명이 길어질 수 있으므로 위와 같이 숫자를 실행하여 안정성에 어떤 영향을 미치는지 직접 확인할 수 있습니다. 드라이브 사양을 게시 할 수 있으면이 게시물에 해당 계산을 추가 할 수 있습니다. 위험이 수용 가능한지 여부는 조직이 결정하는 것입니다.

주목해야 할 또 다른 항목은 동일한 배치 (동일한 공장, 동일한 시간) 내에서 제조 된 SSD를 활용하여 드라이브 고장 가능성을 높일 수 있다는 것입니다. 주의하지 않으면이 문제로 인해 3 개의 노드가 모두 종료 될 수 있습니다.

면책 조항 : 위의 계산은 단순화되었지만 여전히 상대적으로 정확합니다.


이 답변의 대화 가 채팅 으로 이동 되었습니다 .
Paul White 9

13

나는 실제 단점이 거의 없다면 다른 방법보다 RAID0 어레이에서 RAID0 어레이에서 실행하면 여러 가지 이점이 있다고 생각합니다.

내부 / 직접 연결된 스토리지 드라이브와 함께 AG를 실행할 때 매우 일반적인 구성입니다. 특히 NVMe 또는 기타 PCI 기반 플래시 저장 장치를 사용합니다.

서버 장애와 같이 드라이브 장애를 처리하는 것입니다. 적은 수의 솔리드 스테이트 드라이브를 사용하면 서버의 다른 솔리드 스테이트 구성 요소에 비해 실제로 드라이브의 MTBF가 현저히 낮아지지 않으므로 각 드라이브를 실패 지점으로 취급하면됩니다. 드라이브에 장애가 발생한 경우 서버를 교체 / 재 구축하십시오.


2

당신이 이루고자하는 것에 흥미가 있습니까? 이 설정에서 성능 향상을 얻으려고하지 않는다고 말하면서 어떤 이득을 얻으려고합니까?

성능 문제에 대한 참고 사항 : Enterprise Class SSD를 실행하는 경우 RAID 계산이 실제로 병목 현상을 개선해야합니까?

당신의 3 명의 프로를 데려 가서, 나는 당신이 그것을 충분히 생각했다고 생각하지 않습니다.

  1. SQL 장애 조치가 곧바로 진행됩니까? 장애 조치가 자동으로 트리거되는 원인은 무엇입니까? 다른 사람이 타 자마자 서버가 드라이브를 오프라인으로 전환합니까? 한 디스크에서 불량 섹터 인 경우 어떻게합니까? SQL이 불량 섹터에 도달하지 않으면 장애 조치 (failover)가 수행됩니까? 나는 100 % 확신하지 못한다.

  2. TB 용량 당 전체적인 실패 가능성을 줄입니까? 디스크 수가 적을수록 고장 점이 줄어든다고 생각하지만, 옳지 않다고 생각합니다. 1 개의 디스크 또는 10 개의 디스크 (또는 100 개의 디스크)가있는 경우 1 개의 디스크 장애 가능성은 동일하게 유지되지만 RAID 0의 경우 이는 치명적인 오류임을 의미합니다.

  3. RAID5를 구입하기 위해 하나의 추가 SSD에 너무 많은 비용이 듭니까? RAID1 OR 1 + 0이 어떻게 예산을 절감 할 수 있지만 추가 디스크 1 개를 얻을 수 있습니까?

중복성이 없으면 디스크에 장애가 발생하고 RAID가 오프라인 상태가되면 RAID를 재 구축하고 모든 데이터베이스를 처음부터 복원 할 때까지 해당 노드가 오프라인 상태가됩니다. 그렇게하려면 어떤 과정을 밟아야합니까? DR에 대한 복제가 중지되므로 가용성 그룹에서 데이터베이스를 제거 할 수 없지만 조치를 취하지 않으면 다른 두 서버가 로그 파일을자를 수 없습니다. 그 확인은? 긴 주말의 금요일 밤에 실패하면 어떻게됩니까? 그래도 괜찮습니까? 보조 데이터가 그러한 양의 데이터 축적에 대처할 수 있습니까?

마지막 질문은 당신이 언급 한 재 구축 시간이 더 빠르다는 것입니다. 더 빨라질 것이라고 100 % 확신하십니까? 얼마나 빨리?

브렌트 오자르 서버 설정 은 여전히 ​​새 SQL 인스턴스 설정을위한 안내서입니다. 이 안내서의 첫 번째 요점은 드라이브에 RAID0을 사용하지 않는지 확인하는 것입니다.

==== UPDATE ====

한 가지 추가 생각, 보조 서버가 기본 서버와 동기화되지 않으면 어떻게됩니까? 동기 복제를 사용하더라도 보조는 여전히 자동으로 비동기로 되돌릴 수 있으며 일단 장애 조치를 수행하면 장애 조치로 인해 데이터가 손실되므로 자동 장애 조치 기능이 손실됩니다. 이것이 일어날 수있는 몇 가지 예 :

  1. 매우 큰 인덱스 재 구축-복제가 2 차 중 하나 또는 둘 다에서 뒤처 질 수 있음
  2. 보조를 패치하는 동안 RAID0에서 디스크 오류가 발생했습니다. 기본 서버가 오프라인 상태이므로 패치중인 서버가 온라인으로 돌아 오지 못할 수 있습니다.

그것들은 엣지 케이스이지만 그 시간 동안 잃어버린 것에 따라 치명적일 수 있습니다.


여분의 디스크 (또는 3 개)의 비용이 예산을 세우거나 방해하는 요소 인 경우 # 3의 요점에 추가하면 디스크 하나가 고장 났을 때이를 대체 할 돈은 어디에서 오는가?
CVn

@Greg 모든 것을 생각하지 않았을 수도 있다는 사실이이 질문을하는 이유입니다. 나는 전체적으로 효율성을 향상시킬 수있는 곳을보고 있다고 말할 것입니다. 질문에 대답하려면 : 1. 예. 배열이 실패하면 AG가 다른 노드로 즉시 실패합니다. 불량 섹터는 복구 가능한 비트 오류인지 여부에 따라 다르지만 디스크가 어떤 종류의 RAID인지에 관계없이 오류를 일으킬 수 있습니다. 2. 디스크 수가 적 으면 어레이에서 장애가 발생할 가능성이 줄어 듭니다. RAID0은 어레이 고장 가능성을 높입니다. 3. 아니오, 돈 절약은 특권입니다.
zsqlman

@Greg 좋은 후속 질문과 일부는 완전히 해결되지 않았습니다. 서버가 3 배인 수많은 중복 계층이 있습니다. 모든 데이터베이스를 쉽게 복원 할 수 있습니다. 노드에 장애가 발생하면 AG에서 해당 복제본을 차서 Tlog 백 로그 문제를 제거하고 노드를 제거하지 않아도 며칠 분량의 로그가 증가 할 수있는 충분한 공간이 있습니다. 복구 시간과 관련하여 하나의 데이터 포인트 만 있고 테스트 할 여분의 하드웨어가 없습니다. RAID 오류는 1 회 뿐이며 복구하는 데 2 ​​일 이상이 걸렸으며 8 시간 내에 복원을 수행 할 수 있습니다.
zsqlman

@zsqlman-RAID가 없어서 데이터가 손실 될 수있는 시간을 추가했습니다. 또한 실패 감소에 적용하는 논리는 여전히 결함이 있다고 생각합니다. RAID에서 더 적은 수의 디스크로 실패한 한 디스크의 확률은 RAID에서 중복성이있는 1 개의 디스크 실패와 동일합니다. 디스크 수를 줄이면 하나의 디스크가 고장날 위험이 줄어들지 않습니다. 각 디스크는 다른 디스크만큼 고장날 가능성이 높습니다.
그렉

각 디스크에는 동일한 실패 확률이 있습니다. 디스크 수가 적 으면 오류 발생 가능성이 줄어 듭니다.
zsqlman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.