在 RHEL/CentOS 7 上使用 iSCSI Target 和 Initiator 创建集中式安全存储
iSCSI(Internet Small Computer System Interface)是一种存储网络技术,允许在 IP 网络上传输块级数据。它是传统光纤通道 SAN(存储区域网络)的替代方案,后者使用专用电缆将存储设备连接到服务器。iSCSI 可以提供一种经济高效且灵活的方式来创建集中式存储基础设施。
在本教程中,我们将在 RHEL/CentOS 7 服务器上设置 iSCSI target,并使用另一台 RHEL/CentOS 7 服务器上的 iSCSI initiator 连接到它。我们将配置 CHAP(Challenge-Handshake Authentication Protocol)身份验证,以确保 target 和 initiator 之间的安全通信。
步骤 1:安装所需的软件包
首先,我们需要在 target 和 initiator 服务器上安装所需的软件包。在 target 服务器上,输入以下命令:
sudo yum install scsi-target-utils -y
这将安装“scsi-target-utils”软件包,该软件包提供配置 iSCSI target 所需的工具。在 initiator 服务器上,输入以下命令:
sudo yum install iscsi-initiator-utils -y
这将安装“iscsi-initiator-utils”软件包,该软件包提供连接到 iSCSI target 所需的工具。
步骤 2:配置 iSCSI Target
现在,我们将配置 target 服务器上的 iSCSI target。target 服务器将向 initiator 服务器提供存储。target 服务器将充当 iSCSI target。
要配置 iSCSI target,请按照以下步骤操作:
创建一个新的 LUN(逻辑单元号),该 LUN 将与 initiator 服务器共享。在这个例子中,我们将创建一个 10 GB 的 LUN。
sudo dd if=/dev/zero of=/var/lib/iscsi_disks/lun01 bs=1M count=10000
这会在“/var/lib/iscsi_disks”目录中创建一个名为“lun01”的 10 GB 文件。
创建一个新的 iSCSI target 配置文件:
sudo nano /etc/tgt/conf.d/iscsi.conf
将以下几行添加到文件中:
<target iqn.2021-05.example.com:lun01> backing-store /var/lib/iscsi_disks/lun01 incominguser chap_user secret_password </target>
将“iqn.2021-05.example.com:lun01”替换为 target 的唯一标识符。将“chap_user”替换为 CHAP 身份验证的用户名,并将“secret_password”替换为 CHAP 身份验证的安全密码。
重新启动 tgtd 服务以应用更改:
sudo systemctl restart tgtd
步骤 3:配置 iSCSI Initiator
现在,我们将配置 initiator 服务器上的 iSCSI initiator。initiator 服务器将连接到 target 服务器上的 iSCSI target。要配置 iSCSI initiator,请按照以下步骤操作:
通过输入以下命令来发现 iSCSI target:
sudo iscsiadm -m discovery -t sendtargets -p target_ip_address
将“target_ip_address”替换为 target 服务器的 IP 地址。
通过输入以下命令登录到 iSCSI target:
sudo iscsiadm -m node -T iqn.2021-05.example.com:lun01 -p target_ip_address -l
将“iqn.2021-05.example.com:lun01”替换为 target 的唯一标识符,并将“target_ip_address”替换为 target 服务器的 IP 地址。
通过输入以下命令验证 iSCSI target 是否已连接:
sudo lsblk
此命令列出 initiator 机器上可用的块设备。您应该看到已连接的 iSCSI target 设备列出。
步骤 4:在 iSCSI Target 上创建文件系统
现在 iSCSI target 已连接到 initiator 机器,我们可以在其上创建一个文件系统。在这个例子中,我们将在 iSCSI target 上创建一个 ext4 文件系统。要创建 iSCSI target 上的文件系统,请按照以下步骤操作:
输入以下命令在 iSCSI target 上创建一个新分区:
sudo fdisk /dev/sdb
注意:将“/dev/sdb”替换为系统上 iSCSI target 的块设备名称。
在 fdisk 提示符下,按顺序输入以下命令:
键入“n”以创建新分区。
键入“p”以创建主分区。
键入“1”以分配分区号。
按“Enter”两次以接受分区的第一个和最后一个扇区的默认值。
键入“w”以写入更改并退出 fdisk。
接下来,使用 ext4 文件系统格式化新分区,输入以下命令:
sudo mkfs.ext4 /dev/sdb1
注意:将“/dev/sdb1”替换为您在上一步中创建的分区名称。
步骤 5:挂载 iSCSI Target 文件系统
要挂载 iSCSI target 上新创建的文件系统,请按照以下步骤操作:
通过输入以下命令创建文件系统的挂载点:
sudo mkdir /mnt/iscsi_target
通过输入以下命令挂载文件系统:
sudo mount /dev/sdb1 /mnt/iscsi_target
通过输入以下命令验证文件系统是否已挂载:
df -h
此命令列出当前挂载在系统上的文件系统。您应该看到新挂载的 iSCSI target 文件系统列出。
步骤 6:配置 iSCSI Target 文件系统的自动挂载
为了确保 iSCSI target 文件系统在重新引导后自动挂载到 initiator 机器上,我们需要配置系统在启动时挂载它。为此,请按照以下步骤操作:
在文本编辑器中打开 /etc/fstab 文件:
sudo nano /etc/fstab
在文件末尾添加以下行以自动挂载 iSCSI target 文件系统:
/dev/sdb1 /mnt/iscsi_target ext4 defaults 0 0
保存并退出文件。
步骤 7:测试 iSCSI Target 文件系统
要测试 iSCSI target 文件系统,请在挂载点上创建一个测试文件,并验证 initiator 和 target 机器都可以访问它。
要创建一个测试文件,请输入以下命令:
sudo touch /mnt/iscsi_target/testfile.txt
要验证测试文件是否存在于 iSCSI target 上,请在 target 机器上输入以下命令:
sudo ls /mnt/iscsi_target
要验证从 initiator 机器可以访问测试文件,请在 initiator 机器上输入以下命令:
sudo ls /mnt/iscsi_target
如果在这两种情况下都列出了测试文件,则 iSCSI target 文件系统已成功配置,并且可以从两台机器访问。
结论
在本教程中,我们演示了如何在 RHEL/CentOS 7 上使用 iSCSI target 和 initiator 配置集中式安全存储系统。通过在一台机器上创建 iSCSI target 并将其连接到另一台机器上的 initiator,我们可以创建一个可以从多台机器安全访问的集中式存储系统。