大きなファイルをコピーするときにリソースの使用量を減らすにはどうすればよいですか?


8

大きなファイル(破損したMySQLテーブル〜40GB)を修復するために別のサーバーに移動する必要があります。(運用サーバーで修復しようとすると、すぐにサーバーが強制終了されました)。

これを行うには、.frm、.MYI、および.MYDファイルを運用サーバーからクラウドサーバーにrsyncします。

/ var / lib / mysql / {database} /から/ home / {myuser}にファイルをコピーしているので、rsyncコマンドのルートアクセスを有効にする必要がなく、データベースファイルが100%でないことを確認できます。使用中(読み書きしないでください。ただし、確認のために運用データベースをシャットダウンする必要はありません)。

最初にコピーしようとしたファイルは約10GBでした。運用サーバーのある部分から別の部分、つまり同じディスクアレイに転送しています。

残念ながら、コピーコマンド "cp filename newfilename"は多くのリソースを消費し、サーバーを停止させました。

ファイルを別のディレクトリにコピーするときに、より少ないリソースを使用するにはどうすればよいですか?(実際にかかる時間は問題ではありません)。

私がこれを管理することを想定すると、ファイルをクラウドにrsyncするときにどのようなリソース使用量を期待できますか?

誰かがこれを行うより良い方法を提案できますか?私はすぐにディスク領域を使い果たしているので、このテーブルをできるだけ早く修復してアーカイブする必要があります。

回答:


5

nice -n10コマンドの前に付けてみましたか?

10デフォルト値です。範囲は、-20(最高の優先度)から19(最低の)です。


:私の理解@ジョナサンこれはCPUのuseageだけでなく、ディスクI / OとRAM制限されるということですlinux.com/archive/feed/58638
ジョン・M

はい、しかしそれはボトルネックの1つを減らすという観点からの始まりです-マシンのハングを停止するのに十分かもしれません。
ジョナサンロス

これによると感謝@ジョナサン・ロスは、:linux.die.net/man/1/ioniceそれだけでうまくいくかもしれないので、「プログラムは、IOの優先順位のためにCPUの素敵な設定を継承」が、私は「良い」の組み合わせを研究していますし、 「ionice」
ジョンM

いい考え。私はいつもnice癖から始めていました。iotopあなたの友達でもあります。
ジョナサンロス

3
私が実行した最後のコマンドは次のとおりでした。nice -n 20 ionice -c 3 cp /var/lib/mysql/{database}/{table}.MYI /home/{USER}/これによりサーバーの負荷が増加し、少し遅くなりましたが、転送の間Webサイトは利用可能でした
Jon M

10

rsyncの帯域幅制限の他に、次の2つの選択肢があります。

  • ionice -c 3 cp foo bar
  • buffer -u 150 -m 16m -s 100m -p 75 -i foo -o bar

ioniceI / Oスケジューラとインターフェースします。 bufferは文字デバイスをより効率的に支援することを目的とした循環バッファですが、-u 150マニュアルによると、書き込みの間隔は150マイクロ秒です。

両方ともionicebuffer標準のUbuntuビルドで入手できます。iotopカーネルにCONFIG_TASK_DELAY_ACCTが構成されている場合に便利ですが、私のUbuntuボックスでは、コマンドの使いやすさが大幅に制限されていません。ハードドライブを溺死させるコマンドがわかっているので、少し余裕を持たせたいだけです。

さらに、コピーの進行中に、iostat -x 1(通常はsysstatパッケージに含まれる)の出力を確認し、コピー中にデバイスの%busyフィールドが90%以下であることを確認します。99〜100%の場合は、他のI / Oプロセスが不足しています。


@zerolagtimeへの返信ありがとうございます。結局、同様のioniceコマンドを使用しましたが、以前の回答を正しいものとしてマークしました
Jon M

ionice -c 3 -p $pidUnison外付けHDDで一斉に動作しています、thx !!
Aquarius Power

6

--bwlimit = KBPSスイッチを指定してrsyncを使用します(I / O帯域幅を制限、1秒あたりのキロバイト数)。小さいファイルで遊んで、転送速度とシステム使用量の最適な組み合わせを見つけてください。「vmstat 1」を使用して2番目のシェルで監視する


私は確かにRSYNCコマンドのリソースを制限するためにこれを試みますが、現時点では「cp」コマンドを使用してサーバー上の別の場所にファイルをコピーしようとしています。
Jon M

rsyncを使用してファイルをローカルにコピーし、-bwlimitスイッチで帯域幅を制限することもできます。
シャカランディ

rsyncローカルにファイルをコピーします。考えrsync --bwlimit=28000 foo.frm /bar/foo.frmて、それでそれを見てくださいiostatvmstatドライブを飽和状態にしていたのに、なぜ通知されるのかわかりません。で%busyを探しiostatます。
zerolagtime 2011

まあ、vmstatはブロックデバイスのIOを表示します。さらに、マシンの使用に重要な他のすべてを見ることができます(CPU、ユーザープロセス、CPU待機、スワップなど)
shakalandy

0

1つの選択肢は次のとおりです。

scp -l ${KBPS} ${src} ${dest}

しかし、$ {src}が成長中のファイルである場合は機能しないと思います...ソースをコピーして閉じられるのを待つ方法を提案できますか...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.