Versione corta : rm -rf mydircon 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 rmcomando è 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 btrfssia 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 mydirrichiede 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/sdXe hdparm -t /dev/sdX.
[2] Tempo impiegato find mydir -print|wc -limmediatamente 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.
btrfsperché volevo la compressione trasparente. Ora: rsnapshotutilizza collegamenti reali. Non ha alcuna opzione per non utilizzare i collegamenti reali. Quindi i collegamenti reali si sovrappongono alla funzionalità btrfsdi copia su scrittura, ma non posso fare molto al riguardo.