歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix基礎知識 >> 利用AIX條帶化(STRIPE)優化數據庫IO

利用AIX條帶化(STRIPE)優化數據庫IO

日期:2017/3/3 15:23:29   编辑:Unix基礎知識

一、背景

生產環境IBM P560目前用於Oracle DataGuard 的standby機器。在oracle Apply 歸檔日志時,查看服務器IO情況,發現Hdisk0、1上的IO有時候能達到到100%。而Hdisk2、3上IO活動很少。

經分析,oracle的數據文件存放目錄放在/oradata,該目錄建立在hdisk0、1上。故在數據庫發生讀寫數據文件時,只有hdisk0,1有IO。另外2塊盤IO活動少。故考慮將數據庫文件從rootvg遷移出來,將數據庫的歸檔文件建立在rootvg裡,達到平均分布服務器的IO的目的。

二、理論支持

一般以LVM管理的存儲,一個vg中可能會有很多pv,同樣的,一個lv可能跨越多塊pv,為了使硬盤存儲速度加快,就會用到條帶化的技術,即把連續的數據分成大小相同的數據塊,然後依次存儲在各個pv上。類似於RAID0,使存儲速度加快。但並不會使數據像RAID0一樣危險容易丟失,因為在正式使用中,不會像此時做測試一樣沒有任何保障地將多塊硬盤做成一個vg,而是普遍連接的後台存儲,在劃分LUN之前,已經在物理硬盤上做好RAID5或RAID1,在RAID5或RAID1的基礎上再劃分出多塊LUN,即系統上的pv,即使pv所在硬盤損壞,但有底層的硬RAID冗余,並不會丟失數據。

條帶單元大小:即條帶化的LV中,每一個條帶單元的大小,對應於I/O中數據塊的大小。對於Oracle來講,db_block_size即設定的數據塊大小。而db_file_multiblock_read_count就一次讀取時最多並行的數據塊的個數,db_block_size和db_file_multiblock_read_count相乘即一次總的I/O大小。這個大小不能超過操作系統的最大I/O (max_io_size)值。在ORACLE應用中,lv條帶的大小一般設置為兩倍或兩倍以上的Oracle塊大小,因為假如設置成與Oracle數據塊相同大小,無法保證Oracle數據塊的邊界正好與條帶單元的邊界對應,如果不對應的話,就會出現大量的一個I/O由兩個條帶單元,來處理的情況。

條帶大小的原則:對於高並發並且IO請求小的情況下,一塊物理硬盤處理多個I/O請求,低並發但I/O請求較大時,可能需要多塊硬盤處理一個I/O請求。原則上的要求是一次I/O請求能被一次性處理完成。

大概的條帶化的概念就是這樣。

三、參數提取

P560A:/#lspv    
hdisk0          00c3ee9e3439bc67                    rootvg          active    
hdisk1          00c3ee9e5033384d                    rootvg          active    
hdisk2          00c3ee9eae48cc48                    rootvg          active    
hdisk3          00c3ee9eae48df75                    rootvg          active    
        
P560A:/#lspv -l hdisk0    
hdisk0:    
LV NAME               LPs   PPs   DISTRIBUTION          MOUNT POINT    
hd10opt               8     8     00..00..08..00..00    /opt    
hd3                   40    40    00..00..40..00..00    /tmp    
hd1                   4     4     00..00..04..00..00    /home    
hd2                   16    16    00..00..16..00..00    /usr    
hd9var                4     4     00..00..04..00..00    /var    
hd8                   1     1     00..00..01..00..00    N/A    
hd4                   4     4     00..00..04..00..00    /    
hd5                   1     1     01..00..00..00..00    N/A    
hd6                   32    32    00..00..32..00..00    N/A    
tsmdb                 30    30    20..10..00..00..00    /tsmdb    
oradatalv             278   278   49..11..00..109..109  /oradata    
oraclelv              40    40    40..00..00..00..00    /home/oracle    
weblogiclv            40    40    00..40..00..00..00    /weblogic    
weblogic9lv           40    40    00..40..00..00..00    /weblogic9    
lg_dumplv             8     8     00..08..00..00..00    N/A    
        
P560A:/#lspv -l hdisk1    
hdisk1:    
LV NAME               LPs   PPs   DISTRIBUTION          MOUNT POINT    
hd10opt               8     8     00..00..08..00..00    /opt    
hd3                   40    40    00..00..40..00..00    /tmp    
hd1                   4     4     00..00..04..00..00    /home    
hd2                   16    16    00..00..16..00..00    /usr    
hd9var                4     4     00..00..04..00..00    /var    
hd8                   1     1     00..00..01..00..00    N/A    
hd4                   4     4     00..00..04..00..00    /    
hd5                   1     1     01..00..00..00..00    N/A    
hd6                   32    32    00..00..32..00..00    N/A    
tsmdb                 30    30    20..10..00..00..00    /tsmdb    
oradatalv             324   324   89..17..00..109..109  /oradata    
fwdump                2     2     00..02..00..00..00    /var/adm/ras/platform    
weblogiclv            40    40    00..40..00..00..00    /weblogic    
weblogic9lv           40    40    00..40..00..00..00    /weblogic9    
        
P560A:/#lspv -l hdisk2    
hdisk2:    
LV NAME               LPs   PPs   DISTRIBUTION          MOUNT POINT    
oradatalv             598   598   152..223..223..00..00 /oradata    
        
P560A:/#lspv -l hdisk3    
hdisk3:    
LV NAME               LPs   PPs   DISTRIBUTION          MOUNT POINT    
archlog_lv            400   400   00..223..177..00..00  /archivelog    
        
P560A:/#lslv -l oradatalv    
oradatalv:/oradata    
PV                COPIES        IN BAND       DISTRIBUTION      
hdisk0            278:000:000   3%            049:011:000:109:109     
hdisk1            324:000:000   5%            089:017:000:109:109     
hdisk2            598:000:000   37%           152:223:223:000:000     
        
P560A:/#lslv -l oraclelv    
oraclelv:/home/oracle    
PV                COPIES        IN BAND       DISTRIBUTION      
hdisk0            040:000:000   0%            040:000:000:000:000     
        
P560A:/#lslv -l archlog_lv    
archlog_lv:/archivelog    
PV                COPIES        IN BAND       DISTRIBUTION      
hdisk3            400:000:000   55%           000:223:177:000:000

四、優化步驟

1、把hdisk2從rootvg中剔除

reducevg –d rootvg hdisk2;

2、將hdisk2、hdisk3做成datavg

smit mkvg 輸入VG名字為datavg,選擇盤為hdisk2 、hdisk3;

3、smit mklv 新建條帶化LV

LV名字輸入:oradata_lv

LV類型為:JFS2

LV分布的PV:hdisk2、hdisk3

strip Size 選擇:128K (建議為oracle 的db_block_size *同時讀取的塊,目前系統最大允許為128K);

lslv -m oradata_lv 發現LV的物理分區平均分布在hdisk2 和Hdisk3上

4、新建文件系統

smit jfs2 建立文件系統

五、優化結果

P560A:/backup#lspv

hdisk0 00c3ee9e3439bc67 rootvg active

hdisk1 00c3ee9e5033384d rootvg active

hdisk2 00c3ee9eae48cc48 datavg active

hdisk3 00c3ee9eb6975c7e datavg active

本文出自 “麥地塢” 博客,請務必保留此出處http://yunlongzheng.blog.51cto.com/788996/721141

Copyright © Linux教程網 All Rights Reserved