Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
ZFS でストレージ
でも、ストレージだけじゃない ZFS

     hbstudy #12

     みやざきさとる
     株式会社NEC情報システムズ
     日本 OpenSolaris ユーザグループ
自己紹介
自社グループ向けの SI をやってます
ストレージとかも触ってます
OpenSolaris なのは趣味です
趣味を仕事に持ち込むとか
 m9 (^ Д ^)プギャー



        hbstudy#12
                                       pg 2
        ZFS でストレージ でもストレージだけじゃない ZFS
アジェンダ
こんなに速い ZFS
ZFS が遅くなる訳
ZFS ストレージの実際
ストレージ以外でも便利な ZFS
 スナップショットとクローン のおいしい使い方



        hbstudy#12
                                       pg 3
        ZFS でストレージ でもストレージだけじゃない ZFS
こんなに速い 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
こんなに速い 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
測定したのはこのマシン
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
でもなんか、 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
でも、もう少し速くしたい (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
でも、もう少し速くしたい (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
ZFS は遅い?

メモリをいっぱい積めば速くなります
CPU も速くすれば速くなります
HDD を増やすとやっぱり速くなります
NAS にするなら、 LACP で束ねるとか
10G とかで繋げば (ry
FC で繋げば (ry
FCoE で (ry
InfiniBand で (ry


            hbstudy#12
                                            pg 10
             ZFS でストレージ でもストレージだけじゃない ZFS
ここで、 ZFS のおさらい
128bit ファイルシステム
大容量のファイルに対応
HDD をストレージプールとして管理し、
簡単に HDD 増設が可能
RAID(0,1,5,6) に相当する機能を提供
Copy-on-Write によるデータ完全性の保証
スナップショット・クローン機能
Hybrid Storage Pool Architecture

         hbstudy#12
                                         pg 11
          ZFS でストレージ でもストレージだけじゃない ZFS
ここで、 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
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
ARC/L2ARC の役割

 ARC は、読み込み・書き込みキャッシュ
 ARC はメモリを使用
 ARC は動的に増えていく
 最大で、メインメモリの 1GB を残した全部
 もしくは全体の 3/4 を使用
 ARC からこぼれたモノが L2ARC(SSD) に
 書き込まれる



         hbstudy#12
                                        pg 14
         ZFS でストレージ でもストレージだけじゃない ZFS
メモリが多いと ZFS は速くなる
メモリが多ければ多いほど ARC も多くなる
ARC にあるデータは、アクセスが速くなる
結論

メモリが多いと ZFS は速い!
L2ARC に落ちると遅くなる。が、 L2ARC を HDD より
速い SSD 上に置くと、 HDD のみより速くなる

         hbstudy#12
                                        pg 15
         ZFS でストレージ でもストレージだけじゃない ZFS
ZFS で CPU パワーが必要な訳

ZFS で CPU パワーが必要な処理
  ブロック単位の Checksum
  RAIDZ のパリティ計算
  圧縮
  重複排除

       hbstudy#12
                                      pg 16
       ZFS でストレージ でもストレージだけじゃない ZFS
ブロック単位の Checksum
ZFS は、ブロックごとに Checksum を保存
Checksum と比較することでデータの完全性を保証
セルフヒーリング
データを重複化してた場合は、正常データのみを読み込
み、異常データを正常データで上書き

Checksum 計算に CPU が必要
CPU の暗号化支援機能を使用可能
CPU の暗号化支援機能で、 CPU 使用率を低下

        hbstudy#12
                                       pg 17
        ZFS でストレージ でもストレージだけじゃない ZFS
圧縮・重複排除
圧縮は CPU が実行
重複排除は Checksum を元に同じデータの
ブロックがあるかどうかを探す
これら機能を ON にしていると、
CPU パワーがより必要になる



       hbstudy#12
                                      pg 18
       ZFS でストレージ でもストレージだけじゃない ZFS
RAIDZ のパリティ計算

RAIDZ はソフトウェア RAID
パリティ計算を CPU で行う
RAIDZ2 だとさらに倍。 RAIDZ3 だと3倍
ストライプ幅がパリティ計算量を決める
あまり長いストライプ幅すると、計算量が増える
HDD は 7 個以下にしたときがパフォーマンス
がよい



       hbstudy#12
                                      pg 19
       ZFS でストレージ でもストレージだけじゃない ZFS
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
RAIDZ を追加するとき

同じ RAIDZ 構成なら、追加可能
仮想デバイス (mirror や
raidz 等の単位 ) を
                  RAIDZ2
ストライプの様に接続
                 SSD                           RAIDZ2
仮想デバイス間で                                 スペア

アクセスが分散する         RAIDZ2
                                               RAIDZ2
HDD を増やした方が      SSD
                                         スペア

速くなる              RAIDZ2
                                       SSD     RAIDZ2
                                         スペア

        hbstudy#12
                                                        pg 21
        ZFS でストレージ でもストレージだけじゃない ZFS
では実際に ZFS でストレージを ...
どういうハードウェアで?
CPU とメモリはいっぱい積もう。
RAID 構成は?
HW RAID? それとも RAIDZ/RAIDZ2 ?
どうやって繋ぐ?
NFS ですか? iSCSI ですか?
でも、 Gbit Ether だと遅い
SSD はどう使う?
拡張はどうする?
         hbstudy#12
                                        pg 22
         ZFS でストレージ でもストレージだけじゃない ZFS
RAIDZ vs Hardware RAID

 安い RAID カードには圧勝 ( のはず )
 実際には CPU の差なので
 キャッシュメモリ量も圧勝
 高い RAID カードでも 4GB とか?
 しかも、容易に増やせる
 結論
 特に理由がなければ   RAIDZ で万全

             hbstudy#12
                                            pg 23
             ZFS でストレージ でもストレージだけじゃない ZFS
NFS の場合

ZFS で NFS は意外と速いです
カーネル空間で動く
まともに NFSv4 が動きます
NFS を開発した会社を言ってみろ
ただし、普通に動かすと何故か遅い
誰が悪い?
原因は ZIL
          hbstudy#12
                                         pg 24
          ZFS でストレージ でもストレージだけじゃない ZFS
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
ZIL で遅くなる場合

NFS や iSCSI などでアクセス
大抵同期書き込み

ZIL を分離していない場合
同期書き込み時に ZIL へのアクセスが集中する。
ZIL が分離されていないと、 ZIL へのアクセスが他の
HDD アクセスと競合して遅くなる


        hbstudy#12
                                       pg 26
        ZFS でストレージ でもストレージだけじゃない ZFS
ZIL で遅くなる場合の対処

ZIL をオフにする
確かに速くなる
が、クラッシュ時にデータ内容が保証されない
※今後は、オフ出来なくなるという噂
ZIL を分離する
ZIL を HDD から別デバイスに分離し
アクセスを分散、高速化
※ ZIL を SSD 化すると、より高速に
ZIL を分離してストライプで提供
するともっと速くなる
→ミラーにした方が堅牢性は高い
         hbstudy#12
                                        pg 27
         ZFS でストレージ でもストレージだけじゃない ZFS
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
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
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
SSD の使い方

L2ARC に使うか ZIL に使うか
L2ARC は ARC より遅い
L2ARC にお金をつぎ込むより、メモリを増やし
た方が良い
ZIL を使う場合は、少なくとも分離する。
できれば SSD におく。
結論
SSD はまず ZIL で使え
      hbstudy#12
                                      pg 31
       ZFS でストレージ でもストレージだけじゃない ZFS
ZFS ストレージの拡張

stripe 構成ではスケールアウトする
ただし冗長性が ...

   zpool



                                          ○

           hbstudy#12
                                              pg 32
           ZFS でストレージ でもストレージだけじゃない ZFS
ZFS ストレージの拡張

RAIDZ 構成では冗長性確保される
RAIDZ 構成にディスクを追加することは
できない
   zpool
                RAIDZ


                                          ×

           hbstudy#12
                                              pg 33
           ZFS でストレージ でもストレージだけじゃない ZFS
ZFS ストレージの拡張

RAIDZ 構成ではスケールアウトしない
でも、スケールアップはする
ただし、構成が一緒である必要がある
   zpool
                RAIDZ


                                          +
                RAIDZ



           hbstudy#12
                                              pg 34
           ZFS でストレージ でもストレージだけじゃない ZFS
拡張時には、 Offline にする必要が ...
 iSCSI ディスクなら Online で増設
 USB とか FC とかでも出来るけど
 devfsadm でデバイス再構成
 接続したディスクを再起動なしに認識出来る
 /reconfigure 作って再起動とか
 boot -r とかは必要ない




          hbstudy#12
                                         pg 35
          ZFS でストレージ でもストレージだけじゃない ZFS
iSCSI ディスクを使う構成例

一番単純な構成                         サーバ




                                      iSCSI ディスク
                                        (OpenSolaris)

      hbstudy#12
                                                        pg 36
      ZFS でストレージ でもストレージだけじゃない ZFS
iSCSI ディスクを使う構成例

 RAID にしてみる                        サーバ
                                   RAIDZ
LACP で
 束ねる


                                           Switch




                                           iSCSI ディスク


         hbstudy#12
                                                        pg 37
         ZFS でストレージ でもストレージだけじゃない ZFS
iSCSI ディスクを使う構成例

RAID で増設するとき                     サーバ
                                 RAIDZ
                                  RAIDZ


                                          Switch




                                          iSCSI ディスク


       hbstudy#12
                                                       pg 38
       ZFS でストレージ でもストレージだけじゃない ZFS
サーバ側で ZFS の理由
ARC を有効に使える
ARC が一番速いので、 ARC がサーバ側にあ
る方が有利
Network/FC などディスクと繋ぐ経路が
ボトルネックになる
OpenSolaris が素敵
Solaris コンテナとかね



       hbstudy#12
                                      pg 39
       ZFS でストレージ でもストレージだけじゃない ZFS
ここまでのまとめ
ZFS は速い
ただし、リソースはたくさん必要、
特にメモリ
ネットワークはボトルネックになる
ZFS はスケールアップ指向
スケールアウトさせるには別製品を使いましょう
COMSTAR 最高!
OpenSolaris 素敵!

      hbstudy#12
                                     pg 40
      ZFS でストレージ でもストレージだけじゃない ZFS
ストレージ以外の ZFS の魅力
スナップショット・クローンが
異常に使える件
バックアップ
バージョンアップ




         hbstudy#12
                                        pg 41
         ZFS でストレージ でもストレージだけじゃない ZFS
スナップショットのおさらい
スナップショットは ReadOnly
Original の UberBlock とポインタをコピー

  Snapshot   UberBlock         UberBlock       Original

              ポインタ              ポインタ



  間接ポインタ




データ

                hbstudy#12
                                                          pg 42
                ZFS でストレージ でもストレージだけじゃない ZFS
スナップショットのおさらい
Original に変更があるとブロック部とポインタ部だけが変
更される

 Snapshot   UberBlock         UberBlock         Original




                            new               new
               hbstudy#12
                                                           pg 43
               ZFS でストレージ でもストレージだけじゃない ZFS
クローンのおさらい
クローンは ReadWrite
スナップショットの UberBlock
とポインタをコピー                                     Clone         Original

 Snapshot   UberBlock          UberBlock        UberBlock




               hbstudy#12
                                                                 pg 44
               ZFS でストレージ でもストレージだけじゃない ZFS
クローンのおさらい
Original ・クローンに変更があると
ブロック部とポインタ部だけが変更される
                                              Clone         Original

 Snapshot   UberBlock          UberBlock        UberBlock




                            new
                              new              new
               hbstudy#12
                                                                 pg 45
               ZFS でストレージ でもストレージだけじゃない ZFS
スナップショットでバックアップ
バックアップはスナップショット単位
バックアップは 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
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
差分バックアップの例
  ServerA                                    ServerB




 rpool@20100610                             rpool@20100610



            snapshot 全体のコピー
            hbstudy#12
                                                             pg 48
             ZFS でストレージ でもストレージだけじゃない ZFS
差分バックアップの例
  ServerA                                        ServerB


rpool@20100611                          rpool@20100611


     rpool@20100610                             rpool@20100610



                 snapshot 差分のコピー
                 hbstudy#12
                                                                 pg 49
                 ZFS でストレージ でもストレージだけじゃない ZFS
差分バックアップの例
  ServerA                                        ServerB
           rpool@20100612                            rpool@20100612


rpool@20100611                          rpool@20100611


     rpool@20100610                             rpool@20100610



                 snapshot 差分のコピー
                 hbstudy#12
                                                                 pg 50
                 ZFS でストレージ でもストレージだけじゃない ZFS
差分の分だけ容量を消費する
一日ごとにバックアップ
→容量が増える
一日前には戻りたいけど、
数週間前のある一日に戻りたいか?
一週経ったら、日単位のバックアップって要らな
くね?
よし、削除しよう



      hbstudy#12
                                     pg 51
      ZFS でストレージ でもストレージだけじゃない ZFS
差分バックアップの削除例
  Before    After
           rpool@20100612                            rpool@20100612


rpool@20100611


     rpool@20100610                             rpool@20100610



                 snapshot 差分の削除
                 hbstudy#12
                                                                 pg 52
                 ZFS でストレージ でもストレージだけじゃない ZFS
差分バックアップの利用例
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
Zone の Active-Standby 構成

   ServerA                                   ServerB

     Attach                Zone               Detach
                           起動中


     Zone                   同期                 Zone




              hbstudy#12
                                                       pg 54
              ZFS でストレージ でもストレージだけじゃない ZFS
Zone の Active-Standby 構成

   ServerA                                   ServerB

     Attach                Zone               Attach
                           起動中


     Zone                                      Zone




              hbstudy#12
                                                       pg 55
              ZFS でストレージ でもストレージだけじゃない ZFS
ZFS 同期による Active−Stanby 構成

 簡単な方式なので、クリティカルな場面では使
 えない
 同期間隔があるので、データロストする
 →データは別の場所に置く必要あり
 DB などには向かない構成
 DB を止めてからスナップショットを取れば、整
 合性は保たれます
 ちなみに、 Zone だけでなく
 Dom-U の領域も同様の方法で ...
        hbstudy#12
                                       pg 56
        ZFS でストレージ でもストレージだけじゃない ZFS
クローンによる起動環境の複製
OpenSolaris では beadm で、 Boot
Environment( 起動環境 =BE) を管理
新しい BE は、現 BE の複製 ( クローン )
クローンなので、差分しか増えない
BE は grub 画面で選択可能
BE の削除は自由
ただし、起動中の BE は削除出来ない
BE に対する操作も可能
beadm mount で、領域をマウント出来る
マウント後設定ファイル修正など
         hbstudy#12
                                        pg 57
         ZFS でストレージ でもストレージだけじゃない ZFS
アップデート時の起動環境の複製
pkg image-update(apt-get dist-upgrade 的な
操作 ) による複数パッケージ更新時には、自動
的に新しい BE を作成し、新しい BE を更新す
る
アップグレード時に、サービス停止が発生しな
い
→ サービス停止時間の短縮
アップグレードに失敗したら、旧 BE で起動すれ
ばよい
           hbstudy#12
                                          pg 58
           ZFS でストレージ でもストレージだけじゃない ZFS
BE 複製の問題点

rpool を ZFS upgrade すると旧 BE で立ち上
がらなくなる可能性あり
rpool とデータ領域は、 zpool ごと分けるのが
お勧め




         hbstudy#12
                                        pg 59
         ZFS でストレージ でもストレージだけじゃない ZFS
ストレージだけじゃない ZFS まとめ
ZFS サイコー
スナップショット・クローンは有用
send/receive でバックアップも楽々
設計がめんどくさいのはどれも一緒
Zone の多重化もそこはかとなく出来る
ちゃんとやりたければ OpenHA がある
BE を使うことで複数環境を切り替え
アップデート時に新しい BE に更新する
サービス停止時間の低減
ZFS サイコー
       hbstudy#12
                                      pg 60
       ZFS でストレージ でもストレージだけじゃない ZFS
ZFS でストレージ
でも、ストレージだけじゃない ZFS



  ご静聴ありがとうございました。


      hbstudy#12
                                     pg 61
      ZFS でストレージ でもストレージだけじゃない ZFS
参考資料
ZFS 仮想化されたファイルシステムの徹底活用
# ISBN-10: 4048676547
# ISBN-13: 978-4048676540

    世界初の ZFS 本
    ZFS Essentials の方が後です
    超お勧め




                        hbstudy#12
                                                       pg 62
                        ZFS でストレージ でもストレージだけじゃない ZFS
参考資料
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
参考資料
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

More Related Content

ZFSでストレージ

  • 1. ZFS でストレージ でも、ストレージだけじゃない ZFS hbstudy #12 みやざきさとる 株式会社NEC情報システムズ 日本 OpenSolaris ユーザグループ
  • 2. 自己紹介 自社グループ向けの SI をやってます ストレージとかも触ってます OpenSolaris なのは趣味です 趣味を仕事に持ち込むとか m9 (^ Д ^)プギャー hbstudy#12 pg 2 ZFS でストレージ でもストレージだけじゃない ZFS
  • 3. アジェンダ こんなに速い ZFS ZFS が遅くなる訳 ZFS ストレージの実際 ストレージ以外でも便利な ZFS スナップショットとクローン のおいしい使い方 hbstudy#12 pg 3 ZFS でストレージ でもストレージだけじゃない ZFS
  • 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. こんなに速い 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. 測定したのはこのマシン 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. でもなんか、 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. でも、もう少し速くしたい (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. でも、もう少し速くしたい (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. ZFS は遅い? メモリをいっぱい積めば速くなります CPU も速くすれば速くなります HDD を増やすとやっぱり速くなります NAS にするなら、 LACP で束ねるとか 10G とかで繋げば (ry FC で繋げば (ry FCoE で (ry InfiniBand で (ry hbstudy#12 pg 10 ZFS でストレージ でもストレージだけじゃない ZFS
  • 11. ここで、 ZFS のおさらい 128bit ファイルシステム 大容量のファイルに対応 HDD をストレージプールとして管理し、 簡単に HDD 増設が可能 RAID(0,1,5,6) に相当する機能を提供 Copy-on-Write によるデータ完全性の保証 スナップショット・クローン機能 Hybrid Storage Pool Architecture hbstudy#12 pg 11 ZFS でストレージ でもストレージだけじゃない ZFS
  • 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. 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. ARC/L2ARC の役割 ARC は、読み込み・書き込みキャッシュ ARC はメモリを使用 ARC は動的に増えていく 最大で、メインメモリの 1GB を残した全部 もしくは全体の 3/4 を使用 ARC からこぼれたモノが L2ARC(SSD) に 書き込まれる hbstudy#12 pg 14 ZFS でストレージ でもストレージだけじゃない ZFS
  • 15. メモリが多いと ZFS は速くなる メモリが多ければ多いほど ARC も多くなる ARC にあるデータは、アクセスが速くなる 結論 メモリが多いと ZFS は速い! L2ARC に落ちると遅くなる。が、 L2ARC を HDD より 速い SSD 上に置くと、 HDD のみより速くなる hbstudy#12 pg 15 ZFS でストレージ でもストレージだけじゃない ZFS
  • 16. ZFS で CPU パワーが必要な訳 ZFS で CPU パワーが必要な処理 ブロック単位の Checksum RAIDZ のパリティ計算 圧縮 重複排除 hbstudy#12 pg 16 ZFS でストレージ でもストレージだけじゃない ZFS
  • 17. ブロック単位の Checksum ZFS は、ブロックごとに Checksum を保存 Checksum と比較することでデータの完全性を保証 セルフヒーリング データを重複化してた場合は、正常データのみを読み込 み、異常データを正常データで上書き Checksum 計算に CPU が必要 CPU の暗号化支援機能を使用可能 CPU の暗号化支援機能で、 CPU 使用率を低下 hbstudy#12 pg 17 ZFS でストレージ でもストレージだけじゃない ZFS
  • 18. 圧縮・重複排除 圧縮は CPU が実行 重複排除は Checksum を元に同じデータの ブロックがあるかどうかを探す これら機能を ON にしていると、 CPU パワーがより必要になる hbstudy#12 pg 18 ZFS でストレージ でもストレージだけじゃない ZFS
  • 19. RAIDZ のパリティ計算 RAIDZ はソフトウェア RAID パリティ計算を CPU で行う RAIDZ2 だとさらに倍。 RAIDZ3 だと3倍 ストライプ幅がパリティ計算量を決める あまり長いストライプ幅すると、計算量が増える HDD は 7 個以下にしたときがパフォーマンス がよい hbstudy#12 pg 19 ZFS でストレージ でもストレージだけじゃない ZFS
  • 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. RAIDZ を追加するとき 同じ RAIDZ 構成なら、追加可能 仮想デバイス (mirror や raidz 等の単位 ) を RAIDZ2 ストライプの様に接続 SSD RAIDZ2 仮想デバイス間で スペア アクセスが分散する RAIDZ2 RAIDZ2 HDD を増やした方が SSD スペア 速くなる RAIDZ2 SSD RAIDZ2 スペア hbstudy#12 pg 21 ZFS でストレージ でもストレージだけじゃない ZFS
  • 22. では実際に ZFS でストレージを ... どういうハードウェアで? CPU とメモリはいっぱい積もう。 RAID 構成は? HW RAID? それとも RAIDZ/RAIDZ2 ? どうやって繋ぐ? NFS ですか? iSCSI ですか? でも、 Gbit Ether だと遅い SSD はどう使う? 拡張はどうする? hbstudy#12 pg 22 ZFS でストレージ でもストレージだけじゃない ZFS
  • 23. RAIDZ vs Hardware RAID 安い RAID カードには圧勝 ( のはず ) 実際には CPU の差なので キャッシュメモリ量も圧勝 高い RAID カードでも 4GB とか? しかも、容易に増やせる 結論 特に理由がなければ RAIDZ で万全 hbstudy#12 pg 23 ZFS でストレージ でもストレージだけじゃない ZFS
  • 24. NFS の場合 ZFS で NFS は意外と速いです カーネル空間で動く まともに NFSv4 が動きます NFS を開発した会社を言ってみろ ただし、普通に動かすと何故か遅い 誰が悪い? 原因は ZIL hbstudy#12 pg 24 ZFS でストレージ でもストレージだけじゃない ZFS
  • 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. ZIL で遅くなる場合 NFS や iSCSI などでアクセス 大抵同期書き込み ZIL を分離していない場合 同期書き込み時に ZIL へのアクセスが集中する。 ZIL が分離されていないと、 ZIL へのアクセスが他の HDD アクセスと競合して遅くなる hbstudy#12 pg 26 ZFS でストレージ でもストレージだけじゃない ZFS
  • 27. ZIL で遅くなる場合の対処 ZIL をオフにする 確かに速くなる が、クラッシュ時にデータ内容が保証されない ※今後は、オフ出来なくなるという噂 ZIL を分離する ZIL を HDD から別デバイスに分離し アクセスを分散、高速化 ※ ZIL を SSD 化すると、より高速に ZIL を分離してストライプで提供 するともっと速くなる →ミラーにした方が堅牢性は高い hbstudy#12 pg 27 ZFS でストレージ でもストレージだけじゃない ZFS
  • 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. 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. 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. SSD の使い方 L2ARC に使うか ZIL に使うか L2ARC は ARC より遅い L2ARC にお金をつぎ込むより、メモリを増やし た方が良い ZIL を使う場合は、少なくとも分離する。 できれば SSD におく。 結論 SSD はまず ZIL で使え hbstudy#12 pg 31 ZFS でストレージ でもストレージだけじゃない ZFS
  • 32. ZFS ストレージの拡張 stripe 構成ではスケールアウトする ただし冗長性が ... zpool ○ hbstudy#12 pg 32 ZFS でストレージ でもストレージだけじゃない ZFS
  • 33. ZFS ストレージの拡張 RAIDZ 構成では冗長性確保される RAIDZ 構成にディスクを追加することは できない zpool RAIDZ × hbstudy#12 pg 33 ZFS でストレージ でもストレージだけじゃない ZFS
  • 35. 拡張時には、 Offline にする必要が ... iSCSI ディスクなら Online で増設 USB とか FC とかでも出来るけど devfsadm でデバイス再構成 接続したディスクを再起動なしに認識出来る /reconfigure 作って再起動とか boot -r とかは必要ない hbstudy#12 pg 35 ZFS でストレージ でもストレージだけじゃない ZFS
  • 36. iSCSI ディスクを使う構成例 一番単純な構成 サーバ iSCSI ディスク (OpenSolaris) hbstudy#12 pg 36 ZFS でストレージ でもストレージだけじゃない ZFS
  • 37. iSCSI ディスクを使う構成例 RAID にしてみる サーバ RAIDZ LACP で 束ねる Switch iSCSI ディスク hbstudy#12 pg 37 ZFS でストレージ でもストレージだけじゃない ZFS
  • 38. iSCSI ディスクを使う構成例 RAID で増設するとき サーバ RAIDZ RAIDZ Switch iSCSI ディスク hbstudy#12 pg 38 ZFS でストレージ でもストレージだけじゃない ZFS
  • 39. サーバ側で ZFS の理由 ARC を有効に使える ARC が一番速いので、 ARC がサーバ側にあ る方が有利 Network/FC などディスクと繋ぐ経路が ボトルネックになる OpenSolaris が素敵 Solaris コンテナとかね hbstudy#12 pg 39 ZFS でストレージ でもストレージだけじゃない ZFS
  • 42. スナップショットのおさらい スナップショットは ReadOnly Original の UberBlock とポインタをコピー Snapshot UberBlock UberBlock Original ポインタ ポインタ 間接ポインタ データ hbstudy#12 pg 42 ZFS でストレージ でもストレージだけじゃない ZFS
  • 43. スナップショットのおさらい Original に変更があるとブロック部とポインタ部だけが変 更される Snapshot UberBlock UberBlock Original new new hbstudy#12 pg 43 ZFS でストレージ でもストレージだけじゃない ZFS
  • 44. クローンのおさらい クローンは ReadWrite スナップショットの UberBlock とポインタをコピー Clone Original Snapshot UberBlock UberBlock UberBlock hbstudy#12 pg 44 ZFS でストレージ でもストレージだけじゃない ZFS
  • 45. クローンのおさらい Original ・クローンに変更があると ブロック部とポインタ部だけが変更される Clone Original Snapshot UberBlock UberBlock UberBlock new new new hbstudy#12 pg 45 ZFS でストレージ でもストレージだけじゃない ZFS
  • 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. 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. 差分バックアップの例 ServerA ServerB rpool@20100610 rpool@20100610 snapshot 全体のコピー hbstudy#12 pg 48 ZFS でストレージ でもストレージだけじゃない ZFS
  • 49. 差分バックアップの例 ServerA ServerB rpool@20100611 rpool@20100611 rpool@20100610 rpool@20100610 snapshot 差分のコピー hbstudy#12 pg 49 ZFS でストレージ でもストレージだけじゃない ZFS
  • 50. 差分バックアップの例 ServerA ServerB rpool@20100612 rpool@20100612 rpool@20100611 rpool@20100611 rpool@20100610 rpool@20100610 snapshot 差分のコピー hbstudy#12 pg 50 ZFS でストレージ でもストレージだけじゃない ZFS
  • 52. 差分バックアップの削除例 Before After rpool@20100612 rpool@20100612 rpool@20100611 rpool@20100610 rpool@20100610 snapshot 差分の削除 hbstudy#12 pg 52 ZFS でストレージ でもストレージだけじゃない ZFS
  • 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. Zone の Active-Standby 構成 ServerA ServerB Attach Zone Detach 起動中 Zone 同期 Zone hbstudy#12 pg 54 ZFS でストレージ でもストレージだけじゃない ZFS
  • 55. Zone の Active-Standby 構成 ServerA ServerB Attach Zone Attach 起動中 Zone Zone hbstudy#12 pg 55 ZFS でストレージ でもストレージだけじゃない ZFS
  • 56. ZFS 同期による Active−Stanby 構成 簡単な方式なので、クリティカルな場面では使 えない 同期間隔があるので、データロストする →データは別の場所に置く必要あり DB などには向かない構成 DB を止めてからスナップショットを取れば、整 合性は保たれます ちなみに、 Zone だけでなく Dom-U の領域も同様の方法で ... hbstudy#12 pg 56 ZFS でストレージ でもストレージだけじゃない ZFS
  • 57. クローンによる起動環境の複製 OpenSolaris では beadm で、 Boot Environment( 起動環境 =BE) を管理 新しい BE は、現 BE の複製 ( クローン ) クローンなので、差分しか増えない BE は grub 画面で選択可能 BE の削除は自由 ただし、起動中の BE は削除出来ない BE に対する操作も可能 beadm mount で、領域をマウント出来る マウント後設定ファイル修正など hbstudy#12 pg 57 ZFS でストレージ でもストレージだけじゃない ZFS
  • 58. アップデート時の起動環境の複製 pkg image-update(apt-get dist-upgrade 的な 操作 ) による複数パッケージ更新時には、自動 的に新しい BE を作成し、新しい BE を更新す る アップグレード時に、サービス停止が発生しな い → サービス停止時間の短縮 アップグレードに失敗したら、旧 BE で起動すれ ばよい hbstudy#12 pg 58 ZFS でストレージ でもストレージだけじゃない ZFS
  • 59. BE 複製の問題点 rpool を ZFS upgrade すると旧 BE で立ち上 がらなくなる可能性あり rpool とデータ領域は、 zpool ごと分けるのが お勧め hbstudy#12 pg 59 ZFS でストレージ でもストレージだけじゃない ZFS
  • 60. ストレージだけじゃない ZFS まとめ ZFS サイコー スナップショット・クローンは有用 send/receive でバックアップも楽々 設計がめんどくさいのはどれも一緒 Zone の多重化もそこはかとなく出来る ちゃんとやりたければ OpenHA がある BE を使うことで複数環境を切り替え アップデート時に新しい BE に更新する サービス停止時間の低減 ZFS サイコー hbstudy#12 pg 60 ZFS でストレージ でもストレージだけじゃない ZFS
  • 61. ZFS でストレージ でも、ストレージだけじゃない ZFS ご静聴ありがとうございました。 hbstudy#12 pg 61 ZFS でストレージ でもストレージだけじゃない ZFS
  • 62. 参考資料 ZFS 仮想化されたファイルシステムの徹底活用 # ISBN-10: 4048676547 # ISBN-13: 978-4048676540 世界初の ZFS 本 ZFS Essentials の方が後です 超お勧め hbstudy#12 pg 62 ZFS でストレージ でもストレージだけじゃない ZFS
  • 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. 参考資料 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