如何在CentOS 8/RHEL 8上配置iSCSI目标和启动器
介绍
如何在CentOS 8/RHEL 8上设置iSCSI Target?我们将在CentOS 8/RHEL 8 Linux服务器上安装和配置iSCSI Target和Initiator。设置是一台服务器作为目标服务器,另一台服务器作为启动器。让我们开始
更新CentOS/RHEL服务器
确保我们在更新的CentOS/RHEL服务器上执行此设置。
$sudo dnf update CentOS-8 - AppStream 588 kB/s | 6.3 MB 00:10 CentOS-8 - Base 578 kB/s | 7.9 MB 00:13 CentOS-8 - Extras 511 B/s | 2.1 kB 00:04 Dependencies resolved. =========================================================================================================================================================== Package Arch Version Repository Size ===========================================================================================================================================================Installing: kernel x86_64 4.18.0-80.11.2.el8_0 BaseOS 424 k kernel-core x86_64 4.18.0-80.11.2.el8_0 BaseOS 24 M kernel-modules x86_64 4.18.0-80.11.2.el8_0 BaseOS 20 M
确保SELinux处于强制模式:
确认SELinux状态
$getenforce Enforcing
由于此设置涵盖了SELinux的配置,因此请使其以强制模式运行。
在CentOS 8/RHEL 8上安装targetcli软件包
iSCSI Target的软件包可在CentOS 8/RHEL 8默认AppStream存储库中作为targetcli使用。通过运行以下命令进行安装:
sudo dnf -y install targetcli
检查系统上的可用空间
这是为了确保有足够的磁盘空间或者块可用于分配。建议为此设置一个不同的分区,以便在不干扰核心CentOS文件和系统的情况下更易于管理。
$df -hT Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 365M 0 365M 0% /dev tmpfs tmpfs 380M 0 380M 0% /dev/shm tmpfs tmpfs 380M 10M 370M 3% /run tmpfs tmpfs 380M 0 380M 0% /sys/fs/cgroup /dev/mapper/cl-root xfs 27G 1.6G 26G 6% / /dev/sda1 ext4 976M 159M 751M 18% /boot tmpfs tmpfs 76M 0 76M 0% /run/user/1000
如果服务器上有辅助磁盘,则建议我们使用它。
在CentOS 8/RHEL 8上配置iSCSI Target
在配置的磁盘中创建一个文件夹,例如在/var /中,或者在辅助磁盘或者RAID设备的安装点中创建一个文件夹。
sudo mkdir /var/targetdisk01
现在让我们进入targetcli管理控制台以创建我们的目标
$sudo su # targetcli targetcli shell version 2.1.fb49 Copyright 2011-2013 by Datera, Inc and others. For help on commands, type 'help'.
ls检查其内容
ls o-/…………………………………………………………………………………………………… […] o- backstores …………………………………………………………………………………………. […] | o- block ……………………………………………………………………………………………. [Storage Objects: 0] | o- fileio …………………………………………………………………………………………… [Storage Objects: 0] | o- pscsi ……………………………………………………………………………………………. [Storage Objects: 0] | o- ramdisk ………………………………………………………………………………………….. [Storage Objects: 0] o- iscsi ……………………………………………………………………………………………… [Targets: 0] o- loopback …………………………………………………………………………………………… [Targets: 0]
一切都是空的。除此之外,我们会注意到内容中的第一件事就是后台存储。此处的Backstore有助于提供将数据保留在本地的不同方式,这些数据以后将被导出或者提供给外部系统(如启动器)使用。 Backstore的可用选项为block,fileio,pscsi和ramdisk。
我们可以轻易猜到的块后备存储是Linux块设备,例如/dev/sda等硬盘驱动器。如果目标中有磁盘,则可以使用此选项。另一方面,fileio backstore是文件系统上已创建的具有预定义大小的普通文件。 W将在我们的设置中使用此选项。通常,块后备存储的性能优于单个文件。
让我们创建一个5GB的Fileio后台存储:
在targetcli控制台上导航到backstores/fileio并创建backstore。
cd backstores/fileio /backstores/fileio> create targetdisk1 /var/targetdisk01/targetdisk1.img 5G Created fileio targetdisk1 with size 5368709120
发出ls命令检查它是否已创建
/backstores/fileio> ls o- fileio ……………………………………………………………………………………….. [Storage Objects: 1] o- targetdisk1 …………………… [/var/targetdisk01/targetdisk1.img (5.0GiB) write-back deactivated] o- alua …………………………………………………………………………………………. [ALUA Groups: 1] o- default_tg_pt_gp ……………………………………………………. [ALUA state: Active/optimized]
创建iSCSI目标
为了创建iSCSI Target,我们必须进入服务器中的iSCSI路径。
/backstores/fileio> cd /iscsi /iscsi>
在iscsi路径中,现在可以使用名称创建iscsi目标。命名约定是标准的,它如下所示:
[ iqn.(year)-(month).(reverse of domain name):(any name you prefer) ].
我们的域名是theitroad.local,所以相反是com.theitroad。为我们做同样的事情。让我们继续命名目标。
iqn.2019-11.theitroad.local:GeeksTarget1
创建目标
/iscsi> create iqn.2019-11.theitroad.local:GeeksTarget1 Created target iqn.2019-11.theitroad.local:geekstarget1. Created TPG 1. Global pref auto_add_default_portal=true Created default portal listening on all IPs (0.0.0.0), port 3260.
发出ls命令以确认所做的更改
/iscsi> ls o- iscsi ……………………………………………………………………………………………….. [Targets: 1] o- iqn.2019-11.theitroad.local:geekstarget1 ………………………. [TPGs: 1] o- tpg1 ……………………………………………………………………………………. [no-gen-acls, no-auth] o- acls ……………………………………………………………………………………………… [ACLs: 0] o- luns ……………………………………………………………………………………………… [LUNs: 1] | o- lun0 …………………. [fileio/targetdisk1 (/var/targetdisk01/targetdisk1.img) (default_tg_pt_gp)] o- portals ………………………………………………………………………………………… [Portals: 1] o- 0.0.0.0:3260 …………………………………………………………………………………………. [OK]
创建一个LUN
iSCSI LUN是存储的逻辑单元。目标可以向iSCSI客户端提供一个或者多个LUN,iSCSI客户端启动与iSCSI服务器的连接。导航到在上一个命令中创建的目标门户组(TPG)。注意从上面创建了TPG 1.
/iscsi> cd iqn.2019-11.theitroad.local:geekstarget1/tpg1/luns /iscsi/iqn.20…et1/tpg1/luns>
然后从之前创建的targetdisk1创建LUN。在此步骤中使用。
/iscsi/iqn.20…et1/tpg1/luns> create /backstores/fileio/targetdisk1 Created LUN 0.
发出ls命令进行检查
/iscsi/iqn.20…et1/tpg1/luns> ls o- luns …………………………………………………………………………………………………… [LUNs: 1] o- lun0 ………………………………………. [fileio/targetdisk1 (/var/targetdisk01/targetdisk1.img) (default_tg_pt_gp)]
配置访问控制列表(ACL)
访问控制列表将确保只有已知的启动器才能连接到我们的目标。为此,客户机/启动器上的/etc/iscsi/initiatorname.iscsi文件具有如下所示的一行。我们将在ACL中使用它。可以编辑名称以适合环境。
## This is file in your initiator $sudo vi /etc/iscsi/initiatorname.iscsi InitiatorName=iqn.2019-11.com.theitroad:initiator1
在与上述相同的路径下,导航至ACL。
/iscsi/iqn.20…starget1/tpg1> cd acls /iscsi/iqn.20…et1/tpg1/acls>
然后在acls路径中使用启动器的iqn运行以下命令
/iscsi/iqn.20…et1/tpg1/acls> create iqn.2019-11.com.theitroad:initiator1 Created Node ACL for iqn.2019-11.com.theitroad:initiator1 Created mapped LUN 0.
设置用户名和密码
导航到在ACL中创建的新iqn,然后设置"用户名"和"密码"以在启动器向目标发送请求时对其进行身份验证。
/iscsi/iqn.20…et1/tpg1/acls> cd iqn.2019-11.com.theitroad:initiator1 /iscsi/iqn.20…ks:initiator1> /iscsi/iqn.20…ks:initiator1> set auth userid=initiator1 Parameter userid is now 'initiator1'. /iscsi/iqn.20…ks:initiator1> set auth password=gai0daeNgu ##Use strong password here Parameter password is now 'gai0daeNgu'. /iscsi/iqn.20…ks:initiator1>
让我们导航到/iscsi并确认我们所有的设置是否都做得很好,然后通过退出进行保存
/iscsi/iqn.20…ks:initiator1> cd /iscsi/ /iscsi> ls o- iscsi ……………………………………………………………………………………………….. [Targets: 1] o- iqn.2019-11.theitroad.local:geekstarget1 ………………………………………………. [TPGs: 1] o- tpg1 ……………………………………………………………………………………. [no-gen-acls, no-auth] o- acls ……………………………………………………………………………………………… [ACLs: 1] | o- iqn.2019-11.com.theitroad:initiator1 ………………………………………………….. [Mapped LUNs: 1] | o- mapped_lun0 …………………………………………………………………. [lun0 fileio/targetdisk1 (rw)] o- luns ……………………………………………………………………………………………… [LUNs: 1] | o- lun0 …………………………………. [fileio/targetdisk1 (/var/targetdisk01/targetdisk1.img) (default_tg_pt_gp)] o- portals ………………………………………………………………………………………… [Portals: 1] o- 0.0.0.0:3260 …………………………………………………………………………………………. [OK]
我们可以证明,一切都很好。通过退出保存
/iscsi> exit Global pref auto_save_on_exit=true Last 10 configs saved in /etc/target/backup/. Configuration saved to /etc/target/saveconfig.json
如果防火墙正在运行,请启用目标并设置防火墙规则。
$sudo systemctl enable target Created symlink /etc/systemd/system/multi-user.target.wants/target.service → /usr/lib/systemd/system/target.service. ## Set the firewall rules as below $sudo firewall-cmd --add-service=iscsi-target --permanent success $sudo firewall-cmd --reload success
配置iSCSI启动器
而且我们很好。剩下的唯一事情就是配置我们的启动器并消耗这些资源。遵循下面的指南。
如何在CentOS 8/RHEL 8上配置iSCSI Initiator