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和端口之间有一个空格