Tenho algo a acrescentar aqui que espero que ajude outras pessoas com o mesmo problema.
Eu tenho um único sistema de arquivos XFS montado com o uquota. Eu tenho vários usuários usando o sistema de arquivos que eu quero limitado e um único super usuário (vamos chamá-la de "lisa") quem eu não quero limitado. Eu também tenho um banco de dados postgres aqui (de propriedade do usuário "postgres") que eu não quero limitado.
Eu achei a página de manual xfs_quota um pouco carente de sua descrição de como os limites padrão realmente funcionam e não encontrei nenhum recurso em nenhum outro lugar, então é isso que eu descobri.
Defina os limites padrão ...
xfs_quota -x -c 'limits bsoft=45G bhard=50g -d' /myxfs
Ótimo. Todas as cotas são definidas e qualquer novo usuário que fizer login receberá automaticamente o limite padrão. Agora vou excluir meu superusuário e postgres do padrão definindo seus limites explicitamente como 0.
xfs_quota -x -c 'limits bsoft=0 bhard=0 lisa' /myxfs
xfs_quota -x -c 'limits bsoft=0 bhard=0 postgres' /myxfs
Agora vou receber um relatório ...
xfs_quota -x -c 'report -h' /myxfs
User quota on /myxfs (/dev/sdc1)
Blocks
User ID Used Soft Hard Warn/Grace
---------- ---------------------------------
root 22.3G 45G 50G 00 [------]
postgres 59.1G 0 0 00 [------]
lisa 13.4T 0 0 00 [------]
Parece ótimo! Certo? Errado! Apesar desse relatório, tanto o postgres quanto o lisa ainda são limitados e ainda estão usando os limites padrão. Assim que eu tentar escrever qualquer coisa como usuário e executar o relatório novamente ...
Blocks
User ID Used Soft Hard Warn/Grace
---------- ---------------------------------
root 22.3G 45G 50G 00 [------]
postgres 59.1G 45G 50G 00 [------]
lisa 13.4T 45G 50G 00 [------]
as configurações foram revertidas!
Para contornar isso, você precisa definir os limites dos usuários que você não deseja limitados a um valor diferente de zero. Então, configure isso para algo muito alto. Eu coloquei o meu para um PB.
Blocks
User ID Used Soft Hard Warn/Grace
---------- ---------------------------------
root 22.3G 45G 50G 00 [------]
postgres 59.1G 1000T 1000T 00 [------]
lisa 13.4T 1000T 1000T 00 [------]
Isso evita que meu superusuário e banco de dados postgres sejam limitados, enquanto mantém o limite "padrão" de 50G para todos os outros usuários.
Algumas coisas a serem observadas:
- O usuário root (ou UID 0) nunca é limitado por xfs_quota (de acordo com a página man)
- Se você está se perguntando por que nenhum outro usuário está exibindo no meu relatório, é porque estou exportando-o pelo NFS e, embora os limites estejam funcionando e eu possa vê-los no cliente, isso não é reportado por padrão no servidor
Espero que isso ajude alguém.
Editar: você pode exibir mais UIDs especificando o limite superior. Por exemplo,
xfs_quota -x -c 'report -U 50000 -h' /storage/1
User quota on /myxfs (/dev/sdc1)
Blocks
User ID Used Soft Hard Warn/Grace
---------- ---------------------------------
#0 22.3G 50G 75G 00 [------]
#26 59.1G 1000T 1000T 00 [------]
#1000 13.4T 1000T 1000T 00 [------]
#2615 55.9G 0 0 00 [------]
#2705 207.4M 0 0 00 [------]
#2707 168.1G 50G 75G 00 [-none-]
#2718 178.5M 50G 75G 00 [------]
#16661 245.9M 0 0 00 [------]
#18806 0 50G 75G 00 [------]
#24403 2.5M 0 0 00 [------]
#24583 100K 50G 75G 00 [------]
#26153 4.1G 50G 75G 00 [------]
#26618 40K 0 0 00 [------]
#26765 320K 50G 75G 00 [------]
#27175 15.1G 50G 75G 00 [------]
#27189 2.5M 50G 75G 00 [------]
Incrível!