目次
COMSTARでiSCSIターゲットを作成する
Solaris11やOpenIndianaの151aでは、iSCSIターゲットが比較的簡単に作成できるようになっていて、そこに素敵なファイルシステムZFSが使える事でいつでもスナップショットがとれちゃったりする素敵なiSCSIターゲットが作れちゃいます。
せっかくなので、ZFS使います^^
まずは...
主な手順としては、以下のとおり
- 必要なパッケージを導入するなどの基本設定
- iSCSIで公開するファイルシステムの作成
OpenIndianaでZFSストレージを作る参照 - iSCSIターゲットの設定
- iSCSIイニシエータから接続
となる。
細かい手順を以下に示す。
また、マシンのネットワーク設定などは事前に済ませておくこと。
必要なパッケージとサービスの構成
SolarisやOpenIndianaではpkgコマンドでいろんなパッケージの導入が可能。
iSCSIターゲットに必要なstorage-serverをインストールする
インストールする
$ su - ←rootユーザーになる # pkg install storage-server
確認する
# svcs -a | grep iscsi disabled XX:XX:XX svc:/network/iscsi/target:default online XX:XX:XX svc:/network/iscsi/initiator:default
targetの行があればOK。
ただし、この状態だとdisable(無効)になっているので、動いてはいない。
サービスの構成を行う
必要なサービスの有効化
# svcadm enable iscsi/target # svcadm enable stmf
確認する
# svcs -a | grep stmf online XX:XX:XX svc:/system/stmf:default # svcs -a | grep iscsi online XX:XX:XX svc:/network/iscsi/initiator:default online XX:XX:XX svc:/network/iscsi/target:default
すべてonlineになっていればOK。
iSCSIで公開するファイルシステムの作成
OpenIndianaでZFSストレージを作るにもあるのだけれど、一応。
ディスクのデバイスはc2t0d0,c3t0d0,c4t0d0とする。
ZFSのプールを作成する
zpoolコマンドを使う
- 単独のディスクの場合
# zpool create tank c2t0d0
- 2つのディスクでミラーの場合
# zpool create tank mirror c2t0d0 c3t0d0
- 3つのディスクでRAIDZの場合
# zpool create tank raidz c2t0d0 c3t0d0 c4t0d0
tankはプールの名称。
基本的にはなんでも好きな名前で良さそうだけど、rpoolという名前はSolarisやOpenIndianaではルートファイルシステムのプールとして使われているので、別な名前で。
ここいらでzfs listとか唱えると、tankができていて、その容量がどれくらいか、なんかは容易に確認できる。
プール内にファイルシステムを作成する
zfsコマンドを使う
- 100GBのファイルシステムdisk0を作成する場合
# zfs create -V 100g tank/disk0
zfs listでtank/disk0が確認できるようになる。
-Vオプションでファイルシステムの容量が指定できる。この指定は無くてもZFSを作る事はできるが、iSCSIターゲットの公開先として使用しようとするとエラーになる。
イニシエータ側に最大容量とか通知できないからかのぅ?調べてないからわからんけども。
ちなみに、ファイルシステムのパスは/dev/zvol/rdsk/tank/disk0となる。
iSCSIターゲットの設定
ターゲットの設定は、次の項目が必要
- ターゲットの作成
- 論理ユニットの作成
- ビューの設定
他にターゲットグループとかホストグループとかいろいろあるみたいだけれど、シラネ。
ターゲットの作成
簡単、実に簡単。
# itadm create-target
Target iqn.1986-03.com.sun:02:3c4bda9e-6a20-e74f-b3a1-e1934dc99b42 successfully created
ちなみに削除する時は
# itadm delete-target iqn.1986-03.com.sun:02:3c4bda9e-6a20-e74f-b3a1-e1934dc99b42
になる。
でも普通にやるとエラーになる。
The target is online or busy. Use the -f (force) option, or 'stmfadm offline-target iqn.1986-03.com.sun:02:3c4bda9e-6a20-e74f-b3a1-e1934dc99b42' itadm delete-target failed with error 16
作ったターゲットはそのまま即座にオンラインになっちゃうから、stmfadmでオフラインにしろって事らしい。
面倒な時はitadm delete-target -fで強制削除とかもあり?ww
論理ユニットの作成
論理ユニット。通称LU。先ほど作ったZFSのボリュームを指定して作ってもらう。
# stmfadm create-lu /dev/zvol/rdsk/tank/disk0
Logical unit created: 600144F024DB4E0000004FFCC2C8001A
これでOK。ここで600144F024DB4E0000004FFCC2C8001Aと出力されているが、この32桁がLUの名前。
ビューの設定
ビューの設定を行うと、ターゲットとLUの結びつきを指定できる。
# stmfadm add-view 600144F024DB4E0000004FFCC2C8001A
これでOK。
イニシエータから接続
ggrks
ってことで^^;
Windows 7とかWindows Server 2008とかなら標準で管理ツールにiSCSIイニシエータがあるので、それでつないでちょ♪
ちなみに。
ターゲットグループを作ってビューと紐付けると、ターゲットを複数作った時に任意のターゲットに任意のLUを結び付けられるよ。
stmfadm add-view LU名を実行しないでターゲットグループを作ってゴニョゴニョするのです。
# stmfadm create-tg testgrp
これでtestgrpというグループができる。
次にターゲットとターゲットグループを関連付ける
# svcadm disable stmf # stmfadm add-tg-member -g testgrp iqn.1986-03.com.sun:02:3c4bda9e-6a20-e74f-b3a1-e1934dc99b42 # svcadm enable stmf
一時的にstmfのサービスを止めているが、動かしたままでstmfadmを実行すると下のようなエラーになる。
stmfadm: STMF service must be offline
バグらしいが仕様という噂も?ww
で、最後にターゲットグループを指定した上で、LUをビューに追加する
# stmfadm add-view -t testgrp 600144F024DB4E0000004FFCC2C8001A
これでターゲットとLUがグルーピングされる。
後はターゲットの作成やLU、ターゲットグループを複数作ると、接続するターゲット毎に別のディスクが参照できるようになる。