Solars11のゾーンにiSCSIディスクを接続する

1. iSCSIサービスの有効化

グローバルゾーンでiSCSIイニシエータのサービスが動作しているか確認し、無効であれば有効にします。

# サービス状態の確認
svcs network/iscsi/initiator

# 無効(disabled)な場合は有効化
svcadm enable network/iscsi/initiator
2. 自サーバーのIQNを確認

ストレージ(ターゲット)側でアクセス許可を設定するために、自サーバーのIQN(iSCSI Qualified Name)を確認します。

iscsiadm list initiator-node

注: 出力された Initiator node name: iqn.1986-03.com.sun:01:xxxx をストレージ側に登録し、LUNの割り当て(LUN Masking)を行ってください。

3. ターゲットの探索(Discovery)設定

ストレージのIPアドレスを指定して、ターゲットを見つけられるようにします。一般的には「SendTargets」方式を使用します。

# 1. SendTargets探索を有効化
iscsiadm modify discovery -t enable

# 2. ストレージのIPアドレスを追加(デフォルトポート 3260)
iscsiadm add discovery-address <ストレージのIPアドレス>:3260
4. デバイスの認識と確認

探索設定が完了すると、OSが自動的にターゲットを検出します。

  • iSCSIターゲットとしての接続確認
    iscsiadm list target ここで Status: active になっていれば通信は成功です。
  • OS上のディスクデバイスとしての確認
    devfsadm -c disk # 新規デバイスの再スキャン
    format # ディスク一覧に現れるか確認してマウントするディスクを特定しておきます。
    終了はctrl+dで抜ける
AVAILABLE DISK SELECTIONS:
0. c1t0d0
/pci@0,0/pci15ad,1976@10/sd@0,0
1. c0t6001405663731346261313531303233d0
/scsi_vhci/ssd@g6001405663731346261313531303233
太字がiSCSIディスクです。
5. ZFSプールの作成

認識したディスクを使用して、ZFSプールを作成します。

# 例: c0t6001405663731346261313531303233d0 という名前で認識された場合
zpool create <プール名> /dev/dsk/c0t6001405663731346261313531303233d0

テストとしたい場合は以下でエラーが無いことを確認
zpool create -n <プール名> /dev/dsk/c0t6001405663731346261313531303233d0
パスなしでも自動的に見つけてくれます。
zpool create -n <プール名> c0t6001405663731346261313531303233d0

zfsが作成できたら、以下のコマンドで確認します。

zpool list
#プール名とディスク容量を確認
zfs list
# /<プール名>でマウントされていることを確認
補足:静的設定が必要な場合(認証など)

ストレージ側で CHAP認証 が必要な場合は、以下の設定を追加で行う必要があります。

# ユーザー名とパスワードの設定例
iscsiadm modify initiator-node --authentication-type CHAP
iscsiadm modify initiator-node --CHAP-secret
# (この後パスワード入力を求められます)

注意点
持続性: iscsiadm で設定した内容はリブート後も保持されます。
ネットワーク設計: iSCSIトラフィックは非常に帯域を消費するため、可能であれば管理用や業務用のLANとは別の、iSCSI専用のNIC(VNIC)とサブネットを使用することを強く推奨します。


6.ゾーンにiSCSIディスクをマウントする
既存ゾーンに「追加ディスク」として渡す

※この場合、グローバルゾーン側であらかじめ mkdir // をしておく必要があります。

# グローバルゾーンで実行
mkdir //

※ プール全体(/)を直接渡すことも可能ですが、将来的に他のゾーンとも共有したり整理したりしやすくするため、サブディレクトリ(または ZFS データセット)を作成して渡すのが一般的です。

#グローバルゾーンで以下のコマンドを入力します。
zonecfg -z <割り当てるzone名>
zonecfg:newzone> add fs
zonecfg:newzone> set dir=/data          # ゾーン内での見え方
zonecfg:newzone> set special=// # グローバルゾーン側(iSCSI)のパス
zonecfg:newzone> set type=lofs          # ZFSを渡す場合の標準形式
zonecfg:newzone> end
zonecfg:newzone> commit
zonecfg:newzone> exit

7. 仕上げ:ゾーンの起動と確認

最後にゾーンを起動して中から確認します。

# ゾーンの起動
zoneadm -z  boot

# ゾーンにログインしてディスク容量を確認
zlogin  df -h

df -h の結果に、iSCSIで作成したサイズの領域が表示されていれば成功です。

ご参考まで

関連記事

TOP