debianでiscsi target/initiator動作させるメモ

Linux上でのiSCSIパケット収集のためにVirtual Boxで作成した、Debian 7.0.0にiSCSI initiatorとtargetを入れたときのメモを起こしておきます。

今回iSCSIパケットの収集をする必要があったので、Linux上で動くように導入しました。 iSCSIの説明はまた今度にするとして、簡単に用語を定義しておくと、 iSCSIターゲット

  • iSCSIサーバー iSCSIイニシエータ
  • iSCSIクライアント

対象とするシステムは以下のとおりです。

InitiatorTarget
Debian 7.0.0Debian 7.0.0
仮想1コアCPU仮想1コアCPU
512MB RAM512MB RAM
10GB SSD10GB SSD

全く同じシステムで、初期インストール時の設定はminimalです。(gccなどはおろか、sshdも入っていない状態)

iSCSIに関するパッケージは以下のとおり。targetはiscsitargetとiscsitarget-dkms、イニシエータはopen-iscsiとなっています。

root@debian:~# aptitude search iscsi
p   iscsitarget                                            - iSCSI Enterprise Target userland tools
p   iscsitarget-dkms                                       - iSCSI Enterprise Target kernel module source - dkms version
p   libiscsi-bin                                           - iSCSI client shared library - utilities
p   libiscsi-dev                                           - iSCSI client shared library
p   libiscsi1                                              - iSCSI client shared library
p   open-iscsi                                             - High performance, transport independent iSCSI implementation

まずサーバーとなるターゲットのインストールから。 rootでaptitude install iscsitarget iscsitarget-dkmsとしてパッケージインストールして下記のとおりに設定し、iSCSIターゲットを有効にします。

ファイルパス変更内容
/etc/default/iscsitargetISCSITARGET_ENABLE=falseをtrueに

そして、iSCSIとして提供するデバイスを設定します。 この設定ファイルは/etc/iet/ietd.confに追記して設定します。

iSCSIターゲットの設定書式は設定ファイルにもサンプルがありますが、最小限の記述は以下の様な形式になります。 ここではfileioタイプを用い、単一ファイルをあたかもSCSIデバイスとして利用する方法を取ります。

Target iqn.yyyy-mm.<reversed domain name>[:identifier]
   Lun 0 Path=<image file path>,Type=fileio,ScsiId=<id>,ScsiSN=<sn>

各所で紹介されている記事にはScsiIDやScsiSNを指定していないものもありましたが、open-iscsi 2.0.873@Debian 7.0.0ではSCSIデバイスとして認識されないのでちゃんとつけておきましょう(これがわからず1時間くらい考えこんでた)。

Pathで指定するファイルはdd if=/dev/zero of=/disk.img bs=1 count=0 seek=10Gなどで適当につくってしまいましょう。 今回はこのように設定しました。

Target iqn.2014-01.localhost:fileio.test
   Lun 0 Path=/root/disk.img,Type=fileio,ScsiId=test,ScsiSN=test

ここまででターゲットの設定は終わりなので、サービスを再起動します。

root@debian:~# service iscsitarget restart
Removing iSCSI enterprise target devices: :.
Starting iSCSI enterprise target service:.
.

エラーに関しては多くは出力されないので、dmesg | tailで確認するなりした方がいいと思います。 正常に動作しているかどうかはneststat -a | grep iscsilsof -i:3260で状態をみて判断します。

繋げてみないことには動作確認は取れませんので、クライアントとしてのopen-iscsiをインストールします。 aptitude install open-iscsiとして、iscsiイニシエータを導入します。

最低限の動作には設定は必要ないのでこのままコマンドを入力して接続していきます。 dpkg -L open-iscsiすると、いくつかiscsiで始まるコマンドがインストールされていますが、すべてを統合的に実行できるiscsiadmを利用します。

iscsiadmに関して詳しいことはmanを見るとして、今回繋げるためには以下のようにして簡単ログインしてしまいましょう。

root@debian:~# iscsiadm -m discovery -t sendtargets -p 127.0.0.1 -l

オプションに関して詳しいことはmanをみてもらうとして、今回使ったオプションは次のような意味を持っています。

OptionSense
-mモード指定
discoveryiSCSIターゲット探索
-tタイプ指定
sendtargets準iSCSIプロトコルを用いているターゲット探索
-pネットワークポータル指定
127.0.0.1指定ネットワークアドレス
-lログイン

これで接続し、ちゃんとSCSIデバイスとして認識できていればdmesgに以下のように出ます。

[ 6484.501041] scsi3 : iSCSI Initiator over TCP/IP
[ 6484.764505] scsi 3:0:0:0: Direct-Access     IET      VIRTUAL-DISK     0    PQ: 0 ANSI: 4
[ 6484.765289] sd 3:0:0:0: [sdb] 2097152 512-byte logical blocks: (1.07 GB/1.00 GiB)
[ 6484.765325] sd 3:0:0:0: [sdb] Write Protect is off
[ 6484.765328] sd 3:0:0:0: [sdb] Mode Sense: 77 00 00 08
[ 6484.765389] sd 3:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 6484.766030]  sdb: unknown partition table
[ 6484.766303] sd 3:0:0:0: [sdb] Attached SCSI disk
[ 6484.766417] sd 3:0:0:0: Attached scsi generic sg2 type 0

こんなかんじの出力があれば、大体検討はつくと思いますが、/dev/sdbにiSCSIターゲットがSCSIデバイスとして認識されています。 このブロックデバイスをパーティショニングし、フォーマットし、マウントすることで実際にディスクとして利用することが出来ます。 こんなかんじです。

root@debian:~# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x86017ce7.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-2097151, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151):
Using default value 2097151

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
root@debian:~# mkfs -t ext4 /dev/sdb1
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 261888 blocks
13094 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376
 
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
 
root@debian:~# mkdir mount
root@debian:~# mount /dev/sdb1 mount/
root@debian:~# df -h
Filesystem                                              Size  Used Avail Use% Mounted on
rootfs                                                   19G 1022M   17G   6% /
udev                                                     10M     0   10M   0% /dev
tmpfs                                                    50M  240K   50M   1% /run
/dev/disk/by-uuid/f5aa3b2c-46ae-4b43-8191-1173de38f1d8   19G 1022M   17G   6% /
tmpfs                                                   5.0M     0  5.0M   0% /run/lock
tmpfs                                                   276M     0  276M   0% /run/shm
/dev/sdb1                                              1007M   18M  939M   2% /root/mount

あとはマウントしたディレクトリに対して好き放題アクセスしたら、切り離しておきます。

root@debian:~# iscsiadm -m session -u

オプションは、

OptionSense
-mモード指定
session現在はられているセッションを指定
-uログアウト

以上がまっさらな状態からiSCSIイニシエータ/ターゲットを導入して繋げるまで、です。 これらをインストールして動作するまでにしたログに関してはgistにあげてありますので、より詳しく見たい方などよければご参照ください。

https://gist.github.com/mzyy94/8329470

Related Posts

1万円台の格安Intel X540-T2 10GbEを買ってみた

1万円台の格安Intel X540-T2 10GbEを買ってみた

事の発端はこちらのツイートこの低価格NICはずっと気になっていて、ほしいものリストにもずっと突っ込んでありました。突っ込んだ当時の価格からずいぶんと安くなり、2016/07/04時点で2万...

read more
一般のご家庭向けEAP-SIM認証Wi-Fi

一般のご家庭向けEAP-SIM認証Wi-Fi

ご家庭のWi-Fi、まだパスワード認証ですか?こんにちは。陽炎型航洋直接教育艦 晴風の艦長、岬明乃です。 昨日開催された カーネル/VM探検隊 で、晴風の艦内無線LANの構築をした話をしてきました...

read more
一般のご家庭に25GbEネットワークを導入する

一般のご家庭に25GbEネットワークを導入する

師走と言えば大掃除。 一般のご家庭に溜まる可燃ゴミの掃除はもちろんのこと、デジタルデータに溢れる令和の時代は、データ掃除も入念に行う必要があります。 PCやiPadやNASなど、いたるところに散らばる...

read more
DIALというネットワークプロトコル

DIALというネットワークプロトコル

家庭のネットワークの監視システムからDIALなるプロトコルが暴れていてアラートが飛んできたので調査しました。...

read more
中華10GbEスイッチNetcore GS6を運用して1ヶ月たったレビュー

中華10GbEスイッチNetcore GS6を運用して1ヶ月たったレビュー

春に新居に越してからベストエフォートで10Gbpsのインターネット回線を引き込み利用している。 リビングに光コンセントを設置し、ONUに自作ルーターにNASやら母艦やらを集中してリビングに設置していた...

read more