A quota por projeto ou diretório, independe do usuário. Não é possível utilizar quotas por usuário e grupo em uma partição ao mesmo tempo que se utiliza quota por projeto.
Vou assumir que a partição já esta formatada com
XFS, faltando apenas montá-la com o suporte a quota.
Montando a partição com suporte a quota por projeto:
# mount -t xfs /dev/hda2 /mnt/hda2/ -o prjquota
A quota por projeto baseia-se na criação do projeto, independente dos diretórios a qual este estará associado, um projeto pode estar associado a um ou mais diretórios.
Criando um projeto:
# echo "myproject:1000" >> /etc/projid
O projeto é definido no arquivo
/etc/projid, sempre um projeto em baixo do outro. Para se criar um projeto basta definir um nome qualquer como "myproject", e um ID para este, que também fica a nosso critério, lembrando-se apenas de não repetir nomes e ids.
Na seqüência associamos esse projeto (através de seu ID) a um ou mais caminhos de diretórios (esses diretórios devem estar dentro do ponto de montagem com suporte a quota XFS - /mnt/hda2). Essa associação deve ser feita em outro arquivo, o
/etc/projects.
Obs.: Criarei o diretório "arquivos" dentro de "/mnt/hda2/", ficando "/mnt/hda2/arquivos".
Associando um projeto a um diretório:
# echo "1000:/mnt/hda2/arquivos" >> /etc/projects
Observe que informamos "1000" como o ID do projeto e "/mnt/hda2/arquivos" como o diretório associado a esse projeto, lembrando-se que o ID 1000 refere-se ao nosso "myproject".
Para observarmos se o suporte a quota por projeto está ativa, utilizamos o programa xfs_quota:
# xfs_quota -x -c 'state -p' /mnt/hda2
Project quota state on /mnt/hda2 (/dev/hda2)
Accounting: ON
Enforcement: ON
Inode: #131 (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]
Caso apareça as linhas "Accounting: ON" e "Enforcement: ON", significa que a partição está com suporte a quota, e que a mesma está ativa. Precisamos agora ativar a quota desse projeto específico, pois o comando anterior nos mostrou apenas que a partição está com suporte a quota e que a quota está ativa para a partição. Precisamos ainda ativar a quota para o projeto "myproject" especificamente..
Ativando a quota do projeto "myproject":
# xfs_quota -x -c 'project -s myproject' /mnt/hda2
Setting up project myproject (path /mnt/hda2/arquivos)...
Processed 1 /etc/projects paths for project myproject
Onde:
- -s myproject = nome do seu projeto;
- /mnt/hda2 = diretório com suporte a quota ao qual o projeto vai estar atuando.
Observe que a linha anterior nos informou que o projeto "myproject" tem um diretório associado a ele "/mnt/hda2/arquivos", e que para este foi ativado a quota. Lembre-se, você pode associar vários diretórios a um projeto, e todos herdarão a quota de "myproject".
Definindo a quota para o projeto "myproject":
O projeto já está com a quota ativa, mas está sem limites (ou o limite será o tamanho máximo da partição). Para definir um limite de quota para o projeto utiliza-se:
# xfs_quota -x -c 'limit -p bsoft=50M bhard=55M myproject' /mnt/hda2
Onde:
- -p = indica quota por projeto;
- myproject = nome do projeto ao qual estamos definindo a quota.
Foi definido uma softquota de 50MB e hardquota de 55MB, todos os diretórios associados ao myproject terão essa quota, independente do usuário que faça a gravação, esta quota se aplica até mesmo ao root.
Para visualizarmos os projetos com suas respectivas quotas:
# xfs_quota -x -c 'report' /mnt/hda2
Project quota on /mnt/hda2 (/dev/hda2)
Blocks
Project ID Used Soft Hard Warn/Grace
---------- --------------------------------------
myproject 0 51200 56320 00 [--------]
Os retornos são basicamente os mesmos que temos para usuários e grupos.