OpenSUSE’da libvirtd (KVM /QEMU) ile Sanallaştırma

Sanallaştırma Desteğinin Kontrol Edilmesi

Öncelikle kurulum yapılacak makinede sanallaştırma desteğinin olduğundan emin olunmalıdır. Bunun için CPU çıktısında vmx (Intel VT-x) veya svm (AMD SVM) flag’lerinden birinin olup olmadığı kontrol edilebilir.

Kontrol için lscpu komutunun çıktısını inceleyebiliriz. Komutun çıktısında Flags alanında makinedeki işlemcinin özelliklerine göre vmx veya svm flag’lerinden biri olmalıdır.

Kontrol için başka bir yöntem olarak /proc/cpuinfo içerisinde vmx veya svm içeren satırları saydırabiliriz.

grep -E -c '(vmx|svm)' /proc/cpuinfo

Komutun çıktsında ekrana basılan sayı 1 veya daha fazlaysa makinedeki işlemci sanallaştırmayı destekliyor demektir. Eğer değilse sanallaştırma özelliği BIOS’dan açılmamış olabilir. Kontrol edip sanallaştırmayı açtıktan sonra işlemlere devam edilebilir.


Paket Kurulumları ve Ayarlamalar

Paket yöneticisini kullanarak gerekli paketleri yüklüyoruz.

sudo zypper install patterns-openSUSE-kvm_server patterns-server-kvm_tools

Yükleme tamamlandıktan sonra libvirtd servisini makine açıldığında başlaması için enable ederek başlatıyoruz.

sudo systemctl enable --now libvirtd

Servisi başlattıktan sonra hem servisin başladığını hem de KVM‘in kernel modüllerinin yüklendiğini kontrol ediyoruz.

systemctl status libvirtd && lsmod | grep kvm

Servisin çalışmasında bir problem görünmüyorsa kendi kullanıcımızı libvirt grubuna ekliyoruz.

usermod -a -G libvirt <username>

Bu işlemden sonra ağ ayarı ve ilk makinenin kurulumuna geçebiliriz. Bu noktada makinede çalışan QEMU/KVM ile iletişim kurabileceğimiz iki farklı bağlantı adresi oluyor. Her kullanıcının kendisine ait olan qemu:///session ve root kullanıcısına ait olan qemu:///system . Hem daha fazlaya yetkiye sahip olmamız hem de sanal makine ayarlarının bütün kullanıcılar için geçerli olması için root kullanıcısına ait olan qemu:///system adresini kullanıyoruz. İki bağlantı arasındaki fark için libvirt’in dökümantasyonuna bakabilirsiniz.

Terminalden virt komutlarını kullandığımızda varsayılan olarak qemu:///session bağlantısını kullanıyoruz. Bunu değiştirmek için kullanıcımızın .bashrc dosyasında varsayılan bağlantı değişkenini istediğimiz gibi tanımlıyoruz.

export LIBVIRT_DEFAULT_URI="qemu:///system"

Bu tanım sonrasında terminalden çalıştıracağımız komutlar varsayılan olarak bağlantıyı qemu:///system adresine gerçekleştirecek. Kurulum sonrasında default isminde bir sanal ağ hazır olarak geliyor. Bunun üzerinde istediğimiz düzenlemeleri yapıyoruz.

virsh net-edit default

İstediğimiz düzenlemeleri yaptıktan sonra bu ağı otomatik başlatmaya ekliyoruz.

virsh net-autostart default

Sanal Makine Kurulumu ve Klonlama

Yeni sanal makine kurmak için virt-install komutunu kullanıyoruz.

virt-install -n "<sunucu_adı>" -r <ram_miktarı> --vcpus=<cpu_miktarı> --os-variant=<dağıtım> --accelerate -v -w network:<ağ_adı> --disk path=<diskin_oluşturulacağı_dizin>,size=<disk_boyutu>,format=raw,bus=virtio,cache=writeback --cdrom <iso_konumu>

Grafik arayüz ile sanal makinenin kurulumunu istediğimiz şekilde gerçekleştiriyoruz. Kurulum sonrasında makinenin konsoluna virsh console ile bağlanabilmek için öncelikle sanal makineye virt-viewer veya ssh ile bağlanarak serial-getty@ttyS0 servisini başlatmamız gerekiyor.

systemctl enable --now serial-getty@ttyS0.service

Bu işlem sonrasında virsh console <makine_adi> ile sanal makinenin konsoluna direkt olarak bağlanabiliriz.

Klonlamak istediğimiz şablon sanal makinenin kurulum işlemleri tamamlandıktan sonra makineyi kapatıyoruz. Klonlama işleminden önce sanal sunucunun diskinde kalan boş alanları tekrar kendi makinemize almak için sparsify komutunu kullanıyoruz.

sudo virt-sparsify --in-place <disk_yolu>

Bu işlem sonrasında sanal makineyi klonluyoruz. Üzerinde istediğimiz değişiklikleri yaparak başlatıyoruz.

virt-clone --original "<klonlanacak_makine>" --name "<klon_makine>" --file <klon_makine_disk_yolu>/<klon_makine>.qcow2 --mac RANDOM
virsh edit <klon_makine>