COMSTARでLUとiSCSIターゲットをグループ化する

前回でひとまずOpenSolarisのCOMSTARを用いたiSCSI共有が可能になった。
引き続きCOMSTARを試したので、今回はLUを追加して複数になったときの挙動とかについてまとめ。

前回のエントリ:OpenSolaris 2009.06でCOMSTARを試す

LUを追加してみる

追加手順とか確認とか

前回までで、1つのiSCSIターゲットを作成してLUの公開まで設定できました。
前回のプールはいろいろいじってて削除してしまったので、GUIDとか容量とか変わってるけど基本環境(ターゲットはそのまま、LUのボリューム名は同じにして再作成)は同じにして再作成してます。


まずはLUを新しく追加する。

# zfs create -V 15g osol/comstar1
# sbdadm create-lu /dev/zvol/rdsk/osol/comstar1

Created the following LU:

              GUID                    DATA SIZE           SOURCE
 --------------------------------  -------------------  ----------------
600144f0b8eb0a0000004b349e1a0001      16106061824      /dev/zvol/rdsk/osol/comstar1

確認

# stmfadm list-lu -v
LU Name: 600144F0B8EB0A0000004B333EA90006
    Operational Status: Online
    Provider Name     : sbd
    Alias             : /dev/zvol/rdsk/osol/comstar0
    View Entry Count  : 1
LU Name: 600144F0B8EB0A0000004B349E1A0001
    Operational Status: Online
    Provider Name     : sbd
    Alias             : /dev/zvol/rdsk/osol/comstar1
    View Entry Count  : 0

ここでView Entry Countというものがある。
これは設定されているviewの数のことです。現在osol/comstar0はviewが設定されているので1になっていて、osol/comstar1はまだviewが登録されていないので0になっている。
LUには複数のviewを登録することができるのです。

osol/comstar1にviewを追加します。

# stmfadm add-view 600144F0B8EB0A0000004B349E1A0001

確認

# stmfadm list-lu -v
LU Name: 600144F0B8EB0A0000004B333EA90006
    Operational Status: Online
    Provider Name     : sbd
    Alias             : /dev/zvol/rdsk/osol/comstar0
    View Entry Count  : 1
LU Name: 600144F0B8EB0A0000004B349E1A0001
    Operational Status: Online
    Provider Name     : sbd
    Alias             : /dev/zvol/rdsk/osol/comstar1
    View Entry Count  : 1

さらに確認

# stmfadm list-view -l 600144F0B8EB0A0000004B349E1A0001 
View Entry: 0
    Host group   : All
    Target group : All
    LUN          : 1

View Entryが0、LUNが1になっている。
osol/comstar0も確認。

# stmfadm list-view -l 600144F0B8EB0A0000004B333EA90006
View Entry: 0
    Host group   : All
    Target group : All
    LUN          : 0

こっちもView Entryが0でLUNは0になっている。
このふたつのLUにはそれぞれ1つのviewが登録されていることがわかります。

Windowsからの確認

何もしなくてもWindowsにはディスクが勝手に増えている。
増えていない場合はiSCSI InitiatorのTargetsのrefreshとか再接続とかすると見えると思います。

これでディスクの初期化をしてパーティションを作成してあげればローカルディスクとして使えるようになります。

LU(osol/comstar1)を別のターゲットで公開する

これでひとつのターゲットで2つのLUを公開できるようになったわけですが、ターゲットをわけたいときもあるかもしれない。
ということでosol/comstar1を別のターゲットで公開するように設定してみます。

手順

まずターゲットの追加

# itadm create-target
Target iqn.1986-03.com.sun:02:2135f4fc-d1cf-ea62-e007-e2519d683523 successfully created

ターゲットが2つあることを確認

# itadm list-target -v
TARGET NAME                                                  STATE    SESSIONS 
iqn.1986-03.com.sun:02:2135f4fc-d1cf-ea62-e007-e2519d683523  online   0        
        alias:                  -
        auth:                   none (defaults)
        targetchapuser:         -
        targetchapsecret:       unset
        tpg-tags:               default
iqn.1986-03.com.sun:02:f294862f-a75b-e2a4-a9af-a5d6c6892bf1  online   1        
        alias:                  -
        auth:                   none (defaults)
        targetchapuser:         -
        targetchapsecret:       unset
        tpg-tags:               default

stmfadmコマンドでも確認できます。

# stmfadm list-target -v
Target: iqn.1986-03.com.sun:02:2135f4fc-d1cf-ea62-e007-e2519d683523
    Operational Status: Online
    Provider Name     : iscsit
    Alias             : -
    Sessions          : 0
Target: iqn.1986-03.com.sun:02:f294862f-a75b-e2a4-a9af-a5d6c6892bf1
    Operational Status: Online
    Provider Name     : iscsit
    Alias             : -
    Sessions          : 1
        Initiator: iqn.1991-05.com.microsoft:[接続元ホスト名]
            Alias: -
            Logged in since: Fri Dec 25 21:18:23 2009

ひとつめのターゲットは既にwindowsからセッションが張られているのでSESSIONが1になっているのがわかります。

次にTarget groupというものを作ります。このグループにLUを結びつけるという形です。

# stmfadm create-tg comstar-0
# stmfadm list-tg
Target Group: comstar-0

このTarget groupにターゲットを所属させます。

# stmfadm add-tg-member -g comstar-0 iqn.1986-03.com.sun:02:2135f4fc-d1cf-ea62-e007-e2519d683523
stmfadm: STMF service must be offline

怒られました。どうやらSTMFサービスが起動していると操作できないようです*1
[2010/04/22追記]

これはバグ登録されてました。
Bug ID: 6788352 Cannot add target group members if STMF is enabled
b118で修正されたようですが、targetはofflineにしないとだめなようです。
Bug ID: 6938370 Cannot add target group member without offlining stmf.. again
ここで再度登録されてますが、仕様のようでcloseされています(Not Defect)。

停止させて追加してみます。

# svcadm disable stmf
# stmfadm add-tg-member -g comstar-0 iqn.1986-03.com.sun:02:2135f4fc-d1cf-ea62-e007-e2519d683523
# svcadm enable stmf

追加できたので確認します。

# stmfadm list-tg -v
Target Group: comstar-0
        Member: iqn.1986-03.com.sun:02:2135f4fc-d1cf-ea62-e007-e2519d683523

comstar-0に所属しました。
このTarget groupの情報を持たせてosol/comstar1にviewを追加します。

# stmfadm add-view -t comstar-0 600144F0B8EB0A0000004B349E1A0001
stmfadm: view entry exists

怒られます。Host groupとTarget groupが重複する場合追加できないようです。
今回の例では先に追加したviewが

  • Host group : All - Target group : All

になっているのでTarget groupを絞ったviewを追加しようとしても矛盾が生じるのでエラーになる。

  • Host group : All - Target group : comstar-0
  • Host group : All - Target group : comstar-1

ならTarget groupに矛盾ができないので追加が可能になる。

今回は一度先に追加したviewを削除して、Target groupだけを限定した新規のviewを作成します。
下のコマンドのGUIDの後ろの数字はView Entryの番号です。
書式は stmfadm remove-view -l [操作対象LUのGUID] [View Entryの値] です。

# stmfadm remove-view -l 600144F0B8EB0A0000004B349E1A0001 0
# stmfadm list-lu -v 600144F0B8EB0A0000004B349E1A0001 
LU Name: 600144F0B8EB0A0000004B349E1A0001
    Operational Status: Online
    Provider Name     : sbd
    Alias             : /dev/zvol/rdsk/osol/comstar1
    View Entry Count  : 0

View Entry Countが0になりました。
新たにTarget groupと結びつけて追加します。

# stmfadm add-view -t comstar-0 600144F0B8EB0A0000004B349E1A0001

viewを確認します。
書式は stmfadm list-view -l [対象LUのGUID] です。

# stmfadm list-view -l 600144F0B8EB0A0000004B349E1A0001
View Entry: 0
    Host group   : All
    Target group : comstar-0
    LUN          : 1

これでosol/comstar1はiqn.1986-03.com.sun:02:2135f4fc-d1cf-ea62-e007-e2519d683523のターゲットからしか見えなくなるが、このままではosol/comstar0もこのターゲットから見えてしまいます(Target group : All なので)。

なので新たにTarget group comstar-1 を作ってiqn.1986-03.com.sun:02:f294862f-a75b-e2a4-a9af-a5d6c6892bf1はこのTarget groupだけに所属させます。

# stmfadm create-tg comstar-1
# svcadm disable stmf
# stmfadm add-tg-member -g comstar-1 iqn.1986-03.com.sun:02:f294862f-a75b-e2a4-a9af-a5d6c6892bf1
# svcadm enable stmf

Target groupを確認します。

# stmfadm list-tg -v
Target Group: comstar-0
        Member: iqn.1986-03.com.sun:02:2135f4fc-d1cf-ea62-e007-e2519d683523
Target Group: comstar-1
        Member: iqn.1986-03.com.sun:02:f294862f-a75b-e2a4-a9af-a5d6c6892bf1

osol/comstar0のviewを削除して、Target groupを限定したviewを追加します。

# stmfadm remove-view -l 600144F0B8EB0A0000004B333EA90006 0
# stmfadm add-view -t comstar-1 600144F0B8EB0A0000004B333EA90006
# stmfadm list-view -l 600144F0B8EB0A0000004B333EA90006
View Entry: 0
    Host group   : All
    Target group : comstar-1
    LUN          : 0

これでそれぞれのターゲットに接続すればそれぞれのLUが認識されます。

まとめ

今回はLUとターゲットの組み合わせについていろいろ実験してみました。
最初viewにLUを登録するというイメージで勘違いしてたんですが、ドキュメントを読んで逆だと気づきました。LUにviewを追加することで見せ方をいろいろ変えるというイメージのようです。

このviewの機能を使いこなせば、Host groupとTarget groupの組み合わせでいろいろ制御できそうです。
これ以上viewについては追いかけないですけど・・・。

下記のページにviewについてはいろいろ書いています。
How to Make SCSI Logical Units Available - OpenSolaris Information Resources - wikis.sun.com


しかし、COMSTARのこういう日本語の情報がほとんど見つからなくてかなり苦労してます。もっといっぱい日本語情報が出てきてくれるとうれしいんですが。
いい情報があれば教えてください。

*1:停止しないで追加できる方法はないのかな?実運用環境だと停止できないだろうし、やりようがあると思うんですが。