Desfragmentação de arquivos / pastas Btrfs

9

Acabei de instalar o Ubuntu 11.10 no sistema de arquivos Btrfs e quero fazer uma pergunta sobre desfragmentação de arquivos.

Eu realmente preciso desfragmentar arquivos ou todo o sistema?

Desfragmentar # btrfs sistema de arquivos desfragmentar / pool1 Desfragmentar

Desfragmentação Btrfs

One Zero
fonte
Não, btrs, ext4,3,2, ETC ... não exigem que você desfragmente as unidades, elas sofrem com isso como qualquer outro sistema de arquivos.
Uri Herrera
Mas nem de longe o mesmo que NTFS.
Uri Herrera

Respostas:

13

Você realmente não precisa desfragmentar os sistemas de arquivos Btrfs manualmente.

Sim, o Btrfs é COW (cópia na gravação), o que implicaria em fragmentos de arquivos muito mais que o Ext, mas isso é abordado em vários aspectos do design, incluindo a capacidade de desfragmentar facilmente o sistema de arquivos enquanto estiver online. Este trecho fornece mais detalhes (ênfase minha):

Desfragmentação automática

Os sistemas de arquivos COW (cópia na gravação) têm muitas vantagens, mas também apresentam algumas desvantagens, por exemplo, fragmentação. O Btrfs estabelece os dados sequencialmente quando os arquivos são gravados no disco pela primeira vez, mas um design COW implica que qualquer modificação subsequente no arquivo não deve ser gravada sobre os dados antigos, mas sim colocada em um bloco livre, o que causar fragmentação (os bancos de dados RPM são um caso comum desse problema). Além disso, ele sofre os problemas de fragmentação comuns a todos os sistemas de arquivos.

Btrfs já alternativas ofertas para combater este problema: Primeiro, ele suporta a desfragmentação online usando o comando btrfs filesystem defragment. Segundo, possui uma opção de montagem -o nodatacow, que desativa o COW para dados. Agora o btrfs adiciona uma terceira opção, a -o autodefragopção mount. Esse mecanismo detecta pequenas gravações aleatórias nos arquivos e as enfileira para um processo de desfragmentação automática, para que o sistema de arquivos desfragmente a si próprio enquanto é usado. Ainda não é adequado para virtualização ou grandes cargas de trabalho de banco de dados, mas funciona bem para arquivos menores, como bancos de dados rpm, SQLite ou bdb.

Portanto, desde que você não planeje executar um software intensivo de IO como um banco de dados sob carga significativa, você deve ser bom, desde que monte seus sistemas de arquivos com a autodefragopção

Para verificar a fragmentação dos arquivos, você pode usar o utilitário filefrag :

$ find /path -type f -exec filefrag {} + >frag.list
# Now you can use your favourite tools to sort the data

Nos sistemas Systemd, /var/log/journal/provavelmente será o mais fragmentado. Você também pode consultar os ~/.mozillabancos de dados de outros navegadores.

Para desfragmentar, use:

$ sudo btrfs fi defrag -r /path
Félix Saparelli
fonte
Como eu sei que a sua desfragmentação .... ou não ... comando para verificar o status de desfragmentação
Um Zero
2
Esta resposta está errada, de acordo com o wiki do BTRFS: btrfs gotchas . O problema da fragmentação de arquivos pode ser facilmente reproduzido executando systemd-journald em um volume btrfs. Embora eu ainda não tenha testado até agora, a opção autodefrag resolve esse problema.
Jonas Schäfer
Eu uso btrfs em tempo integral há pelo menos 18 meses, com systemd, firefox, etc. Uma verificação rápida filefragrevela que os arquivos de diário são realmente muito fragmentados (com média de 10k extensões cada), mas não observei picos de CPU nem impacto no desempenho. Eu não tenho autodefrag, habilitá-lo e reportar na próxima reinicialização.
Félix Saparelli
Portanto: a fragmentação de arquivos ocorre, autodefragajuda, o impacto no desempenho é menor, na melhor das hipóteses, nos sistemas cotidianos. Obviamente, os servidores de carga pesada podem precisar medir e ajustar as coisas, mas, novamente, esse é um software alfa; portanto, você pode evitá-lo lá de qualquer maneira.
Félix Saparelli
find /path -type f -exec filefrag {} + >frag.listevita todos os FIBMAP unsupportederros dos diretórios e outros arquivos não regulares e não quebra em nomes de arquivos estranhos.
Peter Cordes
0

Para o bem deste tópico, acho melhor esclarecer que:

Qualquer sistema de arquivos! = Utilitários de recuperação / gerenciamento

Lembre-se de que o sistema de arquivos trata da forma como os dados são organizados em um hardware físico; todas as outras atividades são realizadas com software e utilitários extras que, especialmente no GNU / linux, são executados por pessoas que provavelmente não estão estritamente relacionadas com quem fez o sistema de arquivos.

Provavelmente não é o caso dos Btrfs, mas às vezes estamos perto disso porque os ambientes de desktop e corporativo podem fornecer soluções diferentes com diferentes graus de confiabilidade.

A resposta para sua pergunta é "não", mas é um "não" relacionado ao comportamento normal de um sistema de arquivos genérico, e todo utilitário que você pode encontrar sobre isso é simplesmente um projeto diferente.

Quando você precisar desfragmentar seu sistema de arquivos, lembre-se de usar um software externo que não esteja realmente relacionado à vida útil do sistema de arquivos, com todos os prós e contras.

Micro
fonte
0

O comando para desfragmentar um sistema de arquivos btrfs é

btrfs filesystem defragment sync -r -v -f [-czlib] / /home
user615852
fonte
0

Baseado em nesta resposta, eu vim com:

sudo find / -xdev -type f -exec filefrag {} + | sed -En 's/(.+): (\w+) extent.*/\2 \1/p' | sort -nr

Isso lista os arquivos mais fragmentados primeiro, com o formato:

<num-fragments> <pathname>
Tom Hale
fonte