ユーザ用ツール

サイト用ツール


ja:solaris:comstarでiscsiターゲットを作成する

COMSTARでiSCSIターゲットを作成する

Solaris11やOpenIndianaの151aでは、iSCSIターゲットが比較的簡単に作成できるようになっていて、そこに素敵なファイルシステムZFSが使える事でいつでもスナップショットがとれちゃったりする素敵なiSCSIターゲットが作れちゃいます。
せっかくなので、ZFS使います^^

まずは...

主な手順としては、以下のとおり

  1. 必要なパッケージを導入するなどの基本設定
  2. iSCSIで公開するファイルシステムの作成
    OpenIndianaでZFSストレージを作る参照
  3. iSCSIターゲットの設定
  4. 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 listtank/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、ターゲットグループを複数作ると、接続するターゲット毎に別のディスクが参照できるようになる。

ja/solaris/comstarでiscsiターゲットを作成する.txt · 最終更新: 2014/05/23 02:56 by makoto