网站搜索

如何在 Debian 9 上设置 iSCSI 服务器(目标)和客户端(启动器)


在数据中心领域,大容量存储区域网络 (SAN) 已成为最低标准。随着云提供商和虚拟化继续对技术领域产生巨大影响,对更多 SAN 存储空间的需求变得显而易见。

大多数 SAN 硬件由一个简约的控制器(或一组控制器)和大量高容量驱动器组成,所有这些驱动器均经过配置以支持大量数据的可用性和完整性。

许多这些专用产品都是由 Netapp、Dell Equalogic、HP Storageworks 或 EMC 等知名供应商生产的,并且价格标签只有最大的企业才能负担得起。

实际上,这些设备只不过是带有控制器的大型硬盘阵列,该控制器向网络客户端提供这些硬盘的空间。多年来已经存在了许多技术,以便宜得多的价格提供此功能或类似功能。

Debian GNU/Linux 发行版提供的软件包允许 Debian 系统以极低的成本实现企业级 SAN 存储设备的目的!这使得从基本家庭用户到大型数据中心的每个人都能获得 SAN 存储的优势,而无需花费大量资金购买供应商专有解决方案。

本文将介绍如何设置 Debian 9 (Stretch) 系统,以使用称为互联网小型计算机系统接口或简称为iSCSI的系统来提供磁盘空间。 iSCSI 是一种基于互联网协议 (IP) 的标准,用于向其他系统提供块(硬盘驱动器)存储。 iSCSI 以客户端服务器模型工作,但使用不同的名称来区分客户端和服务器。

在 iSCSI 术语中,提供“磁盘空间”的服务器称为 iSCSI目标”,而正在请求的系统则称为“目标”。 /利用磁盘空间被称为iSCSI“启动器”。换句话说,“发起者”向“目标”请求块存储。

环境设置

本指南将演练涉及简单的iSCSI服务器(目标)和客户端启动器)的基本设置运行Debian 9(Stretch)


Debian iSCSI Target: 192.168.56.101/24
Storage: Contains two extra hard drives to be used as the storage in the iSCSI setup
Debian iSCSI Initiator: 192.168.56.102/24

网络可以如下查看:

Debian iSCSI 目标配置

iSCSI世界中,目标被视为包含启动器使用的存储设备的主机。

在本文中,IP 为 192.168.56.101 的服务器被用作目标。本部分的所有配置都将在该主机上完成。

第一步是安装必要的软件包,以允许 Debian 系统提供iSCSI 目标。该软件包称为目标框架 (TGT)。

本指南中使用的另一个项目是逻辑卷管理 (LVM) 工具,如逻辑卷 (LVs)) 将用作 iSCSI 目标的存储支持。

可以使用以下命令安装这两个软件包。


apt-get update
apt-get install tgt lvm2

安装软件包后,LVM 将用于准备目标上的硬盘以用作iSCSI LUN。第一个命令用于准备磁盘以包含在 LVM 设置中。请务必根据不同场景的需要修改命令!


lsblk (Only used to confirm disks to be used in the LVM setup)
pvcreate /dev/sd{b,c}

使用上述“pvcreate”命令准备好磁盘后,就可以从这些特定磁盘中创建卷组了。需要卷组才能创建稍后充当iSCSI存储的逻辑卷

要创建卷组,需要“vgcreate”命令。


vgcreate tecmint_iscsi /dev/sd{b,c}
vgs  (Only needed to confirm the creation of the volume group)

请注意,在上面的输出中,系统响应卷组已创建,但最好使用“vgs”命令仔细检查,如上所示。此卷组的容量仅为9.99GB。虽然这是一个特别小的卷组,但对于更大容量的磁盘,该过程是相同的!

下一步是创建逻辑卷,该卷将充当 iSCSI 客户端(启动器)的磁盘。对于此示例,将使用整个卷组,但这不是必需的。

将使用“lvcreate”命令创建逻辑卷。


lvcreate -l 100%FREE tecmint_lun1 tecmint_iscsi
lvs  (Simply used to confirm the creation of the logical volume)

上面的“lvcreate”命令乍一看可能有点令人困惑,但细分如下:

  • lvcreate – 用于创建逻辑卷的命令。
  • -l 100%FREE – 使用卷组的所有可用空间创建逻辑卷。
  • -n howtoing_lun1 – 要创建的逻辑卷的名称。
  • howtoing_iscsi – 要在其中创建逻辑卷的卷组的名称。

创建逻辑卷后,就可以创建实际的LUN逻辑单元号)。 LUN将是启动器稍后将连接并使用的存储设备。

创建LUN非常简单,只需要几个步骤。第一步是创建配置文件。该文件将驻留在“/etc/tgt/conf.d”目录中,在本文中,它将被称为“TecMint_iscsi.conf”。

要创建此文件,请使用文本编辑器。


nano /etc/tgt/conf.d/TecMint_iscsi.conf

在此文件中,将配置此 LUN 的所有必要配置信息。此文件中可以放置很多选项,但目前具有相互质询握手身份验证协议 (CHAP) 的基本 LUN 将进行配置。

LUN 的定义将存在于两个“目标”语句之间。有关目标语句中可以包含的更多参数,请通过发出“man 5 Targets.conf”查看“targets.conf”文件的手册页。


<target iqn.2018-02.linux-console.net:lun1>
     # Provided device as an iSCSI target
     backing-store /dev/mapper/tecmint_iscsi-tecmint_lun1
     initiator-address 192.168.56.102
    incominguser tecmint-iscsi-user password
     outgoinguser debian-iscsi-target secretpass
</target>

上面发生了很多事情。快速解释可能对大多数人有帮助。

  • 第一行开始特定的iSCSI LUN配置。在本例中,LUN 标记为“iqn.2018-02.howtoing.com:lun1”。 “iqn”部分表示这将是 iSCSI 限定名称。 “2018-02”是任意选择的日期组合。 “howtoing.com”是该特定 LUN 所属的域。最后,“lun1”用作该特定目标的名称。
  • 上面的第二行说明了一条注释。注释可以存在于目标配置文件中,并且必须以“#”符号开头。
  • 第三行是启动器将使用的实际存储空间所在的位置。在这种情况下,存储支持将是指南前面创建的逻辑卷。
  • 第四行是发起者期望的 IP 地址。虽然这不是必需的配置项,但它可以帮助提高安全性。
  • 第五行是传入的用户名/密码。与上面的启动器地址非常相似,该参数也不是必需的,但可以帮助保护 LUN。由于本指南还涵盖 iSCSI 相互 CHAP,因此此参数是必需的。此行指示目标为连接到此 LUN 所需的启动器提供的用户名和密码。
  • 第六行是目标将提供给启动器以允许进行相互 CHAP 身份验证的用户名/密码。通常不需要此参数,但本文介绍相互 CHAP 身份验证,因此需要此参数。
  • 最后一行是目标定义的结束语。注意关键字目标前面的结束斜杠!

输入 LUN 的适当配置后,保存更改并退出文本编辑器。如果使用 nano,请按 ctrl+o 保存,然后按 ctrl+x 退出 nano。

创建配置文件后,应重新启动 tgt 服务,以便 tgt 知道新的目标和关联的配置。

这可以使用以下命令之一来完成,并且取决于所使用的 init 系统。


service tgt restart  (For sysv init systems)
systemctl restart tgt  (For systemd init systems)

一旦 tgt 重新启动,请务必检查以确保 iSCSI 目标 根据创建的配置文件可用。

这可以通过“tgtadm”命令来完成。


tgtadm --mode target --op show   (This will show all targets)

目标的配置到此结束。下一部分将完成启动器的配置。

Debian iSCSI 启动器配置

使用先前配置的iSCSI 目标的下一步是配置iSCSI 启动器

本文将使用不同的 Debian 9 系统作为启动器,但任何可以利用 iSCSI 协议的系统都可以连接到之前配置的目标;这可能包括 XenServer/ESXi 等虚拟机管理程序或 Red Hat、Debian 或 Ubuntu 等其他发行版。

对于这个 Debian 启动器,此过程的第一步是安装 iSCSI 的正确软件包。


apt-get update
apt-get install open-iscsi

一旦 apt 完成open-iscsi软件包的配置,就可以开始iSCSI initiator配置。第一步是与目标通信,以获取准备好的目标的初始配置信息。


iscsiadm -m discovery -t st -p 192.168.56.101

当此命令运行时,它将使用之前为此特定主机配置的 lun 名称进行响应。上述命令还会为新发现的LUN信息生成两个文件。

现在,为此节点创建的文件需要配置 CHAP 信息,以便iSCSI 目标能够由启动器实际访问。

从技术上讲,可以为整个系统设置此信息,但如果主机使用不同的凭据连接到不同的LUN,则将这些凭据放置在特定的节点配置文件中可以缓解任何问题。

节点配置文件将存在于目录“/etc/iscsi/nodes/”中,并且每个 LUN 都有一个可用目录。在本文中(请注意,如果名称/IP 地址更改,路径也会更改)。


/etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

要使用此文件,可以使用任何文本编辑器。


nano /etc/iscsi/nodes/iqn.2018-02.linux-console.net\:lun1/192.168.56.101\,3260\,1/default

在此文件中,将有几个已为相应目标配置的选项,这些选项是在之前运行的“iscsiadm”命令期间确定的。

由于此特定 Debian 目标/启动器 设置使用相互 CHAP,因此需要更改更多选项并将其添加到此文件中,然后登录到 iSCSI 目标执行。

该文件的更改是:


node.session.auth.authmethod = CHAP                    #Enable CHAP Authentication
node.session.auth.username = tecmint-iscsi-user        #Target to Initiator authentication
node.session.auth.password = password                  #Target to Initiator authentication
node.session.auth.username_in = debian-iscsi-target    #Initiator to Target authentication
node.session.auth.password_in = secretpass             #Initiator to Target authentication

上述选项将允许此目标启动器进行身份验证,并允许启动器目标进行身份验证>。

此特定文件中还有另一个选项,可能需要根据管理员的首选项进行更改,即“node.startup”参数。

如果遵循本指南,“node.startup”选项此时将设置为“manual”。这可能是不希望的。如果管理员希望在系统启动时连接iSCSI目标,请将“手动”更改为“自动”,如下所示:


node.startup = automatic

完成上述更改后,保存文件并退出。此时,需要重新启动open-iscsi启动器服务,以便读取这些新更改并连接到iSCSI目标

这可以通过以下命令之一来完成,具体取决于所使用的 init 系统。


service open-iscsi restart   (For sysv init systems)
systemctl restart open-iscsi (For systemd init systems)

请注意上面的绿色框中,iSCSI 启动器能够登录到目标。为了进一步确认iSCSI目标确实可供启动器使用,我们可以使用“lsblk”检查系统是否有可用的额外磁盘驱动器>' 命令并检查额外驱动器的输出。


lsblk

可以在启动器上使用来确认与目标的连接的另一个命令是“iscsiadm”,如下所示:


iscsiadm -m session

确认连接的最终位置是在目标本身上,使用“tgtadm”命令列出所有 iSCSI 连接。


tgtadm --mode conn --op show --tid 1

从这时起,新连接的iSCSI设备就可以像任何正常连接的磁盘一样使用了!分区、文件系统创建、安装和/或持久安装都可以正常处理。

使用 iSCSI 设备时需要注意的一项重要事项是,如果 iSCSI 目标 包含启动器 启动时所需的重要文件系统,请确保使用“/etc/fstab”文件中的“_netdev”条目确保在系统继续启动之前 iSCSI 设备已连接!