Já corri XFS sistemas de arquivos como partições de dados / de crescimento para quase 10 anos em vários servidores Linux.
Percebi um fenômeno estranho com os servidores CentOS / RHEL recentes executando a versão 6.2+.
O uso estável do sistema de arquivos tornou-se altamente variável após a mudança para a revisão mais recente do sistema operacional do EL6.0 e EL6.1. Os sistemas inicialmente instalados com EL6.2 + exibem o mesmo comportamento; mostrando desvios na utilização do disco nas partições XFS (consulte a linha azul no gráfico abaixo).
Antes e depois. A atualização de 6.1 para 6.2 ocorreu no sábado.
O gráfico de uso de disco do mesmo sistema do trimestre anterior, mostrando as flutuações da última semana.
Comecei a verificar os sistemas de arquivos em busca de arquivos grandes e processos descontrolados (arquivos de log, talvez?). Descobri que meus maiores arquivos estavam relatando valores diferentes de du
e ls
. Correr du
com e sem o --apparent-size
interruptor ilustra a diferença.
# du -skh SOD0005.TXT
29G SOD0005.TXT
# du -skh --apparent-size SOD0005.TXT
21G SOD0005.TXT
Uma verificação rápida usando o utilitário ncdu em todo o sistema de arquivos resultou em:
Total disk usage: 436.8GiB Apparent size: 365.2GiB Items: 863258
O sistema de arquivos está cheio de arquivos esparsos , com quase 70 GB de espaço perdido em comparação com a versão anterior do sistema operacional / kernel!
Examinei o Red Hat Bugzilla e alterei os logs para ver se havia algum relatório do mesmo comportamento ou novos anúncios sobre o XFS.
Nada.
Eu fui da versão 2.6.32-131.17.1.el6 do kernel para 2.6.32-220.23.1.el6 durante a atualização; nenhuma alteração no número da versão secundária.
Eu verifiquei a fragmentação do arquivo com a filefrag
ferramenta. Alguns dos maiores arquivos da partição XFS tinham milhares de extensões. A execução da desfragmentação online xfs_fsr -v
durante um período lento de atividade ajudou a reduzir temporariamente o uso do disco (consulte quarta-feira no primeiro gráfico acima). No entanto, o uso aumentou assim que a atividade pesada do sistema foi retomada.
O que esta acontecendo aqui?
Respostas:
Rastreei esse problema em uma discussão sobre um commit na árvore de fontes XFS a partir de dezembro de 2010. O patch foi introduzido no Kernel 2.6.38 (e, obviamente, mais tarde foi portado em alguns kernels de distribuição Linux populares).
As flutuações observadas no uso do disco são resultado de um novo recurso; Pré-alocação dinâmica EOF especulativa do XFS .
Essa é uma ação para reduzir a fragmentação de arquivos durante as gravações de streaming, alocando especulativamente espaço à medida que o tamanho dos arquivos aumenta. A quantidade de espaço pré-alocado por arquivo é dinâmica e é principalmente uma função do espaço livre disponível no sistema de arquivos (para impedir totalmente a falta de espaço).
Segue esta programação:
Esta é uma adição interessante ao sistema de arquivos, pois pode ajudar com alguns dos arquivos massivamente fragmentados com os quais eu lido.
O espaço adicional pode ser recuperado temporariamente, liberando o pagecache, dentries e inodes com:
O recurso pode ser desativado completamente definindo um
allocsize
valor durante a montagem do sistema de arquivos. O padrão para o XFS éallocsize=64k
.O impacto dessa mudança provavelmente será sentido pelos sistemas de monitoramento / limiar (como foi o caso), mas também afetou os sistemas de banco de dados e pode causar resultados imprevisíveis ou indesejados para máquinas virtuais e matrizes de armazenamento com provisionamento dinâmico (elas usarão mais espaço do que o esperado).
No geral, isso me pegou de surpresa porque não havia um anúncio claro da alteração do sistema de arquivos no nível de distribuição ou mesmo no monitoramento da lista de discussão do XFS .
Editar : o
desempenho em volumes XFS com esse recurso é drasticamente aprimorado. Estou vendo uma fragmentação <1% consistente em volumes que anteriormente exibiam até 50% de fragmentação. O desempenho de gravação aumenta globalmente!
Estatísticas do mesmo conjunto de dados, comparando o XFS herdado com a versão no EL6.3.
Velho:
Novo:
fonte
xfs_fsr
de voltar para cerca de 35 GB. Eu vou ter que ficar de olho no que