欢迎,来自IP地址为:98.80.143.34 的朋友
iSCSI 是一种块级协议,用于通过 TCP/IP 网络(特别是在远距离上)管理存储设备。iSCSI 目标是远程 iSCSI 服务器提供的远程磁盘。另一方面,iSCSI 的客户端称为启动器,它用于访问在目标计算机中共享的存储。
本文将演示如何在 CentOS 7 系统配置 iSCSI 目标存储以及如何通过 iSCSI 客户端来连接这个目标。
演示环境配置如下:
- 目标
- 操作系统:CentOS 7
- IP 地址:172.16.200.1
- 开放端口:TCP 860,3260
- 启动器
- 操作系统:CentOS 7
- IP 地址:172.16.200.2
- 开放端口:TCP 3260
步骤一、安装 iSCSI 目标软件包
在 iSCSI 目标主机执行如下命令,安装 iSCSI 目标软件包:
# yum install targetcli -y
安装完成后,使用如下命令启动服务并查看状态:
# systemctl start target # systemctl enable target # systemctl status target
最后,打开防火墙的 iscsi-target 服务端口以及之前选定的发现端口 860,以使该目标可以正常被访问:
# firewall-cmd --add-service=iscsi-target --permanent # firewall-cmd --add-port=860/tcp --permanent # firewall-cmd --reload
步骤二、设置目标的逻辑单元(LUNs)
在定义 iSCSI 的逻辑单元之前,我们首先创建两个逻辑卷,以方便卷管理。
示例将创建两个逻辑卷”lv_data”和”lv_backup”,两个逻辑卷均位于卷组”vgiscsi”中,逻辑卷信息如下:
有了这两个逻辑卷,我们就可以通过”targetcli”工具来创建 iscsi 目标了。命令如下:
# targetcli # cd backstores # cd block # create server.data /dev/vgiscsi/lv_data # create server.backup /dev/vgiscsi/lv_backup # cd /iscsi # create iqn.2021-01.com.rultr.server:tgt1
命令执行过程如下所示:
通过上述步骤,创建了一个新的 TPG(Target Portal Group)以及默认目标(绑定了 IP 地址和端口,是客户端可以连接的目标端口),会侦听主机的3260端口。
如果要目标绑定到特定的 IP(例如,目标服务器的主 IP 的 3260 端口而非主机的 3260),则需要按以下方式删除默认门户并创建一个新门户(如果没有这个需求,可以跳过以下 targetcli 命令。请注意,简单起见,还是跳过为好):
# cd /iscsi/iqn.2016-02.com.tecmint.server:tgt1/tpg1/portals # delete 0.0.0.0 3260 # create 172.16.200.1 3260
现在,我们继续创建 LUN,使用之前创建的两人个块存储(server.data 和 server.backup),命令如下:
# cd /iscsi/iqn.2021-01.com.rultr.server:tgt1/tpg1/luns # create /backstores/block/server.data # create /backstores/block/server.backup
目标配置的最后一部分是创建访问控制列表以限制发起者的访问。由于每个启动器会被认为是”client”,因此我们需要将文本附加到 iqn 当中。详细信息如下:
# cd iqn.2021-01.com.rultr.server:tgt1/tpg1/acls # create iqn.2021-01.com.rultr.server:client
此时,我们可以使用 targetcli 工具来显示所有已配置的资源:
# cd / # ls
要退出 targetcli 工具,只需要输入 exit 并按回车即可。所有 配置将保存到”/etc/target/saveconfig.json”文件中。
根据上面的配置列表,可以看到我们分配了两个存储块作为 iSCSI 的目标,侦听本机实际 IP 的3260端口,可以使用netstat 命令验证:
# netstat -tnlp | grep 3260
此时,就完成了iSCSI 目标的配置。可以重新启动系统,验证所有设置在重新启动后仍然有效。如果没有,则查找原因并加以解决。
步骤三、配置 iSCSI 启动器
对于 iSCSI 启动器,也就是客户端中,需要安装 iscsi-initiator-utils 软件包。该软件包为 iSCSI 协议以及 iscsiadm(管理实用程序)提供服务器守护程序:
# yum install iscsi-initiator-utils
安装完成后,打开”/etc/iscsi/initiatorname.iscsi”并将默认的启动器名称替换为服务器上 ACL 中设置的名称(iqn.2021-01.com.rultr.server:client):
修改完成后,使用 iscsiadm 工具连接 iSCSI 目标。如果成功,将会返回目标信息:
# iscsiadm -m discovery -t st -p 172.16.200.1
发现目标之后,就可以启动 iscsid 进程:
# systemctl start iscsid # systemctl enable iscsid
现在,以节点模式联系目标。这将会产生内核级消息,当通过 dmesg 捕获该消息时,将显示设备标识,表示已经在本地系统中提供了远程 LUN 设备:
# iscsiadm -m node -T iqn.2021-01.com.rultr.server:tgt1 -p 172.16.200.1 -l # dmesg | tail
现在,两个目标卷就连接成功了,我们就可以像使用其他任何存储设备一样来操作这两个分区。演示起见,我们只将一个卷(sdb)创建分区并格式化,并挂载到系统的”/data”目录:
# fdisk /dev/sdb # partprobe /dev/sdb1 # mkfs.ext4 /dev/sdb1 # mkdir -p /data # mount /dev/sdb1 /data # df -hT
本文演示了如何在 CentOS 7 系统配置 iSCSI 目标和启动器,这样,只要有两台 Linux 主机,一样可以玩转网络存储,是不是很方便呢。