Solaris+ZFSの iSCSIターゲットに Linux+open-iscsiで接続する

(この記事は 2008年11月17日に STBBS.NET Blogで掲載された記事を移動したものです)

- 広告 -
Solarisでは、ZFSプール上にファイルシステムだけでなくボリューム(ブロックデバイス)も作成出来、さらにそれを iSCSIターゲットとして公開することも簡単に出来る。ここでは Solarisの ZFSプール上に iSCSIディスクを準備し、それを Linuxのイニシエータ(open-iscsi) から利用する手順を示す。

Solaris側


tank という名前のZFSプールに100GBの ボリューム vol を作成し、さらに iSCSIディスクとしてエクスポートするには
zfs create -V 100G -o shareiscsi=on tank/vol

とする。

このように作成されたiSCSIディスクには適当なハッシュ値が名称(iqn)として付与される。名称を調べるには
iscsitadm list target

とする。出力結果は
Target: tank/vol
iSCSI Name: iqn.1986-03.com.sun:02:d046e6c8-8599-e917-bcdd-ef46a8c3d751
Connections: 0
のようになる。

不要になったボリュームを削除するには
zfs destroy tank/vol

とすれば良い。但しイニシエータからログインされている iSCSIターゲットは削除できないので先に切断する必要がある。

Linux側


Solarisの iscsitadmコマンドで調べた iSCSI名を使って、Linuxから SCSIディスクとして接続する。Linuxには open-iscsiがインストールされており、iscsid が起動している必要がある。
接続された iSCSIターゲットは Linuxからは /dev/sd* のように通常の SCSIディスクと同様の扱いとなる。

まず discoveryを行い、iSCSIホスト上に存在するターゲットのリストを得る。既にターゲットの iSCSI名が判明している場合でも、イニシエータにターゲットを認識させるためにはこの操作が必要になる。discoveryは下記のように行う。
iscsiadm -m discovery -t sendtargets -p iSCSIホストの名前又はIPアドレス

discoveryが行われると、iscsidがターゲットの存在を認識するので続いて目的のターゲットに login をする。
iscsiadm -m node -T iSCSI名 -p iSCSIホストのIPアドレス --login

これで Solaris上のボリュームが SCSIディスク /dev/sd* として Linux側に出現する。あとは fdiskするなり好きなようにすれば良い。
なお次回の iscsid起動時に自動的にターゲットへログインするには、
iscsiadm -m node -T iSCSI名 -p iSCSIホストのIPアドレス --op=update --name=node.startup --value=automatic
としておくと良い。(-Tを省略すると全てのノードが自動接続の対象となる)

デバイス名は /dev/sd[abcde...]のようなものが付くので、ターゲットを識別するために lsscsi -t コマンドを使ったり /dev/disk/by-path/ から探し出したりする必要があるだろう。くれぐれも間違えて違うディスクを fdiskしてしまわないように注意すること。

iSCSIターゲットディスクを切断するには、
iscsiadm -m node -T iSCSI名 --logout

とする。

Walbrixについて

(この記事を移動する際に追記されました)

余ったPCを使って10分で CentOS/Debian/Ubuntu/Fedora/Gentoo Linuxの実験環境を構築できることをご存じですか?

Walbrixは誰でも無料で簡単に使えるサーバオペレーティングシステムです。

≫ Walbrixについて知る

Walbrixとは?

Walbrix(ワルブリックス)とは、家電・ゲーム機風のユーザーインターフェイスを装備した「誰にでも使える」「無償の」ホーム・スモールオフィス向けサーバオペレーティングシステムです。Walbrixの開発はSTBBS.NET, LLCが行っています。

Walbrixについてもっと知る
よくあるご質問(FAQ)

ダウンロード

Download Walbrix
Walbrixはどなたも無料でダウンロード・利用できます。