RSS

OCFS2の実験

OCFS2を実験してみた。

    付与されたタグ:
  • Linux

NFSの代わりに使ったりするということだったので、サーバとクライアントという図式でサーバが調整を行うのだと思っていたら違っていた。各サーバーが共有のブロックデバイスを持ち、各サーバーが互い協調して書き込みをする仕組みだった。つまりFCやiSCSIで共有ディスクを接続して運用するということになる。

今回の実験ではLinuxのiscsitargetを使った。iscsitargetでiSCSIディスクを提供するサーバーを1台用意して2台のクライアントからiSCSIでブロックデバイスを共有。そしてOCFS2でマウントする構成を取った。kernelは 2.6.26-2-{686,amd64}で実験。

iSCSIの設定

ざっと書く。iSCSIなりFCなりで共有ディスクがすでにあるなら飛ばす。

iscsitargetをインストールしてLVMのボリュームをiSCSIで公開する。LVMで/dev/vgmain/iscsi0というボリュームを作成して/etc/ietd.confに
Target iqn.2009-04.com.example:storage.iscsi0
Lun 0 Path=/dev/vgmain/iscsi0,Type=blockio

としてiSCSIのディスクを公開する。

クライアント側ではopen-iscsiをインストールする。iscsi_discoverを使ってiscsiのディスクをブロックデバイスとして登録できるところまでやる。例えば /dev/sdaなりに登録されたとする。

OCFS2の設定

次にOCFS2の設定を行なう。
クライアント側でocfs2-toolsをインストール。debconfでブート時に起動されるように設定する。
/etc/ocfs2/cluster.confを設定する。
node:
name = client0
cluster = ocfs2
number = 0
ip_address = 192.168.1.100
ip_port = 7777

node:
name = client1
cluster = ocfs2
number = 1
ip_address = 192.168.1.101
ip_port = 7777

cluster:
name = ocfs2
node_count = 4

このファイルは各クライアントで同じ内容を持つ必要がある。
mkfs.ocfs2を実行してiSCSIのデバイスにOCFS2のファイルシステムを作成する。

# mkfs.ocfs2 /dev/vgmain/ocfs 
mkfs.ocfs2 1.4.1
Cluster stack: classic o2cb
Filesystem label=
Block size=4096 (bits=12)
Cluster size=4096 (bits=12)
Volume size=1073741824 (262144 clusters) (262144 blocks)
9 cluster groups (tail covers 4096 clusters, rest cover 32256 clusters)
Journal size=67108864
Initial number of node slots: 4
Creating bitmaps: done
Initializing superblock: done
Writing system files: done
Writing superblock: done
Writing backup superblock: 0 block(s)
Formatting Journals: done
Formatting slot map: done
Writing lost+found: done
mkfs.ocfs2 successful
#
/etc/fstabに次のように設定。書かないと /etc/init.d/ocfs2 が起動しない。
/dev/sda /mnt/ocfs ocfs2 _netdev 0

そのあとに o2cbとocfs2を再起動する。

# /etc/init.d/o2cb restart
Stopping O2CB cluster ocfs2: OK
Unloading module "ocfs2": OK
Unmounting ocfs2_dlmfs filesystem: OK
Unloading module "ocfs2_dlmfs": OK
Unloading module "ocfs2_stack_o2cb": OK
Unmounting configfs filesystem: OK
Unloading module "configfs": OK
Loading filesystem "configfs": OK
Mounting configfs filesystem at /sys/kernel/config: OK
Loading stack plugin "o2cb": OK
Loading filesystem "ocfs2_dlmfs": OK
Mounting ocfs2_dlmfs filesystem at /dlm: OK
Setting cluster stack "o2cb": OK
Starting O2CB cluster ocfs2: OK
# /etc/init.d/ocfs2 restart
Stopping Oracle Cluster File System (OCFS2) OK
Starting Oracle Cluster File System (OCFS2) OK
#

というところで終了。かなり簡単。