web-dev-qa-db-ja.com

バックアップ中にディスクI / Oを制限するにはどうすればよいですか?

私は基本的に夜に単純な「tarzcf」を実行するcronを持っています。

サーバーには次のものがあります。

  • 8コア-Intel(R)Xeon(R)CPU E5606 @ 2.13GHz
  • 25GB RAM
  • Ubuntu 12.04.2 LTS
  • ハードウェアRAID1(LSI Logic/Symbios Logic MegaRAID SAS SMC2108)、2台の2.728TBハードドライブ

監視画面のホストで確認できるように:

http://clip2net.com/s/57YRKP

タールのほぼすべての時間で、ディスクI/Oは90%を超え、他のすべてのアプリ(mysql、Apache)の速度が大幅に低下します。

2つの質問:

  • バックアップ中にディスクI/Oが非常に高くなるのは正常ですか?
  • 他のアプリが引き続き正しく動作できるように、ディスクI/Oを制限する方法はありますか?

ありがとうございました!

14
acemtp

ioniceを使用したかなり一般的なアプローチのほかに、(DM)ブロックデバイスへの帯域幅を正確に制御できるNiceデバイスマッパーターゲット(ioband)があります。残念ながら、これは標準カーネルの一部ではありません。

さらに、おそらくtarを高速化できます

  1. ファイル名をディスクキャッシュに読み込む:find /source/path -printf ""
  2. Iノードをディスクキャッシュに読み込む:find /source/path -perm 777 -printf ""
  3. Tarに、ディスクとの間でより大きなブロックを読み書きさせる。 mbufferまたはバッファー(少なくとも100 MiBのRAM)を備えたパイプを使用:tar ... | mbuffer -m 256M -P 100 -p 1 ...
11
Hauke Laging

バックアップは通常、大きなファイルを含む大きなファイルツリー上で作成されるため、バックアップ中に高いI/Oが発生することが予想されます。 ioniceを使用して、クラスとレベルを使用してLinuxのI/Oジョブに優先順位を付けることができます。 IIRC、クラス2、レベル7は、他のI/O負荷やユーザーから実質的に見えなくなる最低の非飢餓レベルです。見る man ionice使用法と詳細について。

13
bayindirh

私はtarを捨て、rsyncを使用することをお勧めします(Dogsbodyによって言及されたとおり)。私はBackupPCを使用してWindowsおよびLinuxシステム上のファイルをバックアップし、tarおよびrsyncの使用をサポートし、ハードリンクを自動的に処理し、優れたWebインターフェイスを提供します。

http://backuppc.sourceforge.net/

1
Atari911

他の人が答えたように、はい、これは正常であり、ioniceはシステムに影響を与えないための良い一般的な方法です。

人々がtarする必要がないのに、物事を起こすのを何度も見ました。コピーしているデータの一部が最後のコピー以降変更されていない場合は、rsyncを試してみることをお勧めします。

これにより、IOは、最後のコピー以降に変更されたファイルのみをコピーすることで削減されます。IOを半分以上削減することはできません。データは引き続き読み取る必要がありますが、書き込まれるデータの量は大幅に削減されます(ハードウェアによっては動作が遅くなる場合もあります)。

実行するたびに個別のコピー/バックアップが必要な場合、最も強力なオプションは–link-destで、変更されていないファイルを以前のバックアップにハードリンクできます。これにより、バックアップサーバーのスペースを大幅に節約できます。例えば私はマシン(Fred)をバックアップし、Fredは20GBのHDを持っており、/ procと/ devを除くドライブ全体をバックアップ/コピーします。これで、バックアップサーバーに20GBのディレクトリができました。翌日、私は再びフレッドをバックアップし、昨日のバックアップに–link-destします。 Rsyncはリモートファイルをローカルコピーと比較し、まったく同じ場合、それらを転送する手間はかかりませんが、新しいファイルを昨日のファイルにハードリンクします。変更されたファイルはすべて新しくコピーされます(可能であれば、昨日のバックアップを使用して部分的にコピーされます)。昨日から変更されたファイルが100MBしかない場合、2つのディレクトリがあり、両方とも20GBのファイルがありますが、バックアップサーバーで20.1Gbのスペースしか占有していません。

それがあなたの質問に役立ち、それでも答えてくれることを願っています。

0
Dogsbody