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
- File > New Virtual Machine
- Kurulum ortamını seçin (ISO dosyası)
- ISO dosyasını Browse ile seçin
- İşletim sistemi otomatik algılanır (algılanmazsa manuel seçin)
- RAM ve CPU ayarı (fiziksel kaynakların yarısını geçmemeli)
- Disk boyutu belirleyin
- Ağ ayarları (varsayılan NAT veya köprü)
- 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
Henüz yorum yok.
Sohbete katıl. Yorumlar yayınlanmadan önce moderasyondan geçer.