KVM Offline Backups

I use KVM in my production servers. But there are some critical questions with KVM usage. Backup process of running virtual machines may be top most question of KVM users. Although, there are many other solutions in the literature, I will discuss more defensive method in this article. Before I move on to details of backing-up VMs, I will first mention the building blocks I used in this method.

KVM

This is the hypervisor.  It supports live snapshot which is crucial for backup process.

Snapshots

A Snapshot of a virtual machine holds the state-of virtual machine at the time of snapshot is taken. This state is mainly about hard drive but if live snapshot is the case, VM’s all registers, memory and kernel buffers are stored into the snapshot.

There are two types of snapshots in KVM.  Internal snapshot is stored in virtual machines disk file, for instance if VM’s disk is named centos.qcow2 then snapshot will be saved within centos.qcow2. External shapshot is not saved into VM’s disk namely centos.qcow2. So snapshot is saved to the location specified with the snapshot command.

Both internal and external snapshots supports online (live) and offline (turned-off) backups.

Continue reading

Sanallaştırma – Virtualbox

Sanallaştırma

Sanallaştırma Bulut Bilişim’in can damarı, yazılımıcının dostu ve öğrenmek için büyük olanaklar veren bir teknolojidir. Sanallaştırma ile fiziksel makinemiz üzerinde değişiklik yapmadan gerçek bir fiziksel makinenin sunduğu hizmetlerin tamamına (hemen hemen) erişilebilmesi mümkündür. Günümüzde Docker gibi teknolojilerle çok daha az yükle bunları başarmak mümkün olsa da sanallaştırma gerçek bir fiziksel makine yerine geçebilen oldukça önemli bir teknolojidir.

Virtualbox, masaüstü sanallaştırması düşünüldüğünde açık kaynak olması, güncellemelerinin sıklıkla yapılması, aralarında Windows’un bulunduğu pekçok işletim sistemi için problemsiz çalışması düşünüldüğünde ilk akla gelen ürünlerdendir. Virtualbox eğer linux dağıtımı kullanıyorsanız paket yöneticisinden, eğer windows işletim sistemi sahibi iseniz virtualbox.org sitesinden indirilip kurulabilir. Kurulum adımlarını yapabildiğinizi varsayarak, virtualbox’ın önemli olduğunu düşündüğümüz farklılıklarını ifade edelim.

Linux Dağıtımları için “dkms”

DKMS (dynamic kernel module support), virtualbox guest additons (virtualbox misafir eklentileri), paketinin işletim sistemi kernel güncellemelerinden sonra kendiliğinden derlenmesi ve kayıt ettirilmesi amacıyla kullanılmaktadır. Virtualbox kurulumunuzdan sonra “kernel” vari mesajlar alıyorsanız dkms paketini yüklemeyi deneyebilirsiniz. Bu probleminiz çözmez ise virtualb0x-dkms adlı bir paket te işinizi çözebilir. Bu paketlerin kurulumundan sonra bilgisayarınızı yeniden başlatmanız gerekebilir.

Misafir Eklentileri (Guest Additions)

Tam bir masaüstü deneyimi sunabilmek için virtualbox misafir eklentileri kurulmalıdır. Bu işlemden sonra entegre fare, kopyala-yapıştır (genellikle metin), ekran kartının çeşitli ek çözünürlükleri gibi gerçekten faydalı özellikler kullanılabilir hale gelecektir.

Birden fazla ekran

Evet virtualbox birden fazla ekranı desteklemektedir. Bu özellikten faydalanmak için misafir eklentilerinin yüklü olduğundan emin olunuz.

Birden fazla CPU

Bu özellik te virtualbox tarafından desteklenmektedir.

Nested Virtualization:

Bu kavram malesef Virtualbox tarafından desteklenmemektedir. Bu kavram ile sanal makinenin kendisi içerisinde sanal makineler oluşturulabilmesi (emulated değil) ifade edilmektedir.

Sanallaştırma – KVM

Kernel Virtual Machine (KVM)

Sanallaştırmayı bu yazımızda biraz daha açalım. Sanallaştırmayı full-virtualization, para-virtualization ve donanım destekli sanallaştırma olarak üç şeklinde değerlendirebiliriz.

1. Full-virtualization

VMWare bu sınıftadır. Temel olarak x86 mimarisi donanım kaynaklarına erişim için ring-0, ring-1, ring-2 ve ring-3 şekinde 4 seviye belirlemiştir. İşletim sistemleri ring-0’da çalışmayı beklemektedirler. ring-0 en yetkili ve bütün kaynaklara erişilebilen bir seviyedir. Kullanıcı programları ise ring-3’te çalışmaktadırlar. Sanallaştırmadaki zorluk ta tam olarak burada çıkmaktadır. İşletim sistemleri ring-0’da çalışacak şekilde tasarlanmışlardır. Halbuki sanallaştırma yazılımı (hipervizör) ring-0 da çalışmaktadır, yani işletim sistemi ring-0 da çalışmamaktadır. Bu durumun üstesinden gelmek için VMWare binary translation kavramını ortaya koymuştur. Bu kavram ile kullanıcı programları doğrudan ilgili olduğu seviye olan ring-3’te çalıştırılırken, işletim sistemi ring-1’de çalıştırılmakta ancak işletim sistemi ring-0’ı gerektiren bir komut icra edeceği zaman aynı etkiye sahip komu dizisi hipervizör tarafından çalıştırılmaktadır. Yani bu kısım emule olarak ifa edilmektedir. VMWare’in bulduğu ve standart olarak kullanılan bu metod full-virtualization olarak değerlendirilmektedir.

Full virtualization ile işletim sistemi hiçbir şekilde sanal bir sunucu olduğunu bilmez. Hipervizör sanal makine için sanal bios, sanal ses kartı ve diğer gerekli donanım kaynaklarını sanal olarak vermektedir. Bu tekniğin en önemli yanı da zaten işletim sisteminde bir değişiklik gerektirmemesidir.

2. Para-virtualization

Bu sanallaştırmada misafir işletim sistemi değiştirilmek durumundadır. Full virtualization’dan farklı olarak misafir işletim sistemi para-virtualized olduğunu bilir ve bu değişikliğe uğratılmıştır. Bütün işletim sistemleri bu şekilde sanallaştırılamaz.

3. Donanım destekli sanallaştırma (Hardware assisted virtualization)

İşletim sistemlerinin ring-0’da çalışması ihtiyacı nedeniyle CPU üreticileri ring-0’ın altında, hipervizörler için bir seviye daha oluşturdular ve bu seviyeye root mode dediler. Böylelikle para-virtualization veya binary translation’daki yavaşlatmanın önüne geçildi. Sanal işletim sistemi ring-0 da yapılması gereken bir komut çalıştırdığında basitçe hipervizör bu çağrıyı yakalayacak ve CPU’ya aktaracaktır.

KVM

KVM daha çok sunucu sanallaştırması için tercih edilmektedir. Her ne kadar masaüstü sanallaştırması için çeşitli çözümler bulunsa da Virtualbox kadar olgun bir masaüstü çözümü sunmamaktadır. Ancak KVM oldukça hızlı, kararlı, pekçok sanal disk formatını destekleyen (virtualbox ve vmware’inkiler dahil), ağ tarafı oldukça güçlü bir hipervizördür. Kurulumu oldukça kolaydır. Ancak sadece linux dağıtımları için kullanılabilmektedir. qemu sistem komutlarıyla diskler üzerinde snapshot’lar alma, klonlama gibi işlemleri yapmamıza olanak veren araçları barındırmaktadır. Basit bir gui’si vardır. Bu gui ile sanal makineler oluşturabilir, disk kalıpları için havuzlar tanımlayabilir, oluşturulan sanal makinelerin özelliklerini ayarlayabilirsiniz.

Sonuç

Windows masaüstü sanallaştırması genellikle MS Office bağımlılığı nedeniyle (malesef bazen şirketin şablonları vb. sebeplerle bu bağımlılık oluşabiliyor) tercih edilmektedir. Ancak, playonlinux gibi linux çözümleri bu bağımlılığı kaldırmıştır. Eğer masaüstü sanallaştırmasına windows için gerçekten ihtiyaç duymuyorsanız KVM’yi kesinlikle kullanmalısınız.