Utilizando quota em XFS
Há algum tempo precisei implementar quota em um filesystem XFS, ao procurar documentação encontrei pouquíssimas coisas, e o pouco que achei foi em inglês. Depois de uns 3 dias pesquisando consegui implementar a quota sobre o XFS e descobri algumas coisas bem interessantes, como por exemplo a utilização de quotas por projeto.
Parte 3: Formatando as partições e ativando quotas para usuários e grupos
Todo o restante do artigo é igual para todas as distribuições (Debian, CentOS, Slackware).
Formatando a partição:
# mkfs -t xfs /dev/hda2
ou
# mkfs.xfs -f /dev/hda2
Criação do ponto de montagem:
# mkdir /mnt/hda2
Montando a partição:
Observe os parâmetros pós o "-o" (uquota e gquota), estes habilitam a quota por usuário e por grupo, caso alguém não queria utilizar quota por grupo ou por usuário, simplesmente não coloque o parâmetro que o ativa, ou coloque, mas não defina quota futuramente (observação, caso não vá utilizar, é preferível não colocar, pois evita que o sistema tenha que checar a quota, pois quotas não especificadas ficam sem limites).
# mount -t xfs /dev/hda2 /mnt/hda2/ -o uquota,gquota
Para verificar se a partição está montada e com o devido suporte a quota, pode-se utilizar o comando mount:
# mount
...
/dev/hda1 on / type ext3 (rw,errors=remount-ro)
...
/dev/hda2 on /mnt/hda2 type xfs (rw,uquota,gquota)
...
Obs.: Pode-se ainda (e é recomendado) fazer a montagem através da tabela de partição do sistema /etc/fstab, para que esta não se perca quando o sistema for reinicializado.
Apesar do sistema estar montado com suporte a quota (Accounting: ON), pode ser que esta não esteja ativa, isso mesmo, o xfs permite que a quota seja ativa e desativada em tempo de execução do sistema, porém no caso do Debian, se desativá-la (Enforcement: OFF), para que esta se reative foi necessário reiniciar o sistema, portanto se você estiver tentando ativar a quota em uma partição XFS já existente (que você não tenha formatado agora), você deverá reiniciar o sistema após ter alterado o fstab. Para os outros sistemas (CentOS e Slackware) não houve esse inconveniente.
Para checarmos se a partição está com suporte a quota (Accounting: ON), e se esta está ativa no momento (Enforcement: ON/OFF), utilizamos o programa xfs_quota.
# xfs_quota -x -c 'state'
User quota state on /mnt/hda2 (/dev/hda2)
Accounting: ON
Enforcement: ON
Inode: #131 (1 blocks, 1 extents)
Group quota state on /mnt/hda2 (/dev/hda2)
Accounting: ON
Enforcement: ON
Inode: #132 (1 blocks, 1 extents)
Project quota state on /mnt/hda2 (/dev/hda2)
Accounting: OFF
Enforcement: OFF
Inode: #132 (1 blocks, 1 extents)
Blocks grace time: [7 days 00:00:30]
Inodes grace time: [7 days 00:00:30]
Realtime Blocks grace time: [7 days 00:00:30]
O programa xfs_quota é, na verdade, uma aplicação de "prompt interativo". O uso do parâmetro "-c" fez com que a instrução "state" fosse executada nesse prompt automaticamente, sem essa opção seríamos remetidos a um prompt, se quiséssemos isso poderíamos ter executado apenas "xfs_quota -x" e cairíamos no prompt e lá digitaríamos "state" ou qualquer outro comando necessário. O parâmetro "-x" indica que desejamos utilizar um prompt avançado (com mais comandos), se nós o omitíssemos, alguns comandos do prompt xfs_quota não estariam disponíveis.
Formatando a partição:
# mkfs -t xfs /dev/hda2
ou
# mkfs.xfs -f /dev/hda2
Criação do ponto de montagem:
# mkdir /mnt/hda2
Montando a partição:
Observe os parâmetros pós o "-o" (uquota e gquota), estes habilitam a quota por usuário e por grupo, caso alguém não queria utilizar quota por grupo ou por usuário, simplesmente não coloque o parâmetro que o ativa, ou coloque, mas não defina quota futuramente (observação, caso não vá utilizar, é preferível não colocar, pois evita que o sistema tenha que checar a quota, pois quotas não especificadas ficam sem limites).
# mount -t xfs /dev/hda2 /mnt/hda2/ -o uquota,gquota
Para verificar se a partição está montada e com o devido suporte a quota, pode-se utilizar o comando mount:
# mount
...
/dev/hda1 on / type ext3 (rw,errors=remount-ro)
...
/dev/hda2 on /mnt/hda2 type xfs (rw,uquota,gquota)
...
Obs.: Pode-se ainda (e é recomendado) fazer a montagem através da tabela de partição do sistema /etc/fstab, para que esta não se perca quando o sistema for reinicializado.
Apesar do sistema estar montado com suporte a quota (Accounting: ON), pode ser que esta não esteja ativa, isso mesmo, o xfs permite que a quota seja ativa e desativada em tempo de execução do sistema, porém no caso do Debian, se desativá-la (Enforcement: OFF), para que esta se reative foi necessário reiniciar o sistema, portanto se você estiver tentando ativar a quota em uma partição XFS já existente (que você não tenha formatado agora), você deverá reiniciar o sistema após ter alterado o fstab. Para os outros sistemas (CentOS e Slackware) não houve esse inconveniente.
Para checarmos se a partição está com suporte a quota (Accounting: ON), e se esta está ativa no momento (Enforcement: ON/OFF), utilizamos o programa xfs_quota.
# xfs_quota -x -c 'state'
User quota state on /mnt/hda2 (/dev/hda2)
Accounting: ON
Enforcement: ON
Inode: #131 (1 blocks, 1 extents)
Group quota state on /mnt/hda2 (/dev/hda2)
Accounting: ON
Enforcement: ON
Inode: #132 (1 blocks, 1 extents)
Project quota state on /mnt/hda2 (/dev/hda2)
Accounting: OFF
Enforcement: OFF
Inode: #132 (1 blocks, 1 extents)
Blocks grace time: [7 days 00:00:30]
Inodes grace time: [7 days 00:00:30]
Realtime Blocks grace time: [7 days 00:00:30]
O programa xfs_quota é, na verdade, uma aplicação de "prompt interativo". O uso do parâmetro "-c" fez com que a instrução "state" fosse executada nesse prompt automaticamente, sem essa opção seríamos remetidos a um prompt, se quiséssemos isso poderíamos ter executado apenas "xfs_quota -x" e cairíamos no prompt e lá digitaríamos "state" ou qualquer outro comando necessário. O parâmetro "-x" indica que desejamos utilizar um prompt avançado (com mais comandos), se nós o omitíssemos, alguns comandos do prompt xfs_quota não estariam disponíveis.