ISCSI
之前的CIFS和NFS共享的都是服务端的文件系统,而现在我们要使用ISCSI直接共享底层的硬件设备,或者称之为网络磁盘
ISCSI(Internet SCSI) 支持从客户端 ( 发起端 ) 通过 IP 向远程服务器上的 iSCSI 存储设备 ( 目标 ) 发送 SCSI 命令。 iSCSI限定名称用于确定发起端和目标 , 并采用iqn.yyyy-mm.{reverse domain}:label 的格式
默认情况下 , 网络通信是至 iSCSI 目标上的端口 3260/tcp 的明文端口
服务端配置:
下载共享服务提供的软件
yum install -y targetcli
磁盘分区用于共享:
fdisk /dev/vdb
进入共享(进入后,可用help查看帮助,exit退出)
targetcli
建立阶段:
设备名称(建立一个共享设备)
共享名称(建立一个共享分区)
配置设定阶段:(准备阶段)
关联设备(将共享设备关联到限定名称上)
设定一个密钥(谁使用该密钥,才能使用storage1)
服务端ip提供端口(开放端口)
/backstores/block create westos:storge1 /dev/vdb1
在/backstores/block该共享区域下 create建立一个共享设备 名为westos:storge1(公司名:存储块1),与系统中的真实设备/dev/vdb1绑定(实际使用的是/dev/vdb1分区)
iscsi/ create iqn.2019-08.com.westos:storage1
在iscsi/该共享区域(目录)下 create建立一个共享分区 名为westos:storge1(公司名:存储块1)
/iscsi/iqn.2019-08.com.westos:storage1/tpg1/luns create /backstores/block/westos:storge1
将共享分区的/iscsi/iqn.2019-08.com.westos:storage1/tpg1/luns
与真实设备/backstores/block/westos:storge1相关联
iscsi/iqn.2019-08.com.westos:storage1/tpg1/acls create iqn.2019-08.com.westos:westoskey1
给共享分区iqn.2019-08.com.westos使用密钥(密码字符串)加密,必须使用该密钥才能使用该共享网络设备
/iscsi/iqn.2019-08.com.westos:storage1/tpg1/portals create 172.25.254.160(服务器端ip,该共享设备所在主机的ip)
令共享网络设备的服务器开放出端口来,以供客户端来共享其磁盘设备
(如果开启错了,使用delete参数删除相应的ip地址的端口即可)
开放服务器的防火墙端口:
firewall-cmd --permanent --add-port=3260/tcp
firewall-cmd --reload
下图为例:
我在targetcli创建共享网络磁盘资源时,在最后一步,开放端口报错,参考下面的文章更正过来:
https://blog.51cto.com/13587182/2087607
客户端访问:
vim /etc/iscsi/initiatorname.iscsi
在其中将自己生成的密钥放上去,替换原来的
iqn.2019-08.com.westos:westoskey1
(编辑完了这个文件后,可能需要重启服务:systemctl restart iscsi)
(这个服务可能是系统自带的服务,至少客户端未要求下载什么)
iscsiadm -m discovery -t st -p 172.25.254.200
命令 动作 发现 服务器ip
iscsiadm -m node -T iqn.2019-08.com.westos:storage1 -p 172.25.254.160 -l(l登陆,u断开,登出)
共享分区名称
认证后即可发现fdisk -l可以看到多出了共享磁盘
执行结果如图:
开机自动挂载网络设备:
开机先做设备的挂载,再启动网络服务
因此,在做下面的网络设备自动挂载时,要在defaults后面加参数netdev,告诉系统这是网络设备,要先启动网络才能挂载
vim /etc/fstab:
UUID=7d28cb67-6b9d-481a-98f0-18c7b40cf48c /mnt xfs defaults,_netdev 0 0
(这里使用网络设备的id,否则的话,使用设备名称,由于是通过网络共享的设备,可能存在“名称漂移”(我认为就是说这个设备可能会改名字,但是其设备ip是不变的))
(id在对网络设备分区并格式化后,使用blkid命令可以查看到)
下图为例:
按照下面两图配置完毕后,就可以重启了,开机后执行df命令可以看到自动挂载到了/mnt目录下
查看数据:
(1)直接查看配置文件
ls /var/lib/iscsi
ls /var/lib/iscsi -R
(2)通过工具查看
yum install -y tree 下载树形显示软件工具
tree /var/lib/iscsi 查看isccsi服务的认证情况(数据)
方式一:
方式二:
客户端停止使用网络设备:
iscsiadm -m node -T iqn.2019-08.com.westos:storage1 -p 172.25.254.160 -u
客户端登出共享网络设备
(但是并未彻底删除,systemctl restart iscsi后,仍然会恢复使用该网络设备)
iscsiadm -m node -T iqn.2019-08.com.westos:storage1 -p 172.25.254.160 -o delete
彻底删除/var/lib/iscsi中的认证数据
服务端清空虚拟网络设备:
targetcli
clearconfig confirm=true