1. iSCSI 技术介绍
硬盘是计算机硬件设备中重要的组成部分之一,硬盘存储设备读写速度的快慢也会对服务器的整体性能造成影响。硬盘存储结构、RAID 磁盘阵列技术以及LVM 技术等都是用于存储设备的技术,尽管这些技术有软件层面和硬件层面之分,但是它们都旨在解决硬盘存储设备的读写速度问题,或者竭力保障存储数据的安全。
为了进一步提升硬盘存储设备的读写速度和性能,人们一直在努力改进物理硬盘设备的接口协议。当前的硬盘接口类型主要有 IDE、SCSI 和 SATA 这 3 种。
➢ IDE:一种成熟稳定、价格便宜的并行传输接口。
➢ SATA:一种传输速度更快、数据校验更完整的串行传输接口。
➢ SCSI:一种用于计算机和硬盘、光驱等设备之间系统级接口的通用标准,具有系统资源占用率低、转速高、传输速度快等优点。
无论使用什么类型的硬盘接口,硬盘上的数据总是要通过计算机主板上的总线与 CPU、内存设备进行数据交换,这种物理环境上的限制给硬盘资源的共享带来了各种不便。后来,IBM 公司开始动手研发基于 TCP/IP 协议和 SCSI 接口协议的新型存储技术,这也就是我们目前能看到的互联网小型计算机系统接口(iSCSI,Internet Small Computer System Interface)。这是一种将 SCSI 接口与以太网技术相结合的新型存储技术,可以用来在网络中传输 SCSI 接口的命令和数据。这样,不仅克服了传统 SCSI 接口设备的物理局限性,实现了跨区域的存储资源共享,而且可以在不停机的状态下扩展存储容量。
下面将讲解一下 iSCSI 技术在生产环境中的优势和劣势。首先,(优势)iSCSI 存储技术非常便捷,在访问存储资源的形式上发生了很大变化,摆脱了物理环境的限制,同时还可以把存储资源分给多个服务器共同使用,因此是一种非常推荐使用的存储技术。但是,(劣势)iSCSI 存储技术受到了网速的制约。以往硬盘设备直接通过主板上的总线进行数据传输,现在则需要让互联网作为数据传输的载体和通道,因此传输速率和稳定性是 iSCSI 技术的瓶颈。随着网络技术的持续发展,相信 iSCSI 技术也会随之得以改善。
既然要通过以太网来传输硬盘设备上的数据,那么数据是通过网卡传入到计算机中的么?这就有必要向大家介绍 iSCSI-HBA 卡了。与一般的网卡不同(连接网络总线和内存,供计算机上网使用),iSCSI-HBA 卡连接的则是 SCSI 接口或 FC(光纤通道)总线和内存,专门用于在主机之间交换存储数据,其使用的协议也与一般网卡有本质的不同。运行 Linux 系统的服务器会基于 iSCSI 协议把硬盘设备命令与数据打包成标准的 TCP/IP 数据包,然后通过以太网传输到目标存储设备,而当目标存储设备接收到这些数据包后,还需要基于iSCSI 协议把 TCP/IP 数据包解压成硬盘设备命令与数据。
总结来说,iSCSI 技术具有硬件成本低、操作简单、维护方便以及扩展性强等优势,为我们提供了数据集中化存储的服务,而且其以区块为单位的数据存储空间,在简化了存储空间管理步骤的前提下,还增添了存储空间的弹性。对于用户而言,仿佛计算机上多了一块新的“本地硬盘”,可以使用本地的计算机操作系统进行管理,就像是使用本地硬盘那样来使用远程存储空间。这种高扩展性和低组建成本、低维护成本的整合存储方式,正是大部分预算受限的中小企业和办公室所需要的。
2. 创建 RAID 磁盘阵列
既然要使用 iSCSI 存储技术为远程用户提供共享存储资源,首先要保障用于存放资源的服务器的稳定性与可用性,否则一旦在使用过程中出现故障,则维护的难度相较于本地硬盘设备要更加复杂、困难。因此推荐各位读者按照本书第 6 章讲解的知识来部署 RAID 磁盘阵列组,确保数据的安全性。下面以配置 RAID 5 磁盘阵列组为例进行讲解。考虑到第 6 章已经事无巨细地讲解了 RAID 磁盘阵列技术和配置方法,因此本节不会再重复介绍相关参数的意义以及用途,忘记了的读者可以返回去看一下。
首先在虚拟机中添加 4 块新硬盘,用于创建 RAID 5 磁盘阵列和备份盘,如图所示。
启动虚拟机系统,使用 mdadm 命令创建 RAID 磁盘阵列。其中,-Cv 参数为创建阵列并显示过程,/dev/md0 为生成的阵列组名称,-n 3 参数为创建 RAID 5 磁盘阵列所需的硬盘个数,-l 5 参数为 RAID 磁盘阵列的级别,-x 1 参数为磁盘阵列的备份盘个数。在命令后面要逐一写上使用的硬盘名称。另外,还允许使用通配符来指定硬盘设备的名称,感兴趣的可以试一下。
[root@linuxprobe~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
在上述命令成功执行之后,得到一块名称为/dev/md0 的新设备,这是一块 RAID 5 级别的磁盘阵列,并且还有一块备份盘为硬盘数据保驾护航。大家可使用 mdadm -D 命令来查看设备的详细信息。另外,由于在使用远程设备时极有可能出现设备识别顺序发生变化的情况,因此,如果直接在 fstab 挂载配置文件中写入/dev/sdb、/dev/sdc 等设备名称的话,就有可能在下一次挂载了错误的存储设备。而 UUID 值是设备的唯一标识符,用于精确地区分本地或远程设备。于是我们可以把这个值记录下来,一会儿准备填写到挂载配置文件中。
[root@linuxprobe~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Apr 27 08:06:43 2021
Raid Level : raid5
Array Size : 41908224 (39.97 GiB 42.91 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Tue Apr 27 08:08:28 2021
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : resync
Name : linuxprobe.com:0 (local to host linuxprobe.com)
UUID : 759282f9:093dbf7c:a6c4a16d:ed70333c
Events : 18
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
3 8 64 - spare /dev/sde
3. 配置 iSCSI 服务端
iSCSI 技术在工作形式上分为服务端(target)与客户端(initiator)。iSCSI 服务端即用于存放硬盘存储资源的服务器,它作为前面创建的 RAID 磁盘阵列的存储端,能够为用户提供可用的存储资源。iSCSI 客户端则是用户使用的软件,用于访问远程服务端的存储资源。下面按照表来配置iSCSI 服务端和客户端所用的 IP 地址。
第一步:在 RHEL 8/CentOS 8 系统中,默认已经安装了 iSCSI 服务端程序,用户需要做的是配置好软件仓库后安装 iSCSI 服务端的交换式配置工具。相较于直接修改配置文件,通过交互式的配置过程来完成对参数的设定既方便又安全。在 dnf 命令的后面添加-y 参数后,在安装过程中就不需要再进行手动确认了:
[root@linuxprobe~]# dnf install -y targetcli
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription