在 CentOS 7 下安裝 iSCSI Initiator

參考網站:
CentOS 7 : Configure iSCSI Initiator(CentOS) : Server World
CentOS 7 安裝 iSCSI Server

1. 安裝 iscsi-initiator-utils 套件
# yum -y install iscsi-initiator-utils

2. 修改 /etc/iscsi/initiatorname.iscsi 設定檔
# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2017-04.tces.test:linux-pc

3. 修改 /etc/iscsi/iscsid.conf  設定檔
# cp /etc/iscsi/iscsid.conf /etc/iscsi/iscsid.conf.$(date +%F)
# vim /etc/iscsi/iscsid.conf

#node.session.auth.authmethod = CHAP
#node.session.auth.username = username
#node.session.auth.password = password
修改成
node.session.auth.authmethod = CHAP
node.session.auth.username = username
node.session.auth.password = password[@more@]
4. 尋找 iSCSI Server 分享的設備
# /usr/sbin/iscsiadm -m discovery -t sendtargets -p 192.168.1.46
192.168.1.46:3260,1 iqn.2017-04.tces.test:linux.disk

5. 顯示 iSCSI Server 狀態
# /usr/sbin/iscsiadm -m node -o show
# BEGIN RECORD 6.2.0.873-35
node.name = iqn.2017-04.tces.test:linux.disk
node.tpgt = 1
node.startup = automatic
node.leading_login = No
iface.hwaddress = <empty>
iface.ipaddress = <empty>
iface.iscsi_ifacename = default
iface.net_ifacename = <empty>
iface.gateway = <empty>
iface.subnet_mask = <empty>
iface.transport_name = tcp
iface.initiatorname = <empty>
iface.state = <empty>
iface.vlan_id = 0
iface.vlan_priority = 0
iface.vlan_state = <empty>
iface.iface_num = 0
iface.mtu = 0
iface.port = 0
iface.bootproto = <empty>
iface.dhcp_alt_client_id_state = <empty>
iface.dhcp_alt_client_id = <empty>
iface.dhcp_dns = <empty>
iface.dhcp_learn_iqn = <empty>
iface.dhcp_req_vendor_id_state = <empty>
iface.dhcp_vendor_id_state = <empty>
iface.dhcp_vendor_id = <empty>
iface.dhcp_slp_da = <empty>
iface.fragmentation = <empty>
iface.gratuitous_arp = <empty>
iface.incoming_forwarding = <empty>
iface.tos_state = <empty>
iface.tos = 0
iface.ttl = 0
iface.delayed_ack = <empty>
iface.tcp_nagle = <empty>
iface.tcp_wsf_state = <empty>
iface.tcp_wsf = 0
iface.tcp_timer_scale = 0
iface.tcp_timestamp = <empty>
iface.redirect = <empty>
iface.def_task_mgmt_timeout = 0
iface.header_digest = <empty>
iface.data_digest = <empty>
iface.immediate_data = <empty>
iface.initial_r2t = <empty>
iface.data_seq_inorder = <empty>
iface.data_pdu_inorder = <empty>
iface.erl = 0
iface.max_receive_data_len = 0
iface.first_burst_len = 0
iface.max_outstanding_r2t = 0
iface.max_burst_len = 0
iface.chap_auth = <empty>
iface.bidi_chap = <empty>
iface.strict_login_compliance = <empty>
iface.discovery_auth = <empty>
iface.discovery_logout = <empty>
node.discovery_address = 140.111.74.46
node.discovery_port = 3260
node.discovery_type = send_targets
node.session.initial_cmdsn = 0
node.session.initial_login_retry_max = 8
node.session.xmit_thread_priority = -20
node.session.cmds_max = 128
node.session.queue_depth = 32
node.session.nr_sessions = 1
node.session.auth.authmethod = CHAP
node.session.auth.username = test
node.session.auth.password = ********
node.session.auth.username_in = <empty>
node.session.auth.password_in = <empty>
node.session.timeo.replacement_timeout = 120
node.session.err_timeo.abort_timeout = 15
node.session.err_timeo.lu_reset_timeout = 30
node.session.err_timeo.tgt_reset_timeout = 30
node.session.err_timeo.host_reset_timeout = 60
node.session.iscsi.FastAbort = Yes
node.session.iscsi.InitialR2T = No
node.session.iscsi.ImmediateData = Yes
node.session.iscsi.FirstBurstLength = 262144
node.session.iscsi.MaxBurstLength = 16776192
node.session.iscsi.DefaultTime2Retain = 0
node.session.iscsi.DefaultTime2Wait = 2
node.session.iscsi.MaxConnections = 1
node.session.iscsi.MaxOutstandingR2T = 1
node.session.iscsi.ERL = 0
node.conn[0].address = 192.168.1.46
node.conn[0].port = 3260
node.conn[0].startup = manual
node.conn[0].tcp.window_size = 524288
node.conn[0].tcp.type_of_service = 0
node.conn[0].timeo.logout_timeout = 15
node.conn[0].timeo.login_timeout = 15
node.conn[0].timeo.auth_timeout = 45
node.conn[0].timeo.noop_out_interval = 5
node.conn[0].timeo.noop_out_timeout = 5
node.conn[0].iscsi.MaxXmitDataSegmentLength = 0
node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144
node.conn[0].iscsi.HeaderDigest = None
node.conn[0].iscsi.IFMarker = No
node.conn[0].iscsi.OFMarker = No
# END RECORD

6. 登入使用 iSCSI 設備
# /usr/sbin/iscsiadm -m node –login
Logging in to [iface: default, target: iqn.2017-04.tces.test:linux.disk, portal: 192.168.1.46,3260] (multiple)
Login to [iface: default, target: iqn.2017-04.tces.test:linux.disk, portal: 192.168.1.46,3260] successful.

7. 顯示連線狀態
# /usr/sbin/iscsiadm -m session -o show
tcp: [1] 192.168.1.46:3260,1 iqn.2017-04.tces.test:linux.disk (non-flash)

8. 檢查是否有多個一個硬碟
# cat /proc/partitions
major minor  #blocks  name

   8        0   20971520 sda
   8        1    1048576 sda1
   8        2   19921920 sda2
  11        0    4277248 sr0
 253        0   17821696 dm-0
 253        1    2097152 dm-1
   8       16   10485760 sdb

# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O 大小 (最小/最佳化):512 位元組 / 512 位元組
Disk label type: dos
磁碟識別碼:0x000a2798

所用裝置 開機      開始         結束      區塊   識別號  系統
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   8e  Linux LVM

Disk /dev/mapper/cl-root: 18.2 GB, 18249416704 bytes, 35643392 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O 大小 (最小/最佳化):512 位元組 / 512 位元組

Disk /dev/mapper/cl-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O 大小 (最小/最佳化):512 位元組 / 512 位元組

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O 大小 (最小/最佳化):512 位元組 / 4194304 位元組

# file /dev/sdb
/dev/sdb: block special

9. 建立掛目錄及格式化硬碟
# mkdir /iscsidisk
# mkfs.xfs /dev/sdb
meta-data=/dev/sdb               isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

# mount /dev/sdb /iscsidisk
# df -h
檔案系統             容量  已用  可用 已用% 掛載點
/dev/mapper/cl-root   17G   11G  7.0G   60% /
devtmpfs             982M     0  982M    0% /dev
tmpfs                993M     0  993M    0% /dev/shm
tmpfs                993M  8.7M  984M    1% /run
tmpfs                993M     0  993M    0% /sys/fs/cgroup
/dev/sda1           1014M  176M  839M   18% /boot
tmpfs                199M     0  199M    0% /run/user/0
/dev/sdb              10G   33M   10G    1% /iscsidisk

10. 寫入到 /etc/fstab
# blkid | grep /dev/sdb
/dev/sdb: UUID=”8f933fbf-a56d-40bb-8c88-cb9ec851095f” TYPE=”xfs”

# vim /etc/fstab
加入下面一行
/dev/sdb: UUID=8f933fbf-a56d-40bb-8c88-cb9ec851095f /iscsidisk xfs default,_netdev 0 0

在 CentOS 7 下安裝 iSCSI Target

參考網站:
CentOS 7 : Configure iSCSI Target : Server World
CentOS 7 安裝 iSCSI Server
Configure iSCSI Target & Initiator on CentOS 7 / RHEL7

1. 安裝 targetcli 套件
# yum -y install targetcli

2. 建立目錄
# mkdir /iscsi_disks[@more@]
3. 進入 iscsi 管理介面
# /usr/bin/targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.fb41
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type ‘help’.

/> cd backstores/fileio
/backstores/fileio> create linux-disk /iscsi_disks/linux-disk.img 10G
Created fileio linux-disk with size 10737418240
/backstores/fileio> cd /iscsi
/iscsi> create iqn.2017-04.tces.test:linux.disk
Created target iqn.2017-04.tces.test:linux.disk.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi> cd iqn.2017-04.tces.test:linux.disk/tpg1/luns
/iscsi/iqn.20…isk/tpg1/luns> create /backstores/fileio/linux-disk
Created LUN 0.
/iscsi/iqn.20…isk/tpg1/luns> cd ../acls
/iscsi/iqn.20…isk/tpg1/acls> create iqn.2017-04.tces.test:linux-pc
Created Node ACL for iqn.2017-04.tces.test:linux-pc
Created mapped LUN 0.
/iscsi/iqn.20…isk/tpg1/acls> cd iqn.2017-04.tces.test:linux-pc
/iscsi/iqn.20…test:linux-pc> set auth userid=user
Parameter userid is now ‘user.
/iscsi/iqn.20…test:linux-pc> set auth password=password
Parameter password is now ‘password’.
/iscsi/iqn.20…test:linux-pc> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json

4. 檢查是否有正常執行
# ss -napt | grep 3260
LISTEN     0      256          *:3260                     *:*

# netstat -napt | grep 3260
tcp        0      0 0.0.0.0:3260            0.0.0.0:*               LISTE

5. 防火牆設定
# firewall-cmd –permanent –add-service=iscsi-target
# firewall-cmd –reload

# firewall-cmd –permanent –add-port=3260/tcp
# firewall-cmd –reload

# iptables -A INPUT -s 192.168.1.0/24 -p tcp -m state –state NEW –dport 3260 -j ACCEPT

For Windows
# /usr/bin/targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.fb41
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type ‘help’.

/> cd backstores/fileio

/backstores/fileio> create windows-disk /iscsi_disks/windows-disk.img 4G
Created fileio windows-disk with size 4294967296
/backstores/fileio> cd /iscsi
/iscsi> create iqn.2017-04.tces.test:windows.disk
Created target iqn.2017-04.tces.test:windows.disk.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi> cd iqn.2017-04.tces.test:windows.disk/tpg1/luns
/iscsi/iqn.20…isk/tpg1/luns> create /backstores/fileio/windows-disk
Created LUN 0.
/iscsi/iqn.20…isk/tpg1/luns> cd ../acls
/iscsi/iqn.20…isk/tpg1/acls> create iqn.2017-04.tces.test:windows-pc
Created Node ACL for iqn.2017-04.tces.test:windows-pc
Created mapped LUN 0.
/iscsi/iqn.20…isk/tpg1/acls> cd /iscsi/iqn.2017-04.tces.test:windows.disk/tpg1/
/iscsi/iqn.20…ows.disk/tpg1> set attribute authentication=0
Parameter authentication is now ‘0’.
/iscsi/iqn.20…ows.disk/tpg1> cd /iscsi/iqn.2017-04.tces.test:windows.disk/tpg1/
/iscsi/iqn.20…ows.disk/tpg1> set attribute generate_node_acls=0
Parameter generate_node_acls is now ‘0’.
/iscsi/iqn.20…ows.disk/tpg1> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json