欢迎,来自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 主机,一样可以玩转网络存储,是不是很方便呢。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注