Proxmox – Thin Provisioning Volumes in Logical Volume
Bu yazıda thin provision olarak tanımlanan disk üzerinde lv oluşturup mount ettim.

Bu yazıda
Proxmox thin provisioning volumes in logical volume konusu, thin pool içinde istediğiniz boyutta bir volume açıp gerçek diski yalnız veri yazıldıkça kullanmak anlamına geliyor. Bu yazıda bir LVM thin pool üzerinde geçici bir alan oluşturacak, mount edip klasör gibi kullanacak ve iş bitince silerek alanı havuza geri vereceksiniz.
Proxmox üzerinde daha önceden nasıl Thin disk havuzu oluşturabileceğinize değindim. Aşağıdaki yazıda bulabilirsiniz.
Bir VM import gerçekleştireceksiniz fakat bu işlemi disk boyutları gereğince oluşturduğunuz LVM Thin grubunda yapmak istiyorsunuz. Fakat LVM bir volume group içerisine olduğundan teknik olarak herhangi bir yere mount edip içerisinde klasör gibi gezemiyorsunuz. Bu bağlamda biz LVM Thin üzerinde bir geçici alan oluşturup, dilediğimiz boyutu verip, import işlemlerimizi o geniş alanda yapıp daha sonra işimiz bitince sileceğiz. Konuya import işlemleri dahil değildir. Onu nasıl yapabilirim derseniz yine aşağıdaki yazıda bu konuyu da bulabilirsiniz.
Volume group ve thin pool çıktısı nasıl okunur?
Şimdi asıl konumuza gelirsek, öncelikle işlem yapacağız volume group adımızı öğrenelim.
vgsVG #PV #LV #SN Attr VSize VFree
pve 1 4 0 wz--n- 2.79t <16.38g
vgrp 1 2 0 wz--n- 36.38t <186.05gVSize volume group’un toplam boyutu, VFree ise henüz hiçbir logical volume’a verilmemiş alandır. #PV fiziksel disk, #LV logical volume, #SN snapshot sayısıdır. wz--n- ifadesi volume group’un yazılabilir, boyutu değiştirilebilir ve normal ayırma politikasında olduğunu söyler.
vgrp satırındaki VFree değerinin küçük görünmesi havuzun dolu olduğu anlamına gelmez. Alanın büyük kısmı thin pool’a verildiği için burada boş görünmez. Havuzun gerçek doluluğu bir sonraki komutta çıkıyor.
Ben vgrp – volume group içerisinde bir alan oluşturacağım. Volume group’u inceleyelim.
lvdisplay vgrp--- Logical volume ---
LV Name thpl
VG Name vgrp
LV UUID N7Thhh-zg7f-iQlr-SdUA-PYYM-hQUa-cN8JZy
LV Write Access read/write (activated read only)
LV Creation host, time pmx1, 2022-02-07 15:21:23 +0300
LV Pool metadata thpl_tmeta
LV Pool data thpl_tdata
LV Status available
# open 0
LV Size 36.20 TiB
Allocated pool data 0.09%
Allocated metadata 10.46%
Current LE 9489613
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 131072
Block device 253:10LV Pool metadata ve LV Pool data satırları bu LV’nin bir thin pool olduğunu gösterir. Takip edeceğiniz iki değer Allocated pool data ve Allocated metadata. Örnekte 36.20 TiB’lık havuzun yüzde 0.09’u veriyle, metadata alanının yüzde 10.46’sı doludur. Kısa görünüm için lvs çıktısındaki Data% ve Meta% sütunlarına bakın.
lvs vgrpThin volume oluşturup klasöre mount etmek
Volume groupumuzun “vgrp” Logical volume’un ise “thpl” adında olduğunu öğrendik. Şimdi “gecici_alan” adında bir lv oluşturalım. Ben boyutunu 20 GB olarak gösteriyorum. Siz kendinize göre düzenleyin.
lvcreate -V 20G --thin -n gecici_alan vgrp/thpl-V sanal boyut, --thin thin volume açılacağını, vgrp/thpl de hangi havuzun kullanılacağını belirtir. 20 GB hemen ayrılmaz, veri yazıldıkça havuzdan düşer. Sanal boyutların toplamı havuzdan büyük olabilir, lvcreate bu durumda uyarı verir. lvmthin belgesine göre havuz dolarsa yazmalar önce bekletilir, sonra hata döner ve dosya sistemi zarar görebilir.
Şimdi dosya yapılandırmasını mkfs ile oluşturalım.
mkfs.ext4 hedefteki veriyi siler. Komuttaki adın yeni açtığınız gecici_alan olduğundan emin olun. vm-100-disk-0 gibi adlar sanal makine diskleridir, bunları biçimlendirmek geri dönüşü olmayan veri kaybı demektir.
mkfs.ext4 /dev/vgrp/gecici_alanBen bu LV’yi /mnt/gecici_alan diye bir klasöre mount edeceğim. Klasörü oluşturalım.
mkdir -p /mnt/gecici_alanŞimdi LV’yi dizine mount edelim
mount /dev/vgrp/gecici_alan /mnt/gecici_alan/Alanın geldiğini df ile doğrulayın. Bu mount /etc/fstab dosyasına yazılmadığı için sunucu yeniden başlayınca dizin boş görünür, veri LV’nin içinde kalır. Kalıcı mount gerekiyorsa volume group üzerinde LVM oluşturup klasöre mount etme yazısına bakın.
df -h /mnt/gecici_alanGeçici alanı silmek
Hepsi bu kadar! Eğer bu alanı silmek isterseniz izleyeceğiniz yol da aşağıdaki gibi olacaktır
Öncelikle LV’yi umount edelim dizinden
umount /dev/vgrp/gecici_alan /mnt/gecici_alan/Komutta aygıt ve dizin birlikte yazılı. İlki alanı ayırır, ikincisi için not mounted mesajı görebilirsiniz ve bu zararsızdır. Tek hedef de yeterli: umount /mnt/gecici_alan.
Şimdi LV’yi kaldırabiliriz.
lvremove geri alınamaz, LV’nin içindeki dosyalar gider. Import işinin bittiğini ve sanal makinenin diskten açıldığını doğruladıktan sonra çalıştırın.
lvremove /dev/vgrp/gecici_alanDo you really want to remove active logical volume vgrp/gecici_alan? [y/n]: y
Logical volume "gecici_alan" successfully removed
Thin volume silinince kullandığı bloklar havuza döner. lvs vgrp çıktısındaki Data% değerinin düştüğünü görebilirsiniz.
Sık karşılaşılan sorunlar
target is busy: dizini kullanan bir işlem var ya da oturumunuz o dizinde.fuser -vm /mnt/gecici_alanişlemi gösterir.- Dosyalar silindi ama
Data%düşmedi: dosya silmek havuza yer iade etmez. Alan mount edilmişkenfstrim -v /mnt/gecici_alançalıştırın. Havuz discard’ları yok sayacak şekilde ayarlıysa etkisi olmaz,lvs -o discards vgrp/thplile bakın. - Havuz doluyor: volume group’ta
VFreevarsalvextend --size +100G vgrp/thplile büyütün, boyutu kendi ihtiyacınıza göre yazın. - Metadata doluyor:
lvextend --poolmetadatasize +1G vgrp/thplkullanın, yüzde 100’e varmasını beklemeyin.+1Görnektir, bu komut daVFreeister ve metadata alanı en fazla yaklaşık 16 GiB olabilir.
See u in the next time!



