ISCSI

一、准备工作

1.1、(服务端和客户端都需要设置)
系统使用的是CentOS7.2
禁用防火墙:
查看状态:# systemctl status firewalld或者 firewall-cmd--state
停止:# systemctl stop firewalld
开机不启动:# systemctl disable firewalld
或开启端口:
#firewall-cmd --permanent --add-port=3260/tcp;firewall-cmd --reload

SELINUX禁用:
vi /etc/selinux/config
SELINUX=disabled
1.2、说明:
服务器:
主机名--- master;IP--- 192.168.20.222
客户机:
主机名--- slave;IP--- 192.168.20.223
注:# vi /etc/hostname

二、iSCSI Target(服务器端)

修改主机名和IP
#hostnamectl set-hostname
# ip a
安装targetcli

# yum -y install targetcli
# yum -y install  python-rtslib 
Installed:
  targetcli.noarch 0:2.1.fb46-1.el7                                            

Dependency Installed:
  pyparsing.noarch 0:1.5.6-9.el7   python-configshell.noarch 1:1.1.fb23-3.el7 
  python-kmod.x86_64 0:0.9-4.el7   python-rtslib.noarch 0:2.1.fb63-2.el7      
  python-six.noarch 0:1.9.0-2.el7  python-urwid.x86_64 0:1.1.1-3.el7  

启动target服务
# systemctl start target
设置开机启动服务
# systemctl enable target
新建分区
注意:(/dev/sdb1)第二块硬盘(可自定义任何磁盘),fdisk -l查看磁盘信息,分区大小可自定义如在Last扇区后输入【+7G】表示该分区分配大小为7G,注意不要格式化分区
# fdisk /dev/sdb
n --- p --- 1 --- 回车几次 ---p --- w
开始创建
进入targetcli
#targetcli
步骤1:建立一个块存储
注意:server1.disk(名称server1可自定义),/dev/sdb1为上面新建的分区名称。
/> /backstores/block create iscsi_store /dev/sdb1
步骤2:配置ISCSITarget命名
注意:命名在同一子网内确保是唯一的,命名格式为:iqn.yyyy-mm.<主机名反写>:自定义名称(自定义名称内不能有下划线)
/> /iscsi create iqn.2017-12.com.example:master
步骤3:创建ACL允许ISCSI客户机连接
注意:iqn.2017-12.com.example:slave为客户机ISCSI名称。
/>/iscsi/iqn.2017-12.com.example:master/tpg1/acls create iqn.2017-12.com.example:slave
步骤4:创建lun(target块设备的逻辑单元)
/>/iscsi/iqn.2017-12.com.example:master/tpg1/luns create /backstores/block/iscsi_store
步骤5:创建ip与端口
/# 有多个ip时必须需要手动指定(缺省监听 0.0.0.0,先删除再创建,不然报 'Could not create NetworkPortal in configFS' 错误),单IP忽略

/ /iscsi/iqn.2017-12.com.example:master/tpg1/portals/ delete 0.0.0.0 3260
/>/iscsi/iqn.2017-12.com.example:master/tpg1/portals create192.168.20.222 3260

/>cd /iscsi/iqn.2017-12.com.example:master/tpg1/portals
/>create 192.168.20.222 ip_port=3260

注:192.168.20.222为服务器IP;不指定端口默认为3260
步骤6:配置验证用户名和密码(这里可以省略)
/>cd
/iscsi/iqn.2017-12.com.example:master/tpg1/acls/iqn.2017-12.com.example:slave
/>set auth userid=test
/>set auth password=test
步骤7:配置完成后查看配置信息,并退出。
/>cd /
/>ls
o- / .................................................................... [...]
o- backstores ......................................................... [...]
| o- block ............................................. [Storage Objects: 1]
| | o- iscsi_store ............... [/dev/sdb1 (0 bytes) 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.2017-12.com.example:host ................................. [TPGs: 1]
| o- tpg1 .......................................... [no-gen-acls, no-auth]
| o- acls ..................................................... [ACLs: 1]
| | o- iqn.2017-12.om.example.slave:iscsicli ........... [Mapped LUNs: 1]
| | o- mapped_lun0 ...................... [lun0 block/iscsi_store (rw)]
| o- luns ..................................................... [LUNs: 1]
| | o- lun0 .......... [block/iscsi_store (/dev/sdb1) (default_tg_pt_gp)]
| o- portals ............................................... [Portals: 1]
| o- 192.168.20.224:3260 ......................................... [OK]
o- loopback .................................................... [Targets: 0]
/>savecondif
/>exit

三、iSCSI Initiator(客户端)

步骤1:安装ISCSIInitiator
# yum -y install iscsi-initiator-utils
启动iscsi服务
# systemctl start iscsi
设置开机启动服务
# systemctl enable iscsi
步骤2:配置ISCSIInitiator名称
注:此处InitiatorName必须与服务端配置的ACL允许ISCSI客户机连接的名称一致。
# vi /etc/iscsi/initiatorname.iscsi
iqn.2017-12.com.example:slave
步骤3:修改ISCSIInitiator配置文件(上面服务端如果没有设置有用户和密码这里不需要操作)
注意:
#node.session.auth.authmethod = CHAP---去掉注释
node.session.auth.username为存储服务端
set auth userid=username配置的username,
node.session.auth.password= password为存储服务器端
set auth password=password配置的password。
# vi /etc/iscsi/iscsid.conf
步骤4:查找ISCSI设备
iscsiadm -m discovery -t sendtargets -p 192.168.20.222
查看核对信息
iscsiadm -m node -o show

步骤5:连接ISCSI设备
#登录全部扫描到的服务器
# iscsiadm -m node --login
#登录某一个
#iscsiadm --mode node --targetname iqn.2012-10.net.cpd:san.target01 --portal 172.16.201.200 --login
# iscsiadm -m node –T iqn.2017-12.com.example:master -p 192.168.20.222:3260 -l

查看核对登录信息

iscsiadm -m session -o show

步骤6:查看系统磁盘信息
lsblk
或 fdisk -l
步骤7:将共享磁盘挂载到指定目录
将sdb1分区挂载到/mnt/iscsi目录,使用df -hT命令可查看到/dev/sdb1已经挂载上并显示其容量信息。
# mount /dev/sdb1 /home/test
步骤8:设置开机自动连接ISCSI设备
注意:iqn.2017-12.com.example:master为存储服务端ISCSI名称,192.168..:3260为存储服务端IP及端口号。
# iscsiadm -m node -T iqn.2017-12.com.example:master -p192.168.20.222:3260 -o update -n node.startup -v automatic
步骤9:设置开机挂载网络磁盘
开机挂载:采用写入fstab方式开启启动挂载磁盘
获取磁盘UUID:# blkid/dev/sdb1
编辑fstab:# vi/etc/fstab
添加配置:
UUID=9f122014-071a-4416-b40f-ece882285b2b /mnt/iscsi ext4 defaults,_netdev 0 0
说明:
UUID=ba7925cc-9bfb-4238-984d-999e18d592e8:磁盘UUID,代表磁盘。
/mnt/iscs:代表挂载路径,根据实际灵活变动。
ext4:代表文件系统,根据实际灵活变动。
_netdev:代表该挂载的磁盘分区为网络磁盘分区。

四、备忘录

4.1、客户端查找不到服务端的ISCSI设备
报错如下:
[root@mwdinit ~]# iscsiadm -m discovery -t sendtargets -p192.168.13.30
iscsiadm: cannot make connection to 192.168.13.30: Connectionrefused
iscsiadm: cannot make connection to 192.168.13.30: Connectionrefused
iscsiadm: cannot make connection to 192.168.13.30: Connectionrefused
iscsiadm: cannot make connection to 192.168.13.30: Connectionrefused
iscsiadm: cannot make connection to 192.168.13.30: Connectionrefused
iscsiadm: cannot make connection to 192.168.13.30: Connectionrefused
iscsiadm: connection login retries (reopen_max) 5 exceeded
iscsiadm: Could not perform SendTargets discovery: encounteredconnection failure

解决:因服务端未指定ip和端口
o- portals ..................................................................................[Portals: 1]
| o- 192.168.13.30:3260

4.2、客户端查找不到服务端的ISCSI设备2
iscsiadm: Could not perform SendTargets discovery: encounteredconnection login failure
解决:
lsof -i:3260发现tgtd服务也启动了,这样与target服务共用了端口,把tgtd服务关掉并设置为开机不启动
停止:# systemctl stop tgtd
开机不启动:# systemctl disable tgtd

4.3、Could not create NetworkPortal in configFS
原因:发现
portals..................................................................................[Portals: 1]
| o- 0.0.0.0:3260
已经存在了一个IP和端口,需要删除
解决:/>cd /iscsi/iqn.2017-05.com.mwdserver:iscsimwd1/tpg1/portals
/>/iscsi/iqn.20.../tpg1/portals> delete 0.0.0.0 3260
注:ip和端口之间有一个空格