在数据中心领域,大容量存储区域网络 ( SAN )已成为最低标准。 由于云提供商和虚拟化技术也在技术领域继续产生巨大影响,因此对更多SAN存储空间的需求变得日益明显。
大多数SAN硬件由一个简约控制器(或一组控制器)和大量高容量驱动器组成,全部配置为支持大量数据可用性和完整性。
许多这些专业产品都是由Netapp,Dell Equalogic,HP Storageworks或EMC等大牌厂商生产的,并附有价格标签,只有最大的企业才能承受。
实际上,这些设备只不过是带有控制器的大型硬盘阵列,为连网客户提供了这些硬盘的空间。 多年来存在的许多技术都以实质上更便宜的价格提供此功能或类似功能。
Debian GNU / Linux发行版提供的软件包允许Debian系统以仅仅几分之一的成本服务于企业级SAN存储设备! 这使得基本的家庭用户或大型数据中心的每个人都可以获得SAN存储的优势,而无需在供应商专有解决方案上花费大量资金。
本文将介绍如何使用称为Internet小型计算机系统接口或iSCSI的系统设置Debian 9(Stretch)系统来提供磁盘空间。 iSCSI是一种基于互联网协议 ( IP )的标准,用于为其他系统提供块(硬盘)存储。 iSCSI在客户端服务器模型中工作,但使用不同的名称来区分客户端与服务器。
在iSCSI术语中,服务于“ 磁盘空间 ”的服务器被称为iSCSI “ 目标 ”,而请求/使用磁盘空间的系统被称为iSCSI“ 启动器 ”。 换句话说,一个' Initiator '请求来自' Target '的块存储。
环境设置
本指南将介绍一个涉及运行Debian 9(Stretch)的简单iSCSI服务器( 目标 )和客户端 ( 启动器 )的基本设置。
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网络图
Debian iSCSI目标配置
在iSCSI领域 , 目标被认为是包含启动器要使用的存储设备的主机。
在这篇文章中,IP为192.168.56.101的服务器被用作目标 。 所有配置将在该部分的主机上完成。
第一步是安装必要的软件包以允许Debian系统提供iSCSI目标 。 该软件包被称为目标框架 ( TGT )。
本指南使用的另一项是逻辑卷管理 ( LVM )工具,因为逻辑卷 ( LV )将用作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}
确认并创建LVM设置
一旦使用上述' pvcreate '命令准备好磁盘后,就可以从这些特定磁盘中创建一个卷组 。 卷组是必需的,以便创建将在稍后用作iSCSI存储的逻辑卷 。
要创建卷组,需要' vgcreate '命令。
# vgcreate youcl_iscsi /dev/sd{b,c} # vgs (Only needed to confirm the creation of the volume group)
在Debian中创建卷组
请注意,在上面的输出中,系统响应已创建卷组 ,但是如上所述用' vgs '命令进行双重检查总是一个好主意。 该卷组的容量仅为9.99GB 。 虽然这是一个特别小的卷组,但对于容量更大的磁盘,这一过程将是相同的!
下一步是创建将作为iSCSI客户端( 启动器 )的磁盘的逻辑卷。 对于这个例子,整个卷组将被使用,但不是必需的。
逻辑卷将使用' lvcreate '命令创建。
# lvcreate -l 100%FREE youcl_lun1 youcl_iscsi # lvs (Simply used to confirm the creation of the logical volume)
在Debian中创建逻辑卷
乍一看上面的' lvcreate '命令可能有点混淆,但分解是这样的:
- lvcreate - 用于创建逻辑卷的命令。
- -l 100%免费 - 使用卷组的所有可用空间创建逻辑卷。
- -n youcl_lun1 - 要创建的逻辑卷的名称。
- youcl_iscsi - 要在其中创建逻辑卷的卷组的名称。
一旦创建了逻辑卷 ,是时候创建实际的LUN ( 逻辑单元号 )。 LUN将是启动器将连接到并稍后使用的存储设备。
创建LUN非常简单,只需要几个步骤。 第一步是创建配置文件。 该文件将驻留在' /etc/tgt/conf.d '目录中,对于本文,它将被称为' youcl_iscsi.conf '。
要使用文本编辑器创建此文件。
# nano /etc/tgt/conf.d/youcl_iscsi.conf
在此文件中,将配置此LUN的所有必要配置信息。 可以在此文件中放置很多选项,但现在将配置具有相互质询握手身份验证协议 ( CHAP )的基本LUN 。
LUN的定义将存在于两个“ 目标 ”语句之间。 要获取目标语句中的更多参数,请通过发布' man 5 targets.conf '来查看' targets.conf '文件的手册页。
<target iqn.2018-02.youcl.com:lun1> # Provided device as an iSCSI target backing-store /dev/mapper/youcl_iscsi-youcl_lun1 initiator-address 192.168.56.102 incominguser youcl-iscsi-user password outgoinguser debian-iscsi-target secretpass </target>
上面有很多事情要做。 快速解释可能对大多数人有帮助。
- 第一行开始特定的iSCSI LUN配置。 在这种情况下,标记为“ iqn.2018-02.youcl.com:lun1 ”的LUN 。 ' iqn '部分表示这将是一个iSCSI限定名。 ' 2018-02 '是一个任意选择的日期组合。 ' youcl.com '是此特定LUN所属的域。 最后,' lun1 '被用作这个特定目标的名字。
- 上面的第二行说明了一条评论。 注释可以存在于目标配置文件中,并且必须以' # '符号开头。
- 第三行是启动器将使用的实际存储空间的存在位置。 在这种情况下,存储支持将成为本指南前面创建的逻辑卷。
- 第四行是发起者期望的IP地址。 虽然这不是必需的配置项目,但它可以帮助提高安全性。
- 第五行是传入的用户名/密码。 与上面的启动器地址非常相似,此参数也不是必需的,但可以帮助保护LUN。 由于本指南也涉及iSCSI双向CHAP,因此此参数是必需的。 此行指示目标为启动器连接到此LUN所期望的用户名和密码。
- 第六行是目标将提供给启动器以允许进行双方CHAP身份验证的用户名/密码。 通常,此参数不是必需的,但本文将介绍双方的CHAP身份验证,因此此参数是必需的。
- 最后一行是目标定义的结束语。 注意关键字目标前面的结尾斜线!
一旦LUN的适当配置被输入,保存更改并退出文本编辑器。 如果使用nano ,点击ctrl+o
保存,然后点击ctrl+x
退出nano。
创建LUN配置文件
一旦创建了配置文件,应该重新启动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)
显示所有iSCSI目标
这结束了目标的配置。 下一节将通过启动器的配置工作。
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启动器配置。 第一步是与目标进行通信以获取准备好的目标的初始配置信息。
# iscsiadm -m discovery -t st -p 192.168.56.101
当这个命令运行时,它会回应以前为这个特定主机配置的lun的名称。 以上命令还会为新发现的LUN信息生成两个文件。
连接iSCSI目标服务器
现在为该节点创建的文件需要配置CHAP信息,以便启动器实际可以访问该iSCSI目标 。
从技术上讲,可以为整个系统整体设置此信息,但是如果主机使用不同的凭证连接到不同的LUN ,将这些凭证放入特定的节点配置文件中可以缓解任何问题。
节点配置文件将存在于目录“ / etc / iscsi / nodes / ”中,并且每个LUN都有一个目录可用。 在这篇文章的情况下(请注意,如果名称/ IP地址更改,路径将会更改)。
# /etc/iscsi/nodes/iqn.2018-02.youcl.com\:lun1/192.168.56.101\,3260\,1/default
要使用此文件,可以使用任何文本编辑器。
# nano /etc/iscsi/nodes/iqn.2018-02.youcl.com\:lun1/192.168.56.101\,3260\,1/default
在这个文件中,会有几个已经配置的选项,用于在之前运行' iscsiadm '命令期间确定的相应目标 。
由于这个特定的Debian 目标/启动器设置使用双向CHAP ,因此需要更改一些选项并将其添加到此文件,然后执行登录到iSCSI目标 。
这个文件的变化是:
node.session.auth.authmethod = CHAP #Enable CHAP Authentication node.session.auth.username = youcl-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 '选项将被设置为' 手动 '。 这可能不是期望的。 如果管理员希望在系统启动时连接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启动器能够登录到目标 。 为了进一步确认iSCSI目标确实对启动器可用,我们可以使用' lsblk '命令检查系统是否有额外的磁盘驱动器,并检查输出是否有额外的驱动器。
# lsblk
检查iSCSI目标磁盘
可用于启动程序以确认与目标连接的另一个命令是“ iscsiadm ”,如下所示:
# iscsiadm -m session
确认连接到ISCSI目标
使用' tgtadm '命令列出任何iSCSI连接,确认连接的最终位置将在目标上。
# tgtadm --mode conn --op show --tid 1
列出iSCSI连接
从这一点来说,新连接的iSCSI设备可以用于任何通常连接的磁盘。 分区,文件系统创建,安装和/或持久安装都可以正常处理。
需要注意的一点是,如果iSCSI目标包含启动器引导时需要的重要文件系统,请确保使用' / etc / fstab '文件中的' _netdev '条目以确保iSCSI设备在系统继续启动之前已连接!