学生の頃はあこがれだったUnixが好きな 大曽根のBlogです
Akira Ohsone's Weblog
アーカイブ
« 11月 2009
1
2
3
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
26
27
28
29
30
     
       
今日
Click me to subscribe
Search

リンク
 

Today's Page Hits: 288

« Bicycle27 - Sun's... | メイン | file system copy... »
金曜日 9 26, 2008
file system copy with zfs

ファイルシステムの複写をZFSでおこなう

またしてもZFSを使ったちょっとした試験をしました。

私がこういう試験をするのは社内で利用しているシステムの更新をする時の、 実際の更新までの空いた時間でやっているので毎回違う構成になってしまいます。 今回のマシンも決して新しいマシンとは言えないのですが、もうすぐ実際の運用に回します。
今回はすでにZFSを使っていて、 マシン間や新しいディスクアレイに移行する時に どうやって行うが早いのかいろいろ試してみました。 ZFSどうしなら当然zfs send/zfs recvの組み合わせが思い浮かびますが、 果たしてどのくらい他の方法に比べて早いのか? また、zfs send/recv はリリース間の互換性を今のところ保証していないので、 将来的にマシン間ではできなくなる可能性もあります。 他の方法はtar/gtar/cpioをそれぞれ試してみました。

まずはハードウエアの構成ですが、

System : Sun Fire V1280 CPU Type : SUNW,UltraSPARC-III+ * 12 CPU MHz : 900MHz CPU 2nd Cache : 8MB Memory : 86GB Disk : 36GB * 3 Disk Array : StorageTek 6140
となり、サーバは少し古いですが、メモリはたっぷりです。 OSはSolaris 10 + patch です。 ディスクアレーは私のブログに登場する中では珍しく現在販売している最新機種です (^ ^)。 試験は36GBをZFSで3way mirrorにしたファイルシステムにおいてあるものを、 6140のRAID-5に複写するという形で行いました。 結果を見るとわかりますが、この構成の詳細はあまり重要ではありませんでした。 複写したファイルシステムはある製品のソースコードが入っているもので、 およそ 16GB の容量に32万個のファイル(ディレクトリをのぞく)が入っているものです。 16GBということで、このシステムのメインメモリーにキャッシュされると思われるので、 ディスクのI/Oはこのベンチマークにはほとんど影響されない予定です。

各方法の実行の仕方は、

tar EcfbB - 1024 . | (cd /${T} ; timex tar xfb - 1024) gtar cfbB - 1024 . | (cd /${T} ; timex gtar xfb - 1024) find . -print | cpio -ocC 524288 | (cd /${T} ; timex cpio -idmlC 524288 zfs send ${SP}@bench | timex zfs recv ${T}
の様になっております。 また、念のために読み込みだけの時間も計りました (上の例では書き込みのプロセスだけを計っていますが、 読み込み時は書き込み先を/dev/nullにして、読み込みのプロセスを計測しています)。

結果は:
read only copy
Real timeUser timeSys time Real timeUser timeSys time
tar 05:3404:1601:17 32:2206:1732:13
gtar 01:0600:1800:45 06:1800:4108:08
cpio 02:2100:2002:23 09:4700:4410:12
zfs send/recv 00:5600:0000:56 04:5000:0006:30

ある意味想定通りCPUで頭打ちになっています。 しかし、これほどtarが遅いとは思いませんでした。 というか、gtarって早いんですね。 zfs send/recvが勝ってはいますが、思いの外gtarと近かったです。 ディスクアレイへの書き込みに関しては、StorageTek 3510FCへの書き込み (しかも、RAID-5に使っているディスクの本数も違う)と比べて誤差ぐらいの差しかありませんでしたので、 関係なさそうです。 この中で実時間よりもCPU時間の長い物がありますが、 Solarisのカーネルがマルチスレッドで複数のCPUを効率よく使って結果だと 思っているのですが、確認していません。 とここまで書いて思ったのですが、このマシン、運用に回すまでまだ1,2週間あるので、 もっと大きな(メインメモリを超えるような)ものもやってみようと思います。

Posted at 07:58午後 9 26, 2008 by Akira Ohsone in Solaris  |  投稿されたコメント[2]

投稿されたコメント:

面白い結果ですね~
cpio はまぁそんなもんかなと思いますが、確かに gtar が意外に早いのに驚きました。 blocking factor、同じサイズですよね?
ぜひメモリを超えるようなのもやってみてください!

Posted by Yuta on 9月月 28日, 2008年 at 10:53 午前 JST #

Yuta さんコメントありがとうございます。Blocking Factorは同じにしてあります。もっとも、zfs send/recvは
指定できないのでdefaultのままでけど。はい、メモリの大きさを超えるのは今やっておりますが、いかんせん
時間がかかるのでしばらくお待ちください。

Posted by Akira Ohsone on 9月月 28日, 2008年 at 07:35 午後 JST #

コメント
コメントは無効になっています。