XFS is a file system with high scalability and high performance. It is also the default file system of rhel7/centos7.
XFS supports metadata journaling, which enables faster recovery from crash.
It also supports fragment and resizing during mounting and activity.
Through latency allocation, XFS has won many opportunities to optimize write performance.
Xfsdump and xfsrestore tools can be used to back up and restore the XFS file system,
Xfsdump can be used at the dump level to complete Incremental backup, and files can be excluded through size, subtree, and inode flags.
User, group, and project quotas are also supported.
The following describes how to create an XFS file system, allocate quotas, and resize it:
######################################## #######################################
Partition/dev/SDB (2g) and enable LVM
[[email protected] zhongq]#parted /dev/sdb GNU Parted 3.1Using /dev/sdbWelcome to GNU Parted! Type ‘help‘ to view a list of commands.(parted) mkpart primary 4 2048(parted) set 1 lvm on (parted) p Model: VMware, VMware Virtual S (scsi)Disk /dev/sdb: 2147MBSector size (logical/physical): 512B/512BPartition Table: gptDisk Flags: Number Start End Size File system Name Flags 1 4194kB 2048MB 2044MB primary lvm
######################################## #######################################
Create PV
[[email protected] zhongq]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created[[email protected] zhongq]# pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name centos PV Size 24.51 GiB / not usable 3.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 6274 Free PE 0 Allocated PE 6274 PV UUID 9hp8U7-IJM6-bwbP-G9Vn-IVuJ-yvE8-AkFjcB "/dev/sdb1" is a new physical volume of "1.90 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size 1.90 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID bu7yIH-1440-BPy1-APG2-FpvX-ejLS-2MIlA8
######################################## #######################################
Allocate/dev/sdb1 to the VG named xfsgroup00
[[email protected] zhongq]# vgcreate xfsgroup00 /dev/sdb1 Volume group "xfsgroup00" successfully created[[email protected] zhongq]# vgdisplay --- Volume group --- VG Name centos System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 24.51 GiB PE Size 4.00 MiB Total PE 6274 Alloc PE / Size 6274 / 24.51 GiB Free PE / Size 0 / 0 VG UUID T3Ryyg-R0rn-2i5r-7L5o-AZKG-yFkh-CDzhKm --- Volume group --- VG Name xfsgroup00 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 1.90 GiB PE Size 4.00 MiB Total PE 487 Alloc PE / Size 0 / 0 Free PE / Size 487 / 1.90 GiB VG UUID ejuwcc-sVES-MWWB-3Mup-n1wB-Kd0g-u7jm0H
######################################## #######################################
Run the lvcreate command to create an LV named xfsdata with a size of 1 gb in the xfsgroup00 group.
[[email protected] zhongq]# lvcreate -L 1024M -n xfsdata xfsgroup00WARNING: xfs signature detected on /dev/xfsgroup00/xfsdata at offset 0. Wipe it? [y/n] y Wiping xfs signature on /dev/xfsgroup00/xfsdata. Logical volume "xfsdata" created[[email protected] zhongq]# lvdisplay --- Logical volume --- LV Path /dev/centos/swap LV Name swap VG Name centos LV UUID EnW3at-KlFG-XGaQ-DOoH-cGPP-8pSf-teSVbh LV Write Access read/write LV Creation host, time localhost, 2014-08-18 20:15:25 +0800 LV Status available # open 2 LV Size 2.03 GiB Current LE 520 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0 --- Logical volume --- LV Path /dev/centos/root LV Name root VG Name centos LV UUID zmZGkv-Ln4W-B8AY-oDnD-BEk2-6VWL-L0cZOv LV Write Access read/write LV Creation host, time localhost, 2014-08-18 20:15:26 +0800 LV Status available # open 1 LV Size 22.48 GiB Current LE 5754 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:1 --- Logical volume --- LV Path /dev/xfsgroup00/xfsdata LV Name xfsdata VG Name xfsgroup00 LV UUID O4yvoY-XGcD-0zPm-eilR-3JJP-updU-rRCSlJ LV Write Access read/write LV Creation host, time localhost.localdomain, 2014-09-23 15:50:19 +0800 LV Status available # open 0 LV Size 1.00 GiB Current LE 256 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:3
######################################## #######################################
Format the partition as an XFS file system.
Note: After XFS is created, its size cannot be reduced, but it can be increased through xfs_growfs.
[[email protected] zhongq]# mkfs.xfs /dev/xfsgroup00/xfsdata meta-data=/dev/xfsgroup00/xfsdata isize=256 agcount=4, agsize=65536 blks = sectsz=512 attr=2, projid32bit=1 = crc=0data = bsize=4096 blocks=262144, imaxpct=25 = sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=0log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0
######################################## #######################################
Mount the XFS system partition to the specified directory, and enable the file system quota through the uquota parameter.
[[email protected] zhongq]# mkdir /xfsdata[[email protected] zhongq]# mount -o uquota,gquota /dev/xfsgroup00/xfsdata /xfsdata[[email protected] zhongq]# chmod 777 /xfsdata[[email protected] zhongq]# mount|grep xfsdata/dev/mapper/xfsgroup00-xfsdata on /xfsdata type xfs (rw,relatime,attr2,inode64,usrquota,grpquota)
######################################## #######################################
Run the xfs_quota command to view the quota information, allocate quotas to users and directories, and verify whether the quota limit is effective.
[[email protected] zhongq]# xfs_quota -x -c ‘report‘ /xfsdataUser quota on /xfsdata (/dev/mapper/xfsgroup00-xfsdata) Blocks User ID Used Soft Hard Warn/Grace ---------- -------------------------------------------------- root 0 0 0 00 [--------]Group quota on /xfsdata (/dev/mapper/xfsgroup00-xfsdata) Blocks Group ID Used Soft Hard Warn/Grace ---------- -------------------------------------------------- root 0 0 0 00 [--------][[email protected] zhongq]# xfs_quota -x -c ‘limit bsoft=100M bhard=120M zhongq‘ /xfsdata[[email protected] zhongq]#xfs_quota -x -c ‘report‘ /xfsdataUser quota on /xfsdata (/dev/mapper/xfsgroup00-xfsdata) Blocks User ID Used Soft Hard Warn/Grace ---------- -------------------------------------------------- root 0 0 0 00 [--------]zhongq 0 102400 122880 00 [--------]Group quota on /xfsdata (/dev/mapper/xfsgroup00-xfsdata) Blocks Group ID Used Soft Hard Warn/Grace ---------- -------------------------------------------------- root 0 0 0 00 [--------][[email protected] zhongq]# su zhongq[[email protected] ~]$ dd if=/dev/zero of=/xfsdata/zq00 bs=1M count=100100+0 records in100+0 records out104857600 bytes (105 MB) copied, 28.9833 s, 3.6 MB/s[[email protected] ~]$ dd if=/dev/zero of=/xfsdata/zq01 bs=1M count=100dd: error writing ‘/xfsdata/zq01’: Disk quota exceeded21+0 records in20+0 records out20971520 bytes (21 MB) copied, 4.18921 s, 5.0 MB/s[[email protected] ~]$ exit[[email protected] zhongq]# xfs_quota xfs_quota> helpdf [-bir] [-hn] [-f file] -- show free and used counts for blocks and inodeshelp [command] -- help for one or all commandsprint -- list known mount points and projectsquit -- exit the programquota [-bir] [-gpu] [-hnNv] [-f file] [id|name]... -- show usage and limitsUse ‘help commandname‘ for extended help.xfs_quota> printFilesystem Pathname/ /dev/mapper/centos-root/boot /dev/sda1/var/lib/docker /dev/mapper/centos-root/xfsdata /dev/mapper/xfsgroup00-xfsdata (uquota, gquota)xfs_quota> quota -u zhongqDisk quotas for User zhongq (1000)Filesystem Blocks Quota Limit Warn/Time Mounted on/dev/mapper/xfsgroup00-xfsdata 122880 102400 122880 00 [6 days] /xfsdata
######################################## #######################################
Use the command lvextend to scale the LV to 1.5 GB (the initial capacity is 1 GB), and then use the command xfs_growfs to scale up the XFS File System (here the block count is used)
[[email protected] zhongq]# lvextend -L 1.5G /dev/xfsgroup00/xfsdata Extending logical volume xfsdata to 1.50 GiB Logical volume xfsdata successfully resized [[email protected] zhongq]# xfs_growfs /dev/xfsgroup00/xfsdata -D 393216meta-data=/dev/mapper/xfsgroup00-xfsdata isize=256 agcount=4, agsize=65536 blks = sectsz=512 attr=2, projid32bit=1 = crc=0data = bsize=4096 blocks=262144, imaxpct=25 = sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=0log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0data blocks changed from 262144 to 393216 [[email protected] zhongq]# df -h|grep xfsdata/dev/mapper/xfsgroup00-xfsdata 1.5G 153M 1.4G 10% /xfsdata
Centos7 XFS Configuration