linuxでiscsi+ocfs2

iscsiはひとつのパーティションをひとつのマシンに割り当てるため、NFSほどの自由がなく敬遠してきたが、ocfs2というフォーマットを使えば複数のマシンにアタッチできるというのでやってみる。

iscsiターゲットの構築

$ sudo apt-get install iscsitarget
$ sudo apt-get install iscsitarget-dkms

/etc/iet/ietd.confを編集

Target iqn.2013-03.testIscsiVM.sdb1:testIscsiVM-loopback
Lun 0 Path=/dev/sdb1,Type=blockio

のようにiscsiで公開するパーティションを指定。

/etc/default/iscsitargetを編集

ISCSITARGET_ENABLE=true

iscsitarget起動

$ sudo /etc/init.d/iscsitarget start

ここから、iscsi用のパーティションをocfs2でフォーマットする作業。

iscsiイニシエータをインストール

$ sudo apt-get install open-iscsi 

ocfs2をインストール

$ sudo apt-get install ocfs2-tools 

$ sudo iscsiadm -m discovery -t sendtargets -p testIscsiVM
10.5.34.142:3260,1 iqn.2013-03.testIscsiVM.sdb1:testIscsiVM-loopback
$ sudo iscsiadm -m node --targetname iqn.2013-03.testIscsiVM.sdb1:testIscsiVM-loopback --login
$ sudo iscsiadm -m session

このとき、syslogにiscsiパーティションがアタッチされたことが出力され、デバイスファイル名(/dev/sdcなど)もわかるので、そのデバイスをocfs2でフォーマットする。

$ sudo fdisk /dev/sdc

パーティションを定義して、フォーマット。

$ sudo mkfs.ocfs2 /dev/sdc1

これでマウントしようとするとエラー。まだできない。

$ sudo mount /dev/sdc1 /iscsi
mount.ocfs2: Unable to access cluster service while trying initialize cluster
$

以下は、iscsiイニシエータとするマシンでも同様に行う。設定ファイルは全マシンで同じ内容。

(イニシエータにはopen-iscsi, ocfs2-toolsをインストール)

/etc/default/o2cbの編集

O2CB_ENABLED=true

O2CB_BOOTCLUSTER=ocfs2となっているので、固有の名称をつけたい場合は変更する。

/etc/ocfs2/cluster.confの編集

node:
ip_port = 7777
ip_address = 10.5.34.100
number = 1
name = demeter
cluster =ocfs2

node:
ip_port = 7777
ip_address = 10.5.34.112
number = 2
name = ikaros
cluster =ocfs2

cluster:
node_count = 2
name =ocfs2

o2cbを起動

$ sudo /etc/init.d/o2cb start

マウントできるようになったはず

$ sudo mount /dev/sdc1 /iscsi