LVM ile yapılandırılmış XFS Disk Alanını Küçültmek


Elimizde bir qcow2 imajı var. Bu imajda CentOS 7işletim sistemi yüklü ve varsayılan olarak yapılandırıldığı için LVM Disk yönetim yazılımı ile diskler yapılandırılmış. Yapılandırılan bu diskler üzerinde XFS dosya sistemi mevcut.

Olay şu home mantıksal alanı(logical volume) gereğinden büyük bir şekilde yapılandırılmış ve üzerinde işlem yapıldığı için disk büyümüş daha sonra verilerin bir kısmı silinmiş. Bizimde yer sıkıntımız olduğundan diski küçültmemiz gerekiyor…

Bilirsiniz büyültmek çok problem değildir ama küçültme biraz risk taşır.

sda diski fdisk ile ikiye bölünmüş durumda /dev/sda1 ve /dev/sda2. Altta görüldüğü üzere sda1 /boot için ayrılmış sda2 ise LVM diski şeklinde yapılandırılmış.

list-filesystems
/dev/sda1: xfs
/dev/centos/home: xfs
/dev/centos/root: xfs
/dev/centos/swap: swap

İlk önce home dizinini küçültmemiz gerekiyor. Eğer bu lv ext4 veya ext3 ile formatlanmış olsaydı link te anlatılan şekilde hemencecik yapabilirdik. Ama XFS için içine girince işler biraz sarpa sardı.

Adımlar:

1. Sanal makine acılır ve root kullanıcısı ile bağlanılır.
2. Yeterli boyuta sahip bir disk alanına home dizini dump edilir.

xfsdump -f /tmp/home.dump /home

3. Home dizini unmount edilir (umount /home)

4. Home LV silinir. (Bu partition halihazırda 300GB gibi bir şey)

lvremove /dev/centos/home

5. İstediğiniz boyutta yeni bir home lv oluşturulur.

lvcreate -n home centos 100G

6. Yeni volume formatlanır.

mkfs.xfs /dev/centos/home

7. Yeni home mount edilir.

mount /dev/centos/home /home

8. XFS dump restore edilir.

xfsrestore -f /tmp/home.dump /home/

Evet bu işlemler sonucunda verileri izinleri dosya bilgilerini kaybetmeden değiştirmeden home logical volumunü küçülttük.

İkinci bölüm ve daha sıkıntılı bölüm karşımıza geldi. Nedir bu? LV küçüldü, PV de yer açıldı fakat o alan hala PV nin elinde olduğu için virt-resize komutunu kullanamıyoruz. PV yi de küçültmemiz gerekiyor. pvresize komutunu kullanmamız gerekiyor. PV boyutunu 180GB yapmak için alttaki gibi komutu kullandığımızda “cannot resize to X extents as later ones are allocated” hatası veriyor ve pv küçülmüyor.

1

Bu durumu aşmak için extentlere yani segmentlere göz atmamız gerekiyor. pvsdisplay komutunu alttaki gibi çalıştırdığımızda hatanın kaynağını görebiliyoruz.

2

Resimde görüldüğü üzere diskin sonuna doğru çok az boşluk var ama diskin ortası neredeyse tamamıyla boş. Bu durumda eğer son kısımdaki 12799 luk extendi taşırsak problemimiz hallolacaktır. Bu taşıma işini altta belirtilen pvmove ile gerçekleştiriyoruz.

ayni disk üzerinde taşıma yapılıyorsa –alloc parametresi kullanımı zorunludur.

–atomic parametresi işin kesilmesi nedeniyle bozulmaların önüne geçmek için

(man pvmove ile komutun ayrıntılarına göz atabilirsiniz.)

pvmove –alloc anywhere –atomic /dev/vda2:89458-102257 /dev/vda2:27617+12800

3

İşlem %100 e ulaştıktan sonra pvdisplay komutunu çalıştırdığımızda artık diskin sonunun tamamen boş olduğunu görüyoruz. Artık pvresize komutunu çalıştırabiliriz.

4

üstte belirttiğimiz pvresize komutunu bir daha çalıştırıp diski istediğimiz boyuta getiriyoruz.

Böylelikle boş disk alanını pv nin elinde kurtarmış olduk.

Son adımda ise virt-resize ile qcow2 diskini küçültmek kaldı.

Bunun için ilk önce bir boş disk alanı oluşturuyoruz. Disk alanının boyutunu kendiniz hesaplayınız ve alttaki komutla oluşturunuz.

qemu-img create -f qcow2 /var/lib/libvirt/images/yenidisk.qcow2 190G

Orjinal diskimizdeki sda2 alanını küçülterek yeni diske aktarıyoruz. Disk küçültme işi pv nin boyutuna otomatik olarak indirme şeklinde olacaktır.

virt-resize –shrink /dev/sda2 /var/lib/libvirt/images/orjinal.qcow2 /var/lib/libvirt/images/yenidisk.qcow2

Bu şekilde işimiz tamamlanmış oluyor.

 

Reklamlar