ASM Disk Grupları Rebalance İşlemleri

Bu yazı da ASM disk gruplarına eklenen/çıkartılan disklerin ardından mutlaka yapılması gereken rebalance işlemini anlatacağım.

Oracle ASM varolan diskler üzerinde tüm datayı elinden geldiğince eşit şekilde paylaştırmaya çalışır. Bu nedenle yeni disk eklenip çıkartıldığında yapılan rebalance işlemi; dataları disk grubu içerisindeki disklere eşit şekilde paylaştırmaya çalışacaktır.

Örneğin elimizde 10 gb boyutunda 4 adet disk olduğunu varsayalım ve bu disk üzerindeki veriler 4 diske de eşit şekilde dağıtılacağından disklerin doluluk oranı yüzdesel olarak aşağıdaki gibi olacaktır.

DATA disk grubu [Toplam boyut: 40 GB, Free alan: 20,8 GB]
/dev/sdb1  => %48 full
/dev/sdc1  => %48 full
/dev/sdd1  => %48 full
/dev/sde1  => %48 full

Disklerden birini çıkartıp rebalance işlemi yapıldığında tahmini doluluk oranı aşağıdaki gibi olacaktır.

DATA disk grubu [Toplam boyut: 30 GB, Free alan: 10,8 GB]
/dev/sdb1  => %64 full
/dev/sdc1  => %64 full
/dev/sdd1  => %64 full
/dev/sde1  => removed

ASM içerisinde varolan diskleri aşağıdaki komutu kullanarak görebilirsiniz.

$ sqlplus / as sysasm
SQL> select group_number g_n, disk_number d_n, name, total_mb, free_mb, path
from v$asm_disk
g_n d_n name     total_mb free_mb path
1   0   DATA_00  10240    4915    /dev/sdb1
1   1   DATA_01  10240    4915    /dev/sdc1
1   2   DATA_02  10240    4915    /dev/sdd1
1   3   DATA_03  10240    4915    /dev/sde1

Varolan disk(ler) aşağıdaki şekilde çıkartılabilir.

$ sqlplus / as sysasm
SQL> alter diskgroup DATA drop disk DATA_03,DATA...;
 Diskgroup altered.

Bu komutun ardından rebalance işlemi başlayacaktır. İşlem tamamlandıktan sonra varolan disk(ler) removed şeklinde işaretlenecektir. Eğer rebalance işlemini istediğiniz hızda başlatmak istiyorsanız drop komutunu aşağıdaki şekilde kullanmanız gerekmektedir.

SQL> alter diskgroup DATA drop disk DATA_03 rebalance power [0-11];
 Diskgroup altered.

0-11 arası vereceğiniz değer rebalance işleminin hızını belirlemektedir. Öğneğin mesai saatleri içerisinde rebalance işlemini 11 ile başlatırsanız veritabanının response süresi artacaktır. Bu değer veritabanının yoğunluk durumuna göre belirlenmelidir. 0 wait anlamına gelmektedir ve rebalance işlemi o anda başlamaz.

Rebalance işlemini başlattıktan sonra hızını değiştirmemiz mümkün. Bu işlemi aşağıdaki şekilde yapabilirsiniz.

SQL> alter diskgroup DATA rebalance power [0-11];

Rebalance işleminin hangi aşamada olduğu kontrolünü aşağıdaki komutu kullanarak öğrenebilirsiniz.

SQL> select group_number, operation, state, est_minutes
from v$asm_operation;
GROUP_NUMBER OPERA STAT EST_MINUTES
------------ ----- ---- -----------
 1            REBAL RUN  2
 1            REBAL WAIT 0

Varolan disk grubuna yeni disk ekleme işlemi aşağıdaki şekilde yapılabilir.

SQL> alter diskgroup DATA add disk '/dev/sdx1' rebalance power [0-11];

Disk grubuna eklenecek diskin candidate olarak görünmesi gerekmektedir.

Power değeri verilmediği durumlarda bu değer ASM’in asm_power_limit parametresine göre belirlenecektir.

SQL> show parameter limit
NAME                TYPE        VALUE
------------------- ----------- ------
asm_power_limit     integer     1

Oracleasmlib Kurulum ve Konfigürasyon

Oracleasmlib kütüphanesi ile ASM de kullanacağınız data grupları oluşturup oluşturduğunuz gruplara disk ekleyip çıkartma işlemi yapabilirsiniz.

İlk adım olarak oracle ASM kütüphanelerini aşağıdaki gibi kurabilirsiniz.

# yum install oracleasm-support
# yum install oracleasmlib

Kurulumun tamamlanmasının ardından oracleasm kütüphanesi aşağıdaki şekilde aktif edilmelidir. Aktif edildiği anda /dev dizini oracleasm dizini oluşacaktır.

# oracleasm init
 Creating /dev/oracleasm mount point: /dev/oracleasm
 Loading module "oracleasm": oracleasm
 Configuring "oracleasm" to use device physical block size
 Mounting ASMlib driver filesystem: /dev/oracleasm

Ardından disk grupları configure etmek için aşağıdaki komutu kullanabilirsiniz.

# oracleasm configure

Yeni bir disk grubu oluşturup ASM içerisinde kullanacağınız diskleri bu gruba aşağıdaki şekilde ekleyebilirsiniz.

# oracleasm createdisk DATA /dev/sde1
 Writing disk header: done
 Instantiating disk: done
# oracleasm createdisk RECO /dev/sdf1
 Writing disk header: done
 Instantiating disk: done

Disk gruplarının oluştuğu kontrolünü aşağıdaki şekilde yapabilirsiniz.

# oracleasm listdisks
 DATA
 RECO
# oracleasm querydisk -d DATA
 Disk "DATA" is a valid ASM disk on device [8,17]

Bu adımdan sonra grid infrastructure kurumuna başlayabilirsiniz.

Varolan disk grubuna yeni bir disk eklemek için aşağıdaki komutu kullanabilirsiniz (ASM profile’i set etmeniz gerekmektedir). Disk ekleme işini kurulum tamamlandıktan sonra asmca (Oracle ASM Configuration Assistant) ile de yapabilirsiniz.

$ sqlplus / as sysasm
SQL> ALTER DISKGROUP DATA ADD DISK '[DISK PATH]';
SQL> ALTER DISKGROUP DATA ADD DISK '/dev/sdg1';

Disk ekleme işlemini yaptıktan sonra rebalance işlemi yapılması gerekmektedir. Bu yazıda kurulum anlattığım için disklerin içerisi boş olacaktır. Bu nedenle rebalance işlemine gerek olmayabilir. Fakat disk grubunun içerisi dolu ise rebalance işlemi gereklidir.

Rebalance işlemleri için aşağıdaki yazıyı okuyabilirsiniz.

ASM rebalance işlemleri