asm新增刪除磁碟

張衝andy發表於2017-08-01


一、 ASM_POWER_LIMIT 引數

 這個引數 ASM_POWER_LIMIT 引數控制 ASM 後臺程式 ARBx 的數量。ARBx 程式用來進行 ASM 磁碟資料重新分佈打散。ASM_POWER_LIMIT 取值 從 0 到 11(據說從 10gR2 開始可以設定為 0 ). 當新新增磁碟或者刪除磁碟後,ASM 會啟動 ARBx 進行 IO 分散操作,該引數值越大,io 越大。這是個非常消耗資源的動作,所以一定要選擇系統空閒的時候進行。

ASM_POWER_LIMIT 引數官方描述:

ASM_POWER_LIMIT specifies the maximum power on an Automatic Storage Management instance for disk rebalancing. The higher the limit, the faster rebalancing will complete. Lower values will take longer, but consume fewer processing and I/O resources.

If the POWER clause of a rebalance operation is not specified, then the default power will be the value of ASM_POWER_LIMIT.

根據 邏輯 cpu個數 與 負載情況 ,確定 asm_power_limit 引數。
1.1 檢視邏輯cpu個數
$ cat /proc/cpuinfo |grep "processor"|wc -l 
48

1.2 grid使用者登入,設定 asm_power_limit 引數
$ sqlplus / as sysasm
SQL> show parameter asm_power_limit

NAME TYPE VALUE
------------------------------------ --------------- ------------------------------
asm_power_limit integer 1

1.3 修改 asm_power_limit 引數
SQL> alter system set asm_power_limit=20 sid= '*' scope=both;

1.4 新增或者刪除asm磁碟

1.5 還原 asm_power_limit 預設值
SQL> alter system set asm_power_limit=1 sid= '*' scope=both;

二、 新增磁碟組磁碟成員 (最好保證新增的磁碟成員size大小與該磁碟組其他成員size大小一致,否則浪費最大可用空間)

1.grid使用者進入asm環境

node1-> sqlplus / as sysasm

2.檢視當前環境的資訊 
SQL> 
col name for a35;
select a.group_number,b.name,a.path from v$asm_disk a,v$asm_diskgroup b where a.group_number=b.group_number;


3.增加一個asm磁碟 ,之後磁碟做 rebalance 操作

SQL> ALTER DISKGROUP DATA ADD DISK '/dev/asm-data02';

Diskgroup altered.

-- 如果查詢出來有結果,說明磁碟資料遷移沒有結束。如果查詢出來結束輸出為 no rows selected ,說明磁碟資料遷移已經結束。
SQL> select OPERATION,POWER,EST_RATE,EST_MINUTES,STATE from v$asm_operation;

GROUP_NUMBER OPERATION STATE POWER ACTUAL SOFAR
------------ --------------- ------------ ---------- ---------- ----------
EST_WORK EST_RATE EST_MINUTES
---------- ---------- -----------
ERROR_CODE
--------------------------------------------------------------------------------
3 REBAL RUN 1 1 195
300 782 0

4. 查詢磁碟情況
SQL> 
col name for a40;
select group_number, name, TOTAL_MB, FREE_MB from V$asm_disk_stat;

GROUP_NUMBER NAME TOTAL_MB FREE_MB
------------ ---------------------------------------- ---------- ----------
3 DATA_0000 43008 40913
2 FLASH_0000 15360 14211
1 GRIDDG_0000 1024 830
1 GRIDDG_0001 1024 863
3 DATA_0001 6144 5842

SQL> select OPERATION,POWER,EST_RATE,EST_MINUTES,STATE from v$asm_operation;

no rows selected > 磁碟 rebalance 操作結束


三、 刪除磁碟組磁碟成員

3.0 查詢磁碟資訊,保留磁碟機代號path路徑 ( 刪除磁碟組的一個磁碟成員,但必須確保刪除該磁碟成員之後,該磁碟組的其他成員有足夠空間做 rebalance )

SQL> 
col path for a30;
select group_number,disk_number,path from v$asm_disk order by group_number,disk_number;
GROUP_NUMBER DISK_NUMBER PATH
------------ ----------- ------------------------------
1 0 /dev/asm-ocr
1 1 /dev/asm-vd
2 0 /dev/asm-date
2 1 /dev/asm-date02
3 0 /dev/asm-flash

SQL> col name for a40
SQL> select group_number, name, TOTAL_MB, FREE_MB from V$asm_disk_stat;

GROUP_NUMBER NAME TOTAL_MB FREE_MB
------------ ---------------------------------------- ---------- ----------
3 DATA_0000 43008 40913
2 FLASH_0000 15360 14211
1 GRIDDG_0000 1024 830
1 GRIDDG_0001 1024 863
3 DATA_0001 6144 5842

3.1 開始刪除磁碟 DATA_0001 , 磁碟做 rebalance 操作
SQL> alter diskgroup DATA drop disk DATA_0001;

Diskgroup altered.

3.2 檢視磁碟情況 
SQL> 
col name for a45;
select group_number, name, TOTAL_MB, FREE_MB from V$asm_disk_stat;

GROUP_NUMBER NAME TOTAL_MB FREE_MB
------------ --------------------------------------------- ---------- ----------
3 DATA_0000 43008 40613
2 FLASH_0000 15360 14211
1 GRIDDG_0000 1024 830
1 GRIDDG_0001 1024 863

說明: 一旦重新調整刪除了所有的分配單元,那麼這個磁碟就從這個磁碟組中刪除了。

3.3 檢視磁碟 rebalance 操作是否結束,如果查詢輸出結果為 no rows selected ,表示已經 rebalance 結束。
SQL> select OPERATION,POWER,EST_RATE,EST_MINUTES,STATE from v$asm_operation;
no rows selected
SQL> 
col state for a10;
col path for a20;
SQL> select path,group_number, disk_number,mount_status,state from v$asm_disk;

PATH GROUP_NUMBER DISK_NUMBER MOUNT_STATUS STATE
-------------------- ------------ ----------- --------------------- ----------
/dev/asm-data02 0 0 CLOSED NORMAL
/dev/asm-date 3 0 CACHED NORMAL
/dev/asm-flash 2 0 CACHED NORMAL
/dev/asm-ocr 1 0 CACHED NORMAL
/dev/asm-vd 1 1 CACHED NORMAL

說明:踢出磁碟後的成員, GROUP_NUMBER,DISK_NUMBER 顯示為 0 , 0


補充:磁碟處理方案
SQL>
col name for a20; 
select group_number,disk_number,name,TOTAL_MB,FREE_MB,TOTAL_MB-FREE_MB used_size from V$asm_disk_stat order by group_number,disk_number;

GROUP_NUMBER NAME TOTAL_MB FREE_MB USED_SIZE
------------ -------------------- ---------- ---------- ----------
1 OCRVOTDG_0001 4096 3914 182
1 OCRVOTDG_0000 4096 3880 216
2 DATADG01_0004 284672 188576 96096
2 DATADG01_0000 284672 188648 96024
2 DATADG01_0005 284672 188632 96040
2 DATADG01_0006 284672 188616 96056
2 DATADG01_0007 284672 188664 96008
2 DATADG01_0001 284672 188584 96088
2 DATADG01_0002 284672 188560 96112
2 DATADG01_0003 284672 188584 96088
3 DATADG02_0004 284672 200504 84168

GROUP_NUMBER NAME TOTAL_MB FREE_MB USED_SIZE
------------ -------------------- ---------- ---------- ----------
3 DATADG02_0003 284672 200424 84248
3 DATADG02_0002 284672 200440 84232
3 DATADG02_0001 284672 200480 84192
3 DATADG02_0000 284672 200472 84200
3 DATADG02_0007 284672 200496 84176
3 DATADG02_0005 284672 200432 84240
3 DATADG02_0006 284672 200424 84248
4 DATADG03_0002 284672 273664 11008
4 DATADG03_0000 284672 273664 11008
4 DATADG03_0001 284672 273656 11016
5 ARCHDG_0000 284672 82672 202000

22 rows selected.

SQL> select sum(total_mb-free_mb) T_size from v$asm_disk;

T_SIZE
----------
1677646

SQL> select sum(total_mb) T_size from v$asm_disk;

T_SIZE
----------
5701632

SQL> select sum(free_mb) T_size from v$asm_disk;

T_SIZE
----------
4023986

磁碟處理情況說明:
SQL> select group_number,sum(total_mb) total_M,sum(total_mb-free_mb) used_size_M ,sum(free_mb) free_M from v$asm_disk group by group_number order by group_number ;

GROUP_NUMBER TOTAL_M USED_SIZE_M FREE_M
------------ ---------- ----------- ----------
1 8192 398 7794 (不動)
2 2277376 768512 1508864
3 2277376 673704 1603672
4 854016 33032 820984
5 284672 202000 82672 (不動)

SQL> select sum(total_mb) total_M,sum(total_mb-free_mb) used_size_M ,sum(free_mb) free_M from v$asm_disk where group_number in (2,3,4);

TOTAL_M USED_SIZE_M FREE_M
---------- ----------- ----------
5408768 1475248 3933520


計劃方案:已經使用 1677646 M ,存留 2.7 T=2831155 M , 踢出 2870477 M


5701632 - 2831155 = 2870477 M

2870477/284672 = 10.0834539


實際實施: 
group 2 踢出4塊磁碟,DATADG01_0007~DATADG01_0004 。
group 3 踢出4塊磁碟,DATADG02_0007~DATADG02_0004。
group 4 踢出2塊磁碟,DATADG03_0002,DATADG03_0001 。

實際踢出空間:284672*10=2846720/1024/1024= 2.71484375 T
實際存留空間:5408768-2846720=2562048/1024/1024= 2.44335938 T


實施後儲存情況:
GROUP_NUMBER TOTAL_M USED_SIZE_M FREE_M
------------ ---------- ----------- ----------
1 8192 398 7794
2 1138688 768512 370176
3 1138688 673704 464984
4 284672 33032 251640
5 284672 202000 82672

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2142935/,如需轉載,請註明出處,否則將追究法律責任。

相關文章