'분류 전체보기'에 해당되는 글 684건

  1. RAID 10 vs. RAID 5 Performance
  2. RAID 0, 1, 5, 0+1 의 이해
  3. RAID 0+1 VS RAID 10
  4. Query Tunning - 3월 12일 Study

RAID 10 vs. RAID 5 Performance

 

RAID 10 vs. RAID 5 Performance

One of my clients is in the process of standardizing all their servers on RAID 10.  We discovered one of their smaller servers had been delivered with RAID 5 already configured.  I took the opportunity to run some tests on the drives prior to reconfiguring them into RAID 10.  My tests weren't very scientific.  I just used SQLIO.EXE to generate random 8KB reads and writes.

 

image

 

Reads were just a little bit better but writes were almost twice as fast.  This makes sense as the array isn't spending time computing the parity information.  Some notes on my setup:

  • There are FOUR drives in the array.
  • Each drive was a 146GB 15K SAS drive with 8MB of cache.
  • The test was performed with a 5GB file.  I'd prefer a larger file but my time was limited and the RAID 5 tests were already completed.
  • The controller was one of the low-end PERC controllers from Dell.
  • 64KB random writes showed a similar doubling of IOPS.  I didn't test sequential writes.

Print | posted on Monday, June 18, 2007 10:45 AM

 

이 글은 스프링노트에서 작성되었습니다.

'SQL Server 2005' 카테고리의 다른 글

SQL 2000 master db 복구 방법이 뭐란 말인가 ㅠ.ㅠ  (0) 2008.04.01
SQL Disk 구성  (0) 2008.03.14
RAID 0, 1, 5, 0+1 의 이해  (0) 2008.03.14
RAID 0+1 VS RAID 10  (0) 2008.03.14
Query Tunning - 3월 12일 Study  (0) 2008.03.12

RAID 0, 1, 5, 0+1 의 이해

RAID 0
RAID-0는 전형적인 Parity가 없는 striped disk drive들의 non-redundant group으로 정의된다. RAID-0 array는 보통 I/O intensive application을 위한 large stripes로 구성되는데, 종종 data intensive application의 single-user를 위한 synchronized spindle drive들을 이용한 sector-stripe으로 구성할 수도있다.
RAID-0는 redundancy를 지원하지 않기 때문에 만일 Array내의 하나의 drive가 장애를 일으키면, Array 전체가 장애를 일으키게 된다. 그러나 RAID-0는 모든 Array type중 가장 빠르고 data저장 효율이 높다.
RAID 1
Disk Mirroring이라 불리는 RAID-1은 data를 중복 저장하도록 디스크드라이브들을 쌍로 구성한 것으로 서버쪽으로는 하나의 드라이브로 인식된다. RAID-1은 striping은 사용되지 않는 반면, 여러개의 RAID-1 array들이 서로 striped되어 mirrored drives pair들로 구성된 하나의 대용량 array로 구성 시킬 수 있으며, 이를 "Dual-level array" 또는 RAID-10이라 부른다.
Write는 Mirrored Pair인 두개의 Drive에 동시에 저장되어 각 Drive가 동일한 정보를 저장하게 된다. 그러나 각 Drive는 Simultaneous Read Operation을 수행할 수 있다. 따라서, 각 Drive의 Read Performance는 두배로 되고 Write Performance는 변화가 없게 된다. RAID-1은 Redundant를 가진 Array중에서는 최고의 Performance를 보이며, 특히 Multi-user Environment에서 유용하다.
RAID 3
RAID-3는 RAID-2처럼 Sector-striped data를 Drive Group에 걸쳐 저장하지만, Group내의 하나의 Drive는 Parity Information만을 저장하도록 지정된다. RAID-3는 Error Detection을 위해서는 각 sector에 embbed된 ECC에 의존한다.
Hard Drive가 장애를 일으킬 경우, Data 복구는 남아있는 Drive상에 기록된Information의 Exclusive OR(XOR)연산을 통하여 이루어진다.
Records는 전형적으로 모든 Drive에 걸쳐 있기때문에, Data Intensive 환경에 적합하다. 각 I/O은 Array내의 모든 Drive들을 액세스하기 때문에, RAID-3 Array는 I/O을 Overlap시킬 수가 없고 따라서, RAID-3는 long record의 Single-user, Single-tasking 환경에 적합하다. 그러므로 Short record에서의 성능 저하를 피하기 위해서는, RAID-3는 Synchronized-spindle drives가 필요하다.
RAID 5
종종 Rotating Parity Array라 불리는 RAID-5는 RAID-4에서 하나의 전용Parity Drive를 설정함으로써, Parity Update가 한 Drive에서 이루어지므로 생기는 Write Bottleneck을 피하기 위하여 만들어진 RAID Array이다.
RAID-5는 RAID-4처럼 large-stripe이 사용되어 multiple I/O operation이 overlap되도록 하고 있다. 그러나, RAID-4와는 다르게, 각 Drive들이 일련의 서로다른 stripes들에 대한 parity를 돌아가면서 저장하게 된다.
따라서, 전용 parity Drive가 없기 때문에 모든 drive들이 데이타를 저장할 수 있고, Read operation이 모든 drive에 걸쳐 overlap될 수 있다.Write Operation은 전형적으로 single data drive를 액세스하며 그 record에 대한 parity drive를 액세스한다.
따라서, RAID-4와는 달리 서로 다른 records들이 해당 parity들을 서로 다른 drive들에 저장하기 때문에, Write Operation도 overlap이 가능하다. RAID-5는 RAID-1이 모든 데이타를 redundant copy하는 것과는 달리, parity information만을 저장하기 때문에 RAID-1에 비하여 Storage Efficiency를 높일 수 있다. 결과적으로 RAID-5 Array는 어떤 수의 Drive도 연결이 가능하고, 각 Drive들은 Parity information 저장 부분만을 제외하고는 모두 data storage로 활용될 수 있다. 즉, RAID-5는 RAID-1보다 저장 장치를 효율적으로 극대화 시킬 수 있다. 그러나 performance에서는 손실을 감수 하여야 한다.
Data가 RAID-5 Array에 쓰여질 때, Parity information 또한 Update되어야 하는데, 이는 Write Operation에 의하여 어떤 data bit들이 바뀌었는지를 찾아내어 이에 해당하는 parity bits들을 바꾸므로서 Update된다.
이는 overwritten될 old data를 먼저 읽고, 이 것이 새로 overwrite될 새로운 데이타와 XOR 연산을 하므로써 수행된다. 이 것은 바뀐 모든 bit의 position에서 1이 되는 bit mask를 만들게 되고, 이 bit mask가 parity drive로 부터읽어 들인 old parity information과 XOR연산을 수행한다. 이 결과, Parity information내에 있는 해당 bit를 변화 시킨다. 이렇게 하여 Update된 Parity는 Parity Drive에 write back된다.
그러므로, write-request하는 모든 Application에 대하여 RAID-5 Array는 두개 의 Read, 두개의 Write와 두개의 XOR operation을 수행하여야 만이 원래의 write가 완료된다.
RAID-1에서의 redundant data에 비하여, Parity를 저장하는 RAID-5는 위와 같이 보다 많은 연산을 행하게 되며, write operation 중에 parity information을 재생하는데 추가적으로 시간이 소요된다. 이러한 이유 때문에 RAID-5는 RAID-1에 비하여 write performance가 약 3/5~1/3 수준밖에 되지 않는다. 이때문에, RAID-5 Array는 결코 Software적으로 사용되지 않으며, 아울러 디지탈 비디오 캡쳐와 같이 write performance가 중요한 Application에는 사용되지 않는다.
 
Level 0
Level 1
Level 5
Level 0 + 1
장점
- DISK I/O가 분산이 된다.
- RAID level중 가장 빠르다.
- DATA 저장 효율이 높다.
- 안정적이다.
- redundant해서 Fault Tolerance를 보장한다.
- simultaneous-read가 되기 때문에 기존의 방법에 2배정도 읽기 효과를 준다.
- Write-bottleneck 현상을 줄일 수 있다.
- 안정적이다.
- disk I/O를 줄일 수 있다.
- hot-swap, hot-fix, hot-spare, hot-plug등이 가능하다.
- Level 0과 Level 1의 장점을 가진다.
 
단점
- Fault Tolerance가 보장되지 않는다.
- 안정적이?못하다.
- redundant가 없다.
- 비용이 비싸다.
- Striping이 되지를 않기 때문에 disk I/O bottleneck 현상에 대해 효율적이지 못하다.
- level 1에 비해서 읽기 성능이 떨어진다.
- level 0에 비해 저장효율이 떨어진다.
- 비용이 비싸다.
- disk 저장 효율성이 그리 높지 않다.

'SQL Server 2005' 카테고리의 다른 글

SQL 2000 master db 복구 방법이 뭐란 말인가 ㅠ.ㅠ  (0) 2008.04.01
SQL Disk 구성  (0) 2008.03.14
RAID 10 vs. RAID 5 Performance  (0) 2008.03.14
RAID 0+1 VS RAID 10  (0) 2008.03.14
Query Tunning - 3월 12일 Study  (0) 2008.03.12

RAID 0+1 VS RAID 10

RAID 0+1 VS RAID 10 new Copy url

                 

 

           RAID 0+1                                                   RAID 10

              4개를 스트라이프 친 후                                     4개로 미러링을 한후

             두 개로 미러링으로 묶는다.                                그룹에 대해 스트라이프를 친다.

             단점: 디스크 하나가 fail이 나면                          장점: 디스크 하나가 fail이 나면

             전체를 리빌드 하여야 한다.                               하나만 리빌드 한다.

-------------------------------------------------------------------

*아래 내용은 인터넷에서 긁어 온 겁니다.. 출처가 생각이 안 나요 ㅠㅠ;;

  내용이 좋아서 붙여 넣기 한거 죄송 합니다 ^^;;

 

RAID10과 0+1은 비슷하면서도 다릅니다. 비슷한 면으로는

1. 용량이 같다.

2. 속도가 같다.

정도 입니다.

 

다른 면으로는

1. 기술적으로 RAID10이 복잡한 반면 RAID0+1은 단순하다.

2. RAID10은 안정성이 높으나 RAID0+1은 상대적으로 낮다.

입니다. 지금부터 그 구조를 알려드리겠습니다.

 

두 레이드는 기본적으로 RAID0 과 RAID1의 조합으로 이루어진다는 것에는 차이가 없습니다. 즉, 속도의 향상과 안정성의 향상이라는 두 가지를 합쳐둔 것 입니다. 그러나 그 사소한 차이가 큰 결과를 만들어내는 것이 어느것이 먼저냐는 것 입니다.

 

먼저 RAID0+1에 대해서 설명드리면,

RAID0으로 구성한 다음 RAID1으로 미러링을 하는 구조입니다. 말로 설명하면 이해가 잘 안가니 그림 비슷한것을 그려서 설명 드리겠습니다.

RAID0+1로 10개의 HDD를 묶는다고 하면,

1) RAID0으로 5개씩 묶습니다.

RAID0[1,2,3,4,5], RAID0[6,7,8,9,10] 이렇게 2개의 묶음을 R0, R1이라고 이름짓습니다.

2) RAID1으로 2개를 묶습니다.

RAID1[R0,R1]

이것을 풀어서 보시면

RAID1[RAID0[1,2,3,4,5],RAID0[6,7,8,9,10]] 이렇게 들어가는것을 알수 있습니다.

일단 여기까지만 설명드리고 다음으로 넘어가겠습니다. 눈치 빠른 분들은 제가 무슨 이야기르할지 알고 계실겁니다.

 

그다음 RAID10에 대해서 말씀드리겠습니다.

RAID1로 구성한것을 RAID0로 묶는 구조입니다.

RAID10으로 10개의 HDD를 묶는다고 하면,

1) RAID1으로 2개씩 묶어서 5개의 RAID1볼륨을 만듭니다.

RAID1[1,2], RAID1[3,4], RAID1[5,6], RAID1[7,8], RAID1[9,10] 이렇게 5개가 나옵니다. 각각 R0, R1, R2, R3, R4라고 이름짓습니다.

2) RAID0로 5개를 묶습니다.

RAID0[R0,R1,R2,R3,R4]

이것을 풀어서 보면

RAID0[RAID1[1,2],RAID1[3,4],RAID1[5,6],RAID1[7,8],RAID1[9,10]] 이렇게 됩니다. 지금부터 본격적인 차이점을 설명드리겠습니다.

 

<첫번째 차이점. 안정성의 차이>

RAID0+1에서 RAID1[RAID0[1,2,3,4,5],RAID0[6,7,8,9,10]]가 있는데, 1번 하드가 고장 나버렸습니다.

그러면 RAID0[1,2,3,4,5]는 깨지겠죠? RAID0는 하나라도 문제가 생기면 전체가 중지되어버립니다.

반면에 RAID10은 RAID0[RAID1[1,2],RAID1[3,4],RAID1[5,6],RAID1[7,8],RAID1[9,10]]에서 1번하드가 고장나면, RAID1[1,2]가 RAID1이기 때문에 1,2가 동시에 문제가 생기지 않는 한은 RAID1은 중지되지 않습니다.

이런 질문을 하실 수 있습니다. 1,2가 같이 깨지는 경우는 RAID0+1이 낫겠네요...라고요.

그러나 확률을 보시면 아시겠지만, RAID0+1의 경우는 R0에 하나 R1에 하나만 문제가 생기면 완전히 끝입니다. 그러나 RAID10의 경우는 1,3,5,7,9 5개의 하드가 동시에 깨져도 문제 없이 동작합니다. 확률적으로 더 나은 안정성을 보장하죠.

 

<두번째 차이점. 복구의 차이>

RAID0+1의 경우 1번 하드가 깨진 경우, 1번 하드를 교체후에 REBUILD를 하게 되면 R1에서 R0을 통채로 복사하게 됩니다.

반면 RAID10의 경우 1번 하드가 깨진 경우, 1번 하드를 교체후 REBUILD를 하면 2번 하드에서 1번 하드로 복사를 하게 됩니다.

RAID10의 경우 시간이 엄청나게 단축된다.

'SQL Server 2005' 카테고리의 다른 글

SQL 2000 master db 복구 방법이 뭐란 말인가 ㅠ.ㅠ  (0) 2008.04.01
SQL Disk 구성  (0) 2008.03.14
RAID 10 vs. RAID 5 Performance  (0) 2008.03.14
RAID 0, 1, 5, 0+1 의 이해  (0) 2008.03.14
Query Tunning - 3월 12일 Study  (0) 2008.03.12

튜닝을 위해서는 아래와 같은 Drill Down 분석

1. Instance Level waits 분석
2. 대기 큐를 연관?
3. 행동 지침을 설정
4. 데이타베이스/파일 레벨 drill down 분석
5. 프로세스 레벨 drill down 분석
6. Tuneindex/queries

1. Instance level waits 분석

SQL 2005 DMV called sys.dm_os_waits_stat
SQL 2000 DBCC SQLPERF(WAITSTATS)
위의 두가지 정보는 SQL instantce가 시작 시점부터 기록한 정보이다.

SQL 2005 RETURN
SELECT
  wait_type,
  waiting_tasks_count,
  wait_time_ms,
  max_wait_time_ms,
  signal_wait_time_ms
FROM sys.dm_os_wait_stats
ORDER BY wait_type;
194개의 레코드 정보를 반환한다......

위의 정보를 클리어 하기 위해서는
-- SQL 2005
DBCC SQLPERF('sys.dm_os_wait_stats', CLEAR);
GO

-- SQL 2000
DBCC SQLPERF(WAITSTATS, CLEAR);
GO


----------------------------------------------------------------------------
-- 대기 상태 정보 추출
----------------------------------------------------------------------------
USE Performance;
GO
IF OBJECT_ID('dbo.WaitStats') IS NOT NULL
  DROP TABLE dbo.WaitStats;
GO

-- 빈 테이블을 생성하라
SELECT GETDATE() AS dt,
  wait_type, waiting_tasks_count, wait_time_ms,
  max_wait_time_ms, signal_wait_time_ms
INTO dbo.WaitStats
FROM sys.dm_os_wait_stats
WHERE 1 = 2;
go

-- 인덱스 생성
ALTER TABLE dbo.WaitStats
  ADD CONSTRAINT PK_WaitStats PRIMARY KEY(dt, wait_type);
go
CREATE INDEX idx_type_dt ON dbo.WaitStats(wait_type, dt);
go





 

'SQL Server 2005' 카테고리의 다른 글

SQL 2000 master db 복구 방법이 뭐란 말인가 ㅠ.ㅠ  (0) 2008.04.01
SQL Disk 구성  (0) 2008.03.14
RAID 10 vs. RAID 5 Performance  (0) 2008.03.14
RAID 0, 1, 5, 0+1 의 이해  (0) 2008.03.14
RAID 0+1 VS RAID 10  (0) 2008.03.14