如何在CentOS 8/RHEL 8上配置iSCSI目标和启动器

时间:2020-02-23 14:37:53  来源:igfitidea点击:

介绍

如何在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