XFS is now the RHEL7 default file system.
XFS brings the following benefits:
- ability to manage up to 500TB file systems with files up to 50TB in size,
- best performance for most workloads (especially with high speed storage and larger number of cores),
- less CPU intensive than most of the other file systems (better optimizations around lock contention, etc),
- the most robust at large scale (has been run at hundred plus TB sizes for many years),
- the most common file system in multiple key upstream communities: most common base for ceph, gluster and openstack more broadly,
- pioneered most of the techniques now in Ext4 for performance (like delayed allocation),
- no file system check at boot time,
- CRC checksum on all metadata blocks.
XFS was already fully supported in RHEL6 but, as it was not the default file system, perhaps are you not used to it. It’s time to rectify this.
XFS Basic Management
To create a new logical volume called lv_vol with a size of 100MB in the vg volume group, type:
# lvcreate --size 100M --name lv_vol /dev/vg
To create a new XFS file system, type:
# mkfs.xfs /dev/vg/lv_vol
To mount the new file system under /mnt, type:
# mount /dev/vg/lv_vol /mnt
To increase the file system size by 50MB, type:
# lvextend --size +50M /dev/vg/lv_vol # xfs_growfs /mnt
Note1: This is only possible for a mounted file system.
Note2: You can’t reduce a XFS file system even though you unmount it. You have to back it up, drop it and recreate it.
XFS Advanced Management
If a problem occurs and you want to repair the file system, according to the man pages you are supposed to mount and unmount it before typing:
# xfs_repair /dev/vg/lv_vol
Note: Try the “-L” option (“force log zeroing“) to clear the log if nothing else works.
To assign a label (up to 12 characters) to the file system, type:
# umount /dev/vg/lv_vol # xfs_admin -L "Label" /dev/vg/lv_vol
Note: With RHEL 7.6, it is now possible to assign a label to a mounted file system with the xfs_io command: # xfs_io -c “Label” /dev/vg/lv_vol
To read the label (the file system can be mounted or not but you need to specify the partition name), type:
# xfs_admin -l /dev/vg/lv_vol
XFS Backup Management
To do a full backup of the file system and put it into the /root/dump.xfs file without specifying any dump label, type:
# xfsdump -F -f /root/dump.xfs /mnt
Note1: You can specify the mounting point or the partition name.
Note2: It is only possible for a mounted file system.
Note3: You can run an incremental dump by using the “-l” option with a number between 0 and 9 (0=full dump).
If you want to specify a session label and a media label, type:
# xfsdump -L session_label -M media_label -f /root/dump.xfs /dev/vg/lv_vol
To restore the file system, type:
# xfsrestore -f /root/dump.xfs /mnt
To get the list of all the available dumps, type:
# xfsrestore -I
To defragment the file system (operation normally not needed), type:
# xfs_fsr /dev/vg/lv_vol
Note: Both mount point and partition name are valid.
To freeze the file system before taking a snapshot, type:
# xfs_freeze -f /mnt
Note: You have to specify the mount point, the partition name is not allowed.
To unfreeze the file system, type:
# xfs_freeze -u /mnt
To copy the contents of a file system (here mounted under /mnt) to another directory, type:
# xfsdump -J - /mnt | xfsrestore -J - /new
Note: The “-J” option avoids any write into the inventory.
Source: RHEL 7 Storage Administration Guide.
You can also read this thread from ServerFault about the proper way to deal with corrupt XFS filesystems.