レンタルサーバー・自宅サーバー設定・構築のヒント
レンタルサーバー・自宅サーバー設定・構築のヒント - レンタルサーバー・自宅サーバーの設定・構築情報を公開しています。

HDD負荷軽減のために cp, mv コマンドの代わりに rsync コマンド使う

2015年6月16日 2015年6月16日
rsync copy

通常、cp, mvコマンドは、特にHDDの状態などを意識することなく利用できるリソースを極限まで利用してファイルの制御を行おうとします。 そのことによって、ある種、HDDの占有状態となり、他プロセスがHDDへのアクセス待ちとなることが良くあります。 特に大きなファイル操作を行う際は、かなり待たされることがあります。

この時、待たされる他プロセスの中で動画再生やリアルタイムでの情報収集などの一部の情報が欠落すると問題が大きいプロセスがあると非常にやっかいです。 動画再生であれば、如実に画面が黒くなったり、コマ落ち、音落ちなどで見づらいものになってしまいます。 また、情報収集などのプロセスでは、情報の書き込み待ちであまりにも長ければエラーとして処理されることもあるでしょう。

そうならないように、いろんな方法があると思いますが、ここでは、HDD負荷軽減のために cp, mv コマンドの代わりに rsync コマンド使ってみたいと思います。

cp と rsync 実行速度と負荷の違いを計測してみた

mvコマンドは、パーティションが異なる移動の場合、ファイルをコピーして、コピー元ファイルを削除するという処理の流れになるかと思います。 ここでのファイルのコピーは、cpコマンドとほぼ同じ動作になります。

しかし、rsyncは、ちょっと違います。

rsyncは、そもそも同期をとる、あるいは、バックアップ採取用のコマンドなので、必ず、コピー元とコピー先の違いを確認しようとします。 (ざっくりとした説明ですが)その違いを確認するためにコピー元とコピー先のおなじエリア(ブロック)のチェックサムを作成し、それを比較することで同じかどうかを判定しています。 そのため、チェックサムを作成する分、CPUに負荷がかかります。 逆に、CPUに負荷がかかっている間は、HDDの負荷は軽減するんです。

では、実際に、cp と rsync とで 処理時間を計測し、その時の負荷を比較してみましょう。

ここでは、/var , /var2 は、パーティションの異なるディレクトリとします。
また、timeコマンドは、処理の時間を計測するコマンドです。
$ time ls -l /var/aaa.bin
-rw-r--r-- 1 root root 4294967296  6月 15 08:57 /var/aaa.bin

real    0m0.078s
user    0m0.000s
sys     0m0.004s
このように指定すると lsコマンドが要した処理時間が出力されます。
  • real : 実際にリアクションが戻るまでの時間
  • user : 実行したプログラムが要した時間
  • sys : OSが要した時間

cpコマンドを使ってコピーしてみる

cpコマンドを使って、単純に /var/aaa.bin → /var2/aaa.bin へコピーします。

$ time cp /var/aaa.bin /var2/aaa.bin

real    0m34.131s
user    0m0.076s
sys     0m13.528s

この結果から、このファイルをコピーするのに34秒かかったことがわかります。

rsyncコマンドを使ってコピー(制限無)してみる

rsyncコマンドを使って、単純に /var/aaa.bin → /var2/aaa.bin へコピーします。
また、ここでは、-av オプションを指定しています。それぞれ以下の意味になります。

  • -a : アーカイブモード(ファイル属性もコピーする)
  • -v : 状況を出力する
$ time rsync -av /var/aaa.bin /var2/aaa.bin
sending incremental file list
/var/aaa.bin

sent 4,296,015,959 bytes  received 35 bytes  86,788,201.90 bytes/sec
total size is 4,294,967,296  speedup is 1.00

real    0m48.429s
user    0m41.772s
sys     0m24.264s

この結果から、このファイルをコピーするのに48秒かかったことがわかります。
cpコマンドと比べて、約1.5倍遅いのがわかります。

rsyncコマンドを使ってコピー(制限有)してみる

rsyncコマンドを使って、帯域制限(bwlimit オプション)を指定して /var/aaa.bin → /var2/aaa.bin へコピーします。
bwlimitオプションは、帯域制限をKBPS(kilobytes per second)で指定することで、CPUの負荷、HDDの負荷、あるいは、ホスト間であれば、ネットワークの負荷をコントロールすることができます。 もちろん、ここでは、ローカルディスク間となりますが、その場合でも、このオプションを使って負荷をコントロールすることができます。

$ time rsync -av --bwlimit=20000 /var/aaa.bin /var2/aaa.bin
sending incremental file list
/var/aaa.bin

sent 4,296,015,959 bytes  received 35 bytes  20,408,627.05 bytes/sec
total size is 4,294,967,296  speedup is 1.00

real    3m30.003s
user    0m44.960s
sys     0m25.376s

この結果から、このファイルをコピーするのに3分30秒かかったことがわかります。
rsyncコマンドの制限無時から比べて、約4倍遅いのがわかります。

vmstat で負荷をグラフ化してみる

先のコマンドでファイルをコピーした際のシステム状態を vmstat コマンドでモニタリングした結果をグラフ化したものが以下の図です。

vmstat グラフ

cpコマンドでは、cpuの負荷以上にHDDへの負荷が強烈にかかっているのがわかるかと思います。
rsyncコマンド(制限無)では、HDDへの負荷は少ないですが、cpuへの負荷が高くなっています。
rsyncコマンド(制限有)では、cpuおよびHDDへの負荷は少ないですが、時間が長くなっています。

このように 思った通りにCPUおよびHDDの負荷がかかっているがわかるかと思います。


rsync は、ローカルディスク間でも使えるので便利ですね。
cpu負荷が高くなるのは、ちょっと・・・と思われる方も多いと思いますが、最近のcpuはコア技術が発達したのもあって、ある程度、負荷が掛かっても他のプロセスへ与える影響も小さくなっています。 また、特に最近では、大きなファイルを扱うことが多くなりました。 そういうこともあいまって、HDDの負荷が致命的な場面も増えてきたのは間違いないのではないでしょうか。

HDDの負荷軽減には、いろんな回避策はあるかと思いますが、cpコマンドやmvコマンドの代わりに rsyncを一度試されるのも良いかもしれません。一つの解決策になるかもしれません。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない検索ができないことがあります。


関連記事 :

rsync + ssh でファイルの同期をとる

今回は、サーバー間でのファイルの同期についてです。 ウェブサーバーを複数立ち上げて分散化を図った場合、ページ更新するにしても、全ての立ち上 ...

評判のさくらのVPSの2台目を借りてみたけど問題が・・・

この記事は、さくらのVPSの最初のリリース時の記事となっています。 そのため、現在の さくらのVPS とは多少異なる情報が混ざ ...

さくらインターネットさんからDebianミラーサーバー提供らしいです。ついでにtraceroute と ping を実行してみました。

さくらインターネットさんからDebianミラーサーバー提供らしいです。羨ましいーーーーーっ、個人的に提供してくれないかしら。 ...

lsyncd と rsync を使ってリアルタイムなサーバー間ファイル同期を実現する

以前のrsync + ssh でファイルの同期をとるで rsync によるサーバー間でのファイルの同期について話をしました。 また、lsync ...

rsync + ssh でファイルの同期をとる(2) マスターサーバー(コピー元サーバー)でないサーバーへファイルをアップロードした時のリカバリの仕方

以前のrsync + ssh でファイルの同期をとるでサーバー間でのファイルの同期について話をしました。 rsyncを使うと1回のFTPア ...



コメントを投稿 :

お名前 *

メールアドレス *
( メールアドレスが公開されることはありません。)

サイトアドレス

コメント *

* 印の項目は、入力が必要な項目です。




最近投稿の記事

[ 画像提供元 : Amazon ] 先日、1TBのディスクの入れ替え時にバックアップをとろうとディスクコピーを行いました。 その際 ...

Windows で Linux ファイルシステム Ext4 のディスクをマウントするには? Ext3Fsd が、おそらく、最も簡単なツール ...

今回は、Windows で Compass を使ってみました。 Compass とは、 Sass(サス、Syntactica ...

今回は、Anti Adblock を使ってみました。 Anti Adblock とは、 そもそも Adblock という ウェブ ...

デスクトップ環境でない サーバーで、Webページのキャプチャー画像をコマンドで撮る には、wkhtmltoimage, CutyCapt ...


さくらのVPS 全プラン リニューアルです。(石狩(北海道)も選択可)


root権限ありで ¥685 / 月 ~ と非常にリーズナブルな CPU 1(core)の 512 プランから、 最高 CPU 10(core), メモリ 32(GB), SSD容量 800(GB) までとプランが充実。
ディスクは、SSDとHDDの選択が可能になった他、データセンターは人気の東京、石狩(北海道)となりました。

また、どのプランでも好きなOSが選べます
( CentOS, Fedora, Scientific Linux, FreeBSD, Ubutu, Debian )

管理人もおすすめのVPSです。
試用期間がありますから、一度、お試しを!!

詳しくは、http://vps.sakura.ad.jp/さくらのVPSのサイトへ へどうぞ!!

カテゴリ


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。
最近、スワップにも対応した Serverman@VPS は、かなりリーズナブルかもです。

  • メモリ1GB~2GBのEntryプラン :月額:490円
  • メモリ2MB~4GBのStandardプラン :月額:980円
  • メモリ4GB~8GBのProプラン :月額:1,980円

新規申し込みで1ヶ月間完全無料となるキャンペーンを実施中です。
Serverman@VPSの特徴は、安さとIPv6対応です。また、初期設定費0円もポイントです。

IPv6でちょっと遊んでみたい方には、おすすめかもしれませんね。最低利用期間もありませんから、気に入らないときは即解約もできます。

Serverman@VPSの詳細については、 http://dream.jp/vps/ Serverman@VPSのサイトへへどうぞ。



KVM採用 ConoHa VPSは、時間単位で借りれる便利なVPSです。


ConoHa VPS は、初期設定費0円最低利用期間無し時間単位で清算可能、 さらに、Web APIを使って自動化を図ることもできる便利なVPSです。

海外サーバー設置も可能で、ローカル接続にも対応と、かなり、機能豊富なサーバーです。

新規ユーザ登録で、クーポンもらえますから、まずは、お試しですね。

ConoHa VPSの詳細については、
http://www.conoha.jp/ へどうぞ。

KVM採用 お名前.com VPS(KVM) 2G プラン 初期設定費無料 キャンペーン 実施です。


メモリ2GBプラン CPU:3core、Disk:200GB
月額:1,153円から (初期設定:1,680円0円)

さくらのVPSがリニューアルされてもなんのその。
1GBメモリ / 2Core を ¥834 – の格安価格で提供中です!
間違いなくスペックからすると割安感ありです。
年間割引時の途中解約で返金がないのは、 ちょっと残念ですが、それでもこの割安感は魅力です。

まずは、お試しですね。

お名前.com VPS(KVM)の詳細については、
http://www.onamae-server.com/vps/ へどうぞ。(お試し期間が15日あります。)



  • ソーシャルブックマーク

  • はてなブックマークへ追加するはてな登録数
ページトップへ
Time : 0.2294 [s]