İçeriğe atla
Sunucu

Proxmox LVM-Thin Havuzu Dolduğunda Ne Yapılmalı? Sanal Sunucuları Kurtarma Rehberi

Proxmox VE (Virtual Environment) üzerinde yerel depolama mimarisi olarak sıkça tercih edilen LVM-Thin, “thin provisioning” (esnek disk alanı tahsisi) yeteneği sayesinde sanal makinelere gerçekte var olandan daha fazla disk alanı atanabilmesine (over-provisioning) olanak tanır. Ancak bu esneklik, havuzun gerçek doluluk oranı takip edilmediğinde büyük bir riski beraberinde getirir. Proxmox LVM-Thin havuzu dolduğunda, veri yazmaya devam […]

5 dk okuma

Proxmox VE (Virtual Environment) üzerinde yerel depolama mimarisi olarak sıkça tercih edilen LVM-Thin, “thin provisioning” (esnek disk alanı tahsisi) yeteneği sayesinde sanal makinelere gerçekte var olandan daha fazla disk alanı atanabilmesine (over-provisioning) olanak tanır. Ancak bu esneklik, havuzun gerçek doluluk oranı takip edilmediğinde büyük bir riski beraberinde getirir. Proxmox LVM-Thin havuzu dolduğunda, veri yazmaya devam edemeyen sanal sunucular aniden kilitlenir, “Read-only” (Salt Okunur) moda geçer veya tamamen askıda (IO-freeze) kalır.

Bu rehberde, LVM-Thin havuzunun %100 dolması durumunda CLI üzerinden kriz anı yönetimini, sanal makineleri (VM) güvenli bir şekilde kurtarma adımlarını ve havuzu genişletme yöntemlerini bulacaksınız.

1. Kriz Anında İlk Teşhis: CLI ile Durum Kontrolü

Sanal sunucular yanıt vermeyi kestiğinde ve Proxmox arayüzünde diske yazma (I/O) hataları belirdiğinde, root kullanıcısı ile SSH üzerinden Proxmox hostuna bağlanın. Sorunun kaynağını doğrulamak için aşağıdaki komutları sırasıyla çalıştırın:

# Mantıksal hacimlerin (LV) doluluk oranlarını kontrol edin
lvs -a -o lv_name,lv_size,data_percent,metadata_percent,lv_attr

Bu komutun çıktısında, ilgili LVM-Thin havuzunun (genellikle data veya pve-data olarak adlandırılır) Data% değerinin 100.00 olduğunu görüyorsanız, havuz tamamen kilitlenmiş demektir. Ayrıca Metadata% alanının da dolup dolmadığını kontrol edin; metadata alanının dolması da havuzun kilitlenmesine yol açar.

Sistem loglarındaki hata mesajlarını yakalamak için:

dmesg | tail -n 50
# veya
journalctl -u pvedaemon --since "1 hour ago"

Loglarda thin-pool-name: space check failed veya write failed: No space left on device gibi ibareler krizin nedenini açıkça ortaya koyacaktır.

2. Sanal Sunucuları Kurtarma Adımları

Havuz %100 dolduğunda sanal makineler diske veri yazamadığı için normal yollarla kapatılamaz veya Proxmox arayüzünden doğrudan müdahale edilemeyebilir. Sistemi ayağa kaldırmak için aşağıdaki acil durum senaryolarından birini uygulamanız gerekir.

Yöntem A: Güvenli Alan Açma (Kalıntı ve Log Temizliği)

LVM-Thin havuzunu genişletmeden veya içeriden dosya silmeden önce, Proxmox hostunun kendi ana diskinde (root dosya sisteminde) yer açmak geçici bir rahatlama sağlayabilir (özellikle local ve local-lvm aynı disk üzerindeyse):

# Eski ve gereksiz Proxmox ISO dosyalarını silin
rm -rf /var/lib/vz/template/iso/*

# İşletim sistemi paket önbelleğini temizleyin
apt-get clean

# Eski sistem loglarını temizleyerek diskte yer açın
journalctl --vacuum-time=1d

Yöntem B: Askıda Kalan Sanal Makineleri Zorla Durdurma

Havuz dolduğu için I/O döngüsüne giren ve komut almayan VM’leri (Virtual Machine) kapatarak veri bozulmasının önüne geçebilirsiniz. Normal kapatma (shutdown) çalışmayacağı için zorunlu durdurma uygulanmalıdır:

# Kilitlenen VM'in ID'sini bulun (Örn: 101)
qm stop 101 --skiplock

# Eğer arayüz veya qm komutu yanıt vermiyorsa, işlemi KVm sürecinden sonlandırın
ps aux | grep kvm
kill -9 [VM_PID]

VM’leri durdurmak, LVM-Thin üzerindeki anlık yazma baskısını ortadan kaldıracak ve havuzun yönetim komutlarına tekrar yanıt vermesini sağlayacaktır.

3. LVM-Thin Havuzunu Genişletme (Resizing)

Sanal sunucuları kalıcı olarak kurtarmanın ve tekrar başlatabilmenin en sağlıklı yolu, LVM-Thin havuzunun boyutunu fiziksel olarak artırmaktır. Bunun için sunucuda boşta duran bir disk alanı, yeni bir disk veya mevcut Volume Group (VG) üzerinde ayrılmamış alan bulunmalıdır.

Mevcut Volume Group İçinde Alan Varsa Genişletme

Eğer vgs komutu çıktısında VFree (Boş Alan) kısmı yeterli görüyorsa, thin-pool hacmini doğrudan genişletebilirsiniz:

# Havuz adınızın 'data', VG adınızın 'pve' olduğunu varsayarsak 50GB genişletmek için:
lvextend -L +50G /dev/pve/data

# Havuzun metadata alanını da genişletmek gerekirse (Örn: 1GB):
lvextend --poolmetadatasize +1G /dev/pve/data

Yeni Disk Ekleyerek Volume Group Genişletme

Eğer sunucuya yeni bir fiziksel disk (Örn: /dev/sdb) eklendiyse, önce bu diski fiziksel hacim (PV) yapıp ardından mevcut gruba dahil etmelisiniz:

# Fiziksel hacim oluşturun
pvcreate /dev/sdb

# Diski mevcut pve Volume Group'una dahil edin
vgextend pve /dev/sdb

# Şimdi thin-pool alanını yeni eklenen alanla genişletin
lvextend -l +100%FREE /dev/pve/data

Genişletme işlemi tamamlandıktan sonra lvs komutu ile **Data%** oranının %100’den güvenli bir seviyeye (Örn: %80) düştüğünü doğrulayın.

4. Alternatif Çözüm: Sanal Makineyi Farklı Depolama Alanına Taşımak

Sunucuya yeni bir disk ekleme şansınız yoksa ancak Proxmox’a bağlı farklı bir depolama birimi (NFS, Samba, harici disk veya harici bir local disk) mevcutsa, kilitlenen sanal makinenin diskini o alana taşıyarak havuzu rahatlatabilirsiniz.

VM disklerini CLI üzerinden taşımak için (VM kapalı konumdayken):

# VM 101'in diskini 'local-lvm' havuzundan 'backup-storage' adlı depolama alanına taşır
qm move_disk 101 scsi0 backup-storage --delete

Kritik Not: Havuz %100 dolu olduğunda taşıma işlemi sırasında geçici dosyalar yazılamayacağı için hata alınabilir. Bu nedenle öncelikle yukarıdaki adımlarla havuzda çok küçük de olsa bir alan açılması veya VM’in imajının dd komutuyla harici bir yere klonlanması gerekebilir.

5. Gelecekte Havuzun Dolmasını Önlemek İçin Alınacak Önlemler

Proxmox LVM-Thin havuzunun aniden dolması gibi kriz durumlarıyla tekrar karşılaşmamak için altyapınızda şu otomasyonları ve yapılandırmaları uygulamanız önerilir:

  • Auto-Extend Özelliğini Aktif Edin: LVM’in belirli bir eşik geçildiğinde havuzu otomatik genişletmesini sağlayabilirsiniz. /etc/lvm/lvm.conf dosyasını düzenleyin:
    thin_pool_autoextend_threshold = 80
    thin_pool_autoextend_percent = 20

    (Bu ayar, havuz %80 doluluğa ulaştığında VG üzerinde boş alan varsa havuzu %20 oranında otomatik büyütür.)

  • Sanal Makinelerde Discard/TRIM Desteğini Açın: Sanal makinelerin içerisinden silinen dosyaların kapladığı alanın LVM-Thin havuzuna geri iade edilebilmesi için VM disk ayarlarında Discard seçeneğini işaretleyin ve konuk işletim sisteminde haftalık fstrim -av komutunu cronjob’a ekleyin.
  • Erken Uyarı Alarmı Kurun: Proxmox entegre metriklerini veya harici izleme yazılımlarını (Grafana, Zabbix vb.) kullanarak LVM-Thin doluluk oranı %85 üzerine çıktığında e-posta veya SMS uyarısı tetikleyin.

Altyapınız için teklif alın

Bulut sunucu, kurumsal e-posta veya yönetilen hizmetler hakkında uzman ekibimiz size yardımcı olsun.

Devamını Oku