ArchLinux 2017.10.01: iSCSIターゲットのtgtをインストールする

iSCSIターゲットのtgtをインストールする手順を記載します。

1 tgtをインストールする

AURのtgtをインストールします。AURをビルドするための基本的なパッケージをインストールします。

$ sudo pacman -Sy --noconfirm git base-devel

tgtの依存パッケージであるperl-config-generalをインストールします。

$ git clone https://aur.archlinux.org/perl-config-general.git
$ cd perl-config-general
$ makepkg -s --noconfirm
$ sudo pacman -U --noconfirm ./*.pkg.tar.xz
$ cd ..

tgtをインストールします。Arch Linux 2017.10.01のGCCでは、バージョン1.0.69だとコンパイルエラーとなるので、バージョン1.0.72を利用します。

$ git clone https://aur.archlinux.org/tgt.git
$ cd tgt
$ sed -i PKGBUILD \
    -e 's;pkgver=1.0.69;pkgver=1.0.72;g' \
    -e 's;https://github.com/ksovi;https://github.com/fujita;'
$ cat <<EOF >> PKGBUILD
prepare() {
  sed -i \$pkgname-\$pkgver/usr/Makefile \\
    -e 's;sbindir ?= \$(PREFIX)/sbin;sbindir ?= \$(PREFIX)/bin;g'
  sed -i \$pkgname-\$pkgver/scripts/Makefile \\
    -e 's;sbindir ?= \$(PREFIX)/sbin;sbindir ?= \$(PREFIX)/bin;g'
}
EOF
$ makepkg -s --noconfirm
$ sudo pacman -U --noconfirm ./*.pkg.tar.xz
$ cd ..

tgtd.serviceを有効にします。

$ sudo systemctl enable tgtd
$ sudo systemctl start tgtd

2 iSCSIターゲットを作成する

この記事ではファイルをiSCSIターゲットとして使用します。

$ sudo mkdir /var/lib/iscsi
$ sudo dd if=/dev/zero of=/var/lib/iscsi/disk bs=1M count=1K

Target ID 1のiSCSIターゲットを作成します。

$ sudo tgtadm --lld iscsi --op new --mode target --tid 1 \
       -T iqn.2017-07.com.hiroom2:disk

Target ID 1のiSCSIターゲットにLogical unit 1のロジカルユニットを追加します。ロジカルユニットはブロックデバイスでも良いです。

$ sudo tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 \
       -b /var/lib/iscsi/disk

Target ID 1のiSCSIターゲットをすべてのIPアドレスに対して公開します。ALLの他に、192.168.11.1や192.168.11.0/24等が指定できます。

$ sudo tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL

iSCSIターゲットの設定を保存します。保存しない場合はtgtd再起動時に設定が破棄されます。

$ sudo tgtadm --dump | sudo tee /etc/tgt/conf.d/disk.conf

3 iSCSIイニシエータのopen-iscsiでiSCSIターゲットへ接続する

以降の操作はiSCSIターゲットをインストールしたサーバで実行します。

iSCSIターゲット接続前のパーティションは以下の通りです。

$ cat /proc/partitions
major minor  #blocks  name

 254        0   10485760 vda
 254        1     248832 vda1
 254        2          1 vda2
 254        5   10233856 vda5
  11        0    1048575 sr0
 253        0    9183232 dm-0
 253        1    1048576 dm-1

open-iscsiをインストールします。

$ sudo pacman -Sy --noconfirm open-iscsi

iSCSIターゲットを取得します。

$ sudo iscsiadm -m discovery -t st -p localhost
[::1]:3260,1 iqn.2017-07.com.hiroom2:disk

iSCSIターゲットへ接続します。

$ sudo iscsiadm -m node \
       --targetname iqn.2017-07.com.hiroom2:disk -p localhost -l
Logging in to [iface: default, target:
iqn.2017-07.com.hiroom2:disk, portal: ::1,3260] (multiple)
Login to [iface: default, target:
iqn.2017-07.com.hiroom2:disk, portal: ::1,3260]
successful.

sdaというパーティションが追加されました。

$ cat /proc/partitions
major minor  #blocks  name

 254        0   10485760 vda
 254        1     248832 vda1
 254        2          1 vda2
 254        5   10233856 vda5
  11        0    1048575 sr0
 253        0    9183232 dm-0
 253        1    1048576 dm-1
   8        0    1048576 sda