在 RHEL/CentOS 7 上使用 iSCSI 目标/启动器创建集中式安全存储 - 第 12 部分
iSCSI是一种块级协议,用于通过 TCP/IP 网络(尤其是长距离网络)管理存储设备。iSCSI 目标是来自远程 iSCSI 服务器(或)目标的远程硬盘。另一方面,iSCSI 客户端称为发起方,将访问目标机器中共享的存储。
本文使用了以下机器:
服务器(目标):
Operating System – Red Hat Enterprise Linux 7 iSCSI Target IP – 192.168.0.29 Ports Used : TCP 860, 3260
客户端(发起者):
Operating System – Red Hat Enterprise Linux 7 iSCSI Target IP – 192.168.0.30 Ports Used : TCP 3260
步骤 1:在 iSCSI 目标上安装软件包
要安装目标所需的软件包(我们稍后会处理客户端),请执行以下操作:
# yum install targetcli -y
安装完成后,我们将启动并启用该服务,如下所示:
# systemctl start target # systemctl enable target
最后,我们需要在firewalld中允许该服务:
# firewall-cmd --add-service=iscsi-target # firewall-cmd --add-service=iscsi-target --permanent
最后但同样重要的一点是,我们不能忘记允许 iSCSI 目标发现:
# firewall-cmd --add-port=860/tcp # firewall-cmd --add-port=860/tcp --permanent # firewall-cmd --reload
步骤 2:在目标服务器中定义 LUN
在继续在目标中定义LUN之前,我们需要创建两个逻辑卷,如RHCSA系列第 6 部分(“配置系统存储”)中所述。
这次我们将它们命名为vol_projects
并vol_backups
放置在名为的卷组中vg00
,如图 1 所示。请随意选择分配给每个 LV 的空间:
创建LV后,我们准备在目标中定义LUN,以便客户端机器可以使用它们。
如图 2所示,我们将打开一个targetcli
shell 并发出以下命令,这将创建两个块后端存储(代表启动器实际使用的 LUN 的本地存储资源)和一个Iscsi 限定名称( IQN ),一种寻址目标服务器的方法。
有关 IQN 结构的更多详细信息,请参阅RFC 3720 第 32 页。具体而言,冒号后面的文本(:tgt1)
指定目标的名称,而冒号前面的文本(server:)
表示域内目标的主机名。
# targetcli # cd backstores # cd block # create server.backups /dev/vg00/vol_backups # create server.projects /dev/vg00/vol_projects # cd /iscsi # create iqn.2016-02.com.example.server:tgt1
通过上述步骤,创建了一个新的TPG(目标门户组),以及默认门户(由一个 IP 地址和一个端口组成的对,是启动器到达目标的方式),监听所有 IP 地址的端口3260 。
如果要将门户绑定到特定 IP(例如,目标的主 IP),请删除默认门户并创建一个新门户,如下所示(否则,跳过以下targetcli命令。请注意,为了简单起见,我们也跳过了它们):
# cd /iscsi/iqn.2016-02.com.example.server:tgt1/tpg1/portals # delete 0.0.0.0 3260 # create 192.168.0.29 3260
现在我们准备继续创建 LUN。请注意,我们使用之前创建的备份存储(server.backups
和server.projects
)。此过程如图 3 所示:
# cd iqn.2016-02.com.example.server:tgt1/tpg1/luns # create /backstores/block/server.backups # create /backstores/block/server.projects
目标配置的最后一部分是创建访问控制列表,以根据每个启动器限制访问。由于我们的客户端计算机名为“客户端”,我们将该文本附加到 IQN。有关详细信息,请参阅图 4:
# cd ../acls # create iqn.2016-02.com.example.server:client
此时我们可以使用targetcli shell 显示所有配置的资源,如图5所示:
# targetcli # cd / # ls
要退出targetcli shell,只需输入exit并按Enter。配置将自动保存到/etc/target/saveconfig.json。
如上图 5所示,我们有一个门户按预期监听所有 IP 地址的3260端口。我们可以使用netstat 命令验证这一点(参见图 6):
# netstat -npltu | grep 3260
至此,目标配置结束。您可以重新启动系统并验证所有设置是否在重新启动后仍然有效。如果无效,请确保在防火墙配置中打开必要的端口并在启动时启动目标服务。现在,我们可以设置启动器并连接到客户端了。
步骤 3:设置客户端启动器
在客户端中,我们需要安装iscsi-initiator-utils包,该包为 iSCSI 协议( iscsid )提供服务器守护进程以及管理实用程序iscsiadm :
# yum update && yum install iscsi-initiator-utils
安装完成后,打开/etc/iscsi/initiatorname.iscsi并将默认启动器名称(图 7中注释)替换为之前在服务器的ACL中设置的名称( iqn.2016-02.com.example.server:client)。
然后保存文件并以发现模式运行指向目标的iscsiadm 。如果成功,此命令将返回目标信息,如图7所示:
# iscsiadm -m discovery -t st -p 192.168.0.29
下一步是重新启动并启用iscsid服务:
# systemctl start iscsid # systemctl enable iscsid
并以节点模式联系目标。这将产生内核级消息,当通过dmesg 捕获时,将显示本地系统中已给出的远程 LUN 的设备标识(图 8中的sde和sdf):
# iscsiadm -m node -T iqn.2016-02.com.example.server:tgt1 -p 192.168.0.29 -l # dmesg | tail
从现在开始,您可以像创建其他存储设备一样创建分区,甚至是 LV(以及其上的文件系统)。为简单起见,我们将在每个磁盘上创建一个主分区,该分区将占用其整个可用空间,并使用 ext4 对其进行格式化。
最后,让我们分别将/dev/sde1和/dev/sdf1挂载到/projects和/backups上(请注意,必须先创建这些目录):
# mount /dev/sde1 /projects # mount /dev/sdf1 /backups
此外,您可以在/etc/fstab中添加两个条目,以便使用blkid返回的每个文件系统的UUID在启动时自动挂载两个文件系统。
请注意,必须使用_netdev挂载选项来推迟这些文件系统的挂载,直到网络服务启动为止:
您现在可以像使用任何其他存储介质一样使用这些设备。
概括
在本文中,我们介绍了如何在RHEL/CentOS 7发行版中设置和配置 iSCSI 目标和启动器。虽然第一项任务不是EX300 (RHCE)考试所需的能力的一部分,但它是实现第二项主题所必需的。
如果您对本文有任何问题或意见,请随时告诉我们 - 欢迎使用下面的评论表给我们留言。
要在 RHEL/CentOS 6 上设置 iSCSI 目标和客户端启动器,请遵循以下指南:使用客户端启动器设置集中式 iSCSI 存储。