XFS Adding Quotas - Skip Quota check on first mount/boot

We run a 14TB XFS fileserver on our cluster and want to add quota support. This is running 3.9.2-1.el6.elrepo.x86_64 kernel under CentOS 6.3 (Final).

The issue is when we unmount the XFS RAID, and re-mount it adding quota support, the mount command hangs. Sever IS responsive and the XFS mount point is not accessible. Reverting our changes in /etc/fstab to remove the quota options does not have mount hang.

I suspect that upon re-mount, XFS is running a quota check on the 14TB RAID. My question is: how do I disable the initial quota check so it can mount it properly and have quota check run in the background?

/etc/fstab entry:

/dev/sdb      /w1      xfs     defaults,noatime,usrquota,grpquota 1 2

/var/log/messages output:

Jun  6 11:37:43 nas-2-1 kernel: XFS (sdb): Mounting Filesystem
Jun  6 11:37:43 nas-2-1 kernel: XFS (sdb): Ending clean mount
Jun  6 11:37:43 nas-2-1 kernel: XFS (sdb): Quotacheck needed: Please wait.

I do not mind high CPU usage or slow performance while the mount point is active, but having it unavailable is not an option we would like stick with. I suspect running quota check on 14TB would take roughly a full work day.


If you use xfs, you will always have that problem:

(quotaon manpage)

   "XFS filesystems are a special case - XFS considers quota information as
   filesystem  metadata  and  uses  journaling  to  provide a higher level
   guarantee of consistency.  There are two components  to  the  XFS  disk
   quota  system:  accounting  and  limit  enforcement.   XFS  filesystems
   require that quota accounting be  turned  on  at  mount  time.   It  is
   possible  to  enable and disable limit enforcement on an XFS filesystem
   after quota accounting is already turned on.  The default is to turn on
   both accounting and enforcement."

Also , from xfs_quota manpage:

   disable [ -gpu ] [ -v ]
          Disables  quota  enforcement,  while  leaving  quota  accounting
          active. The -v option (verbose) displays  the  state  after  the
          operation has completed.

   off [ -gpu ] [ -v ]
          Permanently  switches quota off for the filesystem identified by
          the current path.  **Quota can only be  switched  back  on  subse‐
          quently by unmounting and then mounting again.**

As it has to get quota accounting up to date it will be checking the whole volume, 14Tbytes will take a long time.

One option is to disable limit enforcement but it will still need to check quota accounting and it might still take much time, if you want to try, don't mount it at boot time by setting the 'noauto' flag and then disable it from a shell.

I suppose that you are not wondering to change the filesystem type, what would allow you to manage quotas 'online' , or even creating an image (with xfsdump or xfscopy) of that volume, applying quotas to it once mounted and then, via rsync, update its contents with the one online, that would also work as a backup, but that second option would also take much time.

Sorry for the bad news, I hope someone may give you a better solution.