블로그 이미지
LifeisSimple

calendar

1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

Notice

2012. 3. 20. 23:17 Brain Trainning/DataBase

I/O 특성을 잘 고려해서 시스템을 운영해야 합니다.

특성은 크게 다음과 같이 특성을 구분할 수 있습니다.
1. OLTP 
 - Random IO가 많고 단순하며 Transaction 들이 짧은(?) 것이 특징입니다.
 - 디스크의 입장에서는 여기 저기 많은 곳을 돌아다니면서 데이터를 읽어와야 합니다.

2. OLAP/DSS  
 - Sequencial IO가 많고 Transaction 이 긴것(?) 이 특징입니다. 
 - 디스크의 입장에서는  Range에 대한 검색이 많아집니다.

위와 같은 구분 및 특징은 보편적인 것으로 대략적인 시스템의 구성에 대한 감을 잡을 수 있습니다. 

그러나, 좀더 디테일하게 들어가면 다음과 같은 것들에 대한 파악이 운영에 필요합니다.

I/O 의 측정

1. 운영중인 시스템
 - PhysicalDisk : Disk Reads/sec , PhysicalDisk : Disk Write/sec 카운터를 체크합니다.
 - 드라이브의 위의 카운터를 확인해 현재 디스크의 I/O 를 확인할 수 있습니다.
 - Physical Disk : Avg Disk Queue Length 를 확인해 보고 이 수가 2 이상일 경우 I/O 병목이 발생했다고 할 수 있습니다. 이때 참고해야할 것은 2라는 것은 스핀들 하나에 대한 값이라는 것입니다. 따라서 다수의 디스크를 사용하는 RAID에서는 2/(RAID에 포한된 디스크 수) 입니다. 
 - 만약 병목이 확인되면 Memory : Pages/sec 카운트를 확인해 봅니다. 이 카운트가 높으면 Memory 증설을 통해 I/O 부담을 줄일 수 있습니다.

 디스크 병목이면
 - 다른 물리적 드라이브로 파일 이 동
 - 더 빠른 디스크로 변경
 - RAID 에 디스크 추가
 등의 조치가 필요합니다. 

2. 신규시스템
 필요 디스크의 수
 Disk Transfers/sec (Disk Reads/sec + Disk Writes/sec)
 - Disk Transfers/sec 으로 IOPs를 추산 이를 통해서 필요한 Disk의 수를 계산해줍니다.
 - 공식 ) Required # Disks = (Reads/sec + (Writes/sec * RAID adjuster)) / Disk IOPS
    Raid adjuster : RAID 0 : 1, RAID 1, 10 : 2, RAID 5 : 4 로 추산합니다.

따라서, 디스크 하나의 IOPS를 125 로 계산하고, 2000 Transfers/sec (Read 1200, Write 800) 인 시스템은 RAID 10 으로 묶을 경우 디스크가 
- (1200 + 800 * 2 ) / 125 = 22.4 개의 디스크가 필요합니다. 
결론적으로 만일 산정한 DB Size 가 얼마 되지 않는다면... 돈질이 되겠네요.. 사용하지 않는 공간이 많아질 가능성이 있습니다. 
이때는 Fusion IO, SSD 등 고성능의 디스크 도입을 고려해볼만 합니다. 

 대역폭
 2000 * 8KB = 16MB 입니다.
 보통 FC의 대역폭을 6Gb로 보면 750MB 이므로 충분한 대역폭을 제공한다고 하겠습니다.

위와 같은 것들을 알고 이해하고 있어야 시스템의 I/O 병목을 예방 / 조치 할 수 있습니다. 
 
posted by LifeisSimple