SlideShare a Scribd company logo
自宅スケーラブル・
ファイルシステムのご紹介

GlusterFS+Infinibandで実現する、無限の可能性
光安 健太郎




                                   1
アジェンダ
■まずは物件探しから・・・
■まずはピアツーピアから
■スイッチ購入!!と苦労
■GlusterFSをたしなむ
■CentOS6.0 x86_64、vmware ESXi4.1up1からのマウント例
■環境紹介・ネットワーク構成紹介
■謝辞




                                              2
プロフィール
光安 健太郎

約10年、サーバー製品の
プロダクトセールスをやっています。

Googleで出てくる主な過去の露出
Facebookもやっています。




                     3
なぜ自宅SANなのか、どこまでやるのか

1、「触ってみないとわからない」性分だから
2、高速インターフェースが出そろってきた
3、スケーラブルファイルシステムに未来を感じたから
4、慣れ親しんだIAサーバーを活用することができそうだから

ステップ1:高速インターフェースをモノにする。
ステップ2:スケーラブルファイルシステムを選ぶ。
ステップ3:いざ、検証!




                                4
まずは物件探しから・・・
冗談です。ちなみにスペックは下記のような感じ。
電源:30A1系統 従量電灯B契約 空調は冷房中心
すべてのサーバー機器をロフトへ設置、配線




生活とスケーラブルストレージの共存=ロフトIDC

Servers in the loft!        5
まずはピアツーピアから
すべての道は1本から・・・
さまざまな高速インターフェースがある中選択したのは:Infiniband
    1、10Gbから56Gbまで、基本的に使い方は一緒でつぶしが効きそう
    (大まかには)
    2、インターフェースの価格が安かった
    (中古で3000円台、ケーブル8000円)




               40G/56G QDR
10G/20G SDR      Infiniband
  Infiniband

                                6
まずはピアツーピアから
検証してわかったこと:
    結局カードにはIPを振るし、振ってしまえば通常の
    NICと変わらない
    対応OSはCentOS系なら問題なし、仮想化ハイパー
    バイザーの対応も進んでいる
    Infinibandネットワーク内にはSubnet Managerが最低1つ
    起動していなければならない。
    SubnetManagerはInfinibandスイッチに内蔵した製品もある。
[root@ml115 ~]# ifconfig -a
Ifconfig uses the ioctl access method to get the full address information, which limits hardware addresses to 8 bytes.
Because Infiniband address has 20 bytes, only the first 8 bytes are displayed correctly.
Ifconfig is obsolete! For replacement check ip.
ib0     Link encap:InfiniBand HWaddr 80:00:XX:XX:XX:80:00:00:00:00:00:00:00:00:00:00:00:00:00:00
       inet addr:192.168.50.60 Bcast:192.168.50.255 Mask:255.255.255.0
       inet6 addr: XXXX::XXXX:XXXX:21:f669/64 Scope:Link
       UP BROADCAST RUNNING MULTICAST MTU:65520 Metric:1
       RX packets:3899403 errors:0 dropped:0 overruns:0 frame:0
       TX packets:2403903 errors:0 dropped:1 overruns:0 carrier:0
       collisions:0 txqueuelen:256
       RX bytes:5281126042 (4.9 GiB) TX bytes:818652155 (780.7 MiB)
                                                                                                      7
ピアツーピア検証ではまったポイント 3点
1、カードが壊れていた
    ebayからカードを調達
    →PCIのブラケットがついていない
    →CX4のコネクターの半田が割れていた
    →どうやっても1枚だけファームが
    上がらない
    円高を活用しようとしたが裏目に…




                          8
ピアツーピア検証ではまったポイント 3点
2、ファームウェアの更新
mst statusコマンドでデバイスを調べる→そんなものはない!
            [root@ml115 ~]# mst status
            MST modules:
            ------------
                MST PCI module is not loaded
                MST PCI configuration module is not loaded

            MST devices:
            ------------
                No MST devices found




・・・mst startでサービスを開始すると問題なくデバイス発見。
            [root@ml115 ~]# mst start
            Starting MST (Mellanox Software Tools) driver set
            Loading MST PCI module - Success
            Loading MST PCI configuration module - Success
            Create devices
            [root@ml115 ~]# mst status
            MST modules:
            ------------
                MST PCI module loaded
                MST PCI configuration module loaded

            MST devices:
            ------------
            /dev/mst/mt25218_pci_cr0                  - PCI direct access.
                                                        bus:dev.fn=12:00.0 bar=0xfdf00000 size=0x100000
                                                        Chip revision is: A0
            /dev/mst/mt25218_pciconf0                 - PCI configuration cycles access.
                                                        bus:dev.fn=12:00.0 addr.reg=88 data.reg=92
                                                        Chip revision is: A0
                                                                                                  9
ピアツーピア検証ではまったポイント 3点
2、ファームウェアの更新
更新のコマンドで、オプションが必要な場合がある(特に新品カードを買ったとき
のファーム真っ白状態からは必要だったと思われる)


flint -skip_is -d /dev/mst/mt25218_pci_cr0 -i fw-25218-5_3_000-MHEA28-
XTC_A1-A3.bin burn




                                                         10
ピアツーピア検証ではまったポイント 3点
3、ネットワーク設定(IPアドレス)
初めはsystem-config-network-tuiで設定したが、つながらず。
結局下記の設定で動作を確認した。
/etc/sysconfig/network-scripts/ifcfg-ib0

# Please read /usr/share/doc/initscripts-*/sysconfig.txt
# for the documentation of these parameters.
DEVICE=ib0
BOOTPROTO=static
NETMASK=255.255.255.0
TYPE=Infiniband
#HWADDR=80:00:04:04:fe:80
IPADDR=192.168.50.60
BROADCAST=192.168.50.255
NETWORK=192.168.50.0
ONBOOT=yes


                                                           11
INFINIBANDスイッチ購入
ある日、何気なくヤフオクをのぞいてみると、24ポートのInfiniband
スイッチを発見、程度もよさそうなので即落札。
Flextronics F-X430060という製品。¥33,000-で落札。
いい買い物をした…はずだったが、
これは煩いので有名なスイッチだった…
以後、ロフトは本物のデータセンターと同等の存在感。




                                     12
GLUSTERFSをたしなむ
おさらい
1、スケーラブルなストレージのための汎用分散ファイルシステム
2、IAサーバーを利用して、infinibandのRDMAやTCP/IPインターコネクトな
どの各種ストレージを集約し、大規模並列ネットワークファイルシステムを
構築可能
3、サーバー内の領域を“brick”という単位で共有設定する




                                      13
2つの動作モード
             Distributed                         Striped




            Server1                             Server1




  Server2                             Server2                   Server3
                           Server3
 ファイル転送速度:各ノード単体の能力に                 ファイル転送速度:各ノード単体の能力と
 左右=他のサーバーのIOと足並みをそろえ                ストライプに参加する台数に左右=IOの遅
 る必要がない                              いサーバーに足を引っ張られる


                                                           14
冗長設定:2多重の例

                                Distributed




            Server1                                     Server1




  Server2             Server3                 Server2                  Server3



                                                                  15
GLUSTERFSをたしなむ
検証メニュー:
distribute+replicate、Striped+replicateの検証 → 最低4台サーバーが必要
マウントする側もinfinibandが必要、また複数からの同時マウントも試したい
NFSとRDMAのマウントも同時にできるか試したい
                                               → さらに2台追加
合計6台のサーバーと、infiniband HCA,ケーブル、スイッチを駆使した検証が始まる




                    server1            server2




           brick1        brick2   brick3         brick4
                                                          16
各ノードの構成
                                      IB IP:
                                   192.168.50.1

                         server1

     IB IP:                                                         IB IP:
192.168.50.60                                                   192.168.50.10
                brick1                            brick3




    IB IP:
192.168.50.70                                                       IB IP:
                                                                192.168.50.20
                brick2
                                                  brick4

                                                           17
VOLUMEの作成
Brick1~4:          OS:Scientific Linux 6.1 x86_64
                   gluster:glusterfs 3.3beta2
                   infiniband:ofed1.5.3
                   HCA:Mellanox MHEA-XTC 10Gb
Server:            OS:CentOS6.0 x86_64
                   HCA:Mellanox MHEA-XTC 10Gb


distributed&duplicateの場合のコマンド
gluster volume create glustervol replica 2 transport tcp,rdma 192.168.50.60:/data/brick
192.168.50.70:/data/brick 192.168.50.10:/home/brick 192.168.50.20:/home/brick

Striped&duplicateの場合のコマンド
gluster volume create glustervol stripe 2 replica 2 transport tcp,rdma
192.168.50.60:/data/brick 192.168.50.70:/data/brick 192.168.50.10:/home/brick
192.168.50.20:/home/brick


                                                                         18
DISTRIBUTE&REPLICATE


                server1




      brick1              brick3




       brick2
                          brick4

                                   19
STRIPED&REPLICATE


               server1




      brick1             brick3




      brick2
                         brick4

                                  20
複数同時マウント
1つのボリュームに対して、2つのマシンからマウントできるか。
(どちらもglusterネイティブクライアント)
→ 問題なくマウントできたが、当然ながらロック機能はなし。


 mount -t glusterfs -o mountproto=rdma       mount -t glusterfs -o mountproto=rdma
  192.168.50.10:/glustervol /root/ibtest      192.168.50.10:/glustervol /root/ibtest




                         server1                    server2




                            gluster volume start glustervol

             brick1           brick2           brick3          brick4
                                                                        21
NFSでのマウント
1つのボリュームに対して、2つのマシンからマウントできるか。
(CentOSはglusterネイティブクライアント、ESXi4.1はNFS)
→ distribute+replicateの時は問題なくマウントできたが、Striped+replicate時には
NFSマウントのみできなかった。

  mount -t glusterfs -o mountproto=rdma
   192.168.50.10:/glustervol /root/ibtest




                          server1                server2




                             gluster volume start glustervol

              brick1           brick2           brick3         brick4
                                                                        22
GLUSTERFS検証まとめ
distribute+replicate、Striped+replicateの検証
→          デフォルトはdistributeで、stripedは高速化が期待できるが用途を選びそう。
           distributeはファイル実体が確認でき、最悪の場合サルベージできそう。

複数からの同時マウントも試したい
NFSとRDMAのマウントも同時にできるか試したい
→     同時接続も可能だが、Stripedを組んだ時のNFSの挙動をもう少し検証する必要あり。




                     server1             server2




            brick1        brick2    brick3         brick4
                                                            23
検証のTIPS
Volumeを作り直す場合のポイント。
前作ったVolumeに属していたBrickの中身は完全削除すること。フォルダごと消すの
が望ましい。そうしないと、「ファイルを置いたのに見えない」「同じファイルが2
個見える」などの怪現象が発生。
rm –rf /etc/gluster* も実行して、完全に設定を飛ばして、
rpm –ivh –force glusterfs-*.rpm で再インストールする。




                 server1            server2




        brick1        brick2   brick3         brick4
                                                       24
今後の展望
もう少しスループットを上げたい:
今回の構成では、各BrickのディスクがSATA HDD1台
→ Infinibandの帯域が余っている

Facebook flashcacheとSSDをマウントするサーバーに追加して大幅スループット
アップできないか??




                 server1            server2




        brick1        brick2   brick3         brick4
                                                       25
自宅でスケーラブル
ファイルシステム
IAサーバーを使って、スケーラブルストレージが容易に組めるように
なってきました。
ぜひ、やってみましょう。




                server1            server2




       brick1        brick2   brick3         brick4
                                                      26
謝辞
ヤフオクでinifiniband関連部材を供給し続けておられるuchida_1234 様にお礼を申し
上げます。




                                        27
BACKUP




         28
ネットワーク、機器構成
       CPU:Core i5-670
       Mem:8GB DDR3 PC1333                                                                         CPU:Pentium G620
       HDD: HITACHI 2TB 7200rpm SATA                                                               Mem:4GB DDR3 PC1333
       x4                                                                                          HDD: Intel SSD 80GB
       M/B Intel DQ57TM                                                                            M/B Intel DQ67EP


                                               server1                           server2




Router: Cisco ASA5505
To internet


                           brick1                   brick2                  brick3                   brick4
                                                                                                              29

                        CPU:AMD Athlon 3core        CPU:Celeron G1101                CPU:Celeron G1101             CPU:Intel Core-i5 2400S
                        Mem:6GB DDR3 PC1333         Mem:4GB DDR3 PC1333              Mem:4GB DDR3 PC1333           Mem:8GB DDR3 PC1333
                        HDD: SEAGATE 2TB            HDD: SEAGATE 1TB SATA            HDD: HITACHI 1TB SATA         HDD: HITACHI 1TB SATA
                        SATA HDD                    HDD                              HDD                           HDD x2
                        M/B HP ML115                M/B NEC Express5800              M/B HP ML110G6                M/B WADE-8012

More Related Content

自宅スケーラブル・ファイルシステムのご紹介