ORACLEVM & XEN Sanal Makinelerinin KVM e MİGRASYONU


XEN ve KVM kardeş platformlar oldukları halde birbirinden oldukça farklı çalışan iki platformdur. Disk yapıları birebir aynı olsa da(Redhat in etkisiyle) host üzerinde çalışma prensiplerindeki farklılık nedeniyle çevirme işlemleri basitçe halledilememektedir. Bu makale de XEN vm lerin KVM e nasıl çevrilebileceğini anlatacağız. OracleVM de XEN i temel aldığı için aynı bilgiler geçerlidir.

1. İlk olarak çevirme işlemine tabi tutulacak makinenin bir kopyasını güvenlik amaçlı olarak almamız gerekmektedir. Yapılacak işlemler sonrasında makine XEN platformunda çalışmaması büyük olasılık dahilindedir.

2. İlk yapılacak iş VM işletim sistemi ve kernel sürümü bilgileridir. Örneğin;
Yeni Bit Eşlem Resmi
Resimden görüldüğü üzere işletim sistemi RHEL5.5 ve xen kerneldir. Sanal makine işletim sistemi RHEL5.5 sürümünü temel alan CentOS/Scientific/OracleEnterprise Linux 5.5 olabilir. Bu bilgiyi kullanarak elimizdeki makine için bir kernel bulmamız gerekmektedir.
Eğer ilgili repositorylere ulaşamıyorsak kurulum cd sinden elde edebiliriz.
Benim sanal makinemde OracleEnterprise Linux 5.5 var fakat Oracle repository sini silmiş. Dolayısıyla yum konfigürasyonu yaparak ilgili paketi netten indiremiyorum. Bu yüzden kurulum cd sini kullanacağım.

3. İşletim Sistemine uygun kernel rpm paketi kurulumu yapılır.
Yeni Bit Eşlem Resmi
Resimden görüldüğü gibi kurulum yapılır. Ben CD den kopyaladım kernel dosyasını. XEN paravirtualization işleminde kendine özgü modüller kullanmaktadır. Bu yüzden XEN kernel diye ayrı bir kernel kullanır. Aynı modüller normal kernelde bulunmadığından yukarıdaki gibi hata vermesi normaldir. Bu hataları elle düzelteceğiz.

4. Sistem açılışında yüklenecek modülleri KVM e özgü paravirtualized sürücü modülleri değiştirilir.
Yeni Bit Eşlem Resmi
Ben vi ile açıyorum siz nano vb bir editörle açabilirsiniz. Dosyanın içeriği alttaki gibidir.
Yeni Bit Eşlem Resmi
Görüldüğü üzere modprobe.conf dosyasında xen e ait paravirtualized sürücüler tanımlıdır. Bunları altta gösterildiği şekilde değiştiriyoruz.
Yeni Bit Eşlem Resmi
Dosyayı kaydedip çıkıyoruz. Daha sonra açılışta kullanılan ramdiski yeni kernel ve paravirtualized sürücülere göre yeniden oluşturmamız gerekmektedir. Öncesinde XEN kernele özgü initrd dosyasının bir kopyası alınabilir.

5. Paravirtualized sürücü modülleriyle yeni boot image(initrd) oluşturulur.
Yeni Bit Eşlem Resmi
(mkinitrd –f –with=virtio_blk –with=virtio_pci –builtin=xenblk )
Boot imajımız hazır. Fakat açılışta GRUB farklı disklere bakacağı için bunları düzeltmek gerekiyor. KVM de virtio diskler vdX olarak gösterilirken XEN de xvdX seklinde ifade edilmektedir. Bu yüzden sistem boot edilebilmesi için gerekli değişiklikler yapılmalıdır.

6. GRUB config dosyasına default=0 direktifi eklenir.
Yeni Bit Eşlem Resmi
Grub.conf dosyası editörle açılır. Ve #boot=/dev/xvda direktifinin altına eklenir. Son halde alttaki gibi görünen bir konfigürasyon dosyamız olacaktır.
Yeni Bit Eşlem Resmi
Yapılan tek değişiklik aslında default satırının eklenmesidir. Diğerleri otomatik yapılmıştır.

7. GRUB altında yer alan device.map dosyasında KVM disk notasyonu değişimi yapılır.
Yeni Bit Eşlem Resmi
Device.map dosyası editör ile açıldığında alttaki kayıt görülür.
Yeni Bit Eşlem Resmi
Orijinal kayıdı alltaki gibi değiştirerek KVM paravirtualized disk notasyonuna çevireceğiz.
Yeni Bit Eşlem Resmi

8. Inittab dosyasında yer alan co:2345:respawn direktifi açıklama haline getirilir. Eğer diğer respawnlar açıklama satırı halindelerse aktifleştirilmelidirler.
Yeni Bit Eşlem Resmi
Diğer şeylere dokunmadan Inittab dosyasının son hali alttaki gibi olmalıdır.
Yeni Bit Eşlem Resmi

9. Makineyi kapatıyoruz.
Yeni Bit Eşlem Resmi

Çevrim işlemi için hazırladığımız makineyi kapattıktan sonra diskleri KVM hostuna kopyalarak bir sonraki adıma geçilebilir. Kopyalama işleminin tamamlanmasıyla;
İki yol izlenebilir. Ya XEN VM in vm.cfg dosyasına bakarak KVM için vm.xml dosyasını elle oluştururuz. Yada KVM hostunda libvirt tabanlı virt-manager i kullanarak yeni makine oluşturur ve xen vm.cfg de yer alan sırayla diskleri ekleriz. Virt-manager bana daha kolay geldiği için onu kullanıyorum.

ORACLE Exadata CELL ve DB makinelerinin çevriminden notlar.

STORAGE CELL SERVERS
1. Cell makineleri açıldığında ilk olarak ip adreslerini düzenle(/etc/hosts içinde yer alan bilgilerden hareket edilerek işlemler yapılabilir.)
2. IP adreslerinin tam doğru olduğundan emin olunmalı.
3. Swap diskinin mount edilmiş ve çalışır durumda olduğunuz teyid ediniz (cat /proc/swaps)
4. Cell diskleri loopback disk olarak sisteme gösterildiğinden /opt/oracle/cellxxxxx/disks/raw altında yer alan linklerin bozulması nedeniyle bu linklerin unlink yapılarak tekrar sembolik tipinde oluşturulmaları gerekmektedir.
5. Cellcli Shell ine geçiş yaparak
a. “List cell detail” den en altta yazan servislerin running durumda olduğundan emin olunuz.
b. Yada “alter cell restart services all” komutu ile yeniden başlatılabilir.
c. “List cell disk” komutu sonucunda dönen disk listesinde normal yazıyorsa işler tıkırında. Eger servislerle ilgili hataysa servislerin kontrolünü yapınız.
d. Orada da problem yok ise “list alert history” komutu ile problemi tespit ederek çözümüne bakınız.
ORACLE DATABASE SERVERS
1. IP adreslerini düzeltiniz /etc/host taki gibi yapabilirsiniz.
a. Eger IP adresinizi değiştirdiyseniz; /etc/oracle/cell/network***/cellinit.ora dosyasındada düzeltme yapınız.
2. Kernel sürümünüzü dikkate alarak Kernel-devel ve kernel-headers paketini yükleyiniz.
3. Swap diski kontrol ederek düzgün çalıştığından emin olunuz
4. “/u01/app/11.2.0/grid/bin/kfod disk=all status=true” komutunu çalıştırınız.
5. Oracle kullanicisina gecereke gogrid aliasını calistiriniz ve sqlplus a bağlanarak durumu kontrol ediniz.