一、iscsi磁盘共享概述
iSCSI磁盘共享的实现原理主要是基于iSCSI Target软件和TCP/IP网络协议,将服务器的存储空间分配给客户机使用,客户机可以像使用本地硬盘一样使用iSCSI磁盘,包括对其进行分区、格式化及读写等。
具体来说,iSCSI使用标准的IP网络将SCSI协议打包在TCP/IP数据包中进行传输,允许计算机通过网络访问远程存储设备,并将其视为本地磁盘。其工作原理是将需要共享的iSCSI磁盘(即LUN,Logical Unit Number)映射到本地计算机的一个逻辑单元上,然后像操作本地硬盘一样对其进行读写。
在iSCSI磁盘共享的实现中,需要关注以下几点:
- 网络协议和网络设备:iSCSI存储解决方案依赖于TCP/IP网络协议,因此需要使用高质量的网络设备和千兆以太网交换机来确保数据传输的稳定性和速度。建议在iSCSI网络中使用千兆以太网交换机,并尽量选择不含有任何故障点的设备配置方式,例如为每个独立阵列中的两个独立端口配备交换机,并将它们连接起来,以保证存储系统的不间断运行。
- 数据安全:由于iSCSI磁盘共享涉及到数据的传输和处理,因此数据的安全性十分重要。需要对数据进行加密处理,并严格控制网络设备的访问权限,防止未经授权的访问和数据泄露。
- 可用性和性能:在进行iSCSI磁盘共享时,需要考虑存储设备的可用性和性能。例如,可以考虑使用多路径I/O(MPIO)技术来提高数据的可用性和性能,同时也可以实现负载均衡。
- 管理维护:iSCSI磁盘共享的管理和维护需要专业的IT人员进行操作和维护,同时也需要考虑数据备份和恢复等方面的因素。
二、实现流程
服务端相关操作
1.服务端服务器准备一块磁盘进行共享 (node1节点的sdb磁盘为例)
# 对要分享的磁盘进行分区
fdisk /dev/sdb
依次输入 n > p >1 >回车> +2G >回车,完成第一块磁盘划分
依次输入 n > p >2 >回车> +2G >回车,完成第二块磁盘划分
依次输入 n > p >3 >回车> +2G >回车,完成第三块磁盘划分
依次输入 n > p >4 >回车> +3G >回车,完成第四块磁盘划分
w 保存新的分区并退出
分区后情况如下
2.安装targetcli,启动并设这开机自启
#安装 targetcli 软件包
yum -y install targetcli
#设置target服务开机启动,并启动服务
systemctl enable target
systemctl start target
3.targetcli服务端配置
targetcli进入配置
查看现有配置
/> ls
o- / ......................................................................................................................... [...]
o- backstores .............................................................................................................. [...]
| o- block .................................................................................................. [Storage Objects: 0]
| o- fileio ................................................................................................. [Storage Objects: 0]
| o- pscsi .................................................................................................. [Storage Objects: 0]
| o- ramdisk ................................................................................................ [Storage Objects: 0]
o- iscsi ............................................................................................................ [Targets: 0]
o- loopback ......................................................................................................... [Targets: 0]
创建存储后端
#1.进入/backstores/block路径 创建后端存储
/backstores/block create dev=/dev/sdb name=dm
创建target标签
#2.进入/iscsi/路径 创建target标签 iqn.xxxx-xx是固定格式 后面的域名反写可随意更改
/> iscsi/ create iqn.2023-10.com.dm
将存储后端后与target标签绑定
#3.进行lun关联(将第一步的存储后端添加到标签中)
/> iscsi/iqn.2023-10.com.dm/tpg1/luns create /backstores/block/dm
设置密令
#4.新建 ACL (相当于客户端识别node1节点的密令)
/> iscsi/iqn.2023-10.com.dm/tpg1/acls create iqn.2023-10.com.dm:client
修改服务端监听ip和端口
#5.设置iSCSI服务端的监听IP地址和端口号(默认的0.0.0.0代表服务端所有ip可以提供对外被监听的服务,删除后可根据实际情况更改)
/> iscsi/iqn.2023-10.com.dm/tpg1/portals/ delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
/> iscsi/iqn.2023-10.com.dm/tpg1/portals/ create 192.168.75.104
查看配置是否生效
exit退出
重启target服务
# 重启target服务
[root@server ~]# systemctl restart target
# 设置target服务开机启动
[root@server ~]# systemctl enable target
# 关闭防火墙
[root@server ~]# systemctl stop firewalld.service
客户端相关操作
#安装iscsi-initiator-utils
[root@client ~] yum install -y iscsi-initiator-utils
#编辑配置文件 /etc/iscsi/initiatorname.iscsi,修改名称为服务端中客户端声称的名字
[root@client ~]# vi /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2023-06.com.dm:client
[root@CentOS7-NTP ~]# sudo systemctl status iscsid ##查看iscsi服务状态
[root@CentOS7-NTP ~]# sudo systemctl restart iscsid ##启动iscsi服务
[root@CentOS7-NTP ~]# sudo systemctl enable iscsid ##设置iscsi服务开机启动
# 发现共享设备
sudo iscsiadm -m discovery -t st -p 192.168.75.104
# 连接共享设备
sudo iscsiadm -m node -T iqn.2023-10.com.dm -p 192.168.75.104 -l
#设置开机自动挂载
iscsiadm -m node -T iqn.2023-10.com.dm -p 192.168.75.104 --op update -n node.startup -v automatic
此时在客户端使用fdisk -l 或者lsblk命令则可查看到对应共享的磁盘
此时node1已经成功将磁盘共享给node1节点