- PR -

tarのバックアップ時間

投稿者投稿内容
すか
会議室デビュー日: 2004/03/08
投稿数: 3
投稿日時: 2004-03-08 11:37
毎度お世話になります。

tarで日次バックアップを行っています。
この時、あるディレクトリ下の10000ファイル(total500MB)のバックアップをtarにて実施した場合、15MB/Sのスピードが得られました。
しかし同じ10000ファイル(total500MB)でもディレクトリが多数分かれている場合には、5MB程度しかスピードが出ません。

これはtarの仕様でそうなっているのでしょうか。それとも他に原因があるのでしょうか。
お解りの方、ぜひお助けください。
よろしくお願いします。
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2004-03-08 12:02
サイズより、ファイル(ディレクトリも含む)数が問題だと思いますよ。
# find . -print | wc
と実行して、ファイル数(表示される数字の1個目)を比較してみると良いですよ。
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2004-03-08 12:27
ごめんなさい、的外れレスでした。
ファイル数は一緒なんですね。

ということは、両者ではディレクトリ数に違いがあるわけですね。
ディレクトリ数だけを比較するとどれくらい違いますか?
すか
会議室デビュー日: 2004/03/08
投稿数: 3
投稿日時: 2004-03-08 12:28
こんにちは。早速のお返事ありがとうございます。

説明が足りませんでした。
10000ファイルの内訳は同じなんです。
ファイルがある場所が、あるディレクトリの下にまとまってあるのか、色々なディレクトリにバラケているかの違いなんです。
例えば、/a/file1,/a/file2…の場合と/a/b/file1,/x/y/file2,…(←こいつらはもっと階層が深い)という具合です。
/a/file1と/a/b/file1、/a/file2と/z/y/file2は同じ内容。

(total500MB)というのは余計な情報でした。
はゆる
ぬし
会議室デビュー日: 2004/02/16
投稿数: 1008
お住まい・勤務地: 首都圏をウロウロと
投稿日時: 2004-03-08 12:44
こんにちは〜。

こちら、複数のディレクトリに分かれているとのことですが、ディスク自体は 1本なので
しょうか?
(/a/b(/file1) は HDD で /x/y(/file2) は SCSI だ、等)

当然ですが、遅い媒体を利用した場合は、その分処理が遅くなります。
HDD でも性能は異なりますので、時間(スピード)を気にされるようでしたら、それらの
スペックも調べておくとよいと思います。
すか
会議室デビュー日: 2004/03/08
投稿数: 3
投稿日時: 2004-03-08 13:00
こんにちは。

HDDは一つです。

ディレクトリがいっぱい分かれていると、分かれているファイル毎にディレクトリ検索を行うのでスピードが落ちるのかな、と考えていたのですが…。どうなんでしょ。そういうのってどっかに記述があるのでしょうかね。仕様書とか。
佐々木
大ベテラン
会議室デビュー日: 2003/03/30
投稿数: 121
投稿日時: 2004-03-08 14:45
引用:

ディレクトリがいっぱい分かれていると、分かれているファイル毎にディレクトリ検索を行うのでスピードが落ちるのかな、と考えていたのですが…。どうなんでしょ。そういうのってどっかに記述があるのでしょうかね。仕様書とか。


GNU tarのソースを見れば全てがわかると思いますが、なかなか我々一般人には手強いですよね。。

ただ、あまり難しく考えなくて良いんじゃないですか。たくさんのディレクトリにファイルが分散してるなら、当然余計な時間がかかるでしょう。opendir,readir,closedirの発行がディレクトリの数分増えますし、多数のディレクトリに分散されたファイルが、「tarがディレクトリツリーをトラバースするのと同じ順番で」ディスク上に配置されていることは当然期待できないので、ヘッドのシークに要する時間も増えるでしょう。


[ メッセージ編集済み 編集者: サ 編集日時 2004-03-08 14:52 ]
はゆる
ぬし
会議室デビュー日: 2004/02/16
投稿数: 1008
お住まい・勤務地: 首都圏をウロウロと
投稿日時: 2004-03-08 15:04
どうも〜。

そうですか、HDD は 1本ですか…。
基本的に、ディレクトリが分かれたりすれば、その分読み出しのための時間がかかるのは仕方が無い(所詮 ”円盤” が回ってますので)&ディレクトリ情報の書き込み分もプラス
される(tar ボールのサイズも大きくなる)とは思うのですが、3分の 1 はちょっと落ち
すぎかなぁ、とも思います。
(よっぽど細かくファイルが散在しているのでしょうか?)
それと、マシン自体の負荷も影響するか、と。
あとは、ブロックサイズを調整してみるといいかもしれません。
(あ゛〜昔の資料がいま手元にない〜〜〜)
あまり参考にならなかったらすみません。_o_

ちなみに、「仕様書」 というものはないと思っています。
各デバイスのスペックとマシン性能、ファイルの状態(散在してるとか、バイナリばかり
だとか)から見積りを作って、実際に時間を計測する他ないのではないでしょうか…。
(他によい方法があったら教えてください!苦笑)

そうそう、次の点はどうなっていらっしゃいますか?

  • tar は HDD 上に作っている?
  • ファイル自体は、本当に同一ディレクトリにあるものと同じ?
  • tar の手順も、差し支えない範囲で公開していただければ(シェルなど)。

スキルアップ/キャリアアップ(JOB@IT)