Blog ' da Ara

Loading

1 Şubat 2012

Administering ASM Diskgroups

           
    Bir önceki yazımızda asm instance nasıl yönetilir anlatmaya çalışmıştık.Bu yazımızda ise asm diskgroupların yönetilmesi yada monitör edilmesi üzerine değineceğiz.Konuya başlamadan önce asm instance, oracle database, rac instance ve asm instance arasındaki ilişkiyi şema olarak gösterebileceğimiz şekil1 e göz atabilirsiniz.
    
Şekil1:Asm Disk Groups
       
    Şekil1 de görüldüğü üzere her makinada sadece bir adet asm instance bulunabilir.Bir makinada birden fazla database oluşturulabilir.Makinalar RAC sisteminde olabilir.Tüm asm instanceler tekbir storage gurubundan beslenir. Şekil1 de ki storage gurubunda Disk Group A ve Disk Group B şeklinde iki adet Asm disk group mevcuttur.Şimdi Bu diskgrouplar üzerinde ne gibi işlemler yapabiliriz ve yönetimini nasıl yaparız anlamaya çalışalım.


    Asm Disk Group Oluşturma;
    Asm Disk group oluşturuken redundancy opisyonu seçmemiz gerekir.
    External Redundancy: Disklerin mirrorları tutulmaz. Disklerin OS tarafında mirrorlandığı  varsayılır.

CREATE DISKGROUP DATA EXTERNAL REDUNDANCY DISK  '/devices/lun1','/devices/lun2'
   
    Normal Redundancy: Disklerin OS tarafında mirrorlarının  tutulduğuna bakılmaksızın 2 adet fail group ile mirrorlarının tutulduğu yönetemdir.

CREATE DISKGROUP DATA NORMAL REDUNDANCY
  FAILGROUP controller1 DISK
   '/devices/diska1','/devices/diska2','/devices/diska3','/devices/diska4'
  FAILGROUP controller2 DISK
   '/devices/diskb1','/devices/diskb2','/devices/diskb3','/devices/diskb4';

    High Redundancy: Normal redundancy dekimantık geçerli ancak 3 adet fail group oluşturulmasıdır.

CREATE DISKGROUP DATA NORMAL REDUNDANCY
  FAILGROUP controller1 DISK
    '/devices/diska1','/devices/diska2','/devices/diska3','/devices/diska4'
  FAILGROUP controller2 DISK
   '/devices/diskb1','/devices/diskb2','/devices/diskb3','/devices/diskb4'
 FAILGROUP controller3 DISK
   '/devices/diskc1','/devices/diskc2','/devices/diskc3','/devices/diskc4';
   
    External redundancy burada en hızlı yöntemdir.Ayrıca external redundancy ile tüm diskleri data için kullanabilirsiniz.Ancak Eğer disklerin OS tarafında mirrorlarında sorun çıktığında data kaybı yaşayabilirsiniz. Normal ve High Redundancy de ise data güvenliği ön planda olmasına rağmen performans ve storage kaybı söz konusudur.
    Asm disk group oluştururken disk grouplarının fonksiyonalitesini belirleyebilirsiniz.Aşağıda bununla ilgili opsiyonlar bulunmaktadır.

    AU_SIZE : Allocation Unit size dır.Default değeri 1MB dir. 64 MB ye kadar set edilebilir.
    DISK_REPAIR_TIME : Disk offline oladuktan sonra asm bu diski ne kadar süre ile tutuacak ve üzerindeki yükü rebalance etmeyecek belirleme seçeneğidir. Saat Yada dakika olarak set edilebilir. Default değeri 3.6H saattir.136 yıla ‘a kadar set edilebilir.
    COMPATIBLE:RDBMS : Uygun software versiyonu belirlemek amaçlıdır.en az 2 numara gurubu yazmak gerekir.Öreneğin 10.2 gibi.Default değeri 10.1 dir.
    COMPATIBLE:ASM : Uygun Asm versiyonu belirlemek için kullanılır.Yine en az 2 numara gurubu yazmak gerekir.Öreneğin 10.1 gibi. Default değeri 10.1 dir.
    COMPATIBLE:ADVM : Asm volüme oluşturmaya izin verir.Default değeri none dir.Uygun değer 11.2 yada sonrası olmalıdır.
    ACCESS_CONTROL.ENABLES : Access Control List oluşturmaya izin verir.Uygun değeri booleandır.Default değeri FALSE dir.
    SECTOR_SIZE : 512 den 4K ya kadar değerler verilebilir.DEfault değeri 512 dir.Şu an varolan disklerin hemen hepsi 512 sector size ile çalışır. Oracle  Logic olarak 4K sector size kullanabilir.Ancak fiziksel altyapı henüz gelişmediği için 4K sektör size kullanmak ihtiyaçları karşılama aşamasında pek de tatmin edici olmayacaktır.
    CELL:SMART_SCAN_CAPABLE : Disk grubundaki tüm diskler exadata grid disk ise bu seçenek TRUE yapılarak scan özelliği enable edilmiş ve disk performansı artırılmış olur.Bu özellik disklere index eklemek gibi düşünülebilir.Default değeri FALSE dır.

    Mevcut ASM diskgroup ve attributeleri nasıl sorgulanır?

$asmcmd lsdg

    SQL>SELECT G.NAME,
            G.TYPE,
           G.TOTAL_MB,
             G.FREE_MB,
            G.REQUIRED_MIRROR_FREE_MB,
           G.USABLE_FILE_MB
      FROM v$asm_diskgroup g

$asmcmd lsattr –lm  -G Disk_GROUPNAME;   

    SQL>SELECT g.name "Group name", a.name "Attribute", a.VALUE "Value"
          FROM v$asm_diskgroup g, v$asm_attribute a
                WHERE g.group_number = a.group_number;

$asmcmd lsdsk -k

    SQL>SELECT g.name "Disk group",
       g.group_number "Group#",
       d.disk_number "Disk#",
       d.name "Disk",
       D.STATE "State",
       D.TOTAL_MB,
       D.FREE_MB,
       d.mode_status "Disk status"
  FROM v$asm_disk d, v$asm_diskgroup g
 WHERE g.group_number = d.group_number

    ASM disk gruba yeni disk nasıl eklenir? Nasıl disk çıkarılır?

    SQL> alter diskgroup INDEKS add disk 'ORCL:INDEX2' name INDEX2 rebalance power 5;
    SQL> alter diskgroup data drop disk DATA_DISK_01;

        Eğer drop işlemini iptal etmek isterseniz;

    SQL> alter diskgroup disk_groupname|all undrop disk DISKS;

    Eğer SPFILE içerisinde Disk Groupların ismi yazılı ise otomatik olarak asm başlatıldığında disk grouplar mount edilecektir.Ancak manuel olarak mount ve dismount etmekte mümkündür.Aşağıdaki sql lleri inceleyebilirsiniz.

    SQL> alter diskgroup disk_groupname|all mount;
    SQL> alter diskgroup disk_groupname|all dismount;

    Scriptlerdeki rebalance power komutları ile disk ekledikten sonra diğer disklerdeki yükün bir kısmını yeni eklenen disk üzerine paylaştırabiliriz.Burada power opsiyonu vermke gerekir.1-11 arasında bir limit sunabilirsiniz 11 en hızlısıdır ancak aşırı I/O yüküne sebep olur.En ideali genelde sistemin I/O responslarına göre yada sizin işlemi yaptığınız zaman göre 3,4,5,6 dir.

    Asm disklerine ait operasyonlar nasıl Monitor Edilebilir?

$asmcmd lsop;

           SQL> SELECT G.NAME, G.GROUP_NUMBER, o.*
  FROM v$asm_diskgroup g, v$asm_operation o
 WHERE O.GROUP_NUMBER = G.GROUP_NUMBER
       
    Asm diskgrouplarına hangi clientların bağlandığı nasıl görüntülenebilir?

$asmcmd lsct

           SQL>SELECT G.NAME, G.GROUP_NUMBER, c.*
  FROM v$asm_diskgroup g, v$asm_client c
 WHERE G.GROUP_NUMBER = C.GROUP_NUMBER

    Ayrıca yanlış kullanmamanız konusunda bir uyarı ayaparak diskgroupları aşağıdaki gibi silebileceğimizi hatırlatırım.

    SQL> drop diskgroup disk_groupname;
    SQL> drop diskgroup disk_groupname including contents;
    SQL> drop diskgroup disk_groupname force including contents;

    Asm Fast Mirror Resynchronization
    Asm 11.1 versiyonu ile (COMPATIBLE:RDBMS=11.1) yeni bir özellik olarak gelen fast mirror rsync asm daha kullanışlı, güvenli ve performanslı yapmıştır.11 g den önce eğere disklerden birinde failure olsaydı asm bu disk ofline yapıp mirrolarından tekrar create ediyor ve sonrasında rebalance ediyordu.Tabi küçük boyuttaki datalar için bu işlem kısa sürebilir ancak VLDB ler için hiç de bitecek gibi durmaz ve tam bitti dediğinizde rebalance işlemi başatır ve birde I/O yükü başlardı. Bu şekilde uygulama ve sistem uzun süre sancılı zamanlar yaşayabilirdi.
    Asm fast Mirror rsync ile birlikte eğer disk üzerinde failure olursa asm sadece bu failure den etkilenen extentleri senkron ettiği için bu süre baya azaltılmış olur.Eğer DISK_REPAIR_TIME parametresini bir disk group için set edersek bu disk repair edildikten sonra belirlediğimiz bu parametredeki süre kadar resynchtoniation işlemini başlatmaz.
    Aşağıda şekil2 de fast mirror rsync çalışma prensibi ile ilgili bir şema bulabilirsiniz.


   Şekil2:Asm Fast Mirror Rsync

    Asm Disk İstatistikleri de periyodik olarak kontrol edilmesi ve performans izlemeleri yapılması gerekn istatistiklerdir.Bunun için aşağıdaki queryler ve scriptler kullanılabilir.
   
$asmcmd lsdsk --statistics
$asmcmd lsdsk –iostat

SQL>SELECT INSTNAME,
       G.NAME,
       sum(reads) reads,
       sum(bytes_read),
       sum(writes),
       sum(bytes_written)
  FROM v$asm_diskgroup g, v$asm_disk_iostat d
 WHERE G.GROUP_NUMBER = D.GROUP_NUMBER
group by d.instname,g.name

    Ayrıca read ve write hataları alınıp alınmadığını aşağıdaki scriptle bulabilirsiniz,

SQL>SELECT SUM (read_errs) + SUM (write_errs) errors
    FROM v$asm_disk

                                                                                                Özcan YILDIRIM

0 YORUM:

Yorum Gönder

"Sorularınız ve Eleştirileriniz Değerlidir"