KVM – qcow2 Disk Dosyası Boyutunu Küçültme (Reduce – Shrink Qcow2 Disk Files)

Şimdiki yazımızda KVM hipervisor katmanında guest’ler(vm – sanal makineler) için başınıza gelebilecek bir durumdan bahsedeceğiz. Malumunuz KVM hostlarınızda disk dosyalarınız(qcow2) diskte belli bir alanı kaplamaktadır. Fakat zamanla guestteki disk alanı hosttaki barındığı disk alanını doldurup hatta üzerinede çıkabilmektedir. Aslında VM diski filesystem tabanında düzenli alanlarla kullanmadığı yada dağınık yazdığı için yani bu durum adreslemeyle alakalı; dolu göstermektedir. Aslında windows’ta defrag yöntemi gibi diyebiliriz. Bu durumda sanal makine otomatik olarak “Pause” duruma düşecek ve hizmet veremeyecek duruma gelecektir. Bu duruma düşmeden yada düştükten sonra aşağıdaki yöntemlerle qcow2 disk dosyalarını boyutunu hipervisor katmanında aslında kullanılmadığı halde kullanıyor gibi gösterdiği alanları yeniden düzenleyerek küçültecektir.

İlk yöntem olarak “virt-sparsify” komutunu kullanarak etkili ve verimli bir şekilde disk dosyanızın boyutunu küçültebilirsiniz.

NoT1 : “virt-sparsify” komutunu kullanabilmek için libguestfs-tools paketini öncesinde kurmalısınız.

NoT2 : İşlemleri vm kapalıyken yapın.

İşlem yapılmadan önce aşağıdaki komutla disk dosyasının boyutunu görelim.

> du -ha

Ardından “virt-sparsify” komutu ile istediğimiz küçültme işlemini gerçekleştirelim.

> virt-sparsify –in-place diskdosyanız.qcow2

Daha sonra tekrar “du -ha” komutunu çalıştıralım ve boyuttaki azalmayı görelim.

Ikinci yöntem olarak gene “virt-sparsify” komutunu convert yöntemi ile kullanalım.

> virt-sparsify diskdosyanız.qcow2 –convert qcow2 yeniisimdiskdosyanız.qcow2

Sonra “du -ha” komutu

Son olarak üçüncü yöntem ise,

Aşağıdaki yöntem ile Guest’in içinde “dd” komutu kullanarak kalan boş alana “zero” basıyoruz.

> dd if=/dev/zero of=/MyDump

Daha sonra MyDump dosyasını siliyoruz.

> rm -f /MyDump

Son olarak “qemu-img” komutu ile işlemi gerçekleştiriyoruz ama öncesinde fırsatınız varsa disk dosyasının yedeğini almanızda fayda var.

> qemu-img convert -O qcow2 ilgilidosyaismi.qcow2 yeni_ilgilidosyaismi.qcow2

Kaynaklar

http://libguestfs.org/virt-sparsify.1.html

https://pve.proxmox.com/wiki/Shrink_Qcow2_Disk_Files

How to install KVM on Ubuntu 16 – Ubuntu üzerine KVM kurulumu, Yapılandırması ve Sanal Makine oluşturulması

KVM Çekirdek tabanlı sanal makine Linux çekirdeği için geliştirilen ve onu bir üstsisteme dönüştüren bir sanallaştırma altyapısıdır.

Kurulumdan önce sunucumuza login olup, cpu muzun destekleyip desteklemediğini anlamak için aşağıdaki komutlar yardımıyla cpu bilgilerini kontrol edelim.

Bu komutun çıktısı olarak “CPU(s):” değeri 0 ise dekteklemiyor, 1 veya 1 den fazla bir değer ise destekliyor manasına gelir.

> egrep -c ‘(svm|vmx)’ /proc/cpuinfo

yada

> lscpu

Aşağıdaki komutla da çekidek modüllerinin yüklü olup, olmadığını kontrol edebilirsiniz.

> lsmod | grep kvm

Şimdi kuruluma geçebiliriz. Aşağıdaki komut ile gerekli tüm paketleri kurup, KVM ortamımızı hazır hale getirelim.

> sudo apt-get install qemu-kvm libvirt-bin bridge-utils virt-manager

Yukarıdaki kurulum komutundan sonra sorunsuz bir kurulum gerçekleştiğini, aşağıdaki komutla doğrulayın.

> kvm-ok

Ardından sunucuyu reboot edin.

> brctl show komutuyla da sonradan gelen sanal interface(NIC) i görüntüleyebilirsiniz.

Default’ta Virtual Machine(qcow2) lerin saklandığı dizindir.

/var/lib/libvirt/images/

Not1 : Eğer qcow2 formatında ki diskin yerini bilmiyorsanız aşağıdaki komut(komut ilgili vm in disklerini bulunduğu dizin ile beraber listeler) size nerde olduğunu söyleyecektir.

> virsh domblklist Ubuntu18

Default’ta Virtual Machine images lar için, kurulum iso larının saklandığı dizindir.

/var/lib/libvirt/boot/

Default’ta Virtual Machine özelliklerinin(ram,cpu,disk vs.) xml formatında tutulduğu yerdir.

/etc/libvirt/qemu

Not2 : Aşağıdaki komut ise ilgili makinanın xml formatında tutulduğu özellikleri(ram,cpu,disk vs.) ekrana bastırır.

> virsh dumpxml Ubuntu18

Aşağıdaki iki komutla da mevcuttaki sanal makinaları görüntüleyebilirsiniz.

> virsh -c qemu:///system list

yada

> virsh list –all

Virtual Machine lerinizi GUI olarak yönetmek, oluşturma ve silme gibi işlemler için virt arayüzünü kullanabilirsiniz. Komut aşağıdaki gibidir.

NoT3 : Bunu yapabilmek için öncesinde sunucuya ssh bağlantısı yaparken, -X parametresini kullanarak bağlanmalısınız(ssh -X root@192.168.1.100). Ayrıca Windows (Putty de x11 enable edilmelidir) için Xming uygulaması, Mac için ise Xquartz uygulaması kurulu ve çalışır olması gerekiyor.

NoT4 : Bu arada bir bilgi daha vermem gerekir. Eğer Linux kullanıcısı iseniz yani client makinanız Linux ise sunucuya virt-manager paketini kurmadan, client makinanızda virt-manager var ise ordan File-Add Connection diyerek sunuya bağlanıp yönetebilirsiniz.

> sudo virt-manager

Yada sunucuya ait konsolu direk olarak aşağıdaki komutla alabilirsiniz.

NoT5 : Bunu yapabilmek için öncesinde kullanıcı makinasına virt-viewer paketini kurmalısınız(ubuntu/debian için ’apt install virt-viewer’, Redhat/CentOS için ‘yum install virt-viewer’).

> sudo virt-viewer -c qemu:///system Ubuntu18

Komutlar aracılığı ile sunucuyu yönetimi için aşağıda bir kaç komut paylaşacağım.

Sunucuyu başlatır.

> virsh start Ubuntu18

Sunucuyu kapatır.

> virsh shutdown Ubuntu18

Sunucuyu yeniden başlatır.

> virsh reboot Ubuntu18

Sunucunun özelliklerini değiştirmek için kullanılır(xml dosyasını değiştirir).

> virsh edit Ubuntu18

Sununun barındığı host açıldığında, bu vm de otomatik olarak başlatma seçeneğidir.

> virsh autostart Ubuntu18

Sununun barındığı host açıldığında, bu vm de otomatik olarak başlatma seçeneğini devre dışı bırakır.

> virsh autostart –disable Ubuntu18

Şimdi “virt-install” komtuna bakalım, bu komut aracılığı ile komut satırı üzerinden makine oluşturabilirsiniz. Alltaki komutta örnek komut ile bu işlemi sağlayabilirsiniz. Ben bir çok parametreyi kullandım ama siz tüm parametleri kullanmak zorunda değilsiniz. Zaten kullanmadığınız parametreler yerine default değerler atanacaktır. Tabi sonrasında siz bu değerleri değiştirebilirsiniz. Komutu yürüttükten sonra gui açılıp size kuruluma yönlendirecektir.

> sudo virt-install –virt-type=kvm –name ubuntu-cli –ram 2048 –vcpus=2 –os-variant=Ubuntu16.04 –cdrom=/var/lib/libvirt/boot/ubuntu-18.04-live-server-amd64.iso –network=bridge=eth0,model=virtio –graphics spice –disk path=/var/lib/libvirt/images/ubuntu-cli.qcow2,size=40,bus=virtio,format=qcow2

Şimdi de “virt-clone” komutundan bahsedelim. Adında da anlaşılacağı üzere clone almak için kullanılan komuttur. Kullanımı aşağıdaki gibidir. Fakat vm kapalı durumda iken clone alabilirsiniz, yoksa uyarı verecektir. “Clone ‘Ubuntu18.clone’ created successfully.” uyarısını almalısınız.

> virt-clone –original=Ubuntu18 –name=Ubuntu18.clone –file=/var/lib/libvirt/images/Ubuntu18.clone

Aşağıdaki komut ise vmdk formatındaki bir vm i qcow2 formatına çevirip KVM host unuzda çalıştırmanızı sağlar.

> qemu-img convert -O qcow2 ubuntu.vmdk ubuntu.qcow2

Bir sonraki makalemizde KVM ortamında nasıl yedek alıp sonra aldığımız o yedeği nasıl geri yükleyip, çalışır hale getireceğiz ona bakacağız.

Centos Clone Sonrası Yapılması Gereken İşlemler (bringing up interface eth0 device eth0 does not seem to be present delaying initialization)

VMWare ESX/ESXİ ortamınızda CentOS sunucular için Clone aldığınızda aşağıda belirttiğim bir kaç basit adımı yapmanız gerekmektedir. Eğer bu işlemleri yapmayı atlarsanız network adaptörünüz up duruma geçmeyecektir ve aşağıdaki hatayı alacaksınız. Diğer bir değişle aşağıdaki hatayı alıyorsanız bilinki o makine clon bir sunucudur ve muhtemelen aşağıdaki adımlar atlanmıştır.

Hata : “bringing up interface eth0 device eth0 does not seem to be present delaying initialization

bringing up interface eth0 device eth0 does not seem to be present delaying initialization

Yapılması gerekenler ise;

1. rm komutu ile 70-persistent-net.rules dosyasını silin. Bu dosya ethetnet kartınızın bilgilerinin saklandığı dosyadır. Örnek çıktı aşağıdaki gibidir.

// # PCI device 0x14e4:0x1680 (tg3)

SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”b5:ac:6c:84:31:r5″, ATTR{dev_id}==”0x0″, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth0″ //

# rm /etc/udev/rules.d/70-persistent-net.rules

2. vi yada alternatif bir editör ile network(ip,subnet,gateway,hwaddr) ayarlarının bulunduğu dosyadan HWADDRESS adres satırını silin.

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

3. Sunucunuzun hostname‘ini değiştirin

hostname

Tüm bu işlemleri yaptıktan sonra sunucuyu reboot edin ve işlem tamamdır ve ayrıca hata da kaybolacaktır. Tabi clone sunucuda ip vs. değiştirdiğinizi kabul ediyorum. =)

VirtualBox kullananlar varsa eğer, clone alırken aşağıdaki gibi “Reinitialize the MAC address of all network cards” seçeneğini check(aktif) ederse mac adresi, clone sunucu için otomatik olarak değişecektir ve yukarıdaki 1. seçenek otomatik olarak yapılmış olacaktır. VirtualBox için 2 ve 3 seçeneği yapıp restart edebilirsiniz.

cemacde

RVTools Nedir, RVTools Kurulumu Ve RVTools Kullanımı

RVTools Vmware ortamında VCenter’a bağlanıp ortamınız, hostlarınız, sanal sunucularınız daha doğrusu tüm sanallaştırma platformunuzun yapısı hakkında bilgileri rapor dökümü olarak elde edebileceğiniz ücretsiz bir yazılımdır.

Programı ve güncel versiyonunu http://www.robware.net/ adresinden indirebilirsiniz. Şimdi kurulumuna bir göz atalım.

İndirdiğimiz güncel versiyonlu(3.8) RVTools uygulamasını çift tıklayarak kuruluma başlayalım.

rvt2

Ardından ‘I Agree’ seçip Next ile devam edelim.

rvt3

Tekrar Next tıklıyoruz.

rvt4

Kurulum lokasyonunu belirledikten sonra sadece kendi user’ınız için yada tüm user’lar için seçip Next ile devam ediyoruz.

rvt5

Tekrar Next diyerek kurulumu başlatıyoruz.

rvt6

Ve Close diyerek kurulum işlemini sonlandırıyoruz.

rvt7

Desktop(Masaüstü)’ta oluşan icon’u tıklayıp programı başlatalım.

rvt8

Çıkan Login ekranında VCenter’ınızın IP adresini yada DNS kaydı girilmiş ise domain name yazıp, VCenter’da yetkilere sahip kullanıcı adı ve şifreyi yazarak login tıklayarak raporlamayı başlatıyoruz.

rvt9

Aşağıdaki screenshot’tan anlaşılacağı üzere raporlamayı arka planda başlattı ve bu şekilde kullanıcı bilgilendiriliyor. Tabi işlem biraz sürecektir.

rvt10

Son olarak görüldüğü gibi tüm yapı ile ilgili bilgileri rapor halinde elde ettik, son olarak File menüsünden Excel çıktısı olarak Export edip gerekli inceleme ve işlemleri devam ettirebiliriz.

rvt11

Unable to connect to the MKS

Bilindiği üzere VMware vSphere Client ile consol aracılığı ile sanal makinaları yönetip gerekli işlemleri yapabiliyoruz. Fakat MKS(Mouse Keyboard Screen) denen bir çeşit hata ile karşı karşıya kalma ihtimaliniz olabilir. Nedir bu hata derken şöyle başlayalım MKS ile devamında bir kaç çeşit hata ile dönebilir. Aşağıda screenshot ile paylaştığım gibi yada simyah ekranda bekleyip kalıyor ve sistem arayüzü gelmiyor. Sorunun nedeni bir çok neden olarak algılayabilirsiniz fakat genelde ana neden DNS sorunudur. Yani çalıştığınız makina VMware ESX ya da ESXi hostlarınızın ismini çözemediğinden kaynaklanıyor.

Genelde dönen hatalar aşağıdaki gibidir.

  • Error connecting: Host address lookup for server <SERVER> failed: The requested name is valid and was found in the database, but it does not have the correct associated data being resolved for Do you want to try again?
  • Error connecting: cannot connect to host <host>: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. Do you want to try again?
  • Error connecting: You need execute access in order to connect with the VMware console. Access denied for config file.
  • Unable to connect to MKS: failed to connect to server IP:903.

mks1

mks2

Sorunun en basit çözümü olarak hostlarınıza(FQDN) ve VCenter sunucularınıza karşılık gelen IP adreslerini HOST dosyası içine yazarak giderebilirsiniz. Ben bu yöntemle sorunu çözdüm tabi onaylı bir yöntem olmamakla beraber yapılan bu işlem sadece o makina için geçerli olacaktır. Vmware bununla alakalı yayınladığı KB leri aşağıda paylaşıyor olacağım.

DNS, FQDN ve HOST dosyası nedir?

mks3

192.168.2.20 esxhost1

192.168.2.21 esxhost1.yourdomain gibi…

Knowledge Base

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=749640

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2046356

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2115126

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2032016

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=749640