Versione corta : rm -rf mydir
con mydir
(ricorsivamente) contenente 2,5 milioni di file, richiede circa 12 ore su una macchina per lo più inattivo.
Ulteriori informazioni : La maggior parte dei file che vengono eliminati sono collegamenti diretti a file in altre directory (la directory che viene eliminata è in realtà il backup più vecchio fatto da rsnapshot
; il rm
comando è effettivamente dato da rsnapshot
). Quindi si tratta principalmente di eliminare le voci della directory - il contenuto del file stesso non è molto; è nell'ordine di alcune decine di GB.
Sono tutt'altro che sicuro che btrfs
sia il colpevole. Ricordo che anche il backup era molto lento prima di iniziare a utilizzare btrfs
, ma non sono sicuro che la lentezza fosse nella cancellazione.
La macchina è un Intel Core i5 2,67 GHz con 4 GB di RAM. Ha due dischi SATA: uno ha il sistema operativo e alcune altre cose e il disco di backup è un 1 TB WDC WD1002FAEX-00Z3A0
. La scheda madre è un Asus P7P55D.
Modifica : la macchina è un wheezy Debian con Linux 3.16.3-2~bpo70+1
. Ecco come è montato il filesystem:
root@thames:~# mount|grep rsnapshot
/dev/sdb1 on /var/backups/rsnapshot type btrfs (rw,relatime,compress=zlib,space_cache)
Modifica : l'utilizzo rsync -a --delete /some/empty/dir mydir
richiede circa 6 ore. Un miglioramento significativo rispetto rm -rf
, ma penso ancora troppo. ( Spiegazione del perché rsync
è più veloce dirm
: "[M] i filesystem ost memorizzano le loro strutture di directory in un formato btree, l'ordine [in] in cui si eliminano i file è ... importante. È necessario evitare di riequilibrare il btree quando si esegue il collegamento .... rsync -a --delete
... elimina in ordine ")
Modifica : ho collegato un altro disco che aveva 2,2 milioni di file (ricorsivamente) in una directory, ma su XFS. Ecco alcuni risultati comparativi:
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] Con hdparm -T /dev/sdX
e hdparm -t /dev/sdX
.
[2] Tempo impiegato find mydir -print|wc -l
immediatamente dopo l'avvio.
[3] Sul disco XFS, questo è stato subito dopo aver camminato con l'albero find
. Sul disco BTRFS è la vecchia misura (e non penso che fosse con l'albero memorizzato nella cache).
Sembra essere un problema con btrfs
.
btrfs
? Questo è possibile, ovviamente, ma pensi che possa essere rilevante? In questo momento non ricordo perché ho deciso di provare btrfs
.
btrfs
perché volevo la compressione trasparente. Ora: rsnapshot
utilizza collegamenti reali. Non ha alcuna opzione per non utilizzare i collegamenti reali. Quindi i collegamenti reali si sovrappongono alla funzionalità btrfs
di copia su scrittura, ma non posso fare molto al riguardo.