• BT Ekipleri İçin

ESXi ve Hyper-V'de Snapshot Zinciri Bozulduğunda: İlk Adımlar

Ana disk ile iki fark diskinden oluşan snapshot zincirinde kopan bağı gösteren şema

Sanal makine açılmıyor ve hata iletisi bir disk dosyasının "üst diskiyle uyuşmadığını" ya da "bulunamadığını" söylüyor. Veri büyük ihtimalle hâlâ datastore'da, ama parçalar arasındaki bağ kopmuş. Bu noktada atılan ilk iki adım, verinin tam mı yoksa eksik mi döneceğini belirler. Bu yazı VMware ESXi ve Hyper-V'de snapshot (checkpoint) zincirinin nasıl çalıştığını, neden koptuğunu ve onarmaya başlamadan önce ne yapılması gerektiğini anlatıyor.

Kısa cevap: Önce sanal makinenin bütün dosyalarını başka bir depolamaya kopyalayın. Ana diski tek başına bir sanal makineye bağlayıp açmayın, fark disklerini silmeyin, yer yokken "tüm snapshot'ları sil" demeyin. Onarımı kopya üzerinde, zinciri salt okunur komutlarla doğruladıktan sonra yapın.

Zincir nasıl çalışır?

VMware ESXi. Bir sanal disk iki dosyadan oluşur: verinin durduğu vm-flat.vmdk ve onu tarif eden küçük metin dosyası vm.vmdk. Snapshot alındığında ana disk dondurulur ve yeni bir fark diski açılır: VMFS datastore'larda vm-000001-delta.vmdk ya da VMFS6'da ve 2 TB'tan büyük disklerde vm-000001-sesparse.vmdk. Onun da kendi tarif dosyası vardır. Sanal makine o andan sonra yalnızca en son fark diskine yazar.

Halkaları birbirine bağlayan şey tarif dosyalarındaki üç satırdır: diskin kendi kimliği (CID), üst diskin kimliği (parentCID) ve üst diskin dosya adı (parentFileNameHint). Her fark diskinin parentCID değeri, bir üstündeki diskin CID değerine eşit olmalıdır.

Hyper-V. Mantık aynıdır, adlar farklıdır. Ana disk .vhdx, her checkpoint'te açılan fark diski .avhdx dosyasıdır. Fark diski üst diskinin yolunu ve kimliğini kendi içinde tutar; sanal makine en yeni .avhdx dosyasına yazar.

İki platformda da kural tektir: fark diski, üst diskin snapshot anındaki hâline göre anlam taşır. Üst disk o andan sonra değişirse fark diskindeki bloklar yanlış zemine oturur.

İki platformun karşılıkları:

ÖğeVMware ESXiHyper-V
Ana diskvm-flat.vmdk ve tarif dosyası vm.vmdkdisk.vhdx
Fark diskivm-000001-delta.vmdk ya da -sesparse.vmdkdisk_XXXX.avhdx
Bağ bilgisiTarif dosyasında CID, parentCID, parentFileNameHintFark diskinin içinde üst diskin yolu ve kimliği
Snapshot kaydı.vmsd dosyasıCheckpoint yapılandırma dosyaları
Zinciri doğrulamavmkfstools -eTest-VHD
BirleştirmeConsolidate; ya da vmkfstools -i ile bağımsız kopyaMerge-VHD

Zincir neden kopar?

NedenNe olur
Datastore dolduFark diskleri büyür; yer bitince sanal makine durur, o sırada süren birleştirme yarıda kalır.
Birleştirme (consolidate, merge) yarıda kesildiGüç kesintisi, host çökmesi ya da işlemin elle durdurulması.
Yedekleme yazılımı sahipsiz snapshot bıraktıArayüzde snapshot görünmez ama sanal makine fark diskinden çalışmaya devam eder.
Ana disk tek başına bağlanıp açıldı"Veriye bir bakayım" diye yapılan bu işlem ana diskin kimliğini ve içeriğini değiştirir.
Dosyalar elle silindi ya da taşındı"Gereksiz" görünen fark dosyaları ve tarif dosyaları eksik kalır.
Alttaki depolama arızalandıZincir sorunu aslında bir RAID ya da LUN sorununun belirtisidir.

Karşınıza çıkan ileti, sorunun türünü söyler:

Platformİletinin söylediğiAnlamı
ESXiÜst disk, fark diski oluşturulduktan sonra değiştirilmiş; içerik kimlikleri uyuşmuyorCID ile parentCID eşleşmiyor
ESXiDisk ya da bağlı olduğu snapshot disklerinden biri açılamıyorZincirdeki bir dosya eksik ya da kilitli
Hyper-VSanal disk zinciri bozuk; üst disk ile fark diskinin kimlikleri uyuşmuyorÜst disk checkpoint'ten sonra değişmiş
Hyper-VFark diskinin üst diski bulunamıyorÜst diskin yolu değişmiş ya da dosya yerinde değil

İlk kural: önce kopyalayın

Sanal makine kapalıyken klasörünün tamamını başka bir depolamaya kopyalayın: bütün .vmdk dosyaları (ana disk, fark diskleri ve tarif dosyaları), .vmsd, .vmx ve günlük dosyaları; Hyper-V'de .vhdx, bütün .avhdx dosyaları ve yapılandırma dosyaları. Bundan sonraki her denemeyi kopya üzerinde yapın.

Kopyalamadan önce alttaki depolamanın sağlıklı olduğunu doğrulayın. Dizi degraded ise ya da okuma hatası veriyorsa kopyalamaya başlamayın; büyük bir kopyalama, sorunlu diziye bindirilebilecek en ağır yüktür. Önce rebuild öncesi kontrol listesine bakın.

Datastore doluysa yer açmak için snapshot dosyalarını değil, başka sanal makineleri ya da ISO dosyalarını taşıyın.

Yapılmaması gerekenler

İşlemSonucu
Ana diski tek başına bir sanal makineye bağlayıp açmakAçılan işletim sistemi diske yazar; fark disklerinin dayandığı zemin değişir.
Fark dosyalarını silmekSnapshot'tan sonra yazılan bütün veri oradadır.
Yer yokken "Delete All Snapshots" ya da birleştirme başlatmakİşlem geçici alana ihtiyaç duyar; yarıda kalırsa durum ağırlaşır.
Eski bir snapshot'a dönmek (revert)O andan sonraki değişiklikler atılır.
Tarif dosyasını yedeğini almadan düzenlemekYanlış bir değer zinciri büsbütün açılmaz hâle getirir; geri dönecek kopya kalmaz.
Hyper-V'de kimlik uyuşmazlığını yok sayarak bağlamak (-IgnoreIdMismatch)Üst disk değiştiyse zincir "bağlı" görünür ama içerik tutarsızdır.
Yanlış kurulmuş zincirle açılan sistemde chkdsk çalıştırmakTutarsız veriyi kalıcı hâle getirir.

Zinciri doğrulamak için komutlar

Aşağıdaki komutlar salt okunurdur.

# ESXi kabuğu: tarif dosyalarındaki bağları görün
cd /vmfs/volumes/DATASTORE/VM
ls -la
grep -E "^CID|^parentCID|parentFileNameHint" vm.vmdk vm-000001.vmdk vm-000002.vmdk

# Zincir tutarlı mı? En son fark diskinin tarif dosyasını verin.
# Sanal makine kapalı olmalı; açıkken "Failed to lock the file" hatası alınır.
vmkfstools -e vm-000002.vmdk
# Hyper-V (PowerShell)
Get-VHD -Path .\disk_XXXX.avhdx | Format-List Path, VhdType, ParentPath
Test-VHD -Path .\disk_XXXX.avhdx

grep komutunu yalnızca küçük tarif dosyalarına verin; -flat, -delta ve -sesparse dosyaları verinin kendisidir. Hyper-V'de zincir kopuksa Test-VHD bir hata iletisiyle birlikte False döndürür; bu, komutun değil zincirin sorunudur.

Onarım yolları (kopya üzerinde)

ESXi'de zincir tutarlıysa: en güvenli yol özgün dosyalara dokunmadan zincirin tamamını yeni ve bağımsız bir diske kopyalamaktır. Komut bütün halkaları okur ve birleşik bir disk üretir; hedefte yeterli boş alan gerekir.

vmkfstools -i vm-000002.vmdk /vmfs/volumes/HEDEF/vm-birlesik.vmdk -d thin

Çıkan diski yeni bir sanal makineye bağlayıp doğrulayın.

ESXi'de yalnızca kimlikler uyuşmuyorsa ve ana diskin snapshot'tan sonra hiç yazılmadığından eminseniz, fark diskinin tarif dosyasındaki parentCID değeri üst diskin CID değeriyle eşitlenerek zincir yeniden kurulabilir. Ana diske yazıldıysa bu düzeltme zinciri "tutarlı" gösterir ama içerik tutarsız kalır. Bu yolla açılan sistemi üretime geri almayın; veriyi temiz bir ortama aktarmak için kullanın.

Hyper-V'de üst diskin yalnızca yolu değiştiyse bağ yeniden kurulur; zincir Test-VHD ile doğrulandıktan sonra istenirse birleştirilir:

Set-VHD -Path .\disk_XXXX.avhdx -ParentPath D:\VM\disk.vhdx
Merge-VHD -Path .\disk_XXXX.avhdx -DestinationPath D:\VM\disk.vhdx

Birleştirme geri alınamaz ve diskler hiçbir sanal makineye bağlı değilken yapılır; ardından sanal makinenin disk yolu .vhdx dosyasına çevrilmelidir. Birden fazla fark diski varsa birleştirme en yeniden en eskiye doğru, halka halka yapılır.

Ne zaman durup destek almalı?

DurumNe yapmalı
Zincir tutarlı, yalnızca birleştirme gerekiyorKopya üzerinde yapılabilir
Üst diskin yalnızca yolu değişmişKopya üzerinde yapılabilir
Kimlikler uyuşmuyor, ana diske yazılmadığından eminsinizKopya üzerinde düzeltilebilirsistemi üretime almayın
Fark dosyaları silinmiş ya da üzerine yazılmışDurun
Ana disk snapshot'tan sonra açılıp kullanılmışDurun
Birleştirme hata vererek yarıda kalmışDurun
Datastore bağlanmıyor ya da alttaki dizi degraded veya offlineDurun
Sanal makine şifreli ve anahtar sunucusuna erişim yokDurun

"Durun" yazan durumlarda iş dosya düzeyinden blok düzeyine iner: silinen fark disklerinin datastore üzerinde aranması, bozuk dosya sistemi yapılarının onarılması, zincirin elle yeniden kurulması. Depolama tarafındaki arızalar için sunucu veri kurtarma sayfasına, dizi sorunlarında rebuild öncesi kontrol listesine bakabilirsiniz.

Laboratuvara ne gönderilir?

  • Sorun depolamadaysa: dizinin bütün diskleri, yuva numaralarıyla etiketlenmiş olarak.
  • Sorun yalnızca dosya düzeyindeyse: sanal makine klasörünün eksiksiz kopyası.
  • Platform ve sürüm bilgisi; datastore türü (VMFS5, VMFS6, NFS, vSAN ya da NTFS, ReFS, CSV).
  • Zaman çizelgesi: sorun ne zaman başladı, hangi işlemler denendi.

Tekrar yaşamamak için

  • Snapshot yedek değildir. Ana diskle aynı depolamada durur ve onsuz işe yaramaz.
  • Snapshot'ları kısa tutun. VMware'in kendi önerisi tek bir snapshot'ı 72 saatten uzun tutmamak ve zinciri iki üç halkayla sınırlamaktır.
  • Datastore boş alanı ve "birleştirme gerekiyor" uyarısı için alarm tanımlayın.
  • Yedekleme işlerinden sonra sahipsiz snapshot kalıp kalmadığını düzenli denetleyin.
  • Hyper-V'de üretim sistemleri için "production checkpoint" kullanın ve checkpoint'leri iş bitince birleştirin.

Sanal ortamda yedekleme düzeni için sanal ortamınızı veri kaybından nasıl korursunuz yazısına da bakabilirsiniz.

Sık sorulan sorular

Arayüzde snapshot görünmüyor ama klasörde fark dosyaları var. Silebilir miyim?
Hayır. Sanal makinenin yapılandırmasında diskin hangi dosyayı gösterdiğine bakın; fark diskini gösteriyorsa sanal makine hâlâ oradan çalışıyordur. Bu durumda yapılacak işlem silmek değil, birleştirmektir.

Birleştirme saatlerdir sürüyor. İptal etmeli miyim?
Büyük ve uzun süre biriktirilmiş fark disklerinde birleştirme saatler sürebilir. Hata vermediği sürece işlemi kesmeyin; yarıda kesilen birleştirme, baştaki sorundan daha ağır bir sorundur.

Ana diski salt okunur bağlasam olur mu?
Gerçekten salt okunur bağlanıyorsa içeriği değişmez. Uygulamada bunu garanti etmek zordur; işletim sistemi diski bağlarken günlük kayıtlarını işleyebilir. Güvenli olan, kopyası üzerinde çalışmaktır.

Emin olmadığınız adımı kopya üzerinde deneyin. Analiz ücretsizdir; onayınız olmadan işlem yapılmaz. Telefon: 0212 916 12 22 ya da ücretsiz analiz başvurusu.