Versão curta : rm -rf mydir
com mydir
(recursivamente) contendo 2,5 milhões de arquivos, leva cerca de 12 horas em uma máquina principalmente ocioso.
Mais informações : A maioria dos arquivos que estão sendo excluídos são links físicos para arquivos em outros diretórios (o diretório que está sendo excluído é realmente o backup mais antigo feito por rsnapshot
; o rm
comando é realmente fornecido por rsnapshot
). Portanto, a maioria das entradas de diretório está sendo excluída - o conteúdo do arquivo em si não é muito; está na ordem de algumas dezenas de GB.
Estou longe de ter certeza de que btrfs
é o culpado. Lembro-me de que o backup também era muito lento antes de começar a usar btrfs
, mas não tenho certeza de que a lentidão estava na exclusão.
A máquina é um Intel Core i5 2,67 GHz com 4 GB de RAM. Ele possui dois discos SATA: um possui o sistema operacional e outras coisas, e o disco de backup tem 1 TB WDC WD1002FAEX-00Z3A0
. A placa-mãe é uma Asus P7P55D.
Edit : A máquina é um chiado do Debian com Linux 3.16.3-2~bpo70+1
. É assim que o sistema de arquivos é montado:
root@thames:~# mount|grep rsnapshot
/dev/sdb1 on /var/backups/rsnapshot type btrfs (rw,relatime,compress=zlib,space_cache)
Editar : o uso rsync -a --delete /some/empty/dir mydir
leva cerca de 6 horas. Uma melhoria significativa acabou rm -rf
, mas ainda acho demais. (A explicação de por que rsync
é mais rápida querm
: "[M] ost filesystems armazena suas estruturas de diretórios em um formato btree, a ordem [na] em que você exclui arquivos é ... importante. É necessário evitar reequilibrar a btree ao executar a desassociação .... rsync -a --delete
... faz exclusões em ordem ")
Editar : anexei outro disco que tinha 2,2 milhões de arquivos (recursivamente) em um diretório, mas no XFS. Aqui estão alguns resultados comparativos:
On the XFS disk On the BTRFS disk
Cached reads[1] 10 GB/s 10 GB/s
Buffered reads[1] 80 MB/s 115 MB/s
Walk tree[2] 11 minutes 43 minutes
rm -rf mydir[3] 7 minutes 12 hours
[1] Com hdparm -T /dev/sdX
e hdparm -t /dev/sdX
.
[2] Tempo necessário para executar find mydir -print|wc -l
imediatamente após a inicialização.
[3] No disco XFS, isso foi logo após andar na árvore find
. No disco BTRFS, é a medida antiga (e eu não acho que foi com a árvore em cache).
Parece ser um problema com btrfs
.
btrfs
? Isso é possível, é claro, mas você acha que pode ser relevante? No momento, não me lembro por que decidi tentar btrfs
.
btrfs
porque queria a compressão transparente. Agora: rsnapshot
usa links físicos. Ele não tem nenhuma opção para não usar links físicos. Portanto, os links físicos se sobrepõem à funcionalidade btrfs
de copiar na gravação, mas não posso fazer muito sobre isso.