Sistem/DevOps•7 dk okuma

Sanal Makine Snapshot ve Checkpoint Tuzakları: Disk Şişmesi ve Birleştirme (Consolidation) Krizleri

Sistem yöneticilerinin en sık yaptığı hata: Snapshot'ı yedekleme sanmak. Delta disklerin (.vmdk / .avhdx) kontrolsüz büyümesi, LUN alan tükenmesi ve canlı disk konsolidasyonu operasyonları.

AE

Ahmet Ertekin

19 August 2023

Sanal Makine Snapshot ve Checkpoint Tuzakları: Disk Şişmesi ve Birleştirme (Consolidation) Krizleri

Sanal Makine Snapshot ve Checkpoint Tuzakları: Disk Şişmesi ve Birleştirme (Consolidation) Krizleri

Bir sistem yöneticisinin sabah alarmıyla uyanıp "Tüm sunucular pause moduna geçti, depolama alanı %100 doldu!" çığlığını duymasının bir numaralı sorumlusu, unutulmuş sanal makine anlık görüntüleridir (Snapshot / Checkpoint). Snapshot kesinlikle bir yedekleme (backup) yöntemi değildir.

Snapshot Arka Planda Nasıl Çalışır?

Bir sanal makinede Snapshot aldığınız anda:

  1. Mevcut ana sanal disk (örneğin disk.vmdk veya disk.vhdx) salt-okunur (read-only) kilitlenir.
  2. Yanına yeni bir delta (fark) diski açılır (disk-000001.vmdk veya disk.avhdx).
  3. Bu andan itibaren yapılan her yazma işlemi, silme işlemi ve değişiklik bu delta diske yazılır.

Bir snapshot aylarca silinmezse, delta diski ana diskten daha büyük hale gelebilir! Üstelik sanal makine bir veriyi okumak istediğinde önce delta diske, orada yoksa ana diske bakmak zorunda kalır; bu da disk I/O gecikmelerini (latency) fırlatır.

VMware vSphere'de "Needs Consolidation" Krizi

Snapshot yöneticisinden snapshot'ı sildiğinizde, hipervizör delta diskteki verileri ana diske yazarak birleştirir (Consolidation). Ancak yoğun I/O yapan (örneğin MS SQL veya Exchange) sunucularda yazma hızı birleştirme hızını geçerse işlem hata verir ve vSphere şu uyarıyı yakar: "Virtual machine disks consolidation needed."

# SSH üzerinden kilitli delta diskleri ve VM process ID'sini tespit etme
ps | grep -i "VM_NAME"
# Snapshot zincirini komut satırından kontrol etme
vmkfstools -q -v10 /vmfs/volumes/Datastore01/VM_NAME/VM_NAME-000001.vmdk

Canlı Ortamda Güvenli Consolidation Nasıl Yapılır?

  1. Yoğun saatlerde asla büyük snapshot silmeyin. Bu işlem disk üzerinde devasa bir I/O yükü üretir.
  2. vCenter üzerinden sağ tıklayıp Snapshots -> Consolidate deyin.
  3. Eğer konsolidasyon kilitlenirse, yedekleme yazılımının (Veeam) sanal diski kendi üzerine bağlayıp (HotAdd) kilitleyip kilitlemediğini kontrol edin. Veeam proxy sunucusunun ayarlarından kilitli kalan vDisk'i çıkarın (Detach).

Hyper-V Tarafında Checkpoint Türleri: Standart vs Production

Hyper-V Windows Server 2016 ile birlikte iki tür checkpoint sunar:

  • Production Checkpoint (Varsayılan): VSS (Volume Shadow Copy) servisini tetikleyerek veritabanı tutarlı anlık görüntü alır. Üretim ortamında tek kabul edilebilir checkpoint budur.
  • Standard Checkpoint: VM'in RAM durumunu da diske kaydeder. Active Directory etki alanı denetleyicilerinde Standard Checkpoint'ten geri dönmek USN Rollback felaketine yol açar ve veritabanını bozar!

Karşılaşılan Kritik Hatalar ve Çözüm İpuçları

  • Depolama Alanının Tamamen Dolması: LUN üzerinde sıfır bayt kaldığında ESXi tüm VM'leri askıya alır (Suspend). Yapılacak ilk hamle: Başka bir LUN'a geçici olarak birkaç önemsiz VM'i Storage vMotion ile taşımak veya .vswp (swap) dosyasını başka bir datastore'a yönlendirmektir. Alan açıldıktan sonra konsolidasyon derhal tamamlanmalıdır.
  • PowerCLI ile Unutulan Snapshotları Yakalama:
# 3 günden eski tüm snapshotları listeleyen hayat kurtarıcı betik
Get-VM | Get-Snapshot | Where-Object {$_.Created -lt (Get-Date).AddDays(-3)} | Select-Object VM, Name, Created, SizeGB

Mühendis Notu

Kurumsal politikanız katı olmalıdır: Hiçbir snapshot sistemde 72 saatten fazla kalamaz. Yazılım güncellemesi veya yama öncesi alınır, test edilir, sistem kararlıysa en geç 48 saat içinde birleştirilerek silinir.