Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ZFSでストレージ

52,661 views

Published on

hbstudy#12の資料です
* こんなに速いZFS
* ZFSが遅くなる訳
* ZFSストレージの実際
* ストレージ以外でも便利なZFS

Published in: Technology

ZFSでストレージ

  1. 1. ZFS でストレージ でも、ストレージだけじゃない ZFS hbstudy #12 みやざきさとる 株式会社NEC情報システムズ 日本 OpenSolaris ユーザグループ
  2. 2. 自己紹介 自社グループ向けの SI をやってます ストレージとかも触ってます OpenSolaris なのは趣味です 趣味を仕事に持ち込むとか m9 (^ Д ^)プギャー hbstudy#12 pg 2 ZFS でストレージ でもストレージだけじゃない ZFS
  3. 3. アジェンダ こんなに速い ZFS ZFS が遅くなる訳 ZFS ストレージの実際 ストレージ以外でも便利な ZFS スナップショットとクローン のおいしい使い方 hbstudy#12 pg 3 ZFS でストレージ でもストレージだけじゃない ZFS
  4. 4. こんなに速い ZFS ところでこれをみてくれ multistream read1m multistream write1m randomread1m randomwrite1m 4000 3556 3500 3000 2881 2677 2500 2152 MB/s 2000 1620 1500 1334 1000 850 832 480 520 527 500 447 0 stripe raidz1 raidz2 hbstudy#12 pg 4 ZFS でストレージ でもストレージだけじゃない ZFS
  5. 5. こんなに速い ZFS こいつをどう思う? random IOPS randomread2k randomwrite2k 180000 160000 157368 140000 120000 100000 IOPS 80000 60000 40000 36348 20000 4085 1117 500 429 0 stripe raidz1 raidz2 hbstudy#12 pg 5 ZFS でストレージ でもストレージだけじゃない ZFS
  6. 6. 測定したのはこのマシン X4400( コントローラ ) J4400×1 SATA HDD 1TB×22 2 Quad Core CPU 64GB メモリ SSD Read cache 100GB×1 SSD Write cache 16GB×2 OpenSolaris に入っている filebench を使用し て計測 hbstudy#12 pg 6 ZFS でストレージ でもストレージだけじゃない ZFS
  7. 7. でもなんか、 RAIDZ の性能が ... multistream read1m multistream write1m randomread1m randomwrite1m 4000 3556 3500 3000 2881 2677 2500 2152 MB/s 2000 1620 1500 1334 1000 850 832 480 520 527 500 447 0 stripe raidz1 raidz2 hbstudy#12 pg 7 ZFS でストレージ でもストレージだけじゃない ZFS
  8. 8. でも、もう少し速くしたい (1) 事前にキャッシュをフラッシュする・しないで比較してみよう raidz2 no cache raidz2 on cache 7000 6042 6000 5000 4026 4000 MB/s 3000 2317 2000 1000 444 529 399 475 226 0 multistreamread 1m multistreamwrite 1m randomread 1m randomwrite 1m hbstudy#12 pg 8 ZFS でストレージ でもストレージだけじゃない ZFS
  9. 9. でも、もう少し速くしたい (2) キャッシュというのは ARC(Adaptive Replacement Cache) のこと raidz2 no cache raidz2 on cache 300000 259206 250000 200000 150000 IOPS 100000 50000 511 413 3611 0 randomread2k randomwrite2k hbstudy#12 pg 9 ZFS でストレージ でもストレージだけじゃない ZFS
  10. 10. ZFS は遅い? メモリをいっぱい積めば速くなります CPU も速くすれば速くなります HDD を増やすとやっぱり速くなります NAS にするなら、 LACP で束ねるとか 10G とかで繋げば (ry FC で繋げば (ry FCoE で (ry InfiniBand で (ry hbstudy#12 pg 10 ZFS でストレージ でもストレージだけじゃない ZFS
  11. 11. ここで、 ZFS のおさらい 128bit ファイルシステム 大容量のファイルに対応 HDD をストレージプールとして管理し、 簡単に HDD 増設が可能 RAID(0,1,5,6) に相当する機能を提供 Copy-on-Write によるデータ完全性の保証 スナップショット・クローン機能 Hybrid Storage Pool Architecture hbstudy#12 pg 11 ZFS でストレージ でもストレージだけじゃない ZFS
  12. 12. ここで、 ZFS のおさらい 他にも重複排除とかの新機能 詳しくは、以下の資料 (OpenSolarisNightSeminar の資料 ) を参考 http://jp.sun.com/developers/events/nightSeminar/ PDF/OSNS-Solaris_ZFS-20090306.pdf http://mediacast.sun.com/users/hiroa/media/OSNS _ZFS-20090710.pdf/details http://mediacast.sun.com/users/hiroa/media/OSHT _ZFS-20091218.pdf/details hbstudy#12 pg 12 ZFS でストレージ でもストレージだけじゃない ZFS
  13. 13. Hybrid Storage Pool Architecture とは メモリ +SSD+HDD でストレージプールを構成 ARC – Adaptive Replacement Cache メモリ上にある ZFS の Cache L2ARC – Level 2 ARC 高速 ARC からあふれた部分を保存 メモリ ZIL – ZFS Intent Log SSD 中速 同期書き込み用ログ領域 Disk Storage Pool HDD 低速 SATA 等の HDD 上記 ARC/L2ARC/ZIL の機能に より、高速の Disk を使用しなくても高性能を実現 hbstudy#12 pg 13 ZFS でストレージ でもストレージだけじゃない ZFS
  14. 14. ARC/L2ARC の役割 ARC は、読み込み・書き込みキャッシュ ARC はメモリを使用 ARC は動的に増えていく 最大で、メインメモリの 1GB を残した全部 もしくは全体の 3/4 を使用 ARC からこぼれたモノが L2ARC(SSD) に 書き込まれる hbstudy#12 pg 14 ZFS でストレージ でもストレージだけじゃない ZFS
  15. 15. メモリが多いと ZFS は速くなる メモリが多ければ多いほど ARC も多くなる ARC にあるデータは、アクセスが速くなる 結論 メモリが多いと ZFS は速い! L2ARC に落ちると遅くなる。が、 L2ARC を HDD より 速い SSD 上に置くと、 HDD のみより速くなる hbstudy#12 pg 15 ZFS でストレージ でもストレージだけじゃない ZFS
  16. 16. ZFS で CPU パワーが必要な訳 ZFS で CPU パワーが必要な処理 ブロック単位の Checksum RAIDZ のパリティ計算 圧縮 重複排除 hbstudy#12 pg 16 ZFS でストレージ でもストレージだけじゃない ZFS
  17. 17. ブロック単位の Checksum ZFS は、ブロックごとに Checksum を保存 Checksum と比較することでデータの完全性を保証 セルフヒーリング データを重複化してた場合は、正常データのみを読み込 み、異常データを正常データで上書き Checksum 計算に CPU が必要 CPU の暗号化支援機能を使用可能 CPU の暗号化支援機能で、 CPU 使用率を低下 hbstudy#12 pg 17 ZFS でストレージ でもストレージだけじゃない ZFS
  18. 18. 圧縮・重複排除 圧縮は CPU が実行 重複排除は Checksum を元に同じデータの ブロックがあるかどうかを探す これら機能を ON にしていると、 CPU パワーがより必要になる hbstudy#12 pg 18 ZFS でストレージ でもストレージだけじゃない ZFS
  19. 19. RAIDZ のパリティ計算 RAIDZ はソフトウェア RAID パリティ計算を CPU で行う RAIDZ2 だとさらに倍。 RAIDZ3 だと3倍 ストライプ幅がパリティ計算量を決める あまり長いストライプ幅すると、計算量が増える HDD は 7 個以下にしたときがパフォーマンス がよい hbstudy#12 pg 19 ZFS でストレージ でもストレージだけじゃない ZFS
  20. 20. RAIDZ 構成の例 Stripe RAIDZ2 WIDE(≒ RAID6) (可用性:低、性能:高、容量:大) (可用性:中、性能:低、容量:大) Stripe RAIDZ2 SSD SSD スペア RAIDZ(≒ RAID5) RAIDZ2(≒ RAID6) (可用性:高、性能:中、容量:中) (可用性:高、性能:中、容量:中) RAIDZ RAIDZ RAIDZ2 RAIDZ RAIDZ RAIDZ2 SSD SSD スペア RAIDZ スペア hbstudy#12 pg 20 ZFS でストレージ でもストレージだけじゃない ZFS
  21. 21. RAIDZ を追加するとき 同じ RAIDZ 構成なら、追加可能 仮想デバイス (mirror や raidz 等の単位 ) を RAIDZ2 ストライプの様に接続 SSD RAIDZ2 仮想デバイス間で スペア アクセスが分散する RAIDZ2 RAIDZ2 HDD を増やした方が SSD スペア 速くなる RAIDZ2 SSD RAIDZ2 スペア hbstudy#12 pg 21 ZFS でストレージ でもストレージだけじゃない ZFS
  22. 22. では実際に ZFS でストレージを ... どういうハードウェアで? CPU とメモリはいっぱい積もう。 RAID 構成は? HW RAID? それとも RAIDZ/RAIDZ2 ? どうやって繋ぐ? NFS ですか? iSCSI ですか? でも、 Gbit Ether だと遅い SSD はどう使う? 拡張はどうする? hbstudy#12 pg 22 ZFS でストレージ でもストレージだけじゃない ZFS
  23. 23. RAIDZ vs Hardware RAID 安い RAID カードには圧勝 ( のはず ) 実際には CPU の差なので キャッシュメモリ量も圧勝 高い RAID カードでも 4GB とか? しかも、容易に増やせる 結論 特に理由がなければ RAIDZ で万全 hbstudy#12 pg 23 ZFS でストレージ でもストレージだけじゃない ZFS
  24. 24. NFS の場合 ZFS で NFS は意外と速いです カーネル空間で動く まともに NFSv4 が動きます NFS を開発した会社を言ってみろ ただし、普通に動かすと何故か遅い 誰が悪い? 原因は ZIL hbstudy#12 pg 24 ZFS でストレージ でもストレージだけじゃない ZFS
  25. 25. ZIL(ZFS Intent Log) の役割 ZIL は、同期書込時に使用されるログ情報 O_DSYNC つきで open() したり、 fsync() が実施されたと きなど NFS も iSCSI も同期書き込み ARC から HDD への書き込みは、非同期 5 〜 30 秒に一度シーケンシャルに書き込む → HDD へ一度に書き込むので速い 同期書き込み時にも、非同期で HDD に書き込 むための機構が ZIL ZIL が役に立つのはクラッシュ時 クラッシュ時には、 ZIL から復旧する hbstudy#12 pg 25 ZFS でストレージ でもストレージだけじゃない ZFS
  26. 26. ZIL で遅くなる場合 NFS や iSCSI などでアクセス 大抵同期書き込み ZIL を分離していない場合 同期書き込み時に ZIL へのアクセスが集中する。 ZIL が分離されていないと、 ZIL へのアクセスが他の HDD アクセスと競合して遅くなる hbstudy#12 pg 26 ZFS でストレージ でもストレージだけじゃない ZFS
  27. 27. ZIL で遅くなる場合の対処 ZIL をオフにする 確かに速くなる が、クラッシュ時にデータ内容が保証されない ※今後は、オフ出来なくなるという噂 ZIL を分離する ZIL を HDD から別デバイスに分離し アクセスを分散、高速化 ※ ZIL を SSD 化すると、より高速に ZIL を分離してストライプで提供 するともっと速くなる →ミラーにした方が堅牢性は高い hbstudy#12 pg 27 ZFS でストレージ でもストレージだけじゃない ZFS
  28. 28. iSCSI の場合 NFS より遅い! iscsitgt の一部がユーザ空間で動くから でも、 COMSTAR なら大丈夫 COMSTAR はカーネル空間で動く! COMSTAR とレガシー iSCSI(iscsitgt) では 数倍の性能差が出る! 詳細は brendan さんのブログ参照 http://blogs.sun.com/brendan/entry/iscsi_be fore_and_after hbstudy#12 pg 28 ZFS でストレージ でもストレージだけじゃない ZFS
  29. 29. COMSTAR って何者? COMSTAR とは? Common Multiprotocol SCSI Target OpenSolaris のストレージフレームワーク OpenSolaris の Volume を SCSI Target に Volume 生 HDD 、 ZFS Volume 、ファイル 接続先 iSCSI 、 FC 、 FCoE 、 InfiniBand など hbstudy#12 pg 29 ZFS でストレージ でもストレージだけじゃない ZFS
  30. 30. COMSTAR をもっと知るには COMSTAR には OpenSolaris 勉強会 for Admin( 仮 ) が効きます http://wikis.sun.com/display/JpOpenSolaris/TokyoOpenSol arisStudyGroup 神資料その1 「 COMSTAR で iSCSI 」 http://docs.google.com/present/view?id=dpdpddx_4dnvjv7c9 神資料その2 「前回の COMSTAR ネタに刺激されてしまったので、オ レも COMSTAR を使ってみた。」 ( 仮 ) http://wikis.sun.com/download/attachments/204308497/osol_co mstar_20100522.pdf hbstudy#12 pg 30 ZFS でストレージ でもストレージだけじゃない ZFS
  31. 31. SSD の使い方 L2ARC に使うか ZIL に使うか L2ARC は ARC より遅い L2ARC にお金をつぎ込むより、メモリを増やし た方が良い ZIL を使う場合は、少なくとも分離する。 できれば SSD におく。 結論 SSD はまず ZIL で使え hbstudy#12 pg 31 ZFS でストレージ でもストレージだけじゃない ZFS
  32. 32. ZFS ストレージの拡張 stripe 構成ではスケールアウトする ただし冗長性が ... zpool ○ hbstudy#12 pg 32 ZFS でストレージ でもストレージだけじゃない ZFS
  33. 33. ZFS ストレージの拡張 RAIDZ 構成では冗長性確保される RAIDZ 構成にディスクを追加することは できない zpool RAIDZ × hbstudy#12 pg 33 ZFS でストレージ でもストレージだけじゃない ZFS
  34. 34. ZFS ストレージの拡張 RAIDZ 構成ではスケールアウトしない でも、スケールアップはする ただし、構成が一緒である必要がある zpool RAIDZ + RAIDZ hbstudy#12 pg 34 ZFS でストレージ でもストレージだけじゃない ZFS
  35. 35. 拡張時には、 Offline にする必要が ... iSCSI ディスクなら Online で増設 USB とか FC とかでも出来るけど devfsadm でデバイス再構成 接続したディスクを再起動なしに認識出来る /reconfigure 作って再起動とか boot -r とかは必要ない hbstudy#12 pg 35 ZFS でストレージ でもストレージだけじゃない ZFS
  36. 36. iSCSI ディスクを使う構成例 一番単純な構成 サーバ iSCSI ディスク (OpenSolaris) hbstudy#12 pg 36 ZFS でストレージ でもストレージだけじゃない ZFS
  37. 37. iSCSI ディスクを使う構成例 RAID にしてみる サーバ RAIDZ LACP で 束ねる Switch iSCSI ディスク hbstudy#12 pg 37 ZFS でストレージ でもストレージだけじゃない ZFS
  38. 38. iSCSI ディスクを使う構成例 RAID で増設するとき サーバ RAIDZ RAIDZ Switch iSCSI ディスク hbstudy#12 pg 38 ZFS でストレージ でもストレージだけじゃない ZFS
  39. 39. サーバ側で ZFS の理由 ARC を有効に使える ARC が一番速いので、 ARC がサーバ側にあ る方が有利 Network/FC などディスクと繋ぐ経路が ボトルネックになる OpenSolaris が素敵 Solaris コンテナとかね hbstudy#12 pg 39 ZFS でストレージ でもストレージだけじゃない ZFS
  40. 40. ここまでのまとめ ZFS は速い ただし、リソースはたくさん必要、 特にメモリ ネットワークはボトルネックになる ZFS はスケールアップ指向 スケールアウトさせるには別製品を使いましょう COMSTAR 最高! OpenSolaris 素敵! hbstudy#12 pg 40 ZFS でストレージ でもストレージだけじゃない ZFS
  41. 41. ストレージ以外の ZFS の魅力 スナップショット・クローンが 異常に使える件 バックアップ バージョンアップ hbstudy#12 pg 41 ZFS でストレージ でもストレージだけじゃない ZFS
  42. 42. スナップショットのおさらい スナップショットは ReadOnly Original の UberBlock とポインタをコピー Snapshot UberBlock UberBlock Original ポインタ ポインタ 間接ポインタ データ hbstudy#12 pg 42 ZFS でストレージ でもストレージだけじゃない ZFS
  43. 43. スナップショットのおさらい Original に変更があるとブロック部とポインタ部だけが変 更される Snapshot UberBlock UberBlock Original new new hbstudy#12 pg 43 ZFS でストレージ でもストレージだけじゃない ZFS
  44. 44. クローンのおさらい クローンは ReadWrite スナップショットの UberBlock とポインタをコピー Clone Original Snapshot UberBlock UberBlock UberBlock hbstudy#12 pg 44 ZFS でストレージ でもストレージだけじゃない ZFS
  45. 45. クローンのおさらい Original ・クローンに変更があると ブロック部とポインタ部だけが変更される Clone Original Snapshot UberBlock UberBlock UberBlock new new new hbstudy#12 pg 45 ZFS でストレージ でもストレージだけじゃない ZFS
  46. 46. スナップショットでバックアップ バックアップはスナップショット単位 バックアップは zfs send # zfs send rpool@snap > /tmp/snap.zfs.img リストアは zfs receive # zfs receive rpool2 < /tmp/snap.zfs.img ZFS ツリーもいっぺんにバックアップ # zfs snapshot -r rpool/export@snap # zfs send -R rpool/export@snap > /tmp/snap.zfs.img # zfs receive < /tmp/snap.zfs.img hbstudy#12 pg 46 ZFS でストレージ でもストレージだけじゃない ZFS
  47. 47. 2サーバ間でバックアップ ファイルベースなので、サーバ間でバックアッ プ・リストア可能 # zfs snapshot -r rpool/zone@20100610 # zfs send -R rpool/zone@20100610 | ssh serverB zfs receive rpool 差分バックアップも # zfs snapshot -r rpool/zone@20100611 # zfs send -R -i rpool/zone@20100610 rpool/zone@20100611 | ssh serverB zfs receive rpool hbstudy#12 pg 47 ZFS でストレージ でもストレージだけじゃない ZFS
  48. 48. 差分バックアップの例 ServerA ServerB rpool@20100610 rpool@20100610 snapshot 全体のコピー hbstudy#12 pg 48 ZFS でストレージ でもストレージだけじゃない ZFS
  49. 49. 差分バックアップの例 ServerA ServerB rpool@20100611 rpool@20100611 rpool@20100610 rpool@20100610 snapshot 差分のコピー hbstudy#12 pg 49 ZFS でストレージ でもストレージだけじゃない ZFS
  50. 50. 差分バックアップの例 ServerA ServerB rpool@20100612 rpool@20100612 rpool@20100611 rpool@20100611 rpool@20100610 rpool@20100610 snapshot 差分のコピー hbstudy#12 pg 50 ZFS でストレージ でもストレージだけじゃない ZFS
  51. 51. 差分の分だけ容量を消費する 一日ごとにバックアップ →容量が増える 一日前には戻りたいけど、 数週間前のある一日に戻りたいか? 一週経ったら、日単位のバックアップって要らな くね? よし、削除しよう hbstudy#12 pg 51 ZFS でストレージ でもストレージだけじゃない ZFS
  52. 52. 差分バックアップの削除例 Before After rpool@20100612 rpool@20100612 rpool@20100611 rpool@20100610 rpool@20100610 snapshot 差分の削除 hbstudy#12 pg 52 ZFS でストレージ でもストレージだけじゃない ZFS
  53. 53. 差分バックアップの利用例 Zone の同期による Active-Standby 構成 Zone 部分を二台のサーバで同期 片系がダウンしても、もう片方で動作 Zone の領域は ZFS これを Attach/Detach することが出来る % pfexec zoneadm -z zonename attach % pfexec zoneadm -z zonename detach Zone の情報は Standby 機にコピー % pfexec zonecfg -z zonename export | ssh ServerB pfexec zonecfg -z zonename hbstudy#12 pg 53 ZFS でストレージ でもストレージだけじゃない ZFS
  54. 54. Zone の Active-Standby 構成 ServerA ServerB Attach Zone Detach 起動中 Zone 同期 Zone hbstudy#12 pg 54 ZFS でストレージ でもストレージだけじゃない ZFS
  55. 55. Zone の Active-Standby 構成 ServerA ServerB Attach Zone Attach 起動中 Zone Zone hbstudy#12 pg 55 ZFS でストレージ でもストレージだけじゃない ZFS
  56. 56. ZFS 同期による Active−Stanby 構成 簡単な方式なので、クリティカルな場面では使 えない 同期間隔があるので、データロストする →データは別の場所に置く必要あり DB などには向かない構成 DB を止めてからスナップショットを取れば、整 合性は保たれます ちなみに、 Zone だけでなく Dom-U の領域も同様の方法で ... hbstudy#12 pg 56 ZFS でストレージ でもストレージだけじゃない ZFS
  57. 57. クローンによる起動環境の複製 OpenSolaris では beadm で、 Boot Environment( 起動環境 =BE) を管理 新しい BE は、現 BE の複製 ( クローン ) クローンなので、差分しか増えない BE は grub 画面で選択可能 BE の削除は自由 ただし、起動中の BE は削除出来ない BE に対する操作も可能 beadm mount で、領域をマウント出来る マウント後設定ファイル修正など hbstudy#12 pg 57 ZFS でストレージ でもストレージだけじゃない ZFS
  58. 58. アップデート時の起動環境の複製 pkg image-update(apt-get dist-upgrade 的な 操作 ) による複数パッケージ更新時には、自動 的に新しい BE を作成し、新しい BE を更新す る アップグレード時に、サービス停止が発生しな い → サービス停止時間の短縮 アップグレードに失敗したら、旧 BE で起動すれ ばよい hbstudy#12 pg 58 ZFS でストレージ でもストレージだけじゃない ZFS
  59. 59. BE 複製の問題点 rpool を ZFS upgrade すると旧 BE で立ち上 がらなくなる可能性あり rpool とデータ領域は、 zpool ごと分けるのが お勧め hbstudy#12 pg 59 ZFS でストレージ でもストレージだけじゃない ZFS
  60. 60. ストレージだけじゃない ZFS まとめ ZFS サイコー スナップショット・クローンは有用 send/receive でバックアップも楽々 設計がめんどくさいのはどれも一緒 Zone の多重化もそこはかとなく出来る ちゃんとやりたければ OpenHA がある BE を使うことで複数環境を切り替え アップデート時に新しい BE に更新する サービス停止時間の低減 ZFS サイコー hbstudy#12 pg 60 ZFS でストレージ でもストレージだけじゃない ZFS
  61. 61. ZFS でストレージ でも、ストレージだけじゃない ZFS ご静聴ありがとうございました。 hbstudy#12 pg 61 ZFS でストレージ でもストレージだけじゃない ZFS
  62. 62. 参考資料 ZFS 仮想化されたファイルシステムの徹底活用 # ISBN-10: 4048676547 # ISBN-13: 978-4048676540 世界初の ZFS 本 ZFS Essentials の方が後です 超お勧め hbstudy#12 pg 62 ZFS でストレージ でもストレージだけじゃない ZFS
  63. 63. 参考資料 OpenSolaris Night Seminar 資料 http://jp.sun.com/developers/events/nightSeminar/PDF/OSN S-Solaris_ZFS-20090306.pdf http://mediacast.sun.com/users/hiroa/media/OSNS_ZFS- 20090710.pdf/details http://mediacast.sun.com/users/hiroa/media/OSHT_ZFS- 20091218.pdf/details OpenSolaris 勉強会 for Admin( 仮 ) 資料 http://docs.google.com/present/view? id=dpdpddx_4dnvjv7c9 http://wikis.sun.com/download/attachments/204308497/osol _comstar_20100522.pdf hbstudy#12 pg 63 ZFS でストレージ でもストレージだけじゃない ZFS
  64. 64. 参考資料 ZFS Best Practices Guide http://www.solarisinternals.com/wiki/index.php/ZFS_Best_ Practices_Guide ZFS Evil Tuning Guide http://www.solarisinternals.com/wiki/index.php/ZFS_Evil_T uning_Guide 一番最後のリンク集も参考になります http://www.solarisinternals.com/wiki/index.php/ZFS_Evil_T uning_Guide#Integrated_RFEs_that_introduced_or_chang ed_tunables Brendan Gregg 氏のブログ http://blogs.sun.com/brendan/ hbstudy#12 pg 64 ZFS でストレージ でもストレージだけじゃない ZFS

×