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.

[ Hits: 50.285 ]

Por: João Paulo de Lima Barbosa em 18/08/2008 | Blog: http://www.unipan.br/joao


Definindo quota por projeto (diretório)



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.

Página anterior     Próxima página

Páginas do artigo
   1. Migrando para XFS, cadê a Quota?
   2. Instalando os pacotes necessários
   3. Formatando as partições e ativando quotas para usuários e grupos
   4. Definindo quota para usuários e grupos
   5. Definindo quota por projeto (diretório)
   6. Desativando e reativando a quota (Enforcement)
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Criando um servidor CVS

MooseFS - Sistema de arquivos distribuído

Sistema de backup com dar

Restaurar arquivo ou diretório apagado em file system ext3

Instalando o KUbuntu / Ubuntu no notebook eeepc da Asus

  
Comentários
[1] Comentário enviado por celioishikawa em 18/08/2008 - 13:52h

muito bom o artigo!

[2] Comentário enviado por educanario em 18/08/2008 - 14:46h

Excelente artigo.

[3] Comentário enviado por SMarcell em 20/08/2008 - 08:32h

Na minha opinião, o XFS hoje é o melhor "file system" disponível para o Linux! É super veloz na leitura e gravação de dados, conta com excelentes ferramentas administrativas e muito mais. Também é um dos poucos FS que contam com ferramenta de desfragmentação (sim DESFRAGMENTAÇÃO! muitos usuários ainda acreditam no mito de que os sistemas de arquivos disponíveis para Linux não fragmentam). Parábens pelo artigo cara!



[4] Comentário enviado por joaocdc em 20/08/2008 - 11:55h

Obrigado a todos!
Concordo plenamente com o colega acima (SMarcell), o XFS é um dos melhores filesystem da atualidade.
Abraços

[5] Comentário enviado por grandmaster em 25/08/2008 - 21:00h

Muito bom mesmo.

Renato de Castro Henriques
CobiT Foundation 4.1 Certified ID: 90391725
http://www.renato.henriques.nom.br

[6] Comentário enviado por linux.vitor em 18/12/2008 - 17:52h

Otimo Artigo!

So uma duvida...

Se eu colocar uma quota de 100MB e o usuario exeder essa quota, o servidor vai para de gravar? ou vai dar uma msg de alerta para o usuario ou administrador?

Obrigado.

Att
Vitor

[7] Comentário enviado por joaocdc em 21/12/2008 - 18:31h

Obrigado!

por exemplo se o usuário tem uma quota de 100MB ele vai "enxergar" apenas 100MB disponível nesse diretório, e quando seu espaço acabar, o sistema vai informar que o espaço em disco é insuficiente para gravação, da mesma forma que acontece quando um HD ou Pendrive enche, o administrador pode ver isto utilizando o xfs_quota report, como foi descrito no artigo.

Att. João

[8] Comentário enviado por rogerio.carvalho em 27/08/2009 - 16:43h

O artigo está muito bom, mas gostaria de complementá-lo com algo que presenciei na distro Opensuse, não sei se mais alguem passou por isso com outra, mas assim que estabeleci as opções no fstab de uquota e gquota para a raiz do sistema ao reiniciar o computador as opções de quota eram consideradas inválidas, após algumas pesquisas na internet notei que a opção rooflags=quota no boot do sistema era necessária para que as quotas fossem de fato aplicadas no sistema para a raiz do sistema.

Att.
Rogerio

[9] Comentário enviado por raickonen em 03/11/2010 - 13:04h

Preciso definir quota para vários diretorios, cada um com sua quota individual. Isso é possivel?

[10] Comentário enviado por joaocdc em 03/11/2010 - 18:29h

Sim, isso é possível. Utilizando o conceito de quota por projeto (descrito na página 5 do artigo), para isso cada diretório deverá ser tratado como um projeto. Cada diretório com quota controlada, terá uma entrada em "/etc/projid" e "/etc/projects". Como explicado, a quota irá agir independente do usuário que esta fazendo a gravação, nem mesmo o root poderá exceder a quota do diretório, observe que o usuário precisa ter permissão de escrita do diretório, a quota por projeto não afeta em nada o permissionamento de usuários e grupos.

[11] Comentário enviado por rlimao em 28/08/2013 - 14:37h

Cara....Parabéns pelo artigo, muito esclarecedor.

Fiquei com uma duvida: Se eu criei uma cota de 100 mb para o usuário e ele precisar aumentar esse limite, posso utilizar o mesmo comando de criação?


att.

ricardo lima

[12] Comentário enviado por joaocdc em 29/08/2013 - 16:34h

Oi Ricardo,

Exatamente, você utiliza o mesmo comando para alterar a quota do usuário, exemplo:

# xfs_quota -x -c 'limit -u bsoft=100M bhard=100M joao' /mnt/hda2

Att.

[13] Comentário enviado por charlesbrownrj em 18/04/2018 - 21:10h

Parabéns!!!
O melhor artigo que encontrei sobre xfs_quota, muito bom!!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts