Table of Contents
About XFS file system
- Starting with RHEL 7 and consequently Oracle Linux 7, XFS has become the default file system.
- According to XFS FAQ, it is not possible to reduce a XFS volume
- The only way to shrink it is to do a complete dump, mkfs and restore.
Check Status of our XFS partitions
Check current status of our XFS filesystems / and /swap [root@ractw21 ~]# df -PhT Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 2.7G 0 2.7G 0% /dev tmpfs tmpfs 2.8G 88K 2.8G 1% /dev/shm tmpfs tmpfs 2.8G 8.8M 2.8G 1% /run tmpfs tmpfs 2.8G 0 2.8G 0% /sys/fs/cgroup /dev/mapper/ol_ractw21-root xfs 46G 8.8G 37G 20% / /dev/sda1 xfs 1014M 302M 713M 30% /boot kits vboxsf 2.8T 2.1T 670G 77% /media/sf_kits tmpfs tmpfs 557M 8.0K 557M 1% /run/user/0 /dev/sr0 iso9660 4.4G 4.4G 0 100% /run/media/root/OL-7.3 Server.x86_64 /dev/sr1 iso9660 57M 57M 0 100% /run/media/root/VBOXADDITIONS_5.1.18_114002 [root@ractw21 ~]# lvs --segments -o +devices LV VG Attr #Str Type SSize Devices root ol_ractw21 -wi-ao---- 1 linear 45.12g /dev/sda2(992) swap ol_ractw21 -wi-ao---- 1 linear 3.88g /dev/sda2(0) [root@ractw21 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 ol_ractw21 lvm2 a-- 49.00g 4.00m Summary : - Our Volume Group ol_ractw21 has a size of 49 GB with only 4Mb free Space - We have 2 Logical volumes root with a Logical Volumen Size fo 45.15 GByte swap with a Logical Volumen Size 3.88 GByte We expect an error when we would like to increate the swap space by 4 GByte [root@ractw21 ~]# lvextend -L+4G /dev/ol_ractw21/swap Insufficient free space: 1024 extents needed, but only 1 available
Preparing a Backup Disk by using VirtualBox Disk
Create a 20 GByte Disk wiht virtualbox M:\VM> VBoxManage createhd --filename M:\VM\RACTW2\tmp20G.vdi --size 20480 --format VDI --variant Fixed 0%...10%...20%... Shutdown VM and attach disk M:\VM> VBoxManage storageattach ractw21 --storagectl "SATA" --port 1 --device 0 --type hdd --medium M:\VM\RACTW2\tmp20G.vdi Reboot the system in Rescue Mode by booting Installation Media Select Rescue a Oracle Linux system. Select option 3 - Skip to shell. Check for newly created disk Device /dev/sdb [root@ractw21 ~]# ls -l /dev/sd* brw-rw----. 1 root disk 8, 0 Apr 12 11:11 /dev/sda brw-rw----. 1 root disk 8, 1 Apr 12 11:11 /dev/sda1 brw-rw----. 1 root disk 8, 2 Apr 12 11:11 /dev/sda2 brw-rw----. 1 root disk 8, 16 Apr 12 11:11 /dev/sdb Using parted to create a new partition table Mount the new XFS partition [root@ractw21 ~]# mkdir /backup [root@ractw21 ~]# mount /dev/sdb1 /backup [root@ractw21 ~]# df /dev/sdb1 Filesystem 1K-blocks Used Available Use% Mounted on /dev/sdb1 20509264 45080 19399328 1% /backup # mkdir /mnt/root # mount /dev/ol_ractw21/root /mnt/root Backup root partition # xfsdump -f /backup/root.dmp /mnt/root please enter label for this dump session (timeout in 300 sec) -> root please enter label for media in drive 0 (timeout in 300 sec) -> root xfsdump: media file size 1113760064 bytes xfsdump: dump complete: 74 seconds elapsed xfsdump: Dump Summary: xfsdump: stream 0 /backup/root.dmp OK (success) xfsdump: Dump Status: SUCCESS # umount /mnt/root # umount /backup If umount fails you may reboot the system and select option 3 - exit to Shell
Drop the old root Logical Volume and restore the root content
# vgchange -ay # lvremove /dev/ol_ractw21/root Logical volume "root" successfully removed Check Free Space # pvs PV VG Fmt Attr PSize PFree /dev/sda2 ol_ractw21 lvm2 a-- 49.00g 45.12g Recreate Logical Volume root and verify status # lvcreate -L 15G -n root ol_ractw21 WARNING: xfs signature detected on /dev/ol_ractw21/root at offset 0. Wipe it? [y/n]: y Wiping xfs signature on /dev/ol_ractw21/root. Logical volume "root" created. # pvs PV VG Fmt Attr PSize PFree /dev/sda2 ol_ractw21 lvm2 a-- 49.00g 30.12g # vgchange -a y 2 logical volume(s) in volume group "ol_ractw21" now active # lvscan ACTIVE '/dev/ol_ractw21/swap' [3.88 GiB] inherit ACTIVE '/dev/ol_ractw21/root' [15.00 GiB] inherit Create XFS file system for newly created root partition # mkfs.xfs -L root /dev/ol_ractw21/root # mkdir /mnt/root # mount /dev/ol_ractw21/root /mnt/root # mkdir /backup # mount /dev/sdb1 /backup Restore backup # xfsrestore -f /backup/home.dmp /mnt/root ... xfsrestore: restore complete: 0 seconds elapsed xfsrestore: Restore Summary: xfsrestore: stream 0 /mnt/root/root.dmp OK (success) xfsrestore: Restore Status: SUCCESS Make sure that there is no mismatch between the UUID of the actual device and the UUID used in the file system table (fstab) of the restored LVM root volume. If necessary, edit the file system table accordingly. Normally this is should not be necessary, because LVM root and home volumes are usually not mounted using their UUID value. # lsblk -o name,size,mountpoint,uuid /dev/sda NAME SIZE MOUNTPOINT UUID sda 64G |-sda1 1G 433b636e-9b4a-4ea1-8960-6c2288433ac5 ... # cat /mnt/root/etc/fstab # /dev/mapper/ol-root / xfs defaults 0 0 UUID=433b636e-9b4a-4ea1-8960-6c2288433ac5 /boot xfs defaults 0 0 # umount /mnt/root # umount /backup Reboot the System Verify new storage status [root@ractw21 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 ol_ractw21 lvm2 a-- 49.00g 30.12g