HOME / 日記 / ZFSのdedupをためす

Date: 2010/05/14 |  このエントリーをはてなブックマークに追加  |  Tags: OpenSolaris, zfs, dedup

ZFSのdedupをためす

ZFSにはdedupと言われる機能があります。

名前から推察出来るとは思いますが、案外、ぴんと来ない人が多かったので簡単に説明しますと、ディスクの中に既に同じ内容が書き込まれていたら再利用するというものです。

つまり、シンプルに言うと、

  • I have a pen.
  • I have a pencil.

とあったとき、保存されるのは、下記の5個

  1. I
  2. have
  3. a
  4. pen.
  5. pencil.

となり、データの節約が出来るという物です。実際は、ブロック単位(もしかするとzfs get recordsize?)なんですが・・・

またzfsには、cloneという機能によって、1つのファイルシステムのsnapショットから別のファイルシステムを作ることが出来ます。この場合、共通だった部分はそのまま利用し、以後、差分だけが保存されるため、再利用が可能です。

ただその後、オリジンとクローンに対して変更を個別に加えると、徐々に差分が増えます。仮に、同じようなことをしていたとしても、通常はバラバラになってしまいますよね。dedupをつかえば、ブロック単位で同じなら再利用されるため、ディスク容量とディスクアクセスを減らすことができます。

なんだか、とんでもないテクノロジのようですが、zfsの基準となっている、Copy On Writeで考えれてみれば、ファイル書き込みの時に既に同じシグネチャを持ったブロックがあれば再利用するように作れば上手くいくことがわかります。

つまり、snapshot/clone/dedupは仲間というわけです。

実験

というわけで実験。

私のノートパソコンです。

zpool list
NAME    SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
rpool   465G   291G   174G    62%  1.17x  ONLINE  -

dedup率が結構高いのは、zoneを多量に飼ってるいるからかな〜とか思いますが・・・・。それぞれにシステムのクローンがあるわけですしね。

ここで、先日作ったばかりのSourceJuicerの開発環境のovf(VirtualBoxやVMwareのイメージファイル)をコピーします。

ls -l SourceJuicr.7z
-rw-------   1 kohju    justplayer 4324776131  3月 16日  13:30 SourceJuicr.7z

4.1Gもあるファイルです。

コピーします。すぐには終わりませんけどね。

cp SourceJuicr.7z tmp/

結果を見ます。

zpool list
NAME    SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
rpool   465G   291G   174G    62%  1.21x  ONLINE  -

dedup率があがり、FREEは174GBのままです

更にコピーします。

せっかくだから時間計測・・・

time cp SourceJuicr.7z tmp/SourceJuicry.7z
cp SourceJuicr.7z tmp/SourceJuicry.7z  0.00s user 15.81s system 6% cpu 4:01.76 total

計算すると、17MB/secですね。通常ノートパソコンでコピーするとせいぜい5MB/secぐらいなので、速いのかな〜と思いますが、このパソコン、L2ARCとZILがあるので参考にはなりませんか(笑

コピー中の様子です。

kthr      memory            page            disk          faults      cpu
r b w   swap  free  re  mf pi po fr de sr cd s0 -- --   in   sy   cs us sy id
10 0 0 131788 547932 0 896  0  0  0  0  0 37 504 0  0 2104 10243 1866 5 60 35
3 0 0 319424 657080  0 1550 0  0  0  0  0 75 414 0  0 16094 16839 2219 6 45 48
4 0 0 454512 690736  0 1264 0  0  0  0  0 26 431 0  0 24650 9957 2016 5 47 48
1 0 0 354820 575360 17 858  0  0  0  0  0  4 341 0  0 1788 19389 1978 7 33 60
5 0 0 584104 829384  0 966  0  0  0  0  0  6 376 0  0 36202 18169 2098 7 40 52
0 0 0 567512 957528  0 461  0  0  0  0  0  2 253 0  0 1685 24462 2201 11 25 64
0 0 0 526184 1125000 0  73  0  0  0  0  0  5 130 0  0 1354 24751 1950 12 14 74
0 0 0 524772 1295572 0   0  0  0  0  0  0  2 144 0  0 1359 16075 1605 7 15 78
2 0 0 523372 1382840 0   0  0  0  0  0  0  1 134 0  0 1349 23522 1848 11 16 72
0 0 0 522128 1439116 18 112 0  0  0  0  0  2 136 0  0 1520 35257 2259 16 16 68
0 0 0 520812 1513732 0  81  0  0  0  0  0  2 131 0  0 1371 22990 1907 11 14 75
2 0 0 518576 1532200 2  84  0  0  0  0  0  7 146 0  0 1580 32081 2395 16 20 64
0 0 0 516876 1531040 0   1  0  0  0  0  0  2 163 0  0 1482 30758 2193 13 20 67
0 0 0 510560 1524724 8  84  0  0  0  0  0  6 232 0  0 1560 25213 2190 12 21 67
0 0 0 495908 1425108 0 1050 0  0  0  0  0 25 379 0  0 2257 25142 2703 12 33 54
0 0 0 430008 1333344 22 879 0  0  0  0  0  0 397 0  0 2124 17693 1916 7 34 59
0 0 0 334132 1225560 0 209  0  0  0  0  0  1 315 0  0 1845 10929 1826 2 30 68
0 0 0 318348 1259676 0 177  0  0  0  0  0  1 190 0  0 1452 96711 2707 21 26 53
0 0 0 318344 1297148 0   0  0  0  0  0  0  4 152 0  0 1503 20208 1947 10 23 67

つまり、SYSが大きいけど、diskは少なめなのですね。想像通りです。

たしか、同じ物の検出のために、cryptoadmで登録されてるカーネルSHA1ライブラリを使っていると思うので、これをハードウェアオフロードするようなものがあれば、もっと高速になるかも知れませんね。

ちなみに、ノートのスペックは下記の通りです。

  • Thinkpad T61
  • Core2Duo 2.4GHz (T7400)
  • 搭載メモリ8GB
  • 500GBのHDD、64GBのSSD(L2ARC/ZIL)

SYSが大きいってことで、念のため確認。

prstat -mL 
  PID USERNAME USR SYS TRP TFL DFL LCK SLP LAT VCX ICX SCL SIG PROCESS/LWPID 
    5 root     0.0  27 0.0 0.0 0.0 0.0  73 0.1  70  14   0   0 zpool-rpool/13
    5 root     0.0  22 0.0 0.0 0.0 0.0  78 0.2  57  10   0   0 zpool-rpool/39

てなわけで、ディスクI/Oを減らす代わりに、CPUを使うという結果になってることがわかります。

この結果は、ソフトウェアのチューニングパラダイムが、部分的に変わる可能性がありますねぇ。

多分、iSCSIでexportしたやつを、Linuxで使っても同じようにdedupがかかると思いますが、これはまた今度(笑)



日記

Recent Updates

openjdk(SPARC)

SPARC用のJAVA。 最近は新しいバージョンがSPARCでリリースされず、苦労している人も多いのですが、SPARC Solarisの界隈人達がビルドして代わりに使われているものです。 Solaris 11 SPARC jdk builds
»続きを読む

Solaris11のCPU(Critical Patch Unit)の当て方

コンピュータTips/Solaris/Solaris11のCPU(Critical Patch Unit)の当て方

Solaris 11.4には4つのリビジョンがあります。 2024年4月現在、Solaris自体の開発はメンテナンスフェーズになったわけでもなく、SRU毎に、最新機能がモリモリ入っていきます。 GA(Release 版) 一応、無償のOTNライセンスの利用も可能 いわゆる、リリース時点のバージョンのことですが、現在は 利用しません 。 以前は、1〜2年に1度の頻度でリリ …
»続きを読む

Emacs.appで書類(Documents)がアクセス出来ないとき

コンピュータTips/MacOSX/Emacs.appで書類(Documents)がアクセス出来ないとき

Catalina以降の権限問題なので、システム設定のセキュリティとポリシーの中にあるプライバシー内のFull Disk Accessに、Emacs.appと/usr/bin/rubyを入れればすむ。 /usrフォルダを、プライバシーの+から入れるのは、ちょっと面倒なので、あらかじめFinderのお気に入りの中に入れておくと良いでしょう。   rubyが入るのは、Emac …
»続きを読む

SONY WH-1000XM3

自分用メモです。 ノイズキャンセラーの性能が良い。 WH-1000Xのころは、ノイズキャンセラーを有効すると、音は聞こえないのに妙な音圧があったが、それがかなり軽減。個人的には気にならなくなった。 また、WH-1000Xのころは、ノイズキャンセラーを無効にしても、なんか作られたような音が出ていたような気がしたが、割と普通に聞こえる。 USB-Cになったのも良い。飛行機でも使う …
»続きを読む

Catalina(10.15)

Catalina Beta を入れ始めたので、自分用のまとめ。 2019/10/8、Catalinaが振ってきたので製品版用に記載を変えました。 32bitアプリを確認すること。 Activity Monitorで32bitアプリがわかるので、そういうアプリがあるなら代替品を見つけておくこと。 /etc以下のいくつかのファイルをバックアップしておくこと。 /etc …
»続きを読む

ディスクの不良を確認する(iostat -EnのError等)

ディスク関係のスタックをざっくり書くと次の様になっています 例、SAS Expanderを使う場合、 例、AHCIなどを使う場合、 これらのエラーは、次の様なコマンドで知ることができます。 出力結果例 このなかで、 たとえば、SATAディスクを利用している際に負荷が上がってしまい、ディスクの応答が間に合わないシチュエーションでは、Transport Errorが一気に …
»続きを読む

2017年、新年明けまして、おめでとうございます。

日記/2017年、新年明けまして、おめでとうございます。

新年明けまして、おめでとうございます。今年もよろしくお願いします。 昨年中は、皆様にお世話になりました。 昨年は、コツコツと3年程前から行ってきた改革がある程度完成された年で、この先5年、10年を見据えて、次のフェーズへと進む為の土台が完成した年でもありました。 それにキャッチアップする形で、個々の従業員一同が、役割を自覚し、明確に動けた年であったかと考えています。 …
»続きを読む

RSA鍵認証のみにし、Password認証を無効化する

意外に覚えきれなくて、いつも忘れるので、メモついでに残しておきます。 古いOpenSSHや、SunSSHの場合は、これも無効にします。 ユーザ目線でのザックリとした説明を。OpenSSHではなく別のSSH実装も含めて考えているので、OpenSSHのソースをじっくり読んだわけではないため、間違ってたらすみません。 まず、Password認証を無効にする場合、 PasswordAut …
»続きを読む

最新  |  << 前ページ  |  次ページ >>  |  最初