Oracle 데이터베이스에 권장되는 RAID 구성은 무엇입니까?


16

RAID (Redundant Arrays of Inexpensive Disks)는 다른 구성 (RAID-0, RAID-1 ...)과 함께 제공됩니다. Oracle 데이터베이스를 설치할 때 설정하고 사용해야하는 권장 RAID 구성은 무엇입니까? 데이터베이스는 주로 데이터웨어 하우스로 사용됩니다.


RAID0과 RAID1은 완전히 다릅니다. 드라이브 장애시 성능에 대해서만 RAID0을 사용하고 내결함성에 대해서만 RAID1을 사용하십시오.
Jonas

4
데이터베이스 서버에서 RAID0을 사용해서는 안됩니다. 물론 테이프에서 복원하는 것을 좋아하지 않는 한.
mrdenny

답변:


13

때에 따라 다르지. 데이터웨어 하우스를 볼 때 특정 설계를 염두에 두지 않으면 자동 스토리지 관리가 훌륭한 경로 일 수 있습니다.

AskTom , OTN 포럼 , OTN 포럼 2OTN 포럼 3 에서 토론을 고려하십시오 .

일을 처리하는 올바른 방법은 없으며 하드웨어 및 네트워크 요소에 따라 답변이 변경됩니다. 직접 알아볼 수 있도록 ASM 기반 시스템, Linux에서 Raid가 가상화 된 SAN 및 하드웨어 기반 RAID 시스템에 샘플 데이터웨어 하우스 (재생할 수있는 공연 만)를 미리로드하십시오.

세 가지 환경 모두에서 쿼리 결과의 타이밍을 지정하면 성능에 가장 적합한 방법론을 찾을 수 있습니다. ASN과 Linux 기반 가상 공격대를 사용하여 데이터베이스를 배포했으며 가상 공격대가 약간 더 좋아졌습니다 (몇 년 전). 그러나 일부는 드라이브 설정 방식 인 것 같습니다.

단 하나의 정답은 없습니다. 크기 및 성능 요구 사항에 대한 자세한 정보를 제공 할 수있는 경우 다양한 테스트 사례를 탐색 할 수 있습니다.

--편집하다--

모든 " 디스크 그룹 "은 해당 서브 시스템에있는 하나 이상의 디스크, 디렉토리 또는 파일로 구성 될 수 있습니다. 오라클 "최상의 성능과 안정성을 위해 둘 이상의 물리적 장치에서 RAID 장치 또는 논리 볼륨을 선택하고 SAME (Stripe-Mirror-everything) 방법론을 구현하십시오." 파일 시스템에 파일을 배치 할 때 oracle이 RAID 1 + 0을 권장하는 것처럼 읽습니다.

그러나 ASM 관리 디스크 그룹, "양방향 미러링을 사용하는 경우 일반 중복 디스크 그룹에는 최소 2 개의 장애 그룹 (또는 2 개의 디스크 장치)이 필요합니다. 일반 중복 디스크 그룹의 유효 디스크 공간은 절반의 합입니다. 모든 장치의 디스크 공간 "은 자동으로 미러링을 제공합니다.

이러한 장치 자체는 RAID 장치 등으로 구성 될 수 있습니다. RAIDed 데이터웨어 하우스를 설정할 때 실제 테스트에서 파일 시스템의 간단한 가상 RAID 5는 수용 가능한 성능을 제공했으며 추가 ASM은 성능상의 이점을 추가하지 않았습니다. 이러한 종류의 최적화 작업에서는 먼저 리소스를 식별 한 다음 가능한 모든 구성을 테스트하십시오. 때로는 결과가 매우 직관적 일 수 있기 때문입니다.


1
가상의 습격은 매우 재미있다 : /
jcolebrand

10

두 개의 물리적 드라이브가있는 경우 :

RAID0 : 빠르지 만 중복성은 없습니다. 모든 드라이브 오류는 전체 어레이를 종료시킵니다. 일부 사람들은 임시 저장소를 RAID0 (예 : MSSQL에서는 tempdb)에 저장하지만, 어레이가 넘어져도 의미있는 데이터를 잃지 않으면 서 복구 될 때까지 서버가 중단 될 수 있으므로 여전히 위험하다고 생각합니다.

RAID1 : 두 개의 드라이브가있는 경우이 작업을 수행하십시오. 좋은 컨트롤러를 사용하면 읽기 성능이 향상 될 수 있지만 쓰기 성능 이점은 없습니다. RAID1의 주요 기능은 죽어가는 드라이브 중 하나에서 살아남는 것입니다.

세 개의 물리적 드라이브가있는 경우 :

지원되는 경우 옵션은 비표준 3 드라이브 RAID10 (또는 IBM 컨트롤러가 참조하는 RAID1E) 인 RAID5입니다. 물론 RAID1을 사용하고 다른 드라이브 중 하나에 장애가 발생했을 때 여분의 드라이브를 예비 드라이브로 유지할 수는 있지만 어쨌든 미션 크리티컬 한 환경에서 예비 디스크를 유지해야합니다.

RAID5는 RAID10보다 많은 공간을 제공하지만 (1 대반 대신 2 개의 드라이브), 컨트롤러가 작성된 모든 블록에 대해 컨트롤러가 패리티 블록을 읽고, 업데이트하고, 다시 써야하는 쓰기 성능 문제가 있습니다. 이 업데이트 성능 문제는 모든 업데이트에 대해 하나 이상의 트랜잭션 로그에 대한 쓰기와 실제 데이터 영역에 대한 쓰기가 두 개 이상 있기 때문에 데이터베이스 쓰기에 대해 두 배가 될 수 있습니다. 요즘에는 공간이 저렴하기 때문에 더 나은 쓰기 성능을 지원하는 경우 3 드라이브 RAID10을 권장합니다. 많은 IBM 컨트롤러와 마찬가지로 Linux의 소프트웨어 RAID가이를 제공합니다 (RAID1E라고 함). 표준 배열로 간주되지 않으므로 표준 이름이 없으므로 다른 이름에서도 찾을 수 있습니다.

R5와 R10-over-three는 동일한 중복성 (한 번에 하나의 드라이브가 고장 나고 어레이는 살아남을 수 있음)과 유사한 읽기 성능 메트릭 (2 드라이브 RAID0 어레이와 유사)을 제공합니다.

4 개의 물리적 드라이브가있는 경우 :

하나의 어레이 만 생성하는 경우 RAID6 및 "전통적인"RAID10 (RAID0의 RAID0)의 두 가지 옵션 ( "핫 스페어"변형 무시)이 있습니다.

둘 다 같은 공간을 제공합니다 (네 개의 드라이브 두 개). RAID6은 6 개의 가능한 2 개의 드라이브가 사라진 상황 중 4 개만 살아남을 수 있으므로 한 번에 2 개의 드라이브가 고장날 수 있으므로 중복성이 향상됩니다. 둘 다 더 유사한 읽기 성능을 제공하지만 RAID6는 RAID5와 유사한 쓰기 성능 문제를 가지고 있습니다 (좋은 컨트롤러에서는 동일하지만 OS에 따라 I / O 제어 기능이 나쁜 컨트롤러에서는 RAID5보다 느릴 수 있지만 소프트웨어 RAID는 RAID I입니다). 일반적으로 성능상의 이유로 데이터베이스에 적합합니다. 여분의 중복성이 필요한 경우 6 개의 드라이브를 사용하고 RAID0 또는 2 개의 3 드라이브 RAID1을 사용할 수 있습니다.

4 개 이상의 드라이브가 있으면 별도의 RAID1 어레이 쌍을 가질 수 있으므로 더욱 흥미로워집니다. 이렇게하면 데이터 저장소를 한 어레이에 보관하고 다른 트랜잭션 로그를 다른 어레이에 보관함으로써 회전 디스크로 상당한 성능 이점을 얻을 수 있습니다. 이는 경우에 따라 헤드 이동을 상당히 줄이고 "임의"액세스로 인한 탐색 시간은 실제 성능을 저하시킵니다. 데이터웨어 하우스의 경우 상대적으로 적은 쓰기가 거의 없다는 것을 의미한다고 가정하면 데이터 파일에서 트랜잭션 로그를 분할하면 이점이 제한적이지만 여전히 여러 배열을 고려하여 데이터를 분할하여 읽기 성능을 향상시킬 수 있습니다 .

드라이브가 5 개 이상인 경우 :

여기에서 옵션이 널리 공개되며 실제로 데이터가 무엇인지, 예상되는 업데이트 / 읽기로드 / 패턴이 무엇인지에 달려 있습니다. 예를 들어 서비스 중 한 번은 12 ~ 70Gb 드라이브에서 실행됩니다.

  • 시스템 영역 (OS, SQL Server (이 경우 MSSQL), swap, tempdb)의 RAID10으로 4 배
  • 데이터 파일 용 RAID10으로 4 배
  • 트랜잭션 로그에 대해 RAID10으로 4 배

Tempdb는 시스템 배열에 유지됩니다. 시스템을 다른 두 개의 어레이로 옮기고 시스템 어레이를 RAID1에서 2 개의 드라이브로 실행할 수 있습니다. 시스템 속도에 추가 속도가 많이 필요하지 않기 때문에 (부팅 중 또는 스와핑시 실제로 중요하기 때문에) 스왑 할 필요가없는 충분한 RAM), 그러나 우리가 해당 머신 세트에 대해 호스팅 제공 업체에게 지불하는 방식으로 두 드라이브를 버리는 데 더 적은 비용이 들지 않습니다. 또한 오프 서버, 오프 사이트 및 오프라인 백업 위치로 복사하기 전에 백업이 시스템 어레이로 이동합니다.

물론 이것은 일부 데이터베이스에는 심각하게 과도합니다 (이 방법으로 작은 블로그 서버를 실행하는 것은 중요하지 않습니다!). 그러나 우리의 주요 앱은이 배열로 매우 잘 수행됩니다.

6 개의 드라이브가있는 경우 3 개의 RAID1 어레이 또는 2 개의 3 드라이브 RAID10 어레이를 고려할 수 있습니다.

일반적으로

불행히도 시스템의 크기와 사용 패턴에 따라 크게 달라지는 "간단한 모범 사례"는 없습니다. 내가 생각할 수있는 유일한 규칙은 다음과 같습니다.

  • 쓰기 성능 문제가 크게 영향을 미치지 않는다는 것을 모르면 RAID5 및 6을 사용하지 마십시오.
  • 4 개 이상의 회전 디스크 기반 드라이브를 사용하는 경우 헤드 이동을 줄이기 위해 여러 어레이로 분할하는 것이 좋습니다 (물리적 헤드 이동이 없기 때문에 다중 어레이의 장점은 우수한 SSD에는 적용되지 않지만 SSD 컨트롤러의 쓰기 결합 전략 등)
  • 테스트, 테스트 및 다시 테스트 : 선택한 배열이 실제로 최적인지 확인하기 위해 시간을 찾는 것이 좋습니다.

하드웨어 또는 소프트웨어 RAID?

예전에는 소프트웨어 RAID의 성능이 패리티 계산 및 드라이브와 CPU 간의 인터페이스 속도가 느려 모든 배열에 대해 RAID 5의 하드웨어 RAID보다 낮았습니다. 최신 CPU에서는 패리티 계산 문제가 실제로 문제가되지 않지만 매우 빠른 드라이브가있는 경우 드라이브의 총 속도가 어디에서나 올 수 있으면 하드웨어 RAID가 여전히 이길 수 있습니다.머신이 디스크 컨트롤러와 얼마나 빨리 통신 할 수 있는지에 근접한 정도입니다. 소프트웨어 RAID가있는 4 개의 드라이브 RAID1 어레이 (예 : 많은 중복성을 위해 동일한 데이터의 사본 4 개)가있는 경우, 각 쓰기 작업으로 인해 OS가 4 개의 데이터를 I / O 컨트롤러에 순차적으로 전송합니다. 컨트롤러 OS는 쓰기 요청을 하나만 보내고 컨트롤러는 4 개의 드라이브에 병렬로 보냅니다.

좋은 하드웨어 RAID는 다른 장점도 제공 할 수 있습니다. 예를 들어 일부 고사양 컨트롤러에는 배터리 백업 기능이있는 쓰기 캐시가있어 UPS가 고장 나더라도 정전시 쓰기 보류가 손실되지 않도록합니다.

소프트웨어 RAID는 분명히 저렴하고 휴대 성이 뛰어나므로 컨트롤러 / 기계 고장으로 인해 어레이를 이동해야하는 경우 특정 컨트롤러에 묶이지 않아도됩니다.

저렴한 하드웨어 RAID는 일반적으로 소프트웨어 및 하드웨어 RAID의 단점을 거의 또는 전혀 갖지 않는 이점과 결합하므로 피하는 것이 가장 좋습니다.

필자는 개발자, 테스트 및 UAT 서버에서 소프트웨어 RAID를 사용하고 라이브 고객 / 공개 대면 서비스를 실행하는 서버에 적합한 하드웨어 RAID를 사용하는 경향이 있습니다.


5

" Oracle Database 성능 조정 안내서 "에는 I / O 구성 전용 장이 있습니다 . 한마디로 :

  • 스트라이핑 사용 (하드웨어 RAID, 소프트웨어 RAID, ASM)
  • 보관 및 재실행 로그에 RAID5를 사용하지 마십시오
  • 파일 시스템 블록 크기와 DB 블록 크기 정렬

4

어떤 경우에는, JBOD는 정답 (즉,입니다 하지 RAID가).

문제는 RAID 그룹이 너무 많으면 테이블의 인덱스와 레코드가 별도의 스핀들에 저장되도록하는 것과 같이 데이터베이스 내에서 물리적 스토리지가 배치되는 방법을 지정할 수있는 유연성이 없다는 것입니다. 모든 디스크에서 쓰기 균형을 유지해야합니다.

스트라이핑 (RAID0)을 사용하여 쓰기의 균형을 맞출 수 있지만 모두 큰 그룹 인 경우 인덱스와 레코드를 분리 할 수 ​​없습니다.

미러링 (RAID1)은 내결함성이 있으며 읽기 작업이 더 빠르지 만 (스핀들이 사용 중이 아닌 다른 곳에서 읽을 수 있기 때문에) 두 사본이 모두 작성 될 때까지 대기해야하므로 쓰기 속도가 느려질 수 있습니다.

데이터베이스에서 RAID5 또는 RAID6을 사용하지 않습니다. 데이터가 중요한 경우 더 많은 디스크를 구입하고 RAID1을 사용하십시오. RAID5 / 6은 느리며 (특히 소프트웨어에서) 오늘날의 하드 드라이브 크기 로 인해 큰 디스크 그룹의 고장난 디스크를 교체 한 후 재 구축하는 데 며칠 이 걸릴 수 있습니다 ... 대부분의 RAID5 / 6 시스템이 패리티 오류를 처리하는 방식은 패리티를 다시 계산하려면 ...하지만 확률은 데이터의 결함입니다. 패리티가 아니라 결함의 위치를 ​​모릅니다. (불행히도 데이터베이스에는 LOCKSS와 같은 것이 없다고 생각합니다)

...

데이터베이스에서 가장 흥미로운 레이아웃은 실제로 스핀들 당 두 개의 파티션을 갖는 것과 관련이있었습니다. 디스크의 가장 안쪽 부분은 프로덕션 데이터베이스에 사용되었고 디스크의 여러 부분은 백업에 사용되었습니다. (그리고 그들은 파티션이 동일한 스핀들에 백업되지 않았는지 확인했습니다. 여러 데이터베이스가 있다고 생각하므로 각 데이터베이스는 다른 데이터베이스에서 디스크로 백업되었습니다). 따라서 업무 시간 동안 더 많은 스핀들에 작업을 분산시킨 다음 밤에는 백업을 실행할 수 있다는 이점이있었습니다.

데이터베이스가 하루 종일 사용되는 동안 외부 디스크에서 일부 읽기가 발생하기 때문에 문제가 발생하여 복원해야 할 경우 복구 속도가 느려질 것입니다.하지만 항상 모든 것이 상충됩니다.

...

어쨌든, 내가하려고하는 요점은 모든 상황에 맞는 대답이 없다는 것입니다. 있다면, DBA는 일자리가없고 회사는 사전 구축 된 데이터베이스 어플라이언스를 구매할 것입니다.

내가 다루는 데이터베이스는 내 상사가 'WORN'이라고 부르는 것입니다. 그는 농담을하고 있지만 "데이터웨어 하우스"는 모든 수준의 활동을 의미 할 수 있습니다. 밤 / 주간 테이프에서로드 된 일부 (및 OLTP 인스턴스의 사본 일 뿐이며 테이프가 양호한 지 확인하는 데 도움이 됨)를 보았습니다. 대량의 분석 작업이 그들과 다른 곳에서 계속 진행되었으며 입력과 간헐적 인 읽기 스트림이 있지만 자원과의 경쟁은 없습니다.


1
공감이없는 것에 대한 Grr. 오늘 밤에 다시 올게요. 왜냐하면 당신의 요점을 많이 좋아해요. 나는 JBOD를 좋아하는 팬이거나 많은 RAID1 쌍입니다.
jcolebrand

@jcolebrand : 실제로이 글을 게시 한 후 Brian Ballsun-Stanton이 언급 한 'ASM'을 읽었으며 OS / FS / 하드웨어 수준이 아닌 Oracle이 미러링 + 스트라이핑을 처리하는 것처럼 보입니다. 그러나 그는 최근 Oracle 설치에 대해 더 나은 솔루션을 제공했습니다.
Joe

권장 한대로 JBOD가 필요한 것은 무엇입니까?
jcolebrand

@ jcolebrand : 거의. (권장 할 것이지만, 필요 하다고 생각하지는 않습니다. )
Joe

3

서버에 대한 권장 사항은 항상 RAID 5 입니다. 첫 번째 고장난 하드 드라이브를 복구하는 데 걸린 시간과 노력은 항상 기억에 남을 것입니다. RAID 어레이를 설정하는 경우 단일 드라이브 크기로 표준화하고 서버 룸에 2 개의 예비 하드 드라이브를 보관하는 것이 좋습니다. 하나의 드라이브가 잘못 되었습니까? 대체품 중 하나를 넣고 어레이를 재구성하십시오. 나는 RAID 어레이가 다운 보았다 하드 첫 번째 (다음날 배달이 너무 늦게 여전히) 도착하기를 그들이 기다리는 동안 두 번째 드라이브가 나쁜 갔기 때문에.


그러나 하드 드라이브를 교체하는 것이 DBA의 도메인이 아닌가? 수명 및 고장률에 대한 디스크 모니터링은 SF 군중의 자동화 된 도구를위한 것입니다. 작업을 복제하지 말고 전문화의 이유를 파괴합시다. 우리 결국 dba입니다;)
jcolebrand

레이드 5는 어디에서 구현 되었습니까? 하드웨어? 소프트웨어? 신탁? 디스크가 몇 개입니까? Oracle 권장 드라이브 어레이는 어떻습니까? 이것이 리두 아카이브 로그가 아닌가?
Brian Ballsun-Stanton

2
RAID5에는 심각한 쓰기 성능 문제가있을 수 있습니다. RAID10은 DB 서버에 더 일반적입니다.
David Spillett

@jcolebrand, 내가 네트워크 관리자 == 서버 관리자 == 데이터베이스 관리자를 위해 일한 많은 회사들. 프로덕션 데이터 센터에 액세스 할 수있는 사람은 소수에 불과하므로 한 번에 2 개의 모자를 착용해야합니다. 내가 일한 많은 사람들에게 서버 관리자는 무슨 일이 일어나고 있는지 알지 못하므로 참여하기 때문에 그들의 일도 알아야합니다.
Tangurena

음, 그것은 시원하고 동시에 짜증납니다. 경험의 목소리를 줘서 기쁘다;) [PS : 광산은 +1이되었습니다]
jcolebrand

2

얼마나 많은 데이터를 사용할 계획이며 얼마나 자주 시스템에서 읽고 쓸 것입니까? 이 계획에는 많은 계획이있어 일부 사람들은 전체 학업 경력을 주제에 전념 할 수 있습니다.

일반적으로 필자는 Wikipedia로 이동하여 계속 진행하기 전에 기사를 읽으라고 말할 것입니다. RAID에는 몇 가지 유형이 있으며 각각 다른 장소에서 가장 잘 사용됩니다.

기본은 다음과 같습니다.

RAID0

비디오 게이머에게 좋습니다. 다른 사람에게는 좋지 않습니다. 오랫동안 데이터를 보관할 필요가없는 캐싱 서버에 이것을 사용하는 것은 나쁘지 않습니다. 디스크가 고장 나면 시스템이 다운됩니다. 게임 끝.

RAID1

신뢰성이 뛰어납니다. 별로 확장 성이 없습니다. 속도가 아주 좋습니다.

RAID5

RAID0과 RAID1 (일종) 사이의 기본 혼합입니다.

이제는 데이터베이스 디자인보다 서버 구성이라는 사실 때문에 실제로 ServerFault에 대해 물어봐야 할 부분이되었습니다. 서버 성능은 항상 서버 관리자와상의하십시오. 그것이 그들이 거기있는 것입니다. 비공개 베타 버전이 아닌 경우이 사이트를 마이그레이션하기 위해 투표를 닫습니다.


2
ServerFault가 확실히이 질문에 대한 잘못된 장소는 아니지만 여기에 맞을 것입니다. I / O 성능 문제는 DBA가 잘 알고 있어야합니다.
David Spillett

@David 나는 확고히 동의하지만 beig 인식과 직접 지정하는 데 차이가 있습니다. 내 경험상, 사이트가 크거나 바쁠 때 한 사람의 작업이 결코 아니 었습니다. 두 머리는 하나보다 더 나은 모든 것을
jcolebrand
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.