
構成のバックアップドライブとして外付けUSB 2ドライブを使用しています。スナップショットバックアップ用です。スナップショットの管理にはいくつかの標準コマンドを使用します。
rm -rf
: 期限切れのスナップショットを削除しますmv
: 古いスナップショットをスロットの下に移動しますcp -al
: 最後のスナップショットを新しいスロットに複製しますrsync -a --delete --numeric-ids --relative
: 新しいスナップショットを同期します
以下のログからわかるように、ほとんどの時間はrm -rf
と のcp -al
手順に費やされています。
[25/Dec/2010:14:00:02] rsnapshot hourly: started
[25/Dec/2010:14:00:02] echo 21012 > /var/run/rsnapshot.pid
[25/Dec/2010:14:00:02] rm -rf /mnt/extdrive/snapshots/hourly.5/
[25/Dec/2010:14:15:48] mv /mnt/extdrive/snapshots/hourly.4/ /mnt/extdrive/snapshots/hourly.5/
[25/Dec/2010:14:15:48] mv /mnt/extdrive/snapshots/hourly.3/ /mnt/extdrive/snapshots/hourly.4/
[25/Dec/2010:14:15:48] mv /mnt/extdrive/snapshots/hourly.2/ /mnt/extdrive/snapshots/hourly.3/
[25/Dec/2010:14:15:48] mv /mnt/extdrive/snapshots/hourly.1/ /mnt/extdrive/snapshots/hourly.2/
[25/Dec/2010:14:15:48] cp -al /mnt/extdrive/snapshots/hourly.0 /mnt/extdrive/snapshots/hourly.1
[25/Dec/2010:14:23:32] rsync -a --delete --numeric-ids --relative /etc /mnt/extdrive/snapshots/hourly.0/sm4/
[25/Dec/2010:14:23:52] touch /mnt/extdrive/snapshots/hourly.0/
[25/Dec/2010:14:23:52] rm -f /var/run/rsnapshot.pid
[25/Dec/2010:14:23:52] rsnapshot hourly: completed successfully
私の質問:
現在、ファイルシステムには ext4 を使用しています。Red Hat で利用できるものの中では、これが最善の選択ではないかもしれません。プロセスを高速化するための推奨事項はありますか?
パーティションのマウント オプションは です
sync,dirsync 1 2
。これは rsnapshot 専用なので、これを最適化する方法はありますか? もちろん、理由を教えていただければ幸いです。
答え1
ext4でも大丈夫です。
「sync,dirsync」オプションは、データとメタデータの更新を同期させますが、これはほとんどのワークロードのパフォーマンスに大きな悪影響を及ぼします。これらのオプションを削除すると、パフォーマンスが向上する可能性が高くなりますが、ケーブルを抜く前にデバイスをアンマウントすることを忘れないでください。そうしないと、データが失われる可能性があります (おそらくこれが、最初にオプションが追加された理由です。これらはデフォルトのオプションではありません。または、ディストリビューションが USB デバイスに対して行う特別な魔法のようなものかもしれません)。
noatime は atime 更新を無効にし、ファイルシステムへの書き込み量を減らします。rsnapshot を含むほぼすべてのアプリケーションは atime を必要としないため、これは完全に安全なはずです。
data=writeback はジャーナリングのオーバーヘッドを削減しますが、電源障害が発生した場合にデータが失われる可能性がわずかに高くなります。ディストリビューションによっては、これがすでにデフォルトになっている場合があります。
ext4 ではジャーナルを完全に無効にすることもできます (カーネル 2.6.29 以降) が、これはお勧めしません。ext4 の他のすべての改善点も保持されているため、ext2 を使用するよりも高速になるはずです。
barrier=0 はバリアを無効にします。これにより書き込みのパフォーマンスが向上しますが、クラッシュ時にデータが失われる可能性が高くなります。
答え2
rsnapshot を設定して、より多くのスナップショット (たとえば 9999) を保持し、crontab を使用してディスクから自分で削除します。これにより、rnapshot の速度がより予測可能になります。
答え3
また、を使用すると--link-dest
、 の実行方法の計画も変更されcp
、パフォーマンスに大きく影響する可能性があることにも注意してください (基本的にrm
は を使用しhourly.$old
、その後 を使用してからへrsync
のコピーとソースからの同期を同時に実行します)。hourly.1
hourly.0
さらに議論がある代替技術はこちら- 基本的には、最後の1時間ごとのスナップショットを、 - を使用するmv hourly.$old hourly.0
代わりに新しいものに回転し、からにを実行して最新の状態にしますが、私はそれを試していません -に頼るのではなく、手動で回転を行う必要があります。rm
cp -afl
hourly.1
hourly.0
rsnapshot