FC2ブログ

[CentOS][iSCSI]構築(1)

http://www.unix-power.net/linux/iscsi.html
http://www.atmarkit.co.jp/fnetwork/tanpatsu/14ipsan/01.html
http://ascii.jp/elem/000/000/968/968743/
http://www.oss-d.net/iscsi

[root@localhost network-scripts]# iscsiadm --mode=discovery --type=sendtargets --portal=192.168.10.13
iscsiadm: cannot make connection to 192.168.10.13: No route to host



iptable設定でtcpの3260ポート許可した。
192.168.10.13へのpingは通ってる。

hosts.allowの設定見直す必要ある。


■iSCSI構築やり直し(2015.12.23)

○ターゲット CentOS7.1

http://www.server-world.info/query?os=CentOS_7&p=iscsi

CentOS7.1で進めたら管理ツール起動の箇所でエラー出た。ぐぐると、bug的な投稿に当たる。
7.1は止めて、6.7へ乗り換えて作業する事にする。

# yum -y install targetcli
# cd /
# mkdir iscsi_disks
# cd iscsi_disks
# targetcli
  :
ImportError: No module named configshell_fb



○ターゲット CentOS6.7

http://www.server-world.info/query?os=CentOS_6&p=iscsi

# yum -y install scsi-target-utils
# cd /
# mkdir iscsi_disks
# cd iscsi_disks
# dd if=/dev/zero of=/iscsi_disks/disk01.img count=0 bs=1 seek=80G
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000124076 s, 0.0 kB/s

# vi /etc/tgt/targets.conf
末尾に以下を追記。表示されない都合上、全角「<」を使ってる。
<target iqn.2015-12.BOB.target00>
backing-store /iscsi_disks/disk01.img
initiator-address 192.168.142.129
incominguser bob K4n1J2iR4i2K5o
</target>

# /etc/rc.d/init.d/tgtd start
Starting SCSI target daemon: [ OK ]
tgtadm: invalid request
Command:
tgtadm -C 0 --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /iscsi_disks/disk01.img
exited with code: 22.

このエラーの原因はSELinuxが有効になってるかららしい。
# getenforce
Enforcing
確かに今は有効になってる。
# setenforce 0
これで一時的に無効になった。
# vi /etc/selinux/config
再起動後もSELinuxを無効にするため以下設定にする。
SELINUX=disabled

# /etc/rc.d/init.d/tgtd start
再度iSCSIテーゲットデーモン起動。何もメッセージ出ない。成功かな。

# /sbin/chkconfig tgtd on

以下コマンドで状態確認。
# tgtadm --mode target --op show
Target 1: iqn.2015-12.BOB.target00
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 85899 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: /iscsi_disks/disk01.img
Backing store flags:
Account information:
bob
ACL information:
192.168.142.129


これで完了。

○イニシエータ CentOS6.7

http://www.server-world.info/query?os=CentOS_6&p=iscsi&f=2


# yum -y install iscsi-initiator-utils

# vi /etc/iscsi/iscsid.conf

56行目のコメントアウト解除
node.session.auth.authmethod = CHAP

60,61行目をコメントアウト解除して、ターゲットで設定したユーザ名とパスワードを記入。
node.session.auth.username = yyyy
node.session.auth.password = xxxx



ここでiSCSIイニシエータのIPがDHCPのため毎回変わってしまう問題に気付く。
以下記事の通り、固定IPへ設定。
[VMware]NAT時GATEWAY=192.168.142.2

次のコマンドでターゲットを発見する。
# iscsiadm -m discovery -t sendtargets -p 192.168.142.10

Starting iscsid: [ OK ]
iscsiadm: cannot make connection to 192.168.142.10: No route to host
iscsiadm: cannot make connection to 192.168.142.10: No route to host
iscsiadm: cannot make connection to 192.168.142.10: No route to host
iscsiadm: cannot make connection to 192.168.142.10: No route to host
iscsiadm: cannot make connection to 192.168.142.10: No route to host
iscsiadm: cannot make connection to 192.168.142.10: No route to host
iscsiadm: connection login retries (reopen_max) 5 exceeded
iscsiadm: Could not perform SendTargets discovery: encountered connection failure


No route to hostとなってしまう。
pingは通る。
なぜこうなるのかwiresharkで解析してみる。

まずはiSCSIターゲット側のゲストOSへインストールする。
# yum install wireshark
# yum install wireshark-gnome

起動してみる。
# wireshark
NICはeth0を選択して、STARTをクリック。

それからiSCSIイニシエータ側ゲストOSで以下DISCOVERYコマンド実行。
# iscsiadm -m discovery -t sendtargets -p 192.168.142.10

すると、ターゲット側のwiresharkで以下ログが出る。
最初は、iSCSIイニシエータ(192.168.142.3)からiSCSIターゲット(192.168.142.10)へのパケット。
以下はwiresharkで表示されたログと、そのログの詳細をその下に書いた。

69 197.192727770 192.168.142.3 192.168.142.10 TCP 74 60940 > iscsi-target [SYN] Seq=0 Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSval=864492 TSecr=0 WS=64

上のパケットの詳細。ここは、OSI階層のネットワーク層(3層)のプロトコルであるIPパケットを表す。
送信元(Src)と送信先(Dst)は先に書いた通り。

Internet Protocol Version 4, Src: 192.168.142.3 (192.168.142.3), Dst: 192.168.142.10 (192.168.142.10)



上のパケットの詳細。ここは、OSI階層のトランスポート層(4層)のプロトコルであるTCPパケットを表す。
送信ポートと宛先ポートに注意。

Transmission Control Protocol, Src Port: 60940 (60940), Dst Port: iscsi-target (3260), Seq: 0, Len: 0


「iscsi-target (3260)」って書いてあるけど、これはポート番号から何をやってるのか判断してるのかな?



上の69番TCPパケットに対する反応が以下。

70 197.192790616 192.168.142.10 192.168.142.3 ICMP 102 Destination unreachable (Host administratively prohibited)

詳細パケット。IPパケットのSrcとDstは当たり前だがさっきと逆。

Internet Protocol Version 4, Src: 192.168.142.10 (192.168.142.10), Dst: 192.168.142.3 (192.168.142.3)



69番TCP

Internet Control Message Protocol
Transmission Control Protocol, Src Port: 60940 (60940), Dst Port: iscsi-target (3260), Seq: 1807986585



「iscsiadm: cannot make connection to 192.168.142.10: No route to host」ってなった裏では、
ICMPでの応答パケット



ゲストOS同士での通信はLANセグメントを作るべきらしいので、
仮想OS設定のネットワークの設定にあるLANセグメントを作り、2つのゲストOSを同じLANセグメントに設定して起動。
それでもNo route to hostになる理由が分からないので、iptablesをstopしてみた。すると成功した。原因はiptablesの記述のようだ。

ターゲットの発見。

# iscsiadm -m discovery -t sendtargets -p 192.168.142.10
192.168.142.10:3260,1 iqn.2015-12.BOB:target00



状態確認。

# iscsiadm -m node -o show
# BEGIN RECORD 6.2.0-873.13.el6
node.name = iqn.2015-12.BOB:target00
node.tpgt = 1
  :
node.conn[0].iscsi.IFMarker = No
node.conn[0].iscsi.OFMarker = No
# END RECORD



ログイン。

# iscsiadm -m node --login
Logging in to [iface: default, target: iqn.2015-12.BOB:target00, portal: 192.168.142.10,3260] (multiple)
Login to [iface: default, target: iqn.2015-12.BOB:target00, portal: 192.168.142.10,3260] successful.



セッション状態確認。

# iscsiadm -m session -o show
tcp: [1] 192.168.142.10:3260,1 iqn.2015-12.BOB:target00 (non-flash)



■iptables設定見直し

ここを参考にiptablesを理解。
http://www.unix-power.net/linux/iptables.html

設定すべき内容を上から順に追加して行き、結果、以下の記述を追加したらiSCSIのDISCOVERYコマンドが効いた。

受け付けた通信を許可する設定を行います。-mオプションでstateモジュールの利用を宣言し、--stateオプションでルールの対象となる状態を指定します。以下ではESTABLISHEDとRELATEDのパケットを許可していますので一旦コネクションを接続した後の全ての通信が許可されます。

# /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# /sbin/iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# /sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT





■環境構築コマンドの一連のバッチ

iSCSIイニシエータ用(bat.iscsi.initiator、CentOS 6.7 i386)

#!/bin/bash

yum -y install iscsi-initiator-utils
yum -y install parted

# vi /etc/iscsi/iscsid.conf

iscsiadm -m discovery -t sendtargets -p 192.168.142.10
iscsiadm -m node -o show
iscsiadm -m node --login
iscsiadm -m session -o show

cat /proc/partitions
parted --script /dev/sdb "mklabel msdos"
parted --script /dev/sdb "mkpart primary 0% 100%"
mkfs.ext4 /dev/sdb1

mkdir /mnt/iscsi
mount /dev/sdb1 /mnt/iscsi
df -hT



iSCSIターゲット用(bat.iscsi.target、CentOS 6.7 i386)

#!/bin/bash

yum -y install scsi-target-utils

mkdir /iscsi_disks
dd if=/dev/zero of=/iscsi_disks/disk01.img count=0 bs=1 seek=80G

# vi /etc/tgt/targets.conf

/etc/rc.d/init.d/tgtd start
chkconfig tgtd on
tgtadm --mode target --op show

スポンサーサイト



コメントの投稿

非公開コメント

カレンダー
01 | 2020/02 | 03
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
累積訪問者
現在の訪問者
現在の閲覧者数:
最新記事
最新トラックバック
最新コメント
月別アーカイブ
カテゴリ
プロフィール

bobgosso

Author:bobgosso
FPGAのブログへようこそ!

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード