Vultr的云块存储技术使您可以将高性能的可扩展存储安装到您的实例,从而使空间管理更加灵活。该存储具有高可用性,冗余性和SSD支持,可提供卓越的性能。本文介绍了如何在 Debian 服务器上创建 iSCSI 网关以通过 iSCSI 托管块存储。
点击进入:Vultr官网
本指南中使用的术语:
- 目标:托管 iSCSI 网关和块存储的服务器
- 发起者:使用 iSCSI 上的块存储的服务器
- IQN:iSCSI 限定名称。 这是定义如何识别 iSCSI 目标和启动器的标准格式。
例如,您可以将 Vultr 云服务器用作目标,将裸机服务器用作启动器。
最佳实践
- 我们强烈建议您使用 CPU 优化计划,其中每个要挂载的块存储卷至少有一个 vCPU。
- 为了安全起见,您应该为所有 iSCSI 连接使用 Vultr VPC。 此外,与公共网络连接不同,VPC 上的 iSCSI 流量不计入您的带宽配额,从而为您节省潜在费用。
安装目标服务器
本指南使用 Debian,但对于任何支持 Open-iSCSI 的 Linux 发行版,步骤都类似。
1、部署一个新的 Debian 11 服务器作为目标。
2、创建块存储订阅并将其附加到目标服务器。
3、以 root 身份通过 SSH 连接到目标服务器。
4、安装 targetcli 和 open-iscsi
# apt install targetcli-fb open-iscsi
5、启用 iSCSI 守护程序并启动它。
# systemctl enable iscsid.service --now
6、运行 targetcli 进入 iSCSI 配置的命令行界面。 命令运行后提示符变为 />。
# targetcli
/>
7、导航到块存储后备库。
/> cd backstores/block
8、对于每个挂载的块存储卷,创建一个后台存储。 下面是一个示例,它为 /dev/vdb 上的订阅创建一个名为 vdb 的后台存储。
/backstores/block> create vdb /dev/vdb
9、创建目标 IQN。 IQN 名称格式为 iqn.YEAR-MONTH.domain:targetname。 作为惯例,域是颠倒的,所以example.com的域表示为com.example。 目标名称可以是您想要的任何名称。 此示例使用目标。
/backstores/block> cd /iscsi
/iscsi> create iqn.2022-05.com.example:target
10、创建到块设备的 LUN 映射。
/iscsi> cd iqn.2022-05.com.example:target/tpg1/luns
/iscsi/iqn.20..et/tpg1/luns> create /backstores/block/vdb
11、设置 ACL 以启用双向 CHAP 身份验证。
- 启动器名称可以是您想要的任何名称。 本指南使用启动器作为示例名称。
- 您应该使用强大的、随机生成的用户名和密码。 本指南仅使用弱名称和密码作为示例。
示例发起者用户名是initiator_user,密码是initiator_password。 示例目标用户名是 target_user,密码是 target_password。
/iscsi/iqn.20..et/tpg1/luns> cd ../acls
/iscsi/iqn.20..et/tpg1/acls> create iqn.2022-05.com.example:initiator
/iscsi/iqn.20..et/tpg1/acls> cd iqn.2022-05.com.example:initiator/
/iscsi/iqn.20..om:initiator> set auth userid=initiator_user
/iscsi/iqn.20..om:initiator> set auth password=initiator_password
/iscsi/iqn.20..om:initiator> set auth mutual_userid=target_user
/iscsi/iqn.20..om:initiator> set auth mutual_password=target_password
12、切换到根目录,保存您的 targetcli 配置,然后退出。
/iscsi/iqn.20.../tpg1/portals> cd /
/> saveconfig
/> exit
13、启用 targetclid 服务。 当目标服务器重新启动时,需要此步骤来重新加载配置。
# systemctl enable targetclid.service --now
14、使用以下命令验证 iSCSI 服务是否正在侦听端口 3260。 IP 地址 0.0.0.0 表示服务正在侦听所有接口。
# ss -napt | grep 3260
LISTEN 0 256 0.0.0.0:3260 0.0.0.0:*
15、将防火墙配置为向 Initiator 开放端口 3260。 Debian 11 使用 ufw 作为其默认防火墙。 用启动器的 IP 地址替换本示例中使用的 10.10.10.123。 我们强烈建议您仅启用连接到 Vultr VPC 的专用网络接口。
# ufw allow from 10.10.10.123 to any port 3260
配置启动器
1、以 root 身份通过 SSH 连接到您的 Initiator 服务器,该服务器可以是任何支持 open-iscsi 的基于 APT 或 RPM 的服务器。
2、在 Initiator 上,安装 open-iscsi 并启动 iscsid 服务。
基于 APT 的 Linux
# apt install -y open-iscsi
# systemctl enable iscsid.service --now
基于 RPM 的 Linux
# yum -y install iscsi-initiator-utils
# systemctl enable iscsid.service --now
3、在文本编辑器中打开 /etc/iscsi/initiatorname.iscsi。
# nano /etc/iscsi/initiatorname.iscsi
4、设置 iSCSI Initiator 名称以匹配您在 iSCSI Target 服务器上设置的名称。 例如,本指南使用 iqn.2022-05.com.example:initiator。
InitiatorName=iqn.2022-05.com.example:initiator
5、保存并退出文件。
6、在文本编辑器中打开 /etc/iscsi/iscsid.conf。
# nano /etc/iscsi/iscsid.conf
7、如图所示编辑文件以配置身份验证。
# Uncomment the following line to enable CHAP
node.session.auth.authmethod = CHAP
# Uncomment the following line to enable strong authentication algorithms
node.session.auth.chap_algs = SHA3-256,SHA256,SHA1,MD5
# Uncomment and specify the username and password you set on the target server
node.session.auth.username = initiator_user
node.session.auth.password = initiator_password
# Uncomment and specify the mutual username and password you set earlier
node.session.auth.username_in = target_user
node.session.auth.password_in = target_password
# Optional: Setup automatic reconnect after a reboot by changing `node.startup` from `manual` to `automatic`
node.startup = automatic
8、重新启动 iscsid 服务以设置新配置。
# systemctl restart iscsid.service
9、发现 Initiator 上的目标。
# iscsiadm -m discovery -t st -p 10.10.10.123
10.10.10.123:3260,1 iqn.2022-05.com.example:target
10、登录到目标服务器。 这只需要一次; 您之前创建的 iscsid.service 将在机器重新启动时重新启动连接。
# iscsiadm -m node --login
Logging in to [iface: default, target: iqn.2022-05.com.example:target, portal: 10.10.10.123,3260]
Login to [iface: default, target: iqn.2022-05.com.example:target, portal: 10.10.10.123,3260] successful.
11、该磁盘现在应该通过 iSCSI 安装在 Initiator 上。 您可以使用 lsblk 进行检查。 在此示例中,sda 是目标。
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
sr0 11:0 1 1024M 0 rom
vda 254:0 0 55G 0 disk
└─vda1 254:1 0 55G 0 part /
块存储卷现在可通过 iSCSI 供 Initiator 使用,您可以像任何其他块设备一样将其挂载到 Linux 文件系统。