Offline verkleinen LVM filesysteem

  LVM / filesystemen / RAID / DISK

Dit document beschrijft hoe je een LVM filesysteem offline kan verkleinen, het is nog niet mogelijk om dit online te doen met resize2fs. deze beschrijving is getest op RHEL5, maar geld ook voor andere recente distro’s. Het belangrijkste is dat je het filesysteem kan unmounten, in dit voorbeeld gaan we /tmp van 3G verkleinen naar 1G daarvoor dien je alle applicaties te stoppen die gebruik maken van /tmp. Uiteraard dient alles wel te passen.

[root@testA ~]# df -h 
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg.root-lv.root
                     496M  272M  199M  58% /
/dev/mapper/vg.root-lv.var
                     992M   87M  854M  10% /var
/dev/mapper/vg.root-lv.home
                     992M  113M  829M  12% /home
/dev/mapper/vg.root-lv.usr
                     2.5G  767M  1.6G  33% /usr
/dev/mapper/vg.root-lv.opt
                     248M   74M  162M  32% /opt
/dev/mapper/vg.root-lv.tmp
                     3.0G   66M  2.7G   3% /tmp
/dev/sda1             122M   20M   96M  17% /boot
tmpfs                 1.9G     0  1.9G   0% /dev/shm

Applicaties zijn gestopt probeer /tmp te umounten.

[root@testA ~]# umount /tmp 
umount: /tmp: device is busy
umount: /tmp: device is busy

Unmounten lukte niet controleer welke process /tmp vast houd met fuser. en stop die applicatie

[root@testA ~]# fuser -cu /dev/mapper/vg.root-lv.tmp
/dev/mapper/vg.root-lv.tmp:  2737(root)
[root@testA ~]# ps -ef |grep 2737
root      2737     1  0 May08 ?        00:19:23 /usr/sbin/vmtoolsd
root     12817 11649  0 11:20 pts/2    00:00:00 grep 2737
[root@testA ~]# /etc/init.d/vmware-tools stop

Als dat gelukt is kan je /tmp unmounten, in mijn voorbeeld draaide vmtools dit kunnen ook andere applicaties zijn.

[root@testA ~]# umount /tmp 
[root@testA ~]# 

'”`UNIQ–google-00000001-QINU`”‘

/tmp is geunmount nu kan je proberen een resize2fs uit te voeren, waarschijnlijk moet je eerst een filesystem check doen, maar ik doe hem eerst zonder om de melding te laten zien.

[root@lsrvtestA ~]# resize2fs /dev/mapper/vg.root-lv.tmp 1G 
resize2fs 1.39 (29-May-2006)
Please run 'e2fsck -f /dev/mapper/vg.root-lv.tmp' first.

Eerst dus een fsck op het filesystem.

[root@testA ~]# e2fsck -f /dev/mapper/vg.root-lv.tmp
e2fsck 1.39 (29-May-2006)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/vg.root-lv.tmp: 693/786432 files (1.0% non-contiguous), 41509/786432 blocks

Geen problemen dus nogmaals verkleinen proberen.

[root@testA ~]# resize2fs /dev/mapper/vg.root-lv.tmp 1G 
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/mapper/vg.root-lv.tmp to 262144 (4k) blocks.
The filesystem on /dev/mapper/vg.root-lv.tmp is now 262144 blocks long.

Het filesysteem is nu dus verkleint, nu moeten we alleen nog het logical verkleinen. je krijgt een waarschuwing dat je data kan kwijt raken.

[root@testA ~]# lvreduce -L 1G /dev/mapper/vg.root-lv.tmp
 WARNING: Reducing active logical volume to 1.00 GB
 THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv.tmp? [y/n]: y
 Reducing logical volume lv.tmp to 1.00 GB
 Logical volume lv.tmp successfully resized