AIX 스트라이핑(STRIPE)을 사용하여 데이터베이스 IO 최적화

배경
운영 환경 IBM P560은 현재 Oracle DataGuard의 standby 시스템에서 사용되고 있습니다.oracle Apply 압축 파일 로그를 볼 때 서버의 IO 상황을 보면 Hdisk 0, 1의 IO가 때때로 100%에 달할 수 있음을 알 수 있습니다.반면 Hdisk 2, 3에서는 IO 활동이 적습니다.
분석에 의하면oracle의 데이터 파일 저장 디렉터리는/oradata에 있고 이 디렉터리는hdisk0, 1에 구축되었다.그러므로 데이터베이스에서 데이터 파일을 읽고 쓸 때 hdisk0,1만 IO가 있다.나머지 2개 디스크는 입출력 활동이 적습니다.그러므로 데이터베이스 파일을 루트 vg에서 옮기고 데이터베이스 압축 파일을 루트 vg에 구축하여 서버의 IO를 평균적으로 분포하는 목적을 달성하는 것을 고려한다.
2. 이론적 지지
일반적으로 LVM으로 관리하는 저장소는 한 vg에 많은 pv가 있을 수 있다. 마찬가지로 한 lv는 여러 개의 pv를 뛰어넘을 수 있다. 하드디스크의 저장 속도를 가속화하기 위해 밴드화 기술을 사용한다. 즉, 연속된 데이터를 크기가 같은 데이터 블록으로 나누어 순서대로 각 pv에 저장한다.RAID0과 비슷하여 스토리지 속도가 빨라집니다.그러나 데이터가 RAID0처럼 쉽게 잃어버리지 않는다. 정식 사용 중 이때 테스트를 하는 것처럼 여러 개의 하드디스크를 하나의 vg로 보장하지 않고 보편적으로 연결된 백엔드 저장소이기 때문이다. LUN을 나누기 전에 물리적 하드디스크에 RAID5나 RAID1을 만들었고 RAID5나 RAID1을 토대로 여러 개의 LUN, 즉 시스템의 pv를 나누었다.pv가 있는 하드디스크가 손상되었음에도 불구하고, 밑에 있는 하드 레이드 여분이 있어 데이터를 잃어버리지 않습니다.
스트라이프 유닛 크기: 스트라이프된 LV의 각 스트라이프 유닛 크기는 입출력의 블록 크기에 해당합니다.Oracle의 경우dbblock_크기가 설정된 블록 크기입니다.그리고dbfile_multiblock_read_count는 한 번에 읽을 때 가장 많은 병렬 블록의 개수,dbblock_size 및dbfile_multiblock_read_count를 곱하면 전체 입출력 크기가 됩니다.이 크기는 운영 체제의 최대 입출력(max io size) 값을 초과할 수 없습니다.ORACLE 응용 프로그램에서 lv 테이프의 크기는 일반적으로 두 배 또는 두 배 이상의 Oracle 블록 크기로 설정된다. 만약에 Oracle 블록과 같은 크기로 설정된다면 Oracle 블록의 경계가 테이프 단원의 경계와 정확하게 대응할 수 없기 때문에 대응하지 않으면 대량의 I/O가 두 개의 테이프 단원으로 처리되는 상황이 발생할 수 있다.
스트라이프 크기 원칙: 동시 입출력 요청이 높고 입출력 요청이 적은 경우 하나의 물리적 하드 드라이브에서 여러 입출력 요청을 처리하며, 낮은 동시 입출력 요청이 크면 여러 개의 하드 드라이브에서 한 개의 입출력 요청을 처리할 수 있습니다.원칙적으로 입출력 요청은 한 번에 처리됩니다.
대략적인 스트라이프화 개념은 이렇다.
3. 매개 변수 추출
   
   
   
   
  1. P560A:/#lspv 
  2. hdisk0          00c3ee9e3439bc67                    rootvg          active 
  3. hdisk1          00c3ee9e5033384d                    rootvg          active 
  4. hdisk2          00c3ee9eae48cc48                    rootvg          active 
  5. hdisk3          00c3ee9eae48df75                    rootvg          active 
  6.  
  7. P560A:/#lspv -l hdisk0 
  8. hdisk0: 
  9. LV NAME               LPs   PPs   DISTRIBUTION          MOUNT POINT 
  10. hd10opt               8     8     00..00..08..00..00    /opt 
  11. hd3                   40    40    00..00..40..00..00    /tmp 
  12. hd1                   4     4     00..00..04..00..00    /home 
  13. hd2                   16    16    00..00..16..00..00    /usr 
  14. hd9var                4     4     00..00..04..00..00    /var 
  15. hd8                   1     1     00..00..01..00..00    N/A 
  16. hd4                   4     4     00..00..04..00..00    / 
  17. hd5                   1     1     01..00..00..00..00    N/A 
  18. hd6                   32    32    00..00..32..00..00    N/A 
  19. tsmdb                 30    30    20..10..00..00..00    /tsmdb 
  20. oradatalv             278   278   49..11..00..109..109  /oradata 
  21. oraclelv              40    40    40..00..00..00..00    /home/oracle 
  22. weblogiclv            40    40    00..40..00..00..00    /weblogic 
  23. weblogic9lv           40    40    00..40..00..00..00    /weblogic9 
  24. lg_dumplv             8     8     00..08..00..00..00    N/A 
  25.  
  26. P560A:/#lspv -l hdisk1 
  27. hdisk1: 
  28. LV NAME               LPs   PPs   DISTRIBUTION          MOUNT POINT 
  29. hd10opt               8     8     00..00..08..00..00    /opt 
  30. hd3                   40    40    00..00..40..00..00    /tmp 
  31. hd1                   4     4     00..00..04..00..00    /home 
  32. hd2                   16    16    00..00..16..00..00    /usr 
  33. hd9var                4     4     00..00..04..00..00    /var 
  34. hd8                   1     1     00..00..01..00..00    N/A 
  35. hd4                   4     4     00..00..04..00..00    / 
  36. hd5                   1     1     01..00..00..00..00    N/A 
  37. hd6                   32    32    00..00..32..00..00    N/A 
  38. tsmdb                 30    30    20..10..00..00..00    /tsmdb 
  39. oradatalv             324   324   89..17..00..109..109  /oradata 
  40. fwdump                2     2     00..02..00..00..00    /var/adm/ras/platform 
  41. weblogiclv            40    40    00..40..00..00..00    /weblogic 
  42. weblogic9lv           40    40    00..40..00..00..00    /weblogic9 
  43.  
  44. P560A:/#lspv -l hdisk2 
  45. hdisk2: 
  46. LV NAME               LPs   PPs   DISTRIBUTION          MOUNT POINT 
  47. oradatalv             598   598   152..223..223..00..00 /oradata 
  48.  
  49. P560A:/#lspv -l hdisk3 
  50. hdisk3: 
  51. LV NAME               LPs   PPs   DISTRIBUTION          MOUNT POINT 
  52. archlog_lv            400   400   00..223..177..00..00  /archivelog 
  53.  
  54. P560A:/#lslv -l oradatalv 
  55. oradatalv:/oradata 
  56. PV                COPIES        IN BAND       DISTRIBUTION   
  57. hdisk0            278:000:000   3%            049:011:000:109:109  
  58. hdisk1            324:000:000   5%            089:017:000:109:109  
  59. hdisk2            598:000:000   37%           152:223:223:000:000  
  60.  
  61. P560A:/#lslv -l oraclelv 
  62. oraclelv:/home/oracle 
  63. PV                COPIES        IN BAND       DISTRIBUTION   
  64. hdisk0            040:000:000   0%            040:000:000:000:000  
  65.  
  66. P560A:/#lslv -l archlog_lv 
  67. archlog_lv:/archivelog 
  68. PV                COPIES        IN BAND       DISTRIBUTION   
  69. hdisk3            400:000:000   55%           000:223:177:000:000  

4. 최적화 절차
1. hdisk2를 루트 vg에서 제거
reducevg –d rootvg hdisk2;
2, hdisk2, hdisk3 데이터 vg 만들기
smit mkvg 입력 VG 이름은 datavg이고 선택 디스크는 hdisk2, hdisk3입니다.
3, smit mklv 새 스트라이프 LV
LV 이름 입력:oradatalv
LV 유형: JFS2
LV 분포 PV: hdisk2, hdisk3
strip Size 선택: 128K (oracle의db block size *에서 동시에 읽는 블록을 권장하며 현재 시스템은 최대 128K까지 허용됨)
  lslv -m oradata_lv에서 LV의 물리적 구역이 hdisk2와 Hdisk3에 평균적으로 분포되어 있음을 발견하였다
4. 새 파일 시스템
smit jfs2 파일 시스템 구축
5. 최적화 결과
P560A:/backup#lspv
hdisk0          00c3ee9e3439bc67                    rootvg          active
hdisk1          00c3ee9e5033384d                    rootvg          active
hdisk2          00c3ee9eae48cc48                    datavg          active
hdisk3          00c3ee9eb6975c7e                    datavg          active

좋은 웹페이지 즐겨찾기