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 autodefrag
opçã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 autodefrag
opçã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 ~/.mozilla
bancos de dados de outros navegadores.
Para desfragmentar, use:
$ sudo btrfs fi defrag -r /path