O XFS exclui arquivos, pelo menos, em O(1)
, enquanto a família ext (resmungão) está em O(log n)
(n sendo o tamanho do arquivo). Não sei como isso se traduz na exclusão de vários links, mas é um começo.
A razão pela qual eu pergunto é que eu uso o rsnapshot para backups com um disco de backup / raid1 ext3 separado. Infelizmente, remover cópias de segurança (acontece a cada 4 horas) demora até uma hora! rm -rf /backups/server/hourly.5 demorará muito tempo, enquanto tudo isso removerá os hardlinks, já que a maioria dos dados é preenchida com hardlinks.
O ZFS é adorável, mas estou pensando no BtrFS, XFS ou talvez apenas no ext4 para o novo servidor de backup. O ZFS não é adequado para produção em ambientes Linux, o que não é uma opção, embora pareça ser de longe o melhor fs. Eu usarei o BackupPC no CentOS ou no Debian como software em vez do rsnapshot desta vez. Eu estava pensando em Bacula, mas parece que não tem vantagens sobre o BackupPC, mas é mais difícil de configurar e requer que um agente seja instalado.
Gostaria que um FS excluísse os hardlinks rapidamente. Eu não vejo porque isso tem que levar uma hora, já que nada realmente acontece com os dados de qualquer maneira.
Recomendações gerais sobre backups são bem-vindas, mas acho que se eu usar o backuppc, o raid1 para backups com um sistema de arquivos que seja rápido e pronto para produção, tenho um bom ambiente de backup.
Eu uso o ext4 para o meu sistema de arquivos. Tente usar o relatime
(relative atime) para minimizar as atualizações de inode no diretório enquanto você exclui os arquivos.
Gravações de raid tendem a ser mais lentas que as leituras, pois vários discos devem ser gravados. Isso é composto por gravações de periódicos. Você pode tentar usar um diário externo em um conjunto separado de discos.
A exclusão de arquivos de diretórios com um grande número de arquivos tende a ser significativamente mais lenta do que a exclusão de arquivos de diretórios com menos arquivos. Eu acredito que isso é devido a escrever mais blocos de diretório. No entanto, consertar isso requer corrigir a alocação nos diretórios dos quais você está fazendo o backup. Diretórios com grande número de arquivos causaram problemas em muitos aplicativos.
Um tempo atrás, eu instalei o BackupPC no Debian Lenny com o RAID1 e o LVM, e optei por usar o Reiserfs (montado com a opção noatime
). Eu teria preferido ir com o ext4, mas, na época, o suporte do ext4 do Lenny ainda era um pouco ... novo. As FAQ do BackupPC recomendaram o uso do Reiserfs sobre o ext3, e foi isso.
De qualquer forma, até aí tudo bem, sem problemas. O Reiserfs tem sido muito sólido. A maneira como o BackupPC funciona, você provavelmente não precisa se preocupar muito com o desempenho de exclusão de arquivos / hard-link. Isso porque o BackupPC executa suas tarefas de limpeza separadamente (mas simultaneamente, se necessário) com backups e restaurações. Eu nunca tive um problema com um trabalho de limpeza em execução por muito tempo ou de outra forma interferindo nas operações normais.
No meu caso, uma consideração mais importante é a eficiência com que o sistema de arquivos manipula muitos arquivos pequenos. Aparentemente, o Reiserfs é muito bom para isso, pois minimiza a fragmentação interna pela chamada "subalocação de blocos" (ou " embalagem traseira "). Ainda assim, se eu tivesse que escolher novamente hoje, provavelmente iria com ext4. Os benefícios de executar o mesmo FS que a maioria dos desenvolvedores de kernel do Linux estão executando provavelmente superam quaisquer vantagens técnicas menores que um nicho FS (como o Reiserfs) pode conferir.