Fatos sobre sistemas de arquivos:
- XFS é rápido e ultra-seguro
- XFS é especialmente rápido com arquivos grandes (1 MB ou maiores), e um tanto lento com arquivos pequenos
- A velocidade do ReiserFS é imbatível ao manipular diretórios lotados de arquivos pequenos
- Já tive sérios problemas de perda de dados espontânea com ReiserFS, e não uso mais esse sistema de arquivos para guardar dados importantes
- Todo sistema de arquivos sofre fragmentação, em maior ou menor escala
Problema
Os diretórios com grande "tráfego" (isto é, apagamento e criação) de arquivos podem prejudicar muito o desempenho do sistema de arquivos no qual residem, promovendo a fragmentação. São exemplos desse tráfego, no Gentoo: /usr/src/
(one fica o código-fonte do kernel), /var/cache/
(onde fica o cache de ferramentas como CUPS, man, samba etc.), /usr/portage/
(onde reside a árvore do Portage) e /var/tmp/portage
(onde o Gentoo faz todas as compilações dos pacotes de programas).
Soluções
Dispositivos de loop são uma forma de você criar uma partição de dados em um único arquivo. Os diretórios /var/cache/
, /usr/portage/
e /usr/src/
precisam preservar seu conteúdo depois de reinicializações. Mas o /var/tmp/portage
não.
/var/tmp/portage
O conteúdo desse diretório tem muito I/O (entrada e saída, ou seja, gravações e leituras), mas assim que a instalação de um pacote termina, todos os arquivos relativos a este são apagados. Então, façamos como sugere o Gentoo wiki e usemos o sistema de arquivos tmpfs (que usa apenas a memória RAM para guardar dados) para abrigar o /var/tmp/portage/
, adicionando a seguinte linha ao arquivo /etc/fstab
:
none /var/tmp/portage tmpfs auto,size=2G.nr_inodes=1M 0 0
Mas atenção: dependendo da sua quantidade de memória, essa mudança específica pode acabar sendo prejudicial, pois pode aumentar muito o uso de swap. Confira o wiki do Gentoo para se informar melhor
outros diretórios
Quanto espaço ocupa o /usr/portage/
?
bash$ du -sh /usr/portage/ 538M /usr/portage/
Vamos criar um arquivo um pouco maior (pra ter uma folguinha)
bash$ sudo dd if=/dev/zero of=/usr/img.portage bs=1M count=600
Pronto. Criamos um arquivo de 600 MB pra abrigar um diretório que atualmente tem 538 MB. Deve ser suficiente por algum tempo. Agora, vamos formatar esse arquivo com um sistema de arquivos, como se fosse uma partição:
bash$ sudo mkreiserfs -f /usr/img.portage
Agora vamos montar essa nova "partição" como loop device e copiar para ela tudo que está no diretório original:
bash$ sudo mount -t reiserfs -o loop,notail,noatime /usr/img.portage /mnt/floppy bash$ sudo rsync -av /usr/portage/ /mnt/floppy/ bash$ sudo umount /mnt/floppy/
Não se esqueça das barras no final dos nomes dos diretórios!
Já podemos fazer o mesmo com os outros diretórios.
bash$ sudo du -sh /usr/src/ 556M /usr/src/ bash$ sudo dd if=/dev/zero of=/usr/img.src bs=1M count=1000 bash$ sudo mkreiserfs -f /usr/img.src bash$ sudo mount -t reiserfs -o loop,notail,noatime /usr/img.src /mnt/floppy/ bash$ sudo rsync -av /usr/src/ /mnt/floppy/ bash$ sudo umount /mnt/floppy/ bash$ sudo du -sh /var/cache/ 106M /var/cache/ bash$ sudo dd if=/dev/zero of=/var/img.cache bs=1M count=100 bash$ sudo mkreiserfs -f /var/img.cache bash$ sudo mount -t reiserfs -o loop,notail,noatime /var/img.cache /mnt/floppy/ bash$ sudo rsync -av /var/cache/ /mnt/floppy/ bash$ sudo umount /mnt/floppy/
Ao final, basta acrescentar essas informações ao arquivo /etc/fstab
para que os arquivos de loop sejam montados automaticamente na inicialização
/usr/img.portage /usr/portage reiserfs loop,auto,noatime 0 0 /usr/img.src /usr/src reiserfs loop,auto,noatime 0 0 /var/img.cache /var/cache reiserfs loop,auto,noatime 0 0
Conclusão
Depois disso, todas as tarefas que envolvem a manipulação desses diretórios ficaram significativamente mais rápidas (benchmarks são bem vindos). :)
Só pra exemplificar, o eix-sync
passou a levar só 1 a 2 minutos.
3 comentários:
Eu também uso já faz um bom tempo, partições formatadas com XFS, principalmente para banco de dados e outras áreas com tamanho considerável.
Contudo, para partições do tipo TMP ETC / BOOTeu uso o imbatível EXT3, pois essas partições eu as coloco em torno de 1024K. E como são arquivos pequenos, o EXT3 é mais rápido. Além disso, o XFS ocupa um espaço grande para suas anotações, o chamado journaling, usado para recuperar dados.
Eu recomendo fortemente o uso do EXT3 para o / (raiz) /boot /etc e /tmp pois se der um pau no journal do XFS na partição raiz por exemplo, o sistema pode não levantar, mas no caso do EXT3 você pode montá-lo como EXT2 no caso de emergência.
[]
Roger
Opa, tudo bem?
Realmente o desempenho do XFS é muito bom, usei por uns 2 meses aqui e era visívelmente mais veloz que o ReiserFS e o Ext3. Entretanto, usá-lo sem um no-break pode ser perigoso, uma vez que o jornaling pode se perder com desligamentos inesperados.
Nesse tempo, usei o XFS até o dia em que tive vários desligamentos inesperados e então percebi que vários arquivos foram perdidos (ficaram corrompidos), chegando ao ponto do sistema sequer iniciar (isso foi em um outro dia). Atualmente estou usando apenas o Ext3 aqui.
Há, somente agora li seu comentário em meu blogue, foi bastante esclarecedor. Até mais!
intiresno muito, obrigado
Postar um comentário