ショートバージョン:rm -rf mydir
、とmydir
(再帰的に)、250万ファイルを格納しているが、ほとんどアイドル状態のマシンに約12時間かかります。
詳細情報:削除されるファイルのほとんどは、他のディレクトリ内のファイルへのハードリンクです(削除されるディレクトリは、実際にはによって作成された最も古いバックアップrsnapshot
です。rm
コマンドは実際にはによって提供されますrsnapshot
)。つまり、ほとんどの場合、削除されるのはディレクトリエントリです。ファイルの内容自体はそれほど多くありません。数十GB程度です。
私はそれbtrfs
が犯人であることは確かではありません。使用を開始する前のバックアップも非常に遅いことを思い出しましたがbtrfs
、削除の速度が遅いことはわかりません。
マシンはIntel Core i5 2.67 GHz、4 GB RAMです。これには2つのSATAディスクがあり、1つはOSとその他のものがあり、バックアップディスクは1 TB WDC WD1002FAEX-00Z3A0
です。マザーボードはAsus P7P55Dです。
編集:マシンはLinuxを搭載したDebian wheezy 3.16.3-2~bpo70+1
です。これはファイルシステムがマウントされる方法です:
root@thames:~# mount|grep rsnapshot
/dev/sdb1 on /var/backups/rsnapshot type btrfs (rw,relatime,compress=zlib,space_cache)
編集:使用にrsync -a --delete /some/empty/dir mydir
は約6時間かかります。を大幅に改善しましたrm -rf
が、まだ多すぎると思います。(理由の説明rsync
rm
:より速い:「ほとんどのファイルシステムはディレクトリ構造をbtree形式で保存します。ファイルを削除する順番[in]は重要です...リンク解除を実行するとき、btreeの再バランスを避ける必要があります.... rsync -a --delete
...削除を順番に実行します ")
編集:ディレクトリに(再帰的に)220万個のファイルがある別のディスクを接続しましたが、XFS上にありました。ここにいくつかの比較結果があります:
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] hdparm -T /dev/sdX
とhdparm -t /dev/sdX
。
[2] find mydir -print|wc -l
ブート直後の実行にかかった時間。
[3] XFSディスクでは、これはでツリーを歩いた直後find
です。BTRFSディスクでは、これは古い測定値です(そして、ツリーがキャッシュされていたとは思いません)。
に問題があるようbtrfs
です。
btrfs
ますか?もちろんこれは可能ですが、関連があると思いますか?なぜ今やったのか思い出せませんbtrfs
。
btrfs
透過的な圧縮が必要だったので、切り替えることにしました。現在:rsnapshot
ハードリンクを使用しています。ハードリンクを使用しないオプションはありません。したがって、ハードリンクはbtrfs
のコピーオンライト機能と重複しますが、それについてはあまり行えません。