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
/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 =ocfs2node:
ip_port = 7777
ip_address = 10.5.34.112
number = 2
name = ikaros
cluster =ocfs2cluster:
node_count = 2
name =ocfs2
o2cbを起動
$ sudo /etc/init.d/o2cb start
マウントできるようになったはず
$ sudo mount /dev/sdc1 /iscsi