FreeBSD 14
Sponsored Link

iSCSI : iSCSI ターゲットの設定 (istgt)2023/12/28

 

iSCSI によるストレージサーバーの構築です。

ネットワーク上のストレージを iSCSI ターゲット、iSCSI ターゲットに接続するクライアントを iSCSI イニシエーターと呼びます。
当例では以下のような環境を前提に iSCSI ストレージサーバーを構築します。

+----------------------+          |          +----------------------+
| [   iSCSI Target   ] |10.0.0.30 | 10.0.0.51| [ iSCSI Initiator  ] |
|     dlp.srv.world    +----------+----------+   node01.srv.world   |
|                      |                     |                      |
+----------------------+                     +----------------------+

[1] iSCSI デバイスとして使用する領域を作成しておきます。
root@dlp:~ #
zpool list

NAME    SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
zroot  27.5G  1.08G  26.4G        -         -     0%     3%  1.00x    ONLINE  -

# 既存の ZFS プールにファイルシステムを作成する場合

root@dlp:~ #
zfs create -V 10g zroot/ROOT/target01

root@dlp:~ #
zfs list zroot/ROOT/target01

NAME                  USED  AVAIL  REFER  MOUNTPOINT
zroot/ROOT/target01  10.2G  25.6G    56K  -

# ファイルシステム上にイメージを作成する場合

root@dlp:~ #
mkdir /home/iscsi_disks

root@dlp:~ #
dd if=/dev/zero of=/home/iscsi_disks/target02.img count=0 bs=1 seek=10G

[2] iSCSI ターゲットの設定です。[istgt] をインストールして設定します。
root@dlp:~ #
pkg install -y istgt
root@dlp:~ #
mv /usr/local/etc/istgt/istgt.conf /usr/local/etc/istgt/istgt.conf.org

root@dlp:~ #
vi /usr/local/etc/istgt/istgt.conf
# 新規作成

[Global]
  # ノードベースを設定
  # 命名規則 : [ iqn.(年)-(月).(ドメイン名の逆)
  NodeBase "iqn.2023-12.world.srv"
  PidFile /var/run/istgt.pid
  AuthFile /usr/local/etc/istgt/auth.conf
  MediaDirectory /var/istgt
  LogFacility "local7"
  Timeout 30
  NopInInterval 20
  DiscoveryAuthMethod Auto
  MaxSessions 16
  MaxConnections 4
  MaxR2T 32
  MaxOutstandingR2T 16
  DefaultTime2Wait 2
  DefaultTime2Retain 60
  FirstBurstLength 262144
  MaxBurstLength 1048576
  MaxRecvDataSegmentLength 262144
  InitialR2T Yes
  ImmediateData Yes
  DataPDUInOrder Yes
  DataSequenceInOrder Yes
  ErrorRecoveryLevel 0
[UnitControl]
  AuthMethod CHAP
  AuthGroup AuthGroup01
  Portal UC1 127.0.0.1:3261
  Netmask 127.0.0.1
[PortalGroup01]
  # ターゲットがリスンする IP アドレスとポート
  Portal DA1 10.0.0.30:3260
[InitiatorGroup01]
  InitiatorName "ALL"
  # 接続を許可するイニシエーターのネットワーク範囲 または IP アドレス
  Netmask 10.0.0.51/32
  Netmask 10.0.0.61/32
[LogicalUnit01]
  # 任意の名前を設定
  # ここで指定した名前は [NodeBase] で指定した名前の後ろに連結されて
  # ターゲットの IQN となる
  TargetName "dlp.target01"
  Mapping PortalGroup01 InitiatorGroup01
  AuthMethod CHAP
  AuthGroup AuthGroup01
  UseDigest Auto
  UnitType Disk
  # 作成したディスクを指定
  LUN0 Storage /dev/zvol/zroot/ROOT/target01 Auto

root@dlp:~ #
mv /usr/local/etc/istgt/auth.conf /usr/local/etc/istgt/auth.conf.org

root@dlp:~ #
vi /usr/local/etc/istgt/auth.conf
# 新規作成

# CHAP ユーザー名とシークレットを設定
[AuthGroup01]
Auth "username" "userpassword"

root@dlp:~ #
mv /usr/local/etc/istgt/istgtcontrol.conf /usr/local/etc/istgt/istgtcontrol.conf.org

root@dlp:~ #
vi /usr/local/etc/istgt/istgtcontrol.conf
# 新規作成

[Global]
  Timeout 60
  AuthMethod CHAP
  Auth "username" "userpassword"
  Host 127.0.0.1
  Port 3261
  # [istgt.conf] で設定した [(NodeBase):(TargetName)]
  TargetName "iqn.2023-12.world.srv:dlp.target01"
  Lun 0
  Flags "ro"
  Size "auto"

root@dlp:~ #
chmod 600 /usr/local/etc/istgt/auth.conf /usr/local/etc/istgt/istgtcontrol.conf

root@dlp:~ #
echo 'istgt_enable="YES"' >> /etc/rc.conf

root@dlp:~ #
service istgt start

Starting istgt.
istgt version 0.5 (20150713)
normal mode
using kqueue
using host atomic
LU1 HDD UNIT
LU1: LUN0 file=/dev/zvol/zroot/ROOT/target01, size=10737418240
LU1: LUN0 20971520 blocks, 512 bytes/block
LU1: LUN0 10.0GB storage for iqn.2023-12.world.srv:dlp.target01
LU1: LUN0 serial 10000001
LU1: LUN0 read cache enabled, write cache enabled
LU1: LUN0 command queuing enabled, depth 32

root@dlp:~ #
istgtcontrol list

lun0 storage "/dev/zvol/zroot/ROOT/target01" 10737418240
DONE LIST command
関連コンテンツ