Configure iSCSI Target on Centos 7 & Initiator on Windows Server 2016
in this post i configure iSCSI target on CentOS 7 and iSCSI initiator on Windows Server 2016, both are VMs on VMware vSphere 6.7 in my demolab, config:
Environment
iSCSI target
- Centos 7 minimal
- 2 vCPU
- 2 GB RAM
- 20 GB HDD0 – OS
- 500 GB HDD1 – DATA (used for iSCSI target)
- 2 NIC
- 1 x VMXNET3 – mng – ens192 – 192.168.168.111
- 1 x VMXNET3 – iSCSI network – ens224 – 192.168.168.130
iSCSI client
- Windows Server 2016
- 4 vCPU
- 8 GB RAM
- 60 GB HHD0 – OS
- 2 NIC
- 1 x VMXNET3 – mng – 192.168.168.112
- 1 x VMXNET3 – iSCSI network – 192.168.168.131
Configure storage
[root@iscsi01 ~]# 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 size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000d377e Device Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 41943039 19921920 8e Linux LVM Disk /dev/sdb: 536.9 GB, 536870912000 bytes, 1048576000 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/centos-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 size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
you can see that my system has a 500 GB disk (/dev/sdb), i will create a 480 GB partition with LVM
[root@iscsi01 ~]# fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0xf886711c. Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-1048575999, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-1048575999, default 1048575999): +450G Partition 1 of type Linux and of size 450 GiB is set Command (m for help): t Selected partition 1 Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM' Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
use fdisk for create a new partition
- n – new partititon
- p – primary
- 1 – partition number
- +450G – create 450 GB partition
- t – select partition
- 8e – change it as LVM label
- w – save
[root@iscsi01 ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created. [root@iscsi01 ~]# vgcreate vg_iscsi /dev/sdb1 Volume group "vg_iscsi" successfully created [root@iscsi01 ~]# lvcreate -l 100%FREE -n lv_iscsi vg_iscsi Logical volume "lv_iscsi" created.
create a LVM – in my case /dev/sdb1
Configure iSCSI target
[root@iscsi01 ~]# yum -y install targetcli
first of all install targetcli package
[root@iscsi01 ~]# targetcli Warning: Could not load preferences file /root/.targetcli/prefs.bin. targetcli shell version 2.1.fb46 Copyright 2011-2013 by Datera, Inc and others. For help on commands, type 'help'.
/> cd backstores/block /backstores/block> create iscsi_disk1 /dev/vg_iscsi/lv_iscsi Created block storage object iscsi_disk1 using /dev/vg_iscsi/lv_iscsi.
i use my existing logical volume /dev/vg_iscsi/lv_iscsi for storage object iscsi_disk1 as a block-type backing store
Created target iqn.2018-06.target01.centos:disk1. Created TPG 1. Global pref auto_add_default_portal=true Created default portal listening on all IPs (0.0.0.0), port 3260. /iscsi> ls o- iscsi .................................................................. [Targets: 1] o- iqn.2018-06.target01.centos:disk1 ....................................... [TPGs: 1] o- tpg1 ..................................................... [no-gen-acls, no-auth] o- acls ................................................................ [ACLs: 0] o- luns ................................................................ [LUNs: 0] o- portals .......................................................... [Portals: 1] o- 0.0.0.0:3260 ........................................................... [OK]
create a target, in default config the target listening on all IPs… 0.0.0.0:3260, but i have separated network 192.168.130.x.
/iscsi> cd iqn.2018-06.target01.centos:disk1/tpg1/portals/ /iscsi/iqn.20.../tpg1/portals> delete 0.0.0.0 3260 Deleted network portal 0.0.0.0:3260 /iscsi/iqn.20.../tpg1/portals> create 192.168.130.130 Using default IP port 3260 Created network portal 192.168.130.130:3260.
delete 0.0.0.0 3260 target and create 192.168.130.130 target
/iscsi/iqn.20.../tpg1/portals> cd .. /iscsi/iqn.20...os:disk1/tpg1> cd acls /iscsi/iqn.20...sk1/tpg1/acls> create iqn.1991-05.com.microsoft:vm-udp Created Node ACL for iqn.1991-05.com.microsoft:vm-udp
create ACL for my client machine (WS2016) with IQN: „iqn.1991-05.com.microsoft:vm-udp“
/iscsi/iqn.20...sk1/tpg1/acls> cd .. /iscsi/iqn.20...os:disk1/tpg1> luns/ /iscsi/iqn.20...sk1/tpg1/luns> create /backstores/block/iscsi_disk1 Created LUN 0. Created LUN 0->0 mapping in node ACL iqn.1991-05.com.microsoft:vm-udp
create a LUN under target and map it on my client
/iscsi> cd .. /> ls o- / ............................................................................. [...] o- backstores .................................................................. [...] | o- block ...................................................... [Storage Objects: 1] | | o- iscsi_disk1 .......... [/dev/vg_iscsi/lv_iscsi (480.0GiB) write-thru activated] | | o- alua ....................................................... [ALUA Groups: 1] | | o- default_tg_pt_gp ........................... [ALUA state: Active/optimized] | o- fileio ..................................................... [Storage Objects: 0] | o- pscsi ...................................................... [Storage Objects: 0] | o- ramdisk .................................................... [Storage Objects: 0] o- iscsi ................................................................ [Targets: 1] | o- iqn.2018-06.target01.centos:disk1 ..................................... [TPGs: 1] | o- tpg1 ................................................... [no-gen-acls, no-auth] | o- acls .............................................................. [ACLs: 1] | | o- iqn.1991-05.com.microsoft:vm-udp ......................... [Mapped LUNs: 1] | | o- mapped_lun0 ............................... [lun0 block/iscsi_disk1 (rw)] | o- luns .............................................................. [LUNs: 1] | | o- lun0 ...... [block/iscsi_disk1 (/dev/vg_iscsi/lv_iscsi) (default_tg_pt_gp)] | o- portals ........................................................ [Portals: 1] | o- 192.168.130.130:3260 ................................................. [OK] o- loopback ............................................................. [Targets: 0]
verify the target server configuration
/> saveconfig Configuration saved to /etc/target/saveconfig.json /> exit Global pref auto_save_on_exit=true Last 10 configs saved in /etc/target/backup/. Configuration saved to /etc/target/saveconfig.json
save config and exit targetcli console
[root@iscsi01 ~]# systemctl enable target.service [root@iscsi01 ~]# systemctl restart target.service
enable & restart target.service
[root@iscsi01 ~]# firewall-cmd --permanent --add-port=3260/tcp [root@iscsi01 ~]# firewall-cmd --reload
config firewall for iSCSI traffic
Configure iSCSI client (WS2016)
on WS2016 run iSCSI configuration and as target use ip of iSCSI target – 192.168.168.130 and click to quick connect.
Sucessfully connected.