XFS (Português)

From ArchWiki
Jump to navigation Jump to search
Status de tradução: Esse artigo é uma tradução de XFS. Data da última tradução: 2020-08-08. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

XFS é um sistema de arquivos de alta performance com diário criado pela Silicon Graphics, Inc. XFS é particularmente proficiente em paralelizar E/S devido ao seu modelo baseado em alocação de grupo. Isto permite escalabilidade extrema de processamento de E/S, largura de banda do sistema de arquivos, arquivo e tamanho do sistema de arquivos quando abrange múltiplos dispositivos de armazenamento.

Instalação

Para utilitários do espaço do usuário, instale o pacote xfsprogs. Ele contém as ferramentas necessárias para gerenciar um sistema de arquivos XFS.

Corrompimento de dados

Se, por qualquer razão, você experienciar corrompimento de dados, você precisará reparar o sistema de arquivos manualmente.

Reparar sistema de arquivos XFS

Primeiro, desmonte o sistema de arquivos XFS.

# umount /dev/sda3

Quando desmontado, execute a ferramenta xfs_repair(8).

# xfs_repair -v /dev/sda3

Verificação de metadados enquanto montado (scrub)

Atenção: Este programa é EXPERIMENTAL, o que significa que seu comportamento e interface podem mudar a qualquer momento, veja xfs_scrub(8).

xfs_scrub solicita ao kernel para varrer todos os objetos de metadados em um sistema de arquivos XFS. Registros de metadados examinados em busca de valores ruins e então, têm referência cruzada com outros metadados. O objetivo é estabelecer uma confiança razoável sobre a consistência do sistema de arquivos geral, examinando a consistência dos registros de metadados individuais em relação aos outros metadados no sistema de arquivos. Os metadados danificados podem ser reconstruídos a partir de outros metadados se existirem estruturas de dados redundantes intactas.

Habilite e inicie o xfs_scrub_all.timer para periodicamente habilitar a verificação de metadados enquanto o sistema de arquivos está montado para todos os sistema de arquivos XFS.

Nota: É possível editar o xfs_scrub_all.timer: O timer executa todo domingo às 3:10 A.M. e será ativado imediatamente se não tiver sido executado na última janela de execução, ex: o sistema estando desligado.

Integridade

A versão 3.2.0 do xfsprogs introduziu um novo formato em disco (v5) que inclui um método de soma de verificação de metadados chamado Self-Describing Metadata (Metadados auto-descritivos) (conteúdo em inglês).

O método baseado em CRC32 fornece por exemplo, proteção adicional contra corrompimento de metadados durante perda de energia. A soma de verificação é habilitada por padrão quando utilizando a versão 3.2.3 ou posterior do xfsprogs.

Se você precisa de um XFS montável com leitura e escrita para um kernel antigo, é facilmente desabilitado utilizando -m crc=0 quando usando mkfs.xfs(8):

# mkfs.xfs -m crc=0 /dev/partição_alvo

O formato em disco v5 do XFS é considerado estável para cargas de ambiente de produção à partir do Kernel Linux 3.15.

Nota: Ao contrário do BTRFS e do ZFS, a soma de verificação do CRC32 se aplica somente aos metadados, não aos dados em si.

Administração

Redimensionamento

Nota: Atualmente, não é possível (conteúdo em inglês) encolher XFS.

XFS pode ser expandido sem desmontar, depois que a partição for alterada. Rode xfs_growfs com o ponto de montagem como primeiro parâmetro para redimensionar o sistema de arquivos para o maior tamanho possível.

# xfs_growfs /ponto/de/montagem

Desempenho

Para melhor velocidade, crie um sistema de arquivos XFS com:

# mkfs.xfs /dev/partição_alvo

O XFS já possui as configurações de desempenho (conteúdo em inglês) habilitadas por padrão. Leia também xfs(5) para detalhes para opções de montagem do sistema de arquivos.

Dica: Quando utilizando o XFS em dispositivos com RAID, melhorias de performance podem ser obtidas usando largeio, swalloc, aumentar os valores de logbsize e allocsize, etc. Os seguintes artigos em inglês fornecem detalhes adicionais sobre as opções:

Tamanho e largura de stripe (faixa)

Se o sistema de arquivos estiver em um RAID com stripe, você pode ter ganhos significativos de velocidade ao especificar o tamanho do stripe ao usar o comando mkfs.xfs(8).

O XFS as vezes pode detectar a geometria quando utilizando RAID por software, mas caso você mude a forma dos discos ou use RAID por hardware, consulte Como calcular os valores corretos de sunit e swidth para desempenho otimizado (conteúdo em inglês).

Tempo de acesso

Em alguns sistema de arquivos, você pode aumentar o desempenho acrescentando a opção de montagem noatime no /etc/fstab. Para o XFS, o comportamento padrão do atime é relatime, que quase não tem sobrecarga comparado com noatime, mas ainda mantém valores sensatos de atime. Todos os sistema de arquivos do Linux utilizam isto como padrão agora (desde aproximadamente 2.6.30), mas o XFS utilizou o comportamento similar ao relatime desde antes de 2006, então ninguém realmente precisa utilizar o noatime no XFS para desempenho.

Também, noatime implica nodiratime, então nunca é necessário especificar nodiratime quando noatime também é especificado.

Desfragmentação

Apesar da natureza baseada em extensões do XFS e da estratégia de demora na alocação utilizada melhorar significativamente a resistência do sistema de arquivos à fragmentação, o XFS fornece um utilitário de desfragmentação (xfs_fsr, forma curta de XFS filesystem reorganizer - reorganizador de sistema de arquivos do XFS) que pode desfragmentar os arquivos em um sistema XFS montado. Ele pode ser útil para ver a fragmentação periodicamente.

xfs_fsr(8) melhora a organização do sistema de arquivos montado. O algoritmo de reorganização opera em um arquivo por vez, compactando ou melhorando a disposição das extensões de arquivo (blocos sequenciais de dados).

Inspecionar nível de desfragmentação

Para ver quanta fragmentação seu sistema de arquivos atualmente tem:

# xfs_db -c frag -r /dev/sda3

Realizar a desfragmentação

Para começar a desfragmentação, use xfs_fsr(8):

# xfs_fsr /dev/sda3

Árvore B com inodes livres

A partir do Linux 3.16, XFS acrescentou uma Árvore B (btree) que rastreia inodes livres. É equivalente à Árvore B já existente que rastreia inodes alocados, com a exceção que esta árvore de inodes livres irá rastrear pedaços que contenham pelo menos 1 inode livre. O propósito é melhorar consultas por clusteres com inodes livres para poder alocar. Isto melhora o desempenho em sistema de arquivos mais antigos, por exemplo, com meses ou anos de uso, quando milhões de arquivos já foram acrescentados/removidos ao/do sistema de arquivos. Utilizar esta característica não impacta no nível de confiabilidade do sistema de arquivos e nem na capacidade de recuperação do mesmo..

Esta opção depende do novo formato v5. Ela não muda estruturas existentes no disco, mas acrescenta uma nova que deve permanecer consistente com a árvore de alocação de inode, por esta razão, kernels mais velhos apenas serão capazes de montar sistema de arquivos somente-leitura que tenham a opção de Árvore B de inodes livres.

A opção é habilitada por padrão ao utilizar xfsprogs 3.2.3 ou posterior. Se você necessita que o sistema de arquivos tenha capacidade de escrita para kernels mais antigos, é possível desabilitar com finobt=0 ao formatar. Será necessário também crc=0:

# mkfs.xfs -m crc=0,finobt=0 /dev/partição_alvo

Ou de uma maneira mais curta (finobt depende de crc):

# mkfs.xfs -m crc=0 /dev/partição_alvo

Journal do XFS externo

Utilizar um log externo (journal de metadados) em por exemplo SSD pode ser útil para melhorar o desempenho [1]. (Conteúdo em inglês) Veja mkfs.xfs(8) para mais detalhes no parâmetro logdev.

Atenção: Usar memória flash pode desgastar o dispositivo. Veja detalhes de desgaste de SSDs em Improving performance (Português)#Reduzir leituras/escritas no disco.

Para reservar um jornal externo com um tamanho específico ao criar o sistema de arquivos XFS, especifique a opção -l logdev=dispositivo,size=tamanho no mkfs.xfs. Se você omitir o parâmetro size, um tamanho de journal é usado baseado no tamanho do sistema de arquivos criado. Para montar o sistema de arquivos XFS para que ele use o journal externo, use as opções -o logdev=dispositivo no comando mount.

Intervalo de sincronização

XFS tem uma variável do sysctl para definir o "intervalo de writeback". O Arch tem um valor padrão de 3000, valores maiores são possíveis, mas cuidado que valores muito altos podem resultar em perda de dados em alguns casos:

/etc/sysctl.d/20-xfs-sync-interval.conf
fs.xfs.xfssyncd_centisecs = 10000

Resolução de problemas

Quota no sistema de arquivos raiz

As opções de quota do XFS ao montar (uquota, gquota, prjquota, etc.) falham durante a remontagem do sistema de arquivos. Para permitir quota no sistema de arquivos raiz, a opção de montagem deve ser passada para o initramfs como Parâmetro do kernel rootflags=. Subsequentemente, ele não deve estar listado nas opções de montagem no /etc/fstab para o sistema de arquivos /.

Nota: Existem algumas diferenças de quota em XFS se comparados a quotas de disco padrões do Linux, o artigo em inglês http://inai.de/linux/adm_quota pode ser uma leitura válida.

xfs_scrub_all falha se o usuário "nobody" não pode acessar o ponto de montagem

Quando executando xfs_scrub_all, ele irá rodar xfs_scrub@.service para cada sistema de arquivos XFS montado. O serviço é executado como o usuário de sistema nobody, então se nobody não conseguir navegar até o diretório, o comando falhará com o erro:

xfs_scrub@ponto-de-montagem.service: Changing to the requested working directory failed: Permission denied
xfs_scrub@ponto-de-montagem.service: Failed at step CHDIR spawning /usr/bin/xfs_scrub: Permission denied
xfs_scrub@ponto-de-montagem.service: Main process exited, code=exited, status=200/CHDIR

Para permitir que o serviço execute, mude as permissões do ponto de montgem para que o usuário nobody tenha permissões de execução.

Veja também