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とか見れば関係性がわかるかもしれない。

今回の作業の流れとしては以下のようになる。

  1. 必要なパッケージのインストール
  2. iSCSI用のボリュームの作成
  3. ストレージプール(osol)にLU(論理ユニット)の作成
  4. viewの追加
  5. iSCSIターゲットの作成

作業の流れの参考ページ: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からマウントしてみる

WindowsiSCSIを利用するやりかたは以下のブログで解説されています。

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のディスクアクセスベンチマークもぼつぼつ取っているのでまとめたら公開したいと思う。