Por questões de performance, na empresa onde trabalho foi necessário trocar o sistema de arquivos de um servidor de arquivos, este utilizava até então EXT3 com quotas de disco por usuário, no entanto devido ao aumento da concorrência do recurso de disco (tendo-se em média 30 a 40 acessos simultâneos a arquivos grandes), este servidor passou a apresentar um alto consumo de CPU, e conseqüentemente lentidões no acesso a compartilhamentos (via samba).
Com isso tínhamos um problema, precisávamos de uma solução, rapidamente percebi que o gargalo estava no sistema de arquivos, que estava consumindo muita CPU. Tendo identificado o problema, comecei a buscar soluções, muita gente poderia aumentar os recursos do servidor ou simplesmente trocá-lo por outro de maior desempenho (a máquina em questão é um Xeon 3GHz HT, 1 GB de RAM e disco SCSI 73 Gb 10K RPM), mas este era um luxo que eu não poderia ter.
Foi então que comecei a pesquisar outros sistemas de arquivos como alternativa para se colocar em produção, os pesquisados foram
XFS, ReiserFS e JFS, todas as pesquisas apontavam o XFS como o mais indicado pelo seu baixo consumo de CPU.
Ainda não convencido disso, fiz alguns pequenos testes no mesmo, com operações de escrita a gravação de grandes quantidades de arquivos, e com arquivos de tamanhos variados, ao fim eu estava convencido, iria migrar para XFS.
Implementei então um servidor de teste, foi aí que me deparei com o segundo problema, a QUOTA de disco, começou então a segunda pesquisa, como implementar a quota de disco no XFS, achei pouquíssima documentação sobre como fazê-la, e o pouco que achei eram transcrições exatas dos manuais do XFS, mas consegui me orientar ao poucos e implementar a quota no dito cujo, e ao final fiquei mais satisfeito com a quota do XFS do que com a quota do EXT3, pois além da já famigerada quota por usuários e grupos (suportadas pelo EXT3), o XFS permite
quota por projeto, ou seja, posso definir quota para um diretório específico, independente do usuário ou grupo que venham depositar seus arquivos nesse diretório. Nem mesmo o root escapa da quota por projeto!
Bom, chega de enrolação e vamos a implementação.
A implementação foi feita em três distribuições:
- Debian 4,0 (Etch)
- CentOS 5.1
- Slackware 12
Obs.: Vou considerar que você tenha uma partição vazia (ou não particionada) em seu sistema para que possamos realizar os testes.