Você realmente não precisa desfragmentar sistemas de arquivos Btrfs, assim como você não precisa realmente desfragmentar sistemas de arquivos Ext2 / 3/4.
Sim, o Btrfs é COW (copy-on-write), o que implicaria fragmentos de arquivos muito mais do que Ext, mas isso é abordado em vários aspectos do design, incluindo a capacidade de desfragmentar facilmente o sistema de arquivos enquanto ele está online . Este extrato fornece mais detalhes:
desfragmentação automática
Os sistemas de arquivos COW (copy-on-write) possuem muitas vantagens, mas também apresentam algumas desvantagens, por exemplo, fragmentação. O Btrfs apresenta os dados sequencialmente quando os arquivos são gravados no disco pela primeira vez, mas um projeto COW implica que qualquer modificação subsequente no arquivo não deve ser gravada em cima dos dados antigos, mas colocada em um bloco livre, que será causar fragmentação (bancos de dados RPM são um caso comum desse problema). Além disso, sofre os problemas de fragmentação comuns a todos os sistemas de arquivos.
O Btrfs já oferece alternativas para combater esse problema: Primeiro, ele suporta a desfragmentação online usando o comando
btrfs filesystem defragment
. Segundo, tem uma opção de montagem,-o nodatacow
, que desativa a COW para dados. Agora o btrfs adiciona uma terceira opção, a opção-o autodefrag
mount. Esse mecanismo detecta pequenas gravações aleatórias em arquivos e as coloca em fila para um processo de desfragmentação automática, para que o sistema de arquivos desfragmente enquanto estiver sendo usado. Ele não é adequado para cargas de trabalho de virtualização ou grande 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 softwares com uso intenso de I / O como um banco de dados com carga significativa, tudo deve ser bom.
Para verificar a fragmentação de arquivos, você pode usar o utilitário filefrag :
$ find /path | xargs filefrag > frag.list
# Now you can use your favourite tools to sort the data
Em sistemas Systemd, /var/log/journal/
provavelmente será o mais fragmentado. Você também pode consultar ~/.mozilla
e outros bancos de dados de navegadores.
Para desfragmentar, use:
$ sudo btrfs fi defrag -r /path
Note que, como você provavelmente sabe, a atual (referência) implementação do Btrfs ainda não é completamente estável, então você não deve usá-la para dados críticos ou cargas pesadas (usá-la em um servidor de produção, por exemplo, é provavelmente não é a coisa mais sensata a fazer); O Fedora 16 é usado por padrão (ou será), então parece ter atingido uma certa maturidade.