Atenção: Leia todo o artigo antes de realizar quaisquer mudanças e por favor, FAÇA backup! Não me responsabilizo por perda de dados, eu deixo bem claro o que pode ou não acarretar risco em perda de dados. Por favor, se algo estiver errado me avise!
Data da Publicação: 06/04/2012 - Editado em 07/11/2012 -
Nova edição em 18/03/2015 na sessão "Considerações Gerais"!
1) IntroduçãoEsse artigo não é bem um tutorial, talvez mais propriamente um relato com algumas dicas de minha experiência com ele nos últimos meses em alguns PCs e alguns Notebooks de usuários comuns. Nesses últimos meses venho utilizando o XFS em minhas máquinas pessoais e no trabalho. Como ele não é o sistema de arquivos padrão de nenhuma distro que eu conheça, o pessoal acaba não fazendo muito uso dele no desktop. Este artigo está longe de mostrar tudo o que o XFS é capaz de fazer, visei apenas a situação mais usual, um usuário comum com apenas um HD.
O XFS foi criado e pensando para ser grande. Ele é um sistema de arquivos 64bits nativo com grande escalabilidade. Seu uso em desktop geralmente é indicado para quem quer montar aquele PC onde você armazena seus filmes, o “HTPC”, contudo como acabei descobrindo, ele também pode ser muito útil para uso em geral do seu PC. Como em qualquer outro sistema de arquivos, se você quiser tirar o máximo de desempenho o ideal é você mesmo realizar a formatação manual de acordo com suas necessidades. Este é um ponto onde o XFS é muito bom, existem muitas opções de formatação de acordo com o que você precisa.
Como exemplos:
a) É possível passar parâmetros específicos se o seu sistema de arquivos tiver muitos pequenos arquivos nos diretórios para melhorar o desempenho do XFS.
b) Seu Journal interno máximo de até 128MB pode ser colocado em outro disco externo para aumentar o seu tamanho e desempenho, contudo, do que eu pude ler, não recomendo o uso dessa técnica em desktops.
c) Você pode alterar o número de grupos de alocação ou o tamanho deles de acordo com o tipo de arquivos e carga de trabalho a que o seu sistema de arquivos será submetido.Portanto ele pode ser muito versátil como você já pode ter imaginado. Outras
vantagens são:
1) É o único sistema de arquivos usado pelo Linux que permite desfragmentação online (com o seu sistema ligado e seu disco montado), assim como o NTFS do Windows.
2) Checagem do sistema de arquivos muito rápida, muitas vezes mais rápida que a do ext4.
3) Outra característica peculiar é a reserva de banda para requisições, com isso ele tenta garantir que mesmo com altas cargas de transferência de dados você será atendido.
4) Excelente para lidar com arquivos grandes, como filmes, vídeos e imagens virtuais do VmWare ou do Virtual Box.
Como
desvantagens eu poderia listar:
1) Ele pode ser expandido mas não diminuído. Isso mesmo, depois de definido o seu tamanho inicial não há mais volta se quiser diminuir o tamanho dessa partição. Então muito cuidado no planejamento do tamanho das partições do XFS.
2) Para melhor desempenho e segurança de seus dados você deve usar a versão mais nova possível do XFS e um kernel moderno, de preferência do 2.6.39 em diante! Melhor ainda se for do 3.1 em diante.
3) Em suas opções padrões ele é perceptivelmente mais lento ao lidar com arquivos pequenos do que o ext4. Principalmente na hora de descompactar arquivos durante a instalação de pacotes. O que leva a um usuário comum desavisado a pensar que o XFS é muito lento como um todo o que não é verdade.
2) Formatando o SistemaO XFS assim como o ext4 e o brtfs são sistemas de arquivos usados pelo Linux em constante evolução. Por isso na hora de procurar tutoriais sobre o XFS, me deparei com um grande número de tutoriais desatualizados. Antigamente se usava alguns parâmetros na hora de formatar para melhorar o seu desempenho, acontece que os desenvolvedores já colocaram a maior parte desses parâmetros como padrão nas versões mais recentes do XFS e do kernel Linux. Por isso o meu aviso de procurar usar as versões mais recentes do XFS e do kernel Linux! Portanto prefira versões do
xfsprogs (o utilitário que gerencia o sistema de arquivos XFS) acima da 3.1.1. Atualmente a última versão é a 3.1.7 e de preferência de kerneis do 3.0 em diante.
Então para a grande maioria dos usuários desktops comuns, você pode simplesmente aceitar as opções padrões do sistema sem ter que se preocupar, isso com uma versão recente do XFS e do kernel Linux, as opções que melhoram o desempenho do XFS com arquivos pequenos serão colocadas no fstab após a formatação! Entretanto, eu chamaria sua atenção para dois parâmetros que podem ser alterados na hora da formatação, são eles o
agcount e o
maxpct!
O
agcount especifica o número de grupos de alocação. O XFS divide o seu sistema de arquivos em grupos de alocação para aumentar o desempenho com leituras em paralelo dos blocos e inodes. Em teoria quanto maior o número de grupos de alocação, mais dados podem ser lidos em paralelo nos blocos e inodes resultando em maior desempenho. Em teoria! Na prática um número muito alto ou muito baixo pode prejudicar o desempenho de acordo com a carga do sistema e se o seu processador não tiver muito poder de fogo para processar tantas leituras em paralelo! Por padrão o
mkfs.xfs calcula o número de agcount de acordo com o tamanho do dispositivo a ser formatado.
Seus valores variam geralmente entre 4 / 8 / 16 e 32. Você também pode colocar outros valores como 2/ 6 / 56 ou até mesmo números maiores. Para um usuário comum com apenas um HD, do que pude aprender lendo vários textos,
prefira usar 4 para sistemas abaixo de 1TB e 16 para sistemas com mais de 1TB.O
maxpct especifica a porcentagem máxima que o sistema de arquivos pode alocar com inodes. Os valores padrões são: 25% para um sistema de arquivos com menos de 1TB, 5% para os menores que 50TB e 1% para os acima dos 50TB. Como podem ver novamente o XFS foi pensado para ser grande, quem vai usá-lo em um sistema de arquivos pequeno é quem mais vai ter espaço desperdiçado. Com 25% em um sistema com menos de 1TB você provavelmente terá um monte de inodes nos blocos iniciais do sistema de arquivos.
Não use 0% pois assim todos os blocos podem se transformar em inodes! Então se o seu sistema de arquivos tiver menos de 1TB, na hora de formatar use 5% para o maxpct.Para poder fazer uso dos comandos que colocarei abaixo você terá que instalar os dois pacotes seguintes:
xfsprogs e xfsdump.Na hora de formatar, para sistemas com menos de 1TB, você pode usar: mkfs.xfs -i maxpct=5 -d agcount=4 /dev/sdxyPara um sistema com mais de 1TB: mkfs.xfs -d agcount=16 /dev/sdxyAo final da formatação você terá um relatório de como está organizado o seu sistema de arquivos como no exemplo abaixo:
meta-data=/dev/sda5 isize=256 agcount=4, agsize=17945472 blks
= sectsz=512 attr=2
data = bsize=4096 blocks=71781888, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal bsize=4096 blocks=35049, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
3) Alterações pós formataçãoAqui vão algumas opções que julguei úteis para o fstab de um usuário comum, você pode pesquisar e testar outras opções que julgar útil a você:
noatime = Os tempos de acesso dos dados não serão atualizados quando lidos, apenas quando gravados. Não há risco de perda de dados com essa opção. Se o tempo de acesso dos dados for importante para você não use essa opção.
nodiratime = Os tempos de acesso dos diretórios não serão atualizados quando lidos, apenas quando gravados. Não há risco de perda de dados com essa opção. Se o tempo de acesso dos diretórios for importante para você não use essa opção.
nobarrier = essa opção faz com que a verificação dos dados entre o cache do disco e o buffer da memória não sejam mais feitas. Com essa opção ativa você acelera a gravação dos dados mas existe o risco de perda de dados em uma queda de energia ou travamento do sistema, aquilo que estiver aberto pode ser perdido.
logbufs = diz o número de buffers que devem ser guardados na memória, esse número varia de 2 a 8. Nos kerneis mais recentes o 8 já é padrão. Essa opção ajuda muito o XFS a lidar com arquivos pequenos e aumenta o consumo de RAM. Use 8 e seja feliz!
logbsize = Especifica o tamanho de cada buffer na memória! Você pode especificar o tamanho em bytes ou kilobytes, o padrão é 32k nas versões mais recentes do kernel. Você pode aumentar esse valor para 64k, 128k até o máximo de 256k! Essa opção ajuda muito o XFS a lidar com arquivos pequenos e aumenta o consumo de RAM. Use 256k e seja feliz!
allocsize = determina o tamanho final da pré-alocação do Buffer de I/O. Seu tamanho varia de 64Kib a 1Gib. Essa opção ajuda a diminuir a fragmentação do disco e aumenta a velocidade de transferência de arquivos grandes. No caso do disco rígido servir apenas para arquivos grandes como imagens ISO, use 512mb, no geral 64mb está de bom tamanho. Você não aumenta o risco de perda de dados com essa opção. Na prática notei que quanto maior esse número, melhor a taxa de transferência, mas também o sistema fica mais “preso” a essa transferência então não abuse.
delaylog = Atrasa a gravação das informações no journal do XFS o máximo possível. São parâmetros internos do XFS que determinarão quando as informações serão salvas. Essa opção acelera muito o XFS mas aumenta o risco de perda de dados no caso de uma queda de energia ou travamento do sistema. Note que você não está desativando o Journal, apenas atrasando a gravação dos dados nele. A opção delaylog não funciona em versões antigas do XFS ou do kernel linux.
osynciosync = Essa aqui é complicada, mas resumindo, essa opção tem haver com uma espécie de garantia de que as gravações dos dados e metadados ocorram em sincronia com o cache do disco. Entendeu? Eu também não!
Para piorar ainda mais, dizem que essa opção é obsoleta e não faz mais “efeito”. Na prática o que notei é que o XFS fica muito mais ágil com essa opção no fstab do que sem ela! Faça os seus testes e observe se ela ajuda mais que prejudica seu sistema. Há sim, ela não é indicada para quem vai ter grandes bancos de dados no disco rígido e também não funciona em versões antigas do XFS e do Kernel Linux. Na prática já tive um sistema meu que deixou de reconhecer os dados da partição /home com essa opção ativa com o kernel 2.6.32! Foi só retirar a mesma do fstab que tudo voltou ao normal!
inode64 = indica que o XFS pode criar inodes em qualquer lugar do sistema de arquivos, essa opção pode criar problemas em aplicações de backup que não podem lidar com grande número de inodes. Essa opção é sempre indicada em servidores de arquivos quando fui estudar para fazer esse artigo. Na prática achei que aumenta a latência em geral. Também notei o seguinte, ou você usa o inode64 ou usa o allocsize para melhor desempenho. Os dois juntos atrasaram o sistema! Eu prefiro o allocsize para desktop e servidor de arquivos. Faça os seus testes e verifique se ele é bom pra você.
Use o seu editor preferido e como root abra o fstab para colocar alguma das opções acima:
Fstab para os que gostam de desempenho e fortes emoções /dev/disk/by-id/ata-TOSHIBA_MK6465GSXN_31F8B103B-part5 / xfs
noatime,nodiratime,nobarrier,logbufs=8,logbsize=256k,allocsize=64m,delaylog,osynciosync 1 1
/dev/disk/by-id/ata-TOSHIBA_MK6465GSXN_31F8B103B-part6 swap swap defaults 0 0
Fstab para os que gostam de desempenho dentro dos limites de segurança/dev/disk/by-id/ata-TOSHIBA_MK6465GSXN_31F8B103B-part5 / xfs
noatime,nodiratime,logbufs=8,logbsize=256k,allocsize=64m 1 1
/dev/disk/by-id/ata-TOSHIBA_MK6465GSXN_31F8B103B-part6 swap swap defaults 0 0
4) Desfragmentando e Reorganiznado o XFSEsta é uma grande vantagem frente a outros sistemas de arquivos que sua distro pode usar. O XFS é capaz de ser desfragmentado com suas partições montadas e ativas sem risco de perda de dados. Contudo, eu sugiro que o ideal seja fazer isso com todos os programas e arquivos fechados. O motivo é simples, se for detectado que um arquivo está em uso este arquivo em particular não é desfragmentado. Quanto mais potente for o seu processador mais rápida será a sua desfragmentação. A primeira desfragmentação/reorganização é bastante demorada. O comando para desfragmentar é o
xfs_fsr e deve ser dado como root. Ele vai reorganizar o sistema de arquivos um arquivo por vez, procurando compactar e melhorar a disposição das extensões dos arquivos junto aos blocos e inodes, ele também desfragmenta os 10% de arquivos mais fragmentados por vez que é executado. Como root você pode fazer:
xfs_fsr -t 8000 /dev/sdxy -vOnde o -t é o tempo máximo que ele pode levar para desfragmentar/reorganizar em segundos. Se não colocar o -t o valor padrão é 7200 ou 2 horas. O -v é o modo verbose, ou seja, ele vai te mostrar o que está fazendo, muito bom para saber se ele pulou algum arquivo que estava aberto.
Você também pode saber o quão desfragmentado o seu disco rígido está antes de executar uma desfragmentação. O comando é:
xfs_db -c frag -r /dev/sdxyExemplo da saída do comando:
linux-tl2k:~ # xfs_db -c frag -r /dev/sda5
actual 232989, ideal 232230, fragmentation factor 0.33%
Eu recomendo que você faça uso do xfs_fsr todas as vezes em que uma quantidade grande de programas forem instalados ou removidos, assim como se os seus dados forem alterados de disco ou deletados. Eu não espero a desfragmentação aumentar, como ele reorganiza os inodes o sistema fica sempre ágil com a execução frequente do xfs_fsr.