私の環境は、カーネル 3.19.0-28-generic と Btrfs v3.17 を搭載した Ubuntu 15.04 です。
バックアップ スクリプトで使用する同一の外付け USB ハード ディスクが 2 つあります。1 つは でフォーマットされbtrfs
、もう 1 つは でフォーマットされています。ext4
ソース ファイル システムは常に ですext4
。rsync
コマンドは次のようになります。
rsync --inplace --no-whole-file --link-dest="$previousBackup" "$sourceDir" "$destDir"
バックアップにはbtrfs
時間がかかることに気付きました非常に長時間: 同じコピーを実行するのにかかる 4 分と比較すると、 は 1 時間強ですext4
。
ディスクの故障を除外するために、dd
と Ubuntu に同梱されている「ディスク ユーティリティ」を使用してベンチマークを実行しましたが、両方のディスクで同じパフォーマンスが得られました。遅い部分は、以前のバックアップに対するハードリンクのようです。デフラグとスクラブを行った後でも、次のコマンドは では約 53 分かかりますbtrfs
が、 では 1 分しかかかりませんext4
。
cp -arl "$previousBackup" "$destDir"
インターネットで調べたところ、btrfs
ハードリンクを使用するとパフォーマンスが低下するというヒントを見つけましたが、これは期待していません。巨大な違いは、このコマンドの方が高速であることがわかりましたが、それでも完了するまでに 30 分以上かかります。
cp -ar --reflink "$previousBackup" "$destDir"
この動作を経験したことがある人、確認できる人はいますか? これを修正する簡単な方法はありますか (例: マウント オプションを変更する)、それともハードリンクをできるだけ削除して reflink のみを使用するようにすべきでしょうか?
編集
私は今、削除するディレクトリからの復元にはbtrfs
1 時間以上かかります。同じ操作は「ツイン」ext4
ディスクでは瞬時に行われます。ここでは明らかにメタデータに問題があります。
答え1
あなたはハードリンクをコピーしていると言っていますrsync
コマンドですが、-H
フラグはどこにありますか? コマンドには表示されません:
rsync --inplace --no-whole-file --link-dest="$previousBackup" "$sourceDir" "$destDir"
私が理解しているrsync
仕組みは、ハードリンクに関しては、フラグがなければ、-H
ハードリンクの代わりに実際のデータがコピーされるということです。rsync
マニュアルページ:
-H, --ハードリンク
これは、rsync に転送中のハードリンクされたファイルを検索し、受信側で対応するファイルをリンクするように指示します。このオプションがない場合、転送中のハードリンクされたファイルは、別々のファイルであるかのように扱われます。
ハードリンクされるのではなく、多くの類似したファイルを何度もコピーするような手順では、転送時間が遅くなることが想像できます。
また、-z
( --compress
) フラグの使用も検討してください。
-z、--圧縮
このオプションを使用すると、rsync はファイル データを宛先マシンに送信するときに圧縮し、送信されるデータの量を削減します。これは、低速接続の場合に役立ちます。
はい、これは同じシステム上での USB から USB への転送なので、速度はすでに最適化されている可能性がありますが、-z
自然な USB データ転送のボトルネックを克服するのに役立つかどうかを確認しても害はありません。
これらのフラグやその他のフラグを説明する、シンプルでわかりやすいチュートリアルです。こちらからご覧いただけます。