Linux Sanallaştırma: KVM ve QEMU Rehberi

Linux'ta sanallaştırma, fiziksel bir sunucu üzerinde birden fazla sanal makine çalıştırmanızı sağlar. KVM ve QEMU, Linux çekirdeğiyle entegre...

Linux
Linux Sanallaştırma: KVM ve QEMU Rehberi

Linux'ta sanallaştırma, fiziksel bir sunucu üzerinde birden fazla sanal makine çalıştırmanızı sağlar. KVM ve QEMU, Linux çekirdeğiyle entegre çalışan güçlü sanallaştırma teknolojileridir. Sanallaştırma Temelleri

KVM (Kernel-based Virtual Machine)

KVM, Linux çekirdeğine entegre edilmiş bir hipervizördür. CPU'nun donanımsal sanallaştırma özelliklerini (Intel VT-x, AMD-V) kullanarak sanal makineleri doğrudan işlemci üzerinde çalıştırır.

Tip-1 hipervizör olarak çalışır. VirtualBox gibi Tip-2 hipervizörlere göre daha yüksek performans, düşük gecikme ve kararlılık sağlar.

QEMU (Quick EMUlator)

QEMU, donanım emülatörüdür. Disk, ağ kartı, ekran kartı gibi sanal donanımları oluşturur. KVM ile birlikte kullanıldığında CPU işlemleri donanımsal olarak çalışır, sadece I/O emüle edilir.

libvirt

Sanallaştırma yönetim API'si ve daemon. KVM, QEMU, Xen gibi farklı hipervizörleri ortak arayüzle yönetir. virsh komut satırı aracı ve virt-manager grafik arayüzü libvirt kullanır.

Gereksinimler

CPU sanallaştırma desteği kontrol edin:

egrep -c '(vmx|svm)' /proc/cpuinfo

0'dan büyükse destekleniyor demektir. vmx Intel, svm AMD işlemciler içindir.

BIOS/UEFI'de sanallaştırma etkin olmalıdır. Genellikle varsayılan açıktır.

KVM modül kontrolü:

lsmod | grep kvm

Kurulum

Ubuntu/Debian

sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager

Paketler:

  • qemu-kvm: QEMU ve KVM
  • libvirt-daemon-system: Sanallaştırma servisi
  • libvirt-clients: virsh komutu
  • bridge-utils: Ağ köprüleme
  • virt-manager: Grafik arayüz

CentOS/RHEL

sudo dnf install qemu-kvm libvirt virt-manager virt-install

Arch/Manjaro

sudo pacman -S qemu virt-manager virt-viewer dnsmasq bridge-utils

Servis Başlatma

sudo systemctl enable --now libvirtd

Kullanıcı İzinleri

Root olmadan sanal makine yönetimi için kullanıcıyı gruplara ekleyin:

sudo usermod -aG libvirt $USER sudo usermod -aG kvm $USER

Oturumu kapatıp açın veya:

newgrp libvirt

virt-manager ile Sanal Makine Oluşturma

virt-manager, kullanıcı dostu grafik arayüz sunar.

Başlatma

virt-manager

Yeni Sanal Makine

  1. File > New Virtual Machine
  2. Kurulum ortamını seçin (ISO dosyası)
  3. ISO dosyasını Browse ile seçin
  4. İşletim sistemi otomatik algılanır (algılanmazsa manuel seçin)
  5. RAM ve CPU ayarı (fiziksel kaynakların yarısını geçmemeli)
  6. Disk boyutu belirleyin
  7. Ağ ayarları (varsayılan NAT veya köprü)
  8. Finish ile oluşturun

Sanal makine açılır ve işletim sistemi kurulumu başlar.

Sanal Makine Ayarları

virt-manager'da VM'e çift tıklayıp üst menüden "Show virtual hardware details" ile ayarlara erişin:

CPU: Çekirdek sayısı, topoloji Memory: RAM miktarı Disk: Disk ekleme, çıkarma NIC: Ağ arayüzü Display: Ekran protokolü (SPICE, VNC) Video: Ekran kartı modeli

virsh ile Komut Satırı Yönetimi

virsh, libvirt'in komut satırı aracıdır. Scriptler ve sunucu yönetimi için kullanışlıdır.

Temel Komutlar

Sanal makineleri listele:

virsh list --all

VM başlat:

virsh start vm-adi

VM kapat (düzgün):

virsh shutdown vm-adi

VM zorla kapat:

virsh destroy vm-adi

VM yeniden başlat:

virsh reboot vm-adi

VM sil:

virsh undefine vm-adi

Disk dosyasını da silmek için:

virsh undefine vm-adi --remove-all-storage

Bilgi Görüntüleme

VM detayları:

virsh dominfo vm-adi

CPU ve bellek kullanımı:

virsh domstats vm-adi

Konsol Erişimi

Seri konsol (metin):

virsh console vm-adi

Grafik konsol:

virt-viewer vm-adi

Kaynak Düzenleme

RAM değiştirme (çalışırken):

virsh setmem vm-adi 4G --live

CPU değiştirme:

virsh setvcpus vm-adi 4 --live

Snapshot (Anlık Görüntü)

Snapshot oluştur:

virsh snapshot-create-as vm-adi snapshot1 "Kurulum sonrası"

Snapshot listele:

virsh snapshot-list vm-adi

Snapshot'a dön:

virsh snapshot-revert vm-adi snapshot1

Snapshot sil:

virsh snapshot-delete vm-adi snapshot1

Komut Satırından VM Oluşturma

virt-install komutuyla:

virt-install \ --name ubuntu-server \ --ram 4096 \ --vcpus 2 \ --disk path=/var/lib/libvirt/images/ubuntu.qcow2,size=40 \ --os-variant ubuntu22.04 \ --network network=default \ --graphics vnc \ --cdrom /home/user/ubuntu-22.04.iso

Parametre açıklamaları:

  • --name: VM adı
  • --ram: RAM (MB)
  • --vcpus: CPU sayısı
  • --disk: Disk dosyası ve boyutu (GB)
  • --os-variant: İşletim sistemi (osinfo-query os ile listele)
  • --network: Ağ ayarı
  • --graphics: Ekran protokolü
  • --cdrom: Kurulum ISO'su

Disk Yönetimi

Disk Formatları

qcow2: KVM için önerilen format. Sıkıştırma, şifreleme, snapshot desteği. raw: Ham format. Basit, hızlı ama özellik az.

Disk Oluşturma

qemu-img create -f qcow2 disk.qcow2 50G

Disk Bilgisi

qemu-img info disk.qcow2

Disk Boyutunu Artırma

qemu-img resize disk.qcow2 +20G

VM içinde de dosya sistemini genişletmeyi unutmayın.

Format Dönüştürme

qemu-img convert -f raw -O qcow2 disk.raw disk.qcow2

Ağ Yapılandırması

NAT (Varsayılan)

Sanal makineler dış ağa NAT üzerinden erişir. Dışarıdan VM'e doğrudan erişim yok. Geliştirme ve test için yeterli.

Ağları listele:

virsh net-list --all

Varsayılan ağı başlat:

virsh net-start default virsh net-autostart default

Bridge (Köprü)

VM'ler fiziksel ağda görünür. Sunucu ortamları için önerilir.

/etc/netplan/01-bridge.yaml (Ubuntu):

network: version: 2 ethernets: enp0s3: dhcp4: no bridges: br0: interfaces: [enp0s3] dhcp4: yes

Uygula:

sudo netplan apply

VM oluştururken --network bridge=br0 kullanın.

Performans Optimizasyonu

VirtIO Sürücüleri

VirtIO, sanallaştırma için optimize edilmiş sürücülerdir. Disk ve ağ performansını önemli ölçüde artırır.

VM ayarlarında:

  • Disk: Bus: VirtIO
  • Ağ: Device model: virtio

Windows misafirde virtio sürücülerini ayrıca kurun.

Huge Pages

Büyük bellek sayfaları performans artırır:

echo 1024 | sudo tee /proc/sys/vm/nr_hugepages

CPU Pinning

CPU çekirdeklerini sabitleme:

virsh vcpupin vm-adi 0 2 virsh vcpupin vm-adi 1 3

Klonlama ve Şablonlar

VM Klonlama

virt-clone --original vm-adi --name vm-kopya --auto-clone

Şablon Oluşturma

VM'i hazırlayın (sysprep veya cloud-init) Kapatın Klonlayarak yeni VM'ler oluşturun

Yedekleme

VM kapalıyken disk dosyasını kopyalayın:

cp /var/lib/libvirt/images/vm.qcow2 /backup/

XML tanımını yedekleyin:

virsh dumpxml vm-adi > vm-adi.xml

Geri yükleme:

virsh define vm-adi.xml

Sorun Giderme

libvirtd servisi çalışmıyor:

sudo systemctl status libvirtd sudo systemctl restart libvirtd

İzin hatası:

Kullanıcının libvirt grubunda olduğunu kontrol edin.

KVM modülü yüklenmemiş:

sudo modprobe kvm_intel # Intel için sudo modprobe kvm_amd # AMD için

Celil Uyanikoglu

Yazan Celil Uyanikoglu

25 yıldır bilgi işlem piyasasında farklı dallarda uzmanlaşan bir Bilgisayar Mühendisi

Yorum

Henüz yorum yok.

Sohbete katıl. Yorumlar yayınlanmadan önce moderasyondan geçer.

Yorum yap

E-posta adresin yayınlanmaz. Yorumlar moderasyondan sonra yayınlanır.

Sırada

İlgili notlar