In XFS you first enable quotas on the mountpoint
(you add the options to /etc/fstab and remount)
# user and group quotas example: /dev/mapper/VolGroup00-lvhome /home xfs defaults,usrquota,grpquota 0 1 # user and project quotas example: /dev/sdb1 /mindstore xfs defaults,uquota,pquota 1 2
After that you apply quotas per user, group or project.
To apply quotas to a directory (other than $HOME) create a project.
For projects you edit (for example for this lab):
# /etc/projects add a line (the "id" needs to unique) 11:/mindstore/mindlab # /etc/projid add a line mindstore_mindlab:11 # next initialize the project (it can already exist on disk) xfs_quota -x -c 'project -s mindstore_mindlab'
And apply 20T quota for example
xfs_quota -x -c 'limit -p bsoft=21000000m bhard=21470000m \ isoft=20000000 ihard=21000000 mindstore_mindlab' /mindstore
Never shrink a file system (or partition). You can use xfs_growfs
to enlarge a mounted XFS file system if needed. Or with lvm2 allocate all available space lvextend -l +100%FREE lvm_volume_pat
. Quotas you can “reduce”, but be careful, not a best practice.
To keep the XFS file system healthy unmount it and remount it so the journal does its thing. Use xfs_repair
for forced consistency checks (-n for no modify mode)
Automate quota checks and notification, here is a simple script
#!/bin/bash /usr/sbin/repquota -s /home > /root/homedirs/repquota.log d=`date +%d` awk '{print $3","$1}' /root/homedirs/repquota.log | grep G | sed 's/G/ G/g' | sort -rn > /root/homedirs/$d.txt foo="" foo=`grep '+' /root/homedirs/repquota.log | wc -l`; if [ $foo -gt 0 ]; then foofoo=`head -5 /root/homedirs/repquota.log` grep '+' /root/homedirs/repquota.log | mail -s "CLUSTER QUOTA REPORT" hmeij fi