Sanallaştırma platformu ararken çoğu insanın radarına iki isim girer: VMware ve Proxmox. Üçüncü bir seçenek daha var ve ticari bir ürünün açık kaynak devamı olduğu için hem olgun hem ücretsiz: XCP-ng. XCP-ng kurulumu, uzun yıllardır kurumsal ortamlarda çalışan XenServer mimarisini alıp tamamen açık bir lisansla önüne koyar; canlı göç, havuz yönetimi, yüksek erişilebilirlik ve artımlı yedekleme gibi özelliklerin hiçbiri lisans arkasında kilitli değildir.
Bu rehberde XCP-ng'nin altında yatan Xen mimarisini, kuruluma başlamadan önce yapman gereken donanım kontrolünü, kurulumun kendisini, depolama havuzu (SR) seçiminin neden ilk beş dakikada verilmesi gereken bir karar olduğunu, Xen Orchestra ile yönetimi, xe komut satırını ve birden fazla host'u havuz hâline getirip canlı göç yapmayı anlatacağım. Sonunda yeni başlayanların en sık düştüğü tuzakları topladım.
XCP-ng Nedir ve Xen Mimarisi#
XCP-ng, Xen hipervizörü üzerine kurulu bir sanallaştırma platformudur. Xen'in mimarisi diğer hipervizörlerden bir noktada belirgin biçimde ayrılır: donanımın hemen üzerinde çok ince bir hipervizör katmanı vardır ve bu katman aygıt sürücüleri içermez. Sürücüler, dom0 adı verilen ayrıcalıklı bir kontrol alanında çalışır. dom0 aslında özel yetkileri olan bir Linux sistemidir; ağ kartını, disk denetleyicisini o yönetir ve diğer tüm sanal makineler (domU) donanıma onun aracılığıyla erişir.
Bu ayrımın pratik iki sonucu var. Birincisi, hipervizörün kendisi çok küçüktür ve saldırı yüzeyi dardır. İkincisi — ve kurulum yaparken hatırlaman gereken kısım — dom0'ın kaynakları önemlidir. dom0'a ayrılan bellek varsayılan olarak sınırlıdır ve çok sayıda sanal makine ya da yoğun disk trafiği olan bir host'ta yetmeyebilir; bu durumda tüm sistemin tepki süresi bozulur. Büyük bir host kuruyorsan dom0 belleğini bilinçli olarak artırmak, yapman gereken ilk ayarlamalardan biridir.
Sanal makineler iki modda çalışabilir: HVM (donanım destekli tam sanallaştırma) ve PV/PVHVM (paravirtualization). Modern kurulumlarda misafirler HVM olarak açılır ve paravirtual sürücülerle (disk ve ağ) çalışır — yani hem uyumluluk hem performans elde edilir. Bu, VMware'deki VMXNET3 ya da KVM'deki VirtIO mantığının Xen'deki karşılığıdır. Platformları karşılaştırmak istiyorsan VMware ve Proxmox karşılaştırması yazısındaki kriterler XCP-ng için de büyük ölçüde geçerlidir.
Donanım Gereksinimleri ve Ön Kontrol#
XCP-ng'nin donanım uyumluluğu, altında CentOS tabanlı bir dom0 olduğu için oldukça geniştir; ESXi'nin katı listesiyle kıyaslandığında çok daha az sürprizle karşılaşırsın. Yine de kuruluma başlamadan önce şunları doğrula:
| Bileşen | Minimum | Pratikte önerilen |
|---|---|---|
| CPU | 64-bit x86, VT-x / AMD-V açık | 8+ çekirdek |
| RAM | 4 GB | 32 GB ve üzeri |
| Kurulum diski | 46 GB | 100 GB+ ayrı SSD |
| Ağ kartı | 1 adet | 2 adet (yönetim + VM trafiği) |
| Sanal makine deposu | Kurulum diskinden ayrı | RAID'li dizi veya paylaşımlı depolama |
BIOS/UEFI tarafında sanallaştırmayı (VT-x / AMD-V) ve ileride PCI cihaz geçişi düşünüyorsan IOMMU'yu (VT-d / AMD-Vi) aç. Kurulum diskini sanal makine diskinden ayırman kritik bir alışkanlıktır: hipervizörü yeniden kurman gerektiğinde sanal makine verilerine dokunmamış olursun.
Kurulum Adımları#
ISO'yu indirdikten sonra USB'ye yazıp sunucudan boot edeceksin. Uzak bir veri merkezindeysen IPMI/iDRAC/iLO üzerinden sanal medya olarak bağlamak çok daha pratiktir.
# ISO'yu USB'ye yaz (of= değerini kendi aygıtınla değiştir, iki kez kontrol et)
lsblk -o NAME,SIZE,MODEL,TRAN
sudo dd if=xcp-ng-8-installer.iso of=/dev/sdX bs=4M status=progress oflag=sync
sync
Kurulum sihirbazı sırasıyla şunları sorar:
- Klavye düzeni ve lisans kabulü.
- Kurulum diski — hipervizörün kendisinin yazılacağı disk.
- Sanal makine deposu (SR) — sanal disklerin duracağı alan. Burada iki seçenek çıkar: "thin provisioning" destekleyen dosya tabanlı yapı ya da yerel LVM. Bu seçim sonradan değiştirilemez, aşağıdaki bölümü okumadan geçme.
- Kurulum kaynağı (yerel medya) ve isteğe bağlı ek paketler.
- root parolası.
- Yönetim ağı — hangi ağ kartının yönetim için kullanılacağı, statik IP, ağ geçidi ve DNS. Hipervizöre DHCP verme.
- Host adı ve NTP sunucuları. NTP'yi mutlaka yapılandır; zaman kayması havuz üyeliğini ve sertifikaları bozar.
Kurulum genellikle on dakika içinde biter. Yeniden başlattığında konsol ekranında (xsconsole) host'un IP'sini görürsün. XCP-ng'de VMware'inki gibi kutudan çıkan tam donanımlı bir web arayüzü yoktur; yönetim için Xen Orchestra kuracaksın.
Depolama Havuzu (SR) Seçimi#
Depolama havuzu tipi, snapshot davranışını ve alan kullanımını doğrudan belirler. En yaygın seçenekler şunlar:
| SR tipi | Thin provisioning | Tipik kullanım | Not |
|---|---|---|---|
| Yerel LVM | Hayır | Tek host, basit kurulum | Disk baştan tam ayrılır |
| Yerel EXT (dosya tabanlı) | Evet | Tek host, alan verimliliği | Snapshot ve klon daha esnek |
| NFS | Evet | Havuz + paylaşımlı depolama | Canlı göç için ideal |
| iSCSI (LVM) | Hayır | Havuz + blok depolama | Performans iyi, alan katı |
| Dağıtık (hiperbirleşik) | Evet | Çok düğümlü, paylaşımsız | Ağ tasarımı kritik |
Kurulum sırasında "thin provisioning" seçeneğini işaretlemezsen yerel LVM ile devam edersin ve 100 GB'lık bir sanal disk, içi boş olsa bile 100 GB yer kaplar. Küçük ortamlarda bu sonradan can sıkar. Havuz kurup canlı göç yapmayı planlıyorsan zaten paylaşımlı bir SR'ye (NFS ya da iSCSI) ihtiyacın olacak; bu durumda yerel SR yalnızca ISO ve geçici veri için kalır.
# Tanımlı depolama havuzlarını listele
xe sr-list params=uuid,name-label,type,physical-size,physical-utilisation
# NFS tabanlı paylaşımlı bir SR oluştur
xe sr-create name-label="nfs-vm-deposu" type=nfs shared=true \
device-config:server=185.12.34.60 device-config:serverpath=/export/vm
# ISO deposu ekle (kurulum imajları için)
xe sr-create name-label="iso-deposu" type=iso content-type=iso \
device-config:location=/mnt/iso device-config:legacy_mode=true
Geleneksel VHD tabanlı depolama havuzlarında tek bir sanal diskin boyutunda üst sınır bulunduğunu unutma; çok büyük tek disk gerektiren iş yükleri için desteklenen disk formatını ve sürüm notlarını kurulum öncesi kontrol et. Diskleri fiziksel katmanda izlemeyi de ihmal etme; SMART ve RAID ile disk arızası tespiti yazısındaki kontroller dom0 üzerinde de çalışır.
Xen Orchestra ile Yönetim#
Xen Orchestra, XCP-ng'nin web tabanlı yönetim arayüzüdür ve iki biçimde gelir. XOA, hazır bir sanal cihaz olarak indirilip host'a dağıtılır; ücretsiz planla temel yönetimi yapar, üst planlarda yedekleme ve gelişmiş özellikler açılır. Kaynaktan derlenen XO ise depodan çekilip kendin kurduğunda tüm özellikleri ücretsiz kullanmanı sağlar; karşılığında güncellemeyi ve bakımı sen üstlenirsin.
Xen Orchestra'yı kurduktan sonra host'u ekleyip her şeyi tek arayüzden yönetirsin: sanal makine oluşturma, snapshot, canlı göç, yedekleme planları, kullanıcı yetkilendirme ve performans grafikleri. Yedekleme tarafında artımlı (delta) yedek, sürekli çoğaltma ve NFS/SMB/S3 hedeflerine yazma yetenekleri bu arayüzden gelir — yani XCP-ng'de yedekleme için ayrı bir ürün satın alman gerekmez.
Windows üzerinden çalışmayı tercih edenler için topluluk tarafından geliştirilen bir masaüstü istemcisi de var, ancak yeni özellikler oraya daha geç ulaşır. Ciddi bir ortamda Xen Orchestra'yı asıl yönetim aracın yapman doğru olur.
Sanal Makine Oluşturma ve xe Komutları#
Arayüzden sanal makine oluşturmak basittir: şablon seç, ISO bağla, CPU/RAM/disk ver, ağı seç ve başlat. Komut satırı ise otomasyon ve sorun giderme için vazgeçilmezdir. En sık kullandığım komutlar:
# Host bilgileri ve sürüm
xe host-list params=uuid,name-label,software-version
# Şablonları listele (Ubuntu, Debian, Windows vb.)
xe template-list name-label="Ubuntu*" params=uuid,name-label
# Şablondan yeni makine oluştur
xe vm-install template="Ubuntu Focal Fossa 20.04" new-name-label="web01"
# Makineye CPU ve bellek ata
xe vm-param-set uuid=<VM-UUID> VCPUs-max=4 VCPUs-at-startup=4
xe vm-memory-limits-set uuid=<VM-UUID> static-min=2GiB dynamic-min=2GiB \
dynamic-max=4GiB static-max=4GiB
# Makineleri listele ve başlat / kapat
xe vm-list params=uuid,name-label,power-state
xe vm-start uuid=<VM-UUID>
xe vm-shutdown uuid=<VM-UUID>
# Snapshot al ve listele
xe vm-snapshot uuid=<VM-UUID> new-name-label="guncelleme-oncesi"
xe snapshot-list params=uuid,name-label,snapshot-of
Sanal makine kurulumundan sonra atlanmaması gereken adım misafir araçlarını (guest tools) kurmaktır. Bunlar olmadan hipervizör misafirin IP adresini göremez, düzgün kapatma sinyali gönderemez ve bellek raporlaması çalışmaz:
# Debian / Ubuntu misafirinde
sudo apt update && sudo apt install -y xe-guest-utilities
# RHEL / Rocky / AlmaLinux misafirinde
sudo dnf install -y xe-guest-utilities-latest
# Servisin çalıştığını doğrula
systemctl status xe-linux-distribution --no-pager
Windows misafirlerinde araçlar bir ISO olarak bağlanır ve içindeki kurulum paketi çalıştırılır; paravirtual disk ve ağ sürücüleri de bu pakette gelir.
Havuz Kurma, Canlı Göç ve Yüksek Erişilebilirlik#
Birden fazla host'u tek bir yönetim birimi hâline getirmek için havuz (pool) kurarsın. Havuzda bir host "pool master" olur ve yönetim isteklerini o karşılar; diğerleri üye olur. Havuz kurmanın ön koşulu, host'ların benzer CPU ailesine sahip olması ve aynı XCP-ng sürümünü çalıştırmasıdır.
# Üye host üzerinde çalıştırılır: havuza katıl
xe pool-join master-address=185.12.34.50 master-username=root master-password=<parola>
# Havuz ve üyeleri gör
xe pool-list params=uuid,name-label,master
xe host-list params=uuid,name-label,address
# Çalışan bir makineyi başka host'a canlı göç ettir
xe vm-migrate uuid=<VM-UUID> host-uuid=<HEDEF-HOST-UUID> live=true
Canlı göçün sorunsuz çalışması için sanal makinenin diskinin her iki host'un da eriştiği paylaşımlı bir SR'de bulunması gerekir. Paylaşımlı depolama yoksa diski de taşıyan göç mümkündür ama belirgin biçimde uzun sürer ve ağ trafiği yaratır.
Yüksek erişilebilirliği (HA) etkinleştirdiğinde havuz, host'ların sağlığını paylaşımlı depolama üzerinden izler ve bir host kaybolduğunda üzerindeki makineleri hayatta kalan host'larda yeniden başlatır. Burada VMware'deki HA ile aynı kural geçerli: makineler yeniden başlatılır, kesintisiz devam etmez ve kümede bir host'un yükünü karşılayacak boş kapasite bulunmalıdır. Aynı mantığın VMware'deki karşılığını vCenter nedir, ne zaman gerekir yazısında ayrıntılı anlattım.
Güncelleme, Yedekleme ve Sık Yapılan Hatalar#
Güncellemeleri dom0 üzerinden yaparsın ve havuzda önce master, sonra üyeler sırasını izlemek gerekir. Her host'u güncellemeden önce bakım moduna alıp üzerindeki makineleri boşaltmalısın:
# Host'u bakım moduna al (VM'ler diğer host'lara taşınır)
xe host-disable uuid=<HOST-UUID>
xe host-evacuate uuid=<HOST-UUID>
# Güncellemeleri uygula ve yeniden başlat
yum update -y
reboot
# Açılıştan sonra host'u tekrar devreye al
xe host-enable uuid=<HOST-UUID>
Sık yapılan hatalar şunlar:
dom0 belleğini varsayılanda bırakmak. Büyük bir host'ta çok sayıda makine çalıştırıyorsan dom0 darboğaza girer; disk ve ağ tüm makineler için ondan geçtiği için sonuç tüm sistemde yavaşlamadır. Host kapasitesine göre dom0 belleğini artır.
Kurulumda yanlış SR tipini seçmek. Thin provisioning'i kaçırıp yerel LVM ile devam etmek, alan sıkıntısı çekene kadar fark edilmez ve sonradan düzeltmesi makineleri taşımayı gerektirir.
Misafir araçlarını kurmamak. Makine çalışır ama IP görünmez, düzgün kapatma çalışmaz ve yedekleme tutarlılığı düşer. Her yeni makinede bunu standart adım yap.
Snapshot'ı yedek sanmak. Snapshot aynı depolama üzerindedir; disk giderse o da gider. Uzun süre bırakılan snapshot'lar zincir büyüttüğü için performansı düşürür ve alanı yer. Ayrıntısı için sanal makine snapshot yönetimi yazısına bak; gerçek yedekleme için Xen Orchestra'nın artımlı yedeklerini kur ya da yedekleme hizmetimizi değerlendir.
Güncellemeyi havuz sırasına uymadan yapmak. Üye host'u master'dan önce güncellemek sürüm uyumsuzluğu yaratır ve havuz üyeliği bozulabilir. Sırayı bozma.
Sıkça Sorulan Sorular#
XCP-ng tamamen ücretsiz mi#
Hipervizörün kendisi açık kaynak ve tamamen ücretsizdir; canlı göç, havuz, HA gibi özellikler lisans arkasında değildir. Ücretli olan kısım isteğe bağlı üretici desteği ve hazır Xen Orchestra sanal cihazının üst planlarıdır. Xen Orchestra'yı kaynaktan derleyerek tüm yönetim ve yedekleme özelliklerine ücret ödemeden de ulaşabilirsin; karşılığında kurulum ve güncelleme sorumluluğu sende olur.
XCP-ng ile XenServer arasındaki fark ne#
XCP-ng, Citrix'in XenServer (sonraki adıyla Citrix Hypervisor) ürününün açık kaynak çatallamasıdır. Aynı Xen tabanlı mimariyi ve büyük ölçüde aynı xe komut setini paylaşırlar; bu yüzden XenServer bilen biri XCP-ng'ye hemen uyum sağlar. Temel fark lisanslama ve özellik kısıtlarıdır: XCP-ng'de ticari lisansla kilitlenen bir özellik yoktur ve geliştirme topluluk ile üreticinin ortak yürüttüğü açık bir süreçle ilerler.
Web arayüzü neden kutudan çıkmıyor#
XCP-ng'nin tasarım tercihi, yönetim katmanını hipervizörden ayrı tutmaktır. Host'un kendisinde yalnızca konsol tabanlı basit bir arayüz (xsconsole) bulunur; asıl yönetim Xen Orchestra ile yapılır. Bunun avantajı, tek bir yönetim arayüzünden onlarca host'u ve birden fazla havuzu birlikte yönetebilmendir. Dezavantajı ise ilk kurulumda fazladan bir bileşen daha kurman gerekmesidir.
VMware'den XCP-ng'ye sanal makine taşıyabilir miyim#
Evet. Xen Orchestra, VMware ortamından sanal makine içeri aktarma yeteneğine sahiptir; ayrıca OVA/OVF dosyalarını da içeri alabilirsin. Taşımadan önce misafir işletim sistemini hazırlaman gerekir: VMware Tools'u kaldır, Windows makinelerde paravirtual disk sürücülerinin sorun çıkarmaması için gerekli hazırlığı yap ve ağ yapılandırmasını not al. Küçük bir test makinesiyle başlayıp süreci doğrulamadan üretim makinelerini taşıma.
Kaç host'a kadar tek havuzda çalışabilirim#
Havuz başına desteklenen host sayısı sürüme göre belirlenir ve pratikte çoğu orta ölçekli ortam için fazlasıyla yeterlidir. Asıl sınırlayıcı genellikle host sayısı değil, paylaşımlı depolamanın ve yönetim ağının kapasitesidir. Büyük ortamlarda birden fazla havuz kurup hepsini tek bir Xen Orchestra üzerinden yönetmek yaygın ve sağlıklı bir yaklaşımdır.
Yedeklemeyi nasıl kurmalıyım#
Xen Orchestra üzerinden zamanlanmış yedekleme işleri tanımlarsın: tam yedek, artımlı (delta) yedek ya da başka bir host'a sürekli çoğaltma. Hedef olarak NFS, SMB ya da S3 uyumlu bir depolama seçebilirsin. Kritik olan iki nokta: yedekleri hipervizörle aynı fiziksel depolamada tutma ve geri dönüş testini düzenli olarak yap — hiç denenmemiş bir yedek, yedek sayılmaz.
Kapanış#
XCP-ng, lisans bütçesi olmayan ama kurumsal özelliklerden vazgeçmek istemeyen ekipler için gerçekten ciddi bir seçenek. Aklında kalması gereken dört şey: kurulum sırasında depolama havuzu tipini bilinçli seç, çünkü sonradan değiştirmek makineleri taşımayı gerektirir; büyük host'larda dom0 belleğini varsayılanda bırakma; her misafirde guest tools kurmayı standart hâline getir; ve güncellemeleri havuzda önce master, sonra üyeler sırasıyla, host'ları boşaltarak yap.
Üzerine hipervizör kuracağın fiziksel makineye ihtiyacın varsa dedicated sunucu paketlerimiz tam donanım kontrolü sağlar, kendi donanımını getirmek istersen colocation seçeneğimiz IPMI erişimiyle gelir. Sanallaştırma katmanını hiç işletmeden kaynak kullanmak istersen VDS ve bulut sunucu paketlerimiz hazır teslim edilir; işletim, izleme ve güncelleme yükünü paylaşmak istersen sunucu yönetimi hizmetimize göz atabilirsin.