私は基本的に夜に単純な「tarzcf」を実行するcronを持っています。
サーバーには次のものがあります。
監視画面のホストで確認できるように:
タールのほぼすべての時間で、ディスクI/Oは90%を超え、他のすべてのアプリ(mysql、Apache)の速度が大幅に低下します。
2つの質問:
ありがとうございました!
ionice
を使用したかなり一般的なアプローチのほかに、(DM)ブロックデバイスへの帯域幅を正確に制御できるNiceデバイスマッパーターゲット(ioband)があります。残念ながら、これは標準カーネルの一部ではありません。
さらに、おそらくtarを高速化できます
find /source/path -printf ""
find /source/path -perm 777 -printf ""
tar ... | mbuffer -m 256M -P 100 -p 1 ...
バックアップは通常、大きなファイルを含む大きなファイルツリー上で作成されるため、バックアップ中に高いI/Oが発生することが予想されます。 ionice
を使用して、クラスとレベルを使用してLinuxのI/Oジョブに優先順位を付けることができます。 IIRC、クラス2、レベル7は、他のI/O負荷やユーザーから実質的に見えなくなる最低の非飢餓レベルです。見る man ionice
使用法と詳細について。
私はtarを捨て、rsyncを使用することをお勧めします(Dogsbodyによって言及されたとおり)。私はBackupPCを使用してWindowsおよびLinuxシステム上のファイルをバックアップし、tarおよびrsyncの使用をサポートし、ハードリンクを自動的に処理し、優れたWebインターフェイスを提供します。
他の人が答えたように、はい、これは正常であり、ionice
はシステムに影響を与えないための良い一般的な方法です。
人々がtar
する必要がないのに、物事を起こすのを何度も見ました。コピーしているデータの一部が最後のコピー以降変更されていない場合は、rsync
を試してみることをお勧めします。
これにより、IOは、最後のコピー以降に変更されたファイルのみをコピーすることで削減されます。IOを半分以上削減することはできません。データは引き続き読み取る必要がありますが、書き込まれるデータの量は大幅に削減されます(ハードウェアによっては動作が遅くなる場合もあります)。
実行するたびに個別のコピー/バックアップが必要な場合、最も強力なオプションは–link-destで、変更されていないファイルを以前のバックアップにハードリンクできます。これにより、バックアップサーバーのスペースを大幅に節約できます。例えば私はマシン(Fred)をバックアップし、Fredは20GBのHDを持っており、/ procと/ devを除くドライブ全体をバックアップ/コピーします。これで、バックアップサーバーに20GBのディレクトリができました。翌日、私は再びフレッドをバックアップし、昨日のバックアップに–link-destします。 Rsyncはリモートファイルをローカルコピーと比較し、まったく同じ場合、それらを転送する手間はかかりませんが、新しいファイルを昨日のファイルにハードリンクします。変更されたファイルはすべて新しくコピーされます(可能であれば、昨日のバックアップを使用して部分的にコピーされます)。昨日から変更されたファイルが100MBしかない場合、2つのディレクトリがあり、両方とも20GBのファイルがありますが、バックアップサーバーで20.1Gbのスペースしか占有していません。
それがあなたの質問に役立ち、それでも答えてくれることを願っています。