OpenSolaris 2009.06でCOMSTARを試す
現在のOpenSolarisにはiSCSIの機能が2種類存在する。
ボリュームのshareiscsiプロパティをonにするもの(legacyなんて既に言われてる)とCOMSTAR(Common Multiprotocol SCSI TARget)なわけですが、COMSTARの情報が非常に少ない。
なので試したことを書いていこうと思う。
COMSTARというのはOpenSolarisのホストをSCSIデバイスにしてしまうというソフトウェアフレームワークです。
現在の2009.06(b111)よりあとのb112以降ではFibre Channel over Ethernet (FCoE)とかもできるようです。
COMSTAR Administration - OpenSolaris Information Resources - wikis.sun.com
COMSTARが何かというのは上記ページのCOMSTAR Basicsを参照してください。
COMSTARとshareiscsiプロパティの違いとしてCPUリソースの使い方があるようで、shareiscsiプロパティを用いたiSCSIではサービスデーモンが処理を行うが、COMSTARではカーネルが処理を行います。
勉強会で聞いた話ではSunの7000シリーズのストレージでもCOMSTARが使われているらしい。パフォーマンスが3倍になったとか。
vmstatを見ているとusの使用率が0でsyだけに負荷がかかっているのがわかる。shareiscsiだとusにもsyにも負荷がかかってるからこのあたりのオーバヘッドが軽減されているのだろう。
COMSTARの概要とか
今回試すiSCSIのCOMSTARで必要なコマンドは
- itadm
- iSCSIターゲット管理コマンド。iSCSIポートプロバイダの管理
- sbdadm
- SCSI Block Diskコマンド。
- stmfadm
- STMFの操作コマンド。COMSTAR関連のコマンドすべてに関連する中心的なコマンド。ポートプロバイダのリソース(ターゲット)を論理ユニット(LU)にマッピングする。
の3つ。
STMFとはSCSI Target Mode FrameworkのことでHow COMSTAR Worksとか見れば関係性がわかるかもしれない。
今回の作業の流れとしては以下のようになる。
作業の流れの参考ページ:Configuring an iSCSI Storage Array With COMSTAR (Task Map)
今回はLUをひとつ作成してそれをCOMSTARでiSCSIデバイスとして公開するまでを試してみた。
今回は以下のブログを参考に行ったのでそちらも参照してください。
参考ページ:The Blog of Ben Rockwood
パッケージのインストール
必要なもの一式(ここでは使わないものも含めて)インストールする。
# pfexec pkg install storage-server SUNWiscsit
ここで一度再起動しておかないと、stmfがうまく有効にならないので再起動しておく。
またCOMSTARはshareiscsiプロパティを用いたiSCSIとは共存できないようなのでこちらのサービスが立ち上がっている場合は無効にしておく。
# svcadm disable iscsitgt
targetとstmfの起動
# svcadm enable target # svcadm enable stmf
公開iSCSIリソースの作成
公開ボリュームの作成は普通にzfsコマンドで行う。20Gの領域を作成。
# zfs create -V 20g osol/comstar0
次に論理ユニット(LU)の作成
# sbdadm create-lu /dev/zvol/rdsk/osol/comstar0 Created the following LU: GUID DATA SIZE SOURCE -------------------------------- ------------------- ---------------- 600144f0b8eb0a0000004b3095140002 21474770944 /dev/zvol/rdsk/osol/comstar0
確認
# stmfadm list-lu -v LU Name: 600144F0B8EB0A0000004B3095140002 Operational Status: Online Provider Name : sbd Alias : /dev/zvol/rdsk/osol/comstar0 View Entry Count : 1
viewの確認
# stmfadm list-view -l 600144F0B8EB0A0000004B3095140002 stmfadm: 600144f0b8eb0a0000004b3095140002: no views found
ここではまだviewが登録されていないから当然こうなる。
ここでLUにviewを追加する。
# stmfadm add-view 600144F0B8EB0A0000004B3095140002
再度確認
# stmfadm list-view -l 600144F0B8EB0A0000004B3095140002 View Entry: 0 Host group : All Target group : All LUN : 0
無事viewが登録されています。
最後にターゲットの作成。
# itadm create-target Target iqn.1986-03.com.sun:02:f294862f-a75b-e2a4-a9af-a5d6c6892bf1 successfully created
確認
# itadm list-target -v TARGET NAME STATE SESSIONS iqn.1986-03.com.sun:02:f294862f-a75b-e2a4-a9af-a5d6c6892bf1 online 0 alias: - auth: none (defaults) targetchapuser: - targetchapsecret: unset tpg-tags: default
これでLUの公開がひとまず可能となる。
ターゲット(iqn.1986-03.com.sun:02:f294862f-a75b-e2a4-a9af-a5d6c6892bf1)に接続すると20Gの領域が見えるはず。
Windows XPからマウントしてみる
WindowsでiSCSIを利用するやりかたは以下のブログで解説されています。
zvol と iSCSI と NTFS と zfs snapshot (その 2) : やっぱり Sun がスキ!
設定して接続してログオンしてみると
のようにディスクとして認識されます(ディスク1(D)。上記画像は初期化して既にフォーマット済みのものです)。
これで普通のディスクのようにあとは扱えます。
次の課題とか
COMSTARはとshareiscsiプロパティを用いたiSCSIでは違う部分がいろいろあるわけですが、ターゲットの扱いもその一つです。
shareissi=onを設定するとさくっと簡単にiSCSIとして公開できるわけですが、これはターゲットと公開ボリュームが1対1で自動的に結びつきます。
なので2つ公開する場合は2個ターゲットが自動的にできてしまう。これは変更できるのかもしれないけど試してはいない。
逆にCOMSTARは上の手順でやったようにターゲットが自動生成されるわけではない。手元で確認した限りでは1ターゲットで複数のLUを公開することができる。
また、ターゲットグループを設定するとターゲットとLUの組み合わせを自由にカスタマイズできたり、ホストを絞ったり認証を行ったりすることもできるらしい。
このあたりも追々試してみたいと思う。
shareiscsiとCOMSTARのディスクアクセスベンチマークもぼつぼつ取っているのでまとめたら公開したいと思う。