Menu Close
管理存储设备
在 Red Hat Enterprise Linux 9 中部署和配置单节点存储
摘要
让开源更具包容性
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
对红帽文档提供反馈
我们感谢您对文档提供反馈信息。请让我们了解如何改进文档。
关于特定内容的简单评论:
- 请确定您使用 Multi-page HTML 格式查看文档。另外,确定 Feedback 按钮出现在文档页的右上方。
- 用鼠标指针高亮显示您想评论的文本部分。
- 点在高亮文本上弹出的 Add Feedback。
- 按照显示的步骤操作。
要通过 Bugzilla 提交反馈,请创建一个新的 ticket:
- 进入 Bugzilla 网站。
- 在 Component 中选择 Documentation。
- 在 Description 中输入您要提供的信息。包括文档相关部分的链接。
- 点 Submit Bug。
第 1 章 可用存储选项概述
Red Hat Enterprise Linux 8 中提供了几个本地、远程和基于集群的存储选项。
本地存储意味着存储设备安装在系统上,或者直接附加到系统。
使用远程存储时,设备可以通过 LAN、互联网或使用光纤通道网络进行访问。以下高级别 Red Hat Enterprise Linux 存储图描述了不同的存储选项。
图 1.1. Red Hat Enterprise Linux 存储图

1.1. 本地存储概述
Red Hat Enterprise Linux 9 提供多个本地存储选项。
- 基本磁盘管理
使用
parted
和fdisk
,您可以创建、修改、删除和查看磁盘分区。以下是分区布局标准:- 主引导记录(MBR)
- 它用于基于 BIOS 的计算机。您可以创建主分区、扩展分区及逻辑分区。
- GUID 分区表(GPT)
- 它使用全局唯一标识符(GUID)并提供唯一的磁盘和分区 GUID。
要加密分区,您可以使用 Linux Unified Key Setup-on-disk-format(LUKS)。要加密分区,选择安装过程中的选项,系统会显示输入密码短语的提示。这个密码短语用于解锁加密密钥。
- 存储消耗选项
- Non-Volatile Dual In-line Memory Modules(NVDIMM)管理
- 它是内存和存储的组合。您可以在连接到您的系统的 NVDIMM 设备中启用和管理各种存储类型。
- 块存储管理
- 数据以块形式存储,每个块都有唯一的标识符。
- 文件存储
- 数据存储在本地系统中的文件级别。这些数据可使用 XFS(默认)或者 ext4 本地访问,并使用 NFS 和 SMB 通过网络访问。
- 逻辑卷
- 逻辑卷管理器(LVM)
它从物理设备中创建逻辑设备。逻辑卷(LV)是物理卷(PV)和卷组(VG)的组合。配置 LVM 包括:
- 从硬盘创建 PV。
- 从 PV 创建 VG。
- 从 VG 创建 LV,分配挂载点到 LV。
- Virtual Data Optimizer(VDO)
它被用来通过重复数据删除(deduplication)、压缩和精简置备来减少数据。在 LV 下使用 VDO 可以帮助:
- 扩展 VDO 卷
- 通过多个设备生成 VDO 卷
- 本地文件系统
- XFS
- 默认 RHEL 文件系统。
- ext4
- 传统的文件系统。
- Stratis
- 它只是一个技术预览。Stratis 是一个支持高级存储功能的混合用户和内核本地存储管理系统。
1.2. 远程存储概述
以下是 Red Hat Enterprise Linux 8 中的远程存储选项:
- 存储连接选项
- iSCSI
- RHEL 9 使用 targetcli 工具来添加、删除、查看和监控 iSCSI 存储间的连接。
- 光纤频道(FC)
RHEL 9 提供以下原生 Fibre Channel 驱动程序:
-
lpfc
-
qla2xxx
-
Zfcp
-
- Non-volatile Memory Express(NVMe)
允许主机软件实用程序与固态驱动器进行通信的接口。使用以下类型的光纤传输来通过光纤配置 NVMe:
- 使用 Remote Direct Memory Access(RDMA)的 NVMe over fabrics。
- 使用光纤通道(FC)的 NVMe over fabrics
- 设备映射器多路径(DM 多路径)
- 允许您将服务器节点和存储阵列间的多个 I/O 路径配置为单一设备。这些 I/O 路径是可包含独立电缆、交换机和控制器的物理 SAN 连接。
- 网络文件系统
- NFS
- SMB
1.3. GFS2 文件系统概述
Red Hat Global File System 2 (GFS2) 是一个 64 位对称集群文件系统,它提供了一个共享名称空间,并管理共享一个常见块设备的多个节点间的一致性。GFS2 文件系统旨在提供尽量与本地文件系统类似的功能,同时在节点间强制实施完整集群一致性。为达到此目的,节点在文件系统资源中使用集群范围的锁定方案。这个锁定方案使用 TCP/IP 等通讯协议来交换锁定信息。
在某些情况下,Linux 文件系统 API 不允许具有集群特性的 GFS2 完全透明。例如,在 GFS2 中使用 POSIX 锁定的程序应该避免使用 GETLK
功能,因为在集群的环境中,该进程 ID 可能用于集群中的不同节点。然而,多数情况下 GFS2 文件系统的功能和本地文件系统的功能是一样的。
Red Hat Enterprise Linux Resilient Storage Add-On 提供 GFS2,它依赖于 Red Hat Enterprise Linux High Availability 附加组件来提供 GFS2 所需的集群管理。
gfs2.ko
内核模块实现 GFS2 文件系统,并加载在 GFS2 集群节点上。
要获得最佳 GFS2 性能,请务必考虑基础设计中给出的性能注意事项。和本地文件系统一样,GFS2 依赖于页面缓存以便通过本地缓存来提高经常使用数据的性能。为了在集群中的节点间保持一致性,缓存控制由 glock 状态机器提供。
其他资源
1.4. Gluster Storage 概述
Red Hat Gluster Storage(RHGS)是一个软件定义的存储平台,可在集群中部署。它将多个服务器的磁盘存储资源整合到单一全局命名空间中。GlusterFS 是一个开源分布式文件系统,适用于云和混合解决方案。
卷构成 GlusterFS 的基础,并提供不同的要求。每个卷是 brick 的集合,它们是存储的基本单元,由受信存储池中的导出目录代表。
可用的 GlusterFS 卷类型如下:
- 分布式 GlusterFS 卷 是默认卷,其中每个文件存储在一个 brick 中,且文件无法在不同的 brick 之间共享。
- 复制的 GlusterFS 卷类型 复制用户数据,以便在一个 brick 失败时,仍可以访问这些数据。
- 分布式复制 GlusterFS 卷 是一个混合卷,可将副本分布到大量系统中。它适用于存储可扩展性和高可靠性至关重要的环境。
1.5. Ceph Storage 概述
Red Hat Ceph Storage (RHCS) 是一个可扩展、开放、软件定义的存储平台,它将最稳定版本的 Ceph 存储系统与 Ceph 管理平台、部署实用程序和支持服务相结合。
Red Hat Ceph Storage 专为云基础架构和 Web 规模对象存储而设计。Red Hat Ceph Storage 集群由以下类型的节点组成:
- Red Hat Ceph Storage Ansible 管理节点
此类节点充当之前版本的 Red Hat Ceph Storage 的传统 Ceph 管理节点。这种类型的节点提供以下功能:
- 集中存储集群管理
- Ceph 配置文件和密钥
- (可选)用于在因安全原因无法访问互联网的节点上安装 Ceph 的本地存储库。
- 监控节点
每个监控节点运行 monitor 守护进程(
ceph-mon
),后者维护 cluster map 的副本。集群映射包含集群拓扑。连接 Ceph 集群的客户端从 monitor 中检索 cluster map 的当前副本,使客户端能够从集群读取和写入数据。重要Ceph 可以使用一个监控器运行;但是,为了保证生产环境集群中的高可用性,红帽将仅支持具有至少三个 monitor 节点的部署。红帽建议为超过 750 OSD 的存储集群部署总计 5 个 Ceph Monitor。
- OSD 节点
每个对象存储设备(OSD)节点运行 Ceph OSD 守护进程(
ceph-osd
),它与附加到节点的逻辑卷交互。Ceph 在这些 OSD 节点上存储数据。Ceph 可在只有很少 OSD 节点的环境中运行,默认为三个。但对于生产环境,自中等范围环境开始(例如,在一个存储集群中包括 50 个 OSD)才可能看到其在性能方面的优势。理想情况下,Ceph 集群具有多个 OSD 节点,通过创建 CRUSH map 来允许隔离的故障域。
- MDS 节点
-
每个元数据服务器(MDS)节点运行 MDS 守护进程(
ceph-mds
),后者管理与 Ceph 文件系统(CephFS)中存储的文件相关的元数据。MDS 守护进程也协调对共享集群的访问。 - 对象网关节点
-
Ceph 对象网关节点运行 Ceph RADOS 网关守护进程(
ceph-radosgw
),它是构建于librados
上的对象存储接口,为应用提供 Ceph 存储群集的 RESTful 网关。Ceph 对象网关支持两个接口: - S3
- 通过与 Amazon S3 RESTful API 的大子集兼容的接口提供对象存储功能。
- Swift
- 通过与 OpenStack Swift API 的大集兼容的接口提供对象存储功能。
其他资源
第 2 章 磁盘分区
要将磁盘分成一个或多个逻辑区域,请使用磁盘分区实用程序。这可以对每个分区进行独立的管理。
2.1. 分区概述
硬盘在分区表中保存每个磁盘分区的位置和大小信息。使用分区表中的信息,操作系统会将每个分区视为一个逻辑磁盘。磁盘分区的一些优点包括:
- 减少对物理卷的管理
- 保证有足够的备份
- 提供有效的磁盘管理
2.2. 修改磁盘分区前的注意事项
在创建、删除或调整任何磁盘分区的大小之前,请考虑以下方面:
在设备中,分区表的类型决定单个分区的最大数目和大小。
最大分区数:
在使用主引导记录(MBR) 分区表格式化的设备上,您可以有:
- 最多四个主分区。
最多三个主分区,再加上一个扩展分区
- 扩展分区中可以有多个逻辑分区
在使用 GUID 分区表(GPT) 格式化的设备中,您可以:
使用
parted
实用程序,最多 128 个分区。- 虽然 GPT 规格可以通过增加分区表的保留大小来带有更多分区,当 parted 会限制 128 分区所需的区域。
最大分区大小:
- 在使用主引导记录(MBR) 分区表格式化的设备中,最大值为 2 TiB。
- 在使用 GUID 分区表(GPT) 格式化的设备上,最大大小为 8 ZiB。
通过使用 parted
工具,您可以使用多个不同的后缀指定分区大小:
MiB、GiB 或 TiB
- 大小为 2 的指数代表。
- 分区的起点与根据大小指定的扇区一致。
- 结束点与指定大小减 1 扇区一致。
MB、GB 或 TB :
- 以 10 的指数表示容量。
- 起点和结束点在指定大小单元的一半内一致。例如,如果后缀是 MB 时为 ±500KB。
本节不涵盖 DASD 分区表,它特定于 IBM Z 构架。
2.3. 分区表类型比较
要在设备中启用分区,使用不同类型的分区表格式化块设备。下表比较您可以在块设备中创建的不同类型的分区表的属性。
表 2.1. 分区表类型
分区表 | 最多分区数 | 最大分区大小 |
---|---|---|
主引导记录(MBR) | 4 个主分区,或 3 个主分区和 1 个扩展分区(带有 12 个逻辑分区) | 2TiB |
GUID 分区表(GPT) | 128 | 8ZiB |
2.4. MBR 磁盘分区
分区表保存在磁盘的最开始,任何文件系统或用户数据都会保存在它的后面。为了更明确的显示,下图中的不同分区表分开显示。
图 2.1. 有 MBR 分区表的磁盘

如上图所示,分区表被分为四个未使用主分区的四个部分。主分区是在硬盘中只能包含一个逻辑驱动器(或部分)的分区。每个逻辑驱动器都有定义单个分区所需的信息,这意味着分区表可以定义不超过四个主分区。
每个分区表条目都包含分区的重要特性:
- 磁盘上分区启动和结束的点
-
分区的状态,因为只有一个分区可以被标记为
活跃
分区 - 分区的类型
起点和结束点定义了磁盘上分区的大小和位置。有些操作系统引导装载程序使用 active
标记。这意味着,在标记为"活跃"的分区中的操作系统被引导。
类型由一个数字代表,用于识别分区预定的使用情况。有些操作系统使用分区类型来:
- 表示特定的文件系统类型
- 将分区标记为与特定操作系统关联的
- 指明分区包含可引导操作系统
下图显示了含有单一分区的驱动器示例:在这个示例中,第一个分区被标记为 DOS
分区类型:
图 2.2. 只有一个分区的磁盘

其他资源
2.5. 扩展 MBR 分区
要创建额外分区(如果需要),请将类型设置为 extended
。
扩展分区类似于磁盘驱动器。它有自己的分区表,指向一个或多个逻辑分区,完全包含在扩展分区中。下图显示了一个磁盘驱动器,它有两个主分区和一个包含两个逻辑分区(以及一些未分区的可用空间)的扩展分区:
图 2.3. 带两个主分区和扩展的 MBR 分区的磁盘

最多只能有 4 个主分区和扩展分区,但逻辑分区的数量没有固定限制。作为 Linux 中的限制访问分区,单一磁盘驱动器允许最多 15 个逻辑分区。
2.6. MBR 分区类型
下表显示了一些最常用的 MBR 分区类型和用于代表它们的十六进制数字。
表 2.2. MBR 分区类型
MBR 分区类型 | 值 | MBR 分区类型 | 值 |
空 | 00 | Novell Netware 386 | 65 |
DOS 12-bit FAT | 01 | PIC/IX | 75 |
XENIX root | O2 | Old MINIX | 80 |
XENIX usr | O3 | Linux/MINUX | 81 |
DOS 16-bit ⇐32M | 04 | Linux swap | 82 |
Extended | 05 | Linux native | 83 |
DOS 16-bit >=32 | 06 | Linux extended | 85 |
OS/2 HPFS | 07 | Amoeba | 93 |
AIX | 08 | Amoeba BBT | 94 |
AIX bootable | 09 | BSD/386 | a5 |
OS/2 Boot Manager | 0a | OpenBSD | a6 |
Win95 FAT32 | 0b | NEXTSTEP | a7 |
Win95 FAT32(LBA) | 0c | BSDI fs | b7 |
Win95 FAT16(LBA) | 0e | BSDI swap | b8 |
Win95 Extended (LBA) | 0f | Syrinx | c7 |
Venix 80286 | 40 | CP/M | db |
Novell | 51 | DOS access | e1 |
PRep Boot | 41 | DOS R/O | e3 |
GNU HURD | 63 | DOS secondary | f2 |
Novell Netware 286 | 64 | BBT | ff |
2.7. GUID 分区表
GUID 分区表(GPT)是基于全局唯一标识符(GUID)的分区方案。
GPT 涉及 MBR 分区表的限制。MBR 分区表无法解决大于 2 TiB 的存储,相当于大约 2.2 TB。相反,GPT 支持容量较大的硬盘。默认情况下,可寻址的最大磁盘大小为 2.2 ZiB,默认情况下,GPT 支持创建最多 128 个主分区。这个数字可以通过为分区表分配更多空间来扩展。
GPT 有基于 GUID 的分区类型。某些分区需要特定的 GUID。例如,EFI 引导加载程序的系统分区需要 GUID C12A7328-F81F-11D2-BA4B-00A0C93EC93B
。
GPT 磁盘使用逻辑块寻址(LBA)和分区布局,如下所示:
- 为了保持与 MBR 磁盘的向后兼容性,GPT 的第一个扇区(LBA 0)被保留给 MBR 数据,它称为"保护的 MBR"。
主 GPT
- 标头从设备的第二个逻辑块(LBA 1)开始。标头中包含磁盘 GUID、主分区表的位置、从属 GPT 标头的位置、自身的 CRC32 checksum 以及主分区表。它还指定表上的分区条目数目。
- 默认情况下,主 GPT 包含 128 个分区条目。每个分区的条目大小为 128 字节、分区类型 GUID 和唯一的分区 GUID。
二级 GPT
- 对于恢复,当主分区表格损坏时,备份表非常有用。
- 二级 GPT 头位于磁盘的最后一个逻辑扇区,在主头损坏时可用于恢复 GPT 信息。
它包含:
- 磁盘 GUID
- 二级分区表和主 GPT 标头的位置
- 自身的 CRC32 checksums
- 二级分区表
- 可能的分区条目数
图 2.4. 带有 GUID 分区表的磁盘

对于在 GPT 磁盘上成功安装引导装载程序,必须存在 BIOS 引导分区。如果磁盘已经包含 BIOS 引导分区,则它可以被重复使用。这包括 Anaconda 安装程序初始化的磁盘。
2.8. 分区类型
管理分区类型的方法有多种:
-
fdisk
工具通过指定十六进制代码来支持所有的分区类型。 -
systemd-gpt-auto-generator
(单位生成器程序程序)使用分区类型自动识别和挂载设备。 parted
实用程序使用 flags 对分区类型进行映射。parted
实用程序处理 onlyceratin 分区类型,如 LVM、swap 或 RAID。parted
实用程序支持设置以下标记:-
boot
-
root
-
swap
-
hidden
-
raid
-
lvm
-
lba
-
legacy_boot
-
irst
-
esp
-
palo
-
在带有 parted
3.5 的 Red Hat Enterprise Linux 9 中,您可以使用额外的标记 chromeos_kernel
和 bls_boot
。
parted
工具在创建分区时接受文件系统类型参数。如需所需条件的列表,请参阅使用 parted 创建分区。使用值来:
- 在 MBR 中设置分区标记。
-
在 GPT 中设定分区 UUID 类型。例如,
swap
、fat
或hfs
文件系统类型设置不同的 GUID。默认值为 Linux Data GUID。
参数不会修改分区中的文件系统。它只会区分受支持的标志和 GUID。
支持以下文件系统类型:
-
xfs
-
ext2
-
ext3
-
ext4
-
fat16
-
fat32
-
hfs
-
hfs+
-
linux-swap
-
ntfs
-
reiserfs
2.9. 分区命名方案
Red Hat Enterprise Linux 使用基于文件的命名方案,其文件名采用 /dev/xxyN
的形式。
设备和分区名称由以下结构组成:
/dev/
-
包含所有设备文件的目录的名称。硬盘包含分区,因此代表所有可能分区的文件位于
/dev
中。 xx
- 分区名的前两个字母标明包含该分区的设备类型。
y
-
这个字母标明包含分区的特定设备。例如:
/dev/sda
用于第一个硬盘,第二个硬盘为/dev/sdb
。您可以在超过 26 个驱动器的系统中使用更多字母,例如/dev/sdaa1
。 N
-
最后的字母代表分区的数字。前四个(主或扩展)分区编号为
1
到4
。逻辑分区从5
开始。例如,/dev/sda3
是第一个硬盘上的第三个主分区或扩展分区,/dev/sdb6
是第二个硬盘上的第二个逻辑分区。驱动器分区编号只适用于 MBR 分区表。请注意,N 并不总是意味着分区。
即使 Red Hat Enterprise Linux 可以识别和引用 所有类型的磁盘分区,它可能无法读取文件系统,因此无法访问分区类型中保存的数据。然而,在很多情况下,成功访问专用于另一个操作系统的分区中的数据是可能的。
2.10. 挂载点和磁盘分区
在 Red Hat Enterprise Linux 中,每个分区都被用来成为支持一组文件和目录所必需的存储的一部分。挂载分区会导致该分区的存储可用,从指定目录开始,称为挂载点。
例如,如果分区 /dev/sda5
挂载在 /usr/
上,这意味着 /usr/
下的所有文件和目录都在 /dev/sda5
上。文件 /usr/share/doc/FAQ/txt/Linux-FAQ
位于 /dev/sda5
中,而文件 /etc/gdm/custom.conf
不在。
继续这个示例,也可以将 /usr/
下的一个或多个目录作为其他分区的挂载点。例如: /usr/local/man/whatis
位于 /dev/sda7
上,而不是位于 /dev/sda5
上,如果 /usr/local
包含挂载的 /dev/sda7
分区。
第 3 章 分区入门
使用磁盘分区将磁盘分成一个或多个逻辑区域,这些区域可以单独在每个分区上工作。硬盘在分区表中保存每个磁盘分区的位置和大小信息。使用表,每个分区然后显示为操作系统的逻辑磁盘。然后您可以在这些独立磁盘中进行读取和写入。
有关在块设备中使用分区的优点和缺点的概述,请参阅在 LUN 上使用分区(可以在两者间直接或通过 LVM)使用哪些优点和缺陷?
3.1. 使用 parted 在磁盘中创建分区表
使用 parted
实用程序更轻松地使用分区表格式化块设备。
使用分区表格式化块设备会删除该设备中所有存储的数据。
步骤
启动交互式
parted
shell:# parted block-device
确定该设备中是否已有一个分区表:
# (parted) print
如果设备已经包含分区,则后续步骤中将删除它们。
创建新分区表:
# (parted) mklabel table-type
使用预期的分区表类型替换 table-type :
-
用于的 MBR 的
msdos
-
用于 GPT 的
gpt
-
用于的 MBR 的
例 3.1. 创建 GUID 分区表(GPT)表
要在磁盘上创建 GPT 表,请使用:
# (parted) mklabel gpt
在输入以下命令后,这些更改将开始应用。
查看分区表以确认其已创建:
# (parted) print
退出
parted
shell:# (parted) quit
其他资源
-
parted(8)
手册页。
3.2. 查看使用 parted 的分区表
显示块设备的分区表,以查看分区布局和单个分区的详情。您可以使用 parted
实用程序查看块设备上的分区表。
步骤
启动
parted
工具。例如:以下输出列出了设备/dev/sda
:# parted /dev/sda
查看分区表:
# (parted) print Model: ATA SAMSUNG MZNLN256 (scsi) Disk /dev/sda: 256GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 269MB 268MB primary xfs boot 2 269MB 34.6GB 34.4GB primary 3 34.6GB 45.4GB 10.7GB primary 4 45.4GB 256GB 211GB extended 5 45.4GB 256GB 211GB logical
可选:切换到您要检查的下一个设备:
# (parted) select block-device
有关打印命令输出的详细描述,请查看以下信息:
Model:ATA SAMSUNG MZNLN256(scsi)
- 磁盘类型、制造商、型号号和接口。
磁盘 /dev/sda:256GB
- 块设备的文件路径和存储容量。
分区表:msdos
- 磁盘标签类型。
Number
-
分区号。例如,次号 1 的分区对应于
/dev/sda1
。 Start
和End
- 在分区启动和结束的设备中的位置。
Type
- 有效类型为 metadata、free、primary、extended 或 logical。
File system
-
文件系统类型。如果设备的
File system
字段未显示值,这意味着其文件系统类型为未知。parted
工具无法识别加密设备上的文件系统。 标记
-
列出为分区设置的标记。可用的标志有
boot
、root
、swap
、hidden
、raid
、lvm
或lba
。
其他资源
-
parted(8)
手册页。
3.3. 使用 parted 创建分区
作为系统管理员,您可以使用 parted
实用程序在磁盘上创建新分区。
所需分区是 swap
、/boot/
和 /(root)
。
先决条件
- 磁盘上的分区表。
- 如果要创建的分区大于 2TiB,使用 GUID 分区表(GPT) 格式化磁盘。
步骤
启动
parted
工具:# parted block-device
查看当前的分区表来确定是否有足够空闲空间:
# (parted) print
- 如果分区没有足够的可用空间,则调整分区大小。
从分区表中决定:
- 新分区的开始和结束点。
- 在 MBR 上,应该是什么分区类型。
创建新分区:
# (parted) mkpart part-type name fs-type start end
-
将 part-type 替换为
primary
,logical
, 或extended
。这只适用于 MBR 分区表。 - 使用任意分区名称替换 name。对于 GPT 分区表,这是必需的。
-
将 fs-type 替换为
xfs
,ext2
,ext3
,ext4
,fat16
,fat32
,hfs
,hfs+
,linux-swap
,ntfs
, 或reiserfs
。fs-type 参数是可选的。请注意,parted
实用程序不会在分区中创建文件系统。 -
使用从磁盘开头计算分区开始和结束点的大小替换 start 和 end。您可以使用大小后缀,如
512MiB
、20GiB
或1.5TiB
。默认的大小是 MB。
例 3.2. 创建小的主分区
要从 1024MiB 创建主分区,直到 MBR 表中的 2048MiB,请使用:
# (parted) mkpart primary 1024MiB 2048MiB
在输入以下命令后,这些更改开始应用。
-
将 part-type 替换为
查看分区表以确认创建的分区位于分区表中,并具有正确的分区类型、文件系统类型和大小:
# (parted) print
退出
parted
shell:# (parted) quit
注册新设备节点:
# udevadm settle
验证内核是否识别了新的分区:
# cat /proc/partitions
其他资源
-
parted(8)
手册页。 - 使用 parted 在磁盘中创建分区表
- 使用 parted 重新定义分区大小
3.4. 使用 fdisk 设置分区类型
您可以使用 fdisk
实用程序设置分区类型或标志。
先决条件
- 磁盘上的一个分区。
步骤
启动交互式
fdisk
shell:# fdisk block-device
查看当前的分区表以确定副分区号码:
Command (m for help): print
您可以在
Type
列中看到当前的分区类型,在Id
列中看到相应的类型 ID 。输入分区类型命令并使用它的副号码选择分区:
Command (m for help): type Partition number (1,2,3 default 3): 2
可选:查看十六进制代码列表:
Hex code (type L to list all codes): L
设置分区类型:
Hex code (type L to list all codes): 8e
写入更改并退出
fdisk
shell:Command (m for help): write The partition table has been altered. Syncing disks.
验证您的更改:
# fdisk --list block-device
3.5. 使用 parted 重新定义分区大小
使用 parted
程序,扩展分区以使用未使用的磁盘空间,或缩小分区以达到不同的目的。
先决条件
- 在缩小分区前备份数据。
- 如果要创建的分区大于 2TiB,使用 GUID 分区表(GPT) 格式化磁盘。
- 如果您想缩小分区,首先缩小文件系统,使其不大于重新定义大小的分区。
XFS 不支持缩小。
步骤
启动
parted
工具:# parted block-device
查看当前的分区表:
# (parted) print
从分区表中决定:
- 分区的副号码。
- 调整大小后现有分区的位置和新结束点。
重新定义分区大小:
# (parted) resizepart 1 2GiB
- 使用您要重新定义分区的副号码替换 1。
-
将 2 替换为确定重新定义重新定义分区大小的新结束点的大小,从磁盘开始计算。您可以使用大小后缀,如
512MiB
、20GiB
或1.5TiB
。默认的大小是 MB。
查看分区表以确认调整了大小的分区位于分区表中,且大小正确:
# (parted) print
退出
parted
shell:# (parted) quit
验证内核是否注册了新分区:
# cat /proc/partitions
- 可选:如果您扩展了分区,也扩展了它上面的文件系统。
其他资源
-
parted(8)
手册页。 - 使用 parted 在磁盘中创建分区表
- 重新定义 ext3 文件系统大小
- 增加 XFS 文件系统的大小
3.6. 使用 parted 删除分区
使用 parted
实用程序,您可以删除磁盘分区以释放磁盘空间。
删除分区将删除保存在分区中的所有数据。
步骤
启动交互式
parted
shell:# parted block-device
查看当前的分区表以确定要删除的分区的次号:
# (parted) print
删除分区:
# (parted) rm minor-number
- 使用您要删除的分区的副号码替换 minor-number。
输入此命令后,这些更改会立即应用。
验证您是否已从分区表中删除了分区:
# (parted) print
退出
parted
shell:# (parted) quit
验证内核是否注册分区是否已删除:
# cat /proc/partitions
-
如果分区存在,从
/etc/fstab
文件中删除分区。找到声明删除的分区的行,并将其从文件中删除。 重新生成挂载单元,以便您的系统注册新的
/etc/fstab
配置:# systemctl daemon-reload
如果您删除了交换分区或删除 LVM 的部分,请从
/etc/default/grub
文件中内核命令行中删除分区的所有引用,并重新生成 GRUB 配置:在基于 BIOS 的系统中:
# grub2-mkconfig --output=/etc/grub2.cfg
在基于 UEFI 的系统中:
# grub2-mkconfig --output=/etc/grub2-efi.cfg
要在早期引导系统中注册更改,请重建
initramfs
文件系统:# dracut --force --verbose
其他资源
-
parted(8)
手册页
第 4 章 重新分区磁盘策略
重新分区磁盘的方法有多种。包括:
- 有可用的未分区的空闲空间。
- 一个未使用的分区可用。
- 在一个活跃使用的分区中的空闲空间是可用。
为清晰起见,以下示例没有反映在实际安装 Red Hat Enterprise Linux 时的确切分区布局。
4.1. 使用未分区的空闲空间
已定义且没有跨越整个硬盘的分区,保留不属于任何定义的分区的未分配空间。下图显示了这种情况。
图 4.1. 有未分区的可用空间的磁盘

第一个图代表一个带有一个主分区的磁盘以及带有未分配空间的未定义分区。第二个图代表有两个已分配空间的分区的磁盘。
未使用的硬盘也属于这一类别。唯一的区别是,所有 空间并不是任何定义的分区的一部分。
在新磁盘上,您可以从未使用的空间创建必要的分区。大部分预安装的操作系统都被配置为占据磁盘驱动器上所有可用空间。
4.2. 使用未使用分区中的空间
在以下示例中,第一个图代表有未使用分区的磁盘。第二个图代表为 Linux 分配未使用的分区。
图 4.2. 有未使用分区的磁盘

要使用分配给未使用分区的空间,请删除分区,然后创建适当的 Linux 分区。或者,在安装过程中,删除未使用的分区并手动创建新分区。
4.3. 使用活跃分区中的空闲空间
因为已经使用的一个活跃分区包含所需的可用空间,所以此过程可能很难管理。在大多数情况下,预安装软件的计算机的硬盘包含一个大型分区,存放操作系统和数据。
如果要在活跃分区中使用操作系统(OS),您必须重新安装操作系统。请注意,一些计算机可能会包含预安装的软件,不没有提供用于重新安装操作系统的安装介质。在销毁原始分区和操作系统安装前,请检查是否适用于您的操作系统。
要选择使用可用空间,您可以使用破坏性或非破坏性重新分区的方法。
4.3.1. 破坏性重新分区
破坏性重新分区破坏硬盘中的分区并创建几个较小的分区。从原始分区备份所有需要的数据,因为此方法会删除完整内容。
为现有操作系统创建一个较小的分区后,您可以:
- 重新安装软件。
- 恢复您的数据。
- 开始您的 Red Hat Enterprise Linux 安装。
下图显示了使用破坏性重新分区方法的简化形式。
图 4.3. 在磁盘上进行破坏性重新分区动作

这个方法会删除之前存储在原始分区中的所有数据。
4.3.2. 非破坏性重新分区
非破坏性重新分区分区大小,没有任何数据丢失。这个方法是可靠的,但在大型驱动器上需要更长的处理时间。
以下是帮助启动非破坏性重新分区的方法列表。
- 压缩现有数据
无法更改部分数据的存储位置。这可以防止分区大小到所需大小,最终导致破坏性重新分区过程。压缩现有分区中的数据可帮助您调整分区的大小。它还有助于最大程度提高可用空间。
下图显示了此过程的简化形式。
图 4.4. 磁盘中的数据压缩

为了避免任何可能的数据丢失,请在继续压缩过程前创建备份。
- 重新划分现存分区的大小
通过重新定义已存在的分区的大小,您可以释放更多空间。根据您的软件重新定义大小,结果可能会有所不同。在大多数情况下,您可以创建同一类型的新未格式化的分区,与原始分区不同。
调整大小后采取的步骤可以取决于您所使用的软件。在以下示例中,最佳实践是删除新的 DOS(Disk Operating System)分区,而是创建一个 Linux 分区。在启动重新定义大小过程前,验证最适合您的磁盘。
图 4.5. 在磁盘上重新定义分区大小

- 可选:创建新分区
一些可以实现重新调整大小的软件会支持基于 Linux 的系统。在这种情况下,在调整大小后不需要删除新创建的分区。之后创建新分区取决于您使用的软件。
下图显示了创建新分区前和之后的磁盘状态。
图 4.6. 带有最终分区配置的磁盘

第 5 章 配置 iSCSI 目标
Red Hat Enterprise Linux 使用 targetcli
shell 作为命令行界面执行以下操作:
- 添加、删除、查看和监控 iSCSI 存储间的连接来利用 iSCSI 硬件。
- 将由文件、卷、本地 SCSI 设备或者 RAM 磁盘支持的本地存储资源导出到远程系统。
targetcli
工具带有一个基于树形的布局,包括内置的 tab 完成 、自动完成支持和在线文档。
5.1. 安装 targetcli
安装 targetcli
工具来添加、监控和删除 iSCSI 存储间的连接。
步骤
安装
targetcli
工具:# dnf install targetcli
启动目标服务:
# systemctl start target
将目标配置为在引导时启动:
# systemctl enable target
在防火墙中打开端口
3260
,并重新载入防火墙配置:# firewall-cmd --permanent --add-port=3260/tcp Success # firewall-cmd --reload Success
验证
查看
targetcli
布局:# targetcli /> 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]
其他资源
-
targetcli(8)
手册页
5.2. 创建 iSCSI 目标
创建 iSCSI 目标可让客户端的 iSCSI 发起程序访问服务器中的存储设备。目标和发起方都有唯一的标识名称。
先决条件
-
已安装并运行
targetcli
。如需更多信息,请参阅安装 targetcli。
步骤
进入 iSCSI 目录:
/> iscsi/
注意cd
命令用于更改目录以及列出要移动到的路径。使用以下选项之一创建 iSCSI 对象:
使用默认目标名称创建 iSCSI 对象:
/iscsi> create Created target iqn.2003-01.org.linux-iscsi.hostname.x8664:sn.78b473f296ff Created TPG1
使用特定名称创建 iSCSI 对象:
/iscsi> create iqn.2006-04.com.example:444 Created target iqn.2006-04.com.example:444 Created TPG1 Here
iqn.2006-04.com.example:444
is target_iqn_name将 iqn.2006-04.com.example:444 替换为特定目标名称。
验证新创建的目标:
/iscsi> ls o- iscsi.......................................[1 Target] o- iqn.2006-04.com.example:444................[1 TPG] o- tpg1...........................[enabled, auth] o- acls...............................[0 ACL] o- luns...............................[0 LUN] o- portals.........................[0 Portal]
其他资源
-
targetcli(8)
手册页
5.3. iSCSI Backstore
iSCSI 后端存储支持支持在本地计算机上存储导出的 LUN 数据的不同方法。创建存储对象定义了后端存储使用的资源。
管理员可以选择 Linux-IO(LIO)支持的任何后端存储设备:
fileio
后端存储-
如果您将本地文件系统中的常规文件用作磁盘镜像,请创建一个
fileio
存储对象。有关创建fileio
后端存储的信息,请参阅创建 fileio 存储对象。 Block
backstore-
如果您使用任何本地块设备和逻辑设备,请创建一个
块存储
对象。有关创建块
后备存储的信息,请参阅 创建块存储对象。 pscsi
后端存储-
如果您的存储对象支持直接通过 SCSI 命令,请创建一个
pscsi
存储对象。有关创建pscsi
后端存储的信息,请参阅创建 pscsi 存储对象。 ramdisk
后端存储-
如果要创建临时 RAM 支持的设备,请创建一个
ramdisk
存储对象。有关创建ramdisk
后端存储,请参阅创建内存复制 RAM 磁盘存储对象。
其他资源
-
targetcli(8)
手册页
5.4. 创建 fileio 存储对象
fileio
存储对象可以支持 write_back
或 write_thru
操作。write_back
操作启用本地文件系统缓存。这提高了性能,但会增加数据丢失的风险。
建议使用 write_back=false
禁用 write_back
操作来使用 write_thru
操作。
先决条件
-
已安装并运行
targetcli
。如需更多信息,请参阅安装 targetcli。
步骤
从
backstores/
目录中进入fileio/
:/> backstores/fileio
创建
fileio
存储对象:/backstores/fileio> create file1 /tmp/disk1.img 200M write_back=false Created fileio file1 with size 209715200
验证
验证创建的
fileio
存储对象:/backstores/fileio> ls
其他资源
-
targetcli(8)
手册页
5.5. 创建块存储对象
块驱动程序允许使用 /sys/block/
目录中出现的任何块设备来与 Linux-IO(LIO)一起使用。这包括物理设备,如 HDD、SSD、CD 和 DVD,以及逻辑设备,如软件或硬件 RAID 卷、LVM 卷。
先决条件
-
已安装并运行
targetcli
。如需更多信息,请参阅安装 targetcli。
步骤
从
backstores/
目录中进入block/
:/> backstores/block/
创建
块
后备存储:/backstores/block> create name=block_backend dev=/dev/sdb Generating a wwn serial. Created block storage object block_backend using /dev/vdb.
验证
验证创建的
块
存储对象:/backstores/block> ls
注意您还可以在逻辑卷中创建
块
后备存储。
其他资源
-
targetcli(8)
手册页
5.6. 创建 pscsi 存储对象
您可以将任何支持直接传递 SCSI 命令的存储对象配置为没有 SCSI 模拟的后端存储,并带有一个底层 SCSI 设备,它在 /proc/scsi/scsi
中显示带有 lsscsi
(如一个 SAS 硬盘)。这个子系统支持 SCSI-3 及更高系统。
pscsi
应该仅由高级用户使用。高级 SCSI 命令(如 Asymmetric Logical Unit Assignment (ALUAs) 或 Persistent Reservations(例如被 VMware ESX, 和 vSphere 使用))通常不会在设备固件中实施,并可能导致出现故障或崩溃。如果有疑问,请在生产环境中改为使用 block
后端存储。
先决条件
-
已安装并运行
targetcli
。如需更多信息,请参阅安装 targetcli。
步骤
从
backstores/
目录中进入到pscsi/
:/> backstores/pscsi/
为物理 SCSI 设备创建
pscsi
后端存储,本示例中是使用/dev/sr0
的 TYPE_ROM 设备:/backstores/pscsi> create name=pscsi_backend dev=/dev/sr0 Generating a wwn serial. Created pscsi storage object pscsi_backend using /dev/sr0
验证
验证创建的
pscsi
存储对象:/backstores/pscsi> ls
其他资源
-
targetcli(8)
手册页
5.7. 创建内存副本 RAM 磁盘存储对象
Memory Copy RAM 磁盘(ramdisk
)为 RAM 磁盘提供完整的 SCSI 模拟,并使用启动器的内存副本来分隔内存映射。这为多会话提供了功能,在用于生产目的的快速和可变量存储中特别有用。
先决条件
-
已安装并运行
targetcli
。如需更多信息,请参阅安装 targetcli。
步骤
从
backstores/
目录进入到ramdisk/
:/> backstores/ramdisk/
创建 1GB RAM 磁盘后备存储:
/backstores/ramdisk> create name=rd_backend size=1GB Generating a wwn serial. Created rd_mcp ramdisk rd_backend with size 1GB.
验证
验证创建的
ramdisk
存储对象:/backstores/ramdisk> ls
其他资源
-
targetcli(8)
手册页
5.8. 创建 iSCSI 门户
创建 iSCSI 门户,为目标添加一个 IP 地址和端口来启用目标。
先决条件
-
已安装并运行
targetcli
。如需更多信息,请参阅安装 targetcli。 - 与目标门户组(TPG)关联的 iSCSI 目标。如需更多信息,请参阅创建 iSCSI 目标。
步骤
进入 TPG 目录:
/iscsi> iqn.2006-04.example:444/tpg1/
使用以下选项之一创建 iSCSI 门户:
创建默认门户使用默认 iSCSI 端口
3260
,并允许目标侦听该端口上的所有 IP 地址:/iscsi/iqn.20...mple:444/tpg1> portals/ create Using default IP port 3260 Binding to INADDR_Any (0.0.0.0) Created network portal 0.0.0.0:3260
注意当创建 iSCSI 目标时,也会创建一个默认门户网站。这个门户设置为使用默认端口号侦听所有 IP 地址:
0.0.0.0:3260
.要删除默认门户网站,请使用以下命令:
/iscsi/iqn-name/tpg1/portals delete ip_address=0.0.0.0 ip_port=3260
使用特定 IP 地址创建门户:
/iscsi/iqn.20...mple:444/tpg1> portals/ create 192.168.122.137 Using default IP port 3260 Created network portal 192.168.122.137:3260
验证
验证新创建的门户网站:
/iscsi/iqn.20...mple:444/tpg1> ls o- tpg.................................. [enambled, auth] o- acls ......................................[0 ACL] o- luns ......................................[0 LUN] o- portals ................................[1 Portal] o- 192.168.122.137:3260......................[OK]
其他资源
-
targetcli(8)
手册页
5.9. 创建 iSCSI LUN
逻辑单元号(LUN)是一个由 iSCSI 后端存储支持的物理设备。每个 LUN 都有唯一的数字。
先决条件
-
已安装并运行
targetcli
。如需更多信息,请参阅安装 targetcli。 - 与目标门户组(TPG)关联的 iSCSI 目标。如需更多信息,请参阅创建 iSCSI 目标。
- 已创建存储对象。如需更多信息,请参阅 iSCSI Backstore。
步骤
创建已创建的存储对象的 LUN:
/iscsi/iqn.20...mple:444/tpg1> luns/ create /backstores/ramdisk/rd_backend Created LUN 0. /iscsi/iqn.20...mple:444/tpg1> luns/ create /backstores/block/block_backend Created LUN 1. /iscsi/iqn.20...mple:444/tpg1> luns/ create /backstores/fileio/file1 Created LUN 2.
验证创建的 LUN:
/iscsi/iqn.20...mple:444/tpg1> ls o- tpg.................................. [enambled, auth] o- acls ......................................[0 ACL] o- luns .....................................[3 LUNs] | o- lun0.........................[ramdisk/ramdisk1] | o- lun1.................[block/block1 (/dev/vdb1)] | o- lun2...................[fileio/file1 (/foo.img)] o- portals ................................[1 Portal] o- 192.168.122.137:3260......................[OK]
默认 LUN 名称以
0
开头。重要默认情况下,使用读写权限创建 LUN。如果在创建 ACL 后添加了新的 LUN,LUN 会自动映射到所有可用 ACL,并可能导致安全风险。要创建具有只读权限的 LUN,请参阅创建只读 iSCSI LUN。
- 配置 ACL。如需更多信息,请参阅创建 iSCSI ACL。
其他资源
-
targetcli(8)
手册页
5.10. 创建只读 iSCSI LUN
默认情况下,使用读写权限创建 LUN。这个步骤描述了如何创建只读 LUN。
先决条件
-
已安装并运行
targetcli
。如需更多信息,请参阅安装 targetcli。 - 与目标门户组(TPG)关联的 iSCSI 目标。如需更多信息,请参阅创建 iSCSI 目标。
- 已创建存储对象。如需更多信息,请参阅 iSCSI Backstore。
步骤
设置只读权限:
/> set global auto_add_mapped_luns=false Parameter auto_add_mapped_luns is now 'false'.
这样可防止 LUN 自动映射到现有 ACL,从而允许手动映射 LUN。
进入 initiator_iqn_name 目录:
/> iscsi/target_iqn_name/tpg1/acls/initiator_iqn_name/
创建 LUN:
/iscsi/target_iqn_name/tpg1/acls/initiator_iqn_name> create mapped_lun=next_sequential_LUN_number tpg_lun_or_backstore=backstore write_protect=1
例如:
/iscsi/target_iqn_name/tpg1/acls/2006-04.com.example.foo:888> create mapped_lun=1 tpg_lun_or_backstore=/backstores/block/block2 write_protect=1 Created LUN 1. Created Mapped LUN 1.
验证所创建的 LUN:
/iscsi/target_iqn_name/tpg1/acls/2006-04.com.example.foo:888> ls o- 2006-04.com.example.foo:888 .. [Mapped LUNs: 2] | o- mapped_lun0 .............. [lun0 block/disk1 (rw)] | o- mapped_lun1 .............. [lun1 block/disk2 (ro)]
mapping_lun1 行现在在结尾带有(
ro
)(不像 mapping_lun0 为 (rw
)),这表示它是只读的。- 配置 ACL。如需更多信息,请参阅创建 iSCSI ACL。
其他资源
-
targetcli(8)
手册页
5.11. 创建 iSCSI ACL
在 targetcli
中,访问控制列表(ACL)用于定义访问规则,每个启动器都具有对 LUN 独占访问权限。
目标和发起方都有唯一的标识名称。您必须知道配置 ACL 的发起方的唯一名称。iSCSI 启动器可以在 /etc/iscsi/initiatorname.iscsi
文件中找到。
先决条件
-
已安装并运行
targetcli
。如需更多信息,请参阅安装 targetcli。 - 与目标门户组(TPG)关联的 iSCSI 目标。如需更多信息,请参阅创建 iSCSI 目标。
步骤
进入 acls 目录
/iscsi/iqn.20...mple:444/tpg1> acls/
使用以下选项之一创建 ACL:
-
在启动器上使用来自
/etc/iscsi/initiatorname.iscsi
文件中的 initiator 名称。 使用更易于记住的名称,请参阅创建 iSCSI 启动器以确保与启动器匹配的 ACL。
/iscsi/iqn.20...444/tpg1/acls> create iqn.2006-04.com.example.foo:888 Created Node ACL for iqn.2006-04.com.example.foo:888 Created mapped LUN 2. Created mapped LUN 1. Created mapped LUN 0.
注意上一示例中使用的全局设置
auto_add_mapped_lun
会自动将 LUN 映射到任何创建的 ACL。您可以在目标服务器上的 TPG 节点中设置用户创建的 ACL:
/iscsi/iqn.20...scsi:444/tpg1> set attribute generate_node_acls=1
-
在启动器上使用来自
验证
验证创建的 ACL:
/iscsi/iqn.20...444/tpg1/acls> ls o- acls .................................................[1 ACL] o- iqn.2006-04.com.example.foo:888 ....[3 Mapped LUNs, auth] o- mapped_lun0 .............[lun0 ramdisk/ramdisk1 (rw)] o- mapped_lun1 .................[lun1 block/block1 (rw)] o- mapped_lun2 .................[lun2 fileio/file1 (rw)]
其他资源
-
targetcli(8)
手册页
5.12. 为目标设置 Challenge-Handshake 验证协议
通过使用 Challenge-Handshake Authentication Protocol(CHAP)
,用户可以使用密码保护目标。发起方必须了解这个密码才能连接到目标。
先决条件
- 创建 iSCSI ACL。如需更多信息,请参阅创建 iSCSI ACL。
步骤
设置属性身份验证:
/iscsi/iqn.20...mple:444/tpg1> set attribute authentication=1 Parameter authentication is now '1'.
设置
userid
和密码
:/tpg1> set auth userid=redhat Parameter userid is now 'redhat'. /iscsi/iqn.20...689dcbb3/tpg1> set auth password=redhat_passwd Parameter password is now 'redhat_passwd'.
其他资源
-
targetcli(8)
手册页
5.13. 使用 targetcli 工具删除 iSCSI 对象
这个步骤描述了如何使用 targetcli
工具删除 iSCSI 对象。
步骤
从目标登出:
# iscsiadm -m node -T iqn.2006-04.example:444 -u
有关如何登录到目标的更多信息,请参阅创建 iSCSI 启动器。
删除整个目标,包括所有 ACL、LUN 和门户:
/> iscsi/ delete iqn.2006-04.com.example:444
将 iqn.2006-04.com.example:444 替换为 target_iqn_name。
删除 iSCSI 后端存储:
/> backstores/backstore-type/ delete block_backend
-
使用
fileio
、block
、pscsi
或ramdisk
替换 backstore-type。 - 使用您要删除的 backstore-name 替换 block_backend。
-
使用
要删除 iSCSI 目标的部分,如 ACL:
/> /iscsi/iqn-name/tpg/acls/ delete iqn.2006-04.com.example:444
验证
查看更改:
/> iscsi/ ls
其他资源
-
targetcli(8)
手册页
第 6 章 配置 iSCSI initiator
iSCSI 启动程序形成连接 iSCSI 目标的会话。默认情况下,iSCSI 服务是“懒启动” ,服务只在运行 iscsiadm
命令后才启动。如果 root 没有位于 iSCSI 设备,或者没有标记为 node.startup = automatic
的节点,则 iSCSI 服务将不会启动,直到执行 iscsiadm
命令后,需要 iscsid
或 iscsi
内核模块启动。
以 root 用户身份执行 systemctl start iscsid.service
命令,以强制 iscsid
守护进程运行和 iSCSI 内核模块来加载。
6.1. 创建 iSCSI 启动程序
这部分论述了如何创建 iSCSI initiator。
先决条件
-
在服务器计算机上安装并运行
targetcli
。如需更多信息,请参阅安装 targetcli。 - 与服务器机器上目标组(TPG)关联的 iSCSI 目标。如需更多信息,请参阅创建 iSCSI 目标。
- 创建 iSCSI ACL。如需更多信息,请参阅创建 iSCSI ACL。
步骤
在客户端机器上安装
iscsi-initiator-utils
:# dnf install iscsi-initiator-utils
检查 initiator 名称:
# cat /etc/iscsi/initiatorname.iscsi InitiatorName=2006-04.com.example.foo:888
如果在创建 iSCSI ACL 时 ACL 被指定了一个自定义名称,请相应地修改
/etc/iscsi/initiatorname.iscsi
文件。# vi /etc/iscsi/initiatorname.iscsi
发现目标并使用显示的目标 IQN 登录到目标:
# iscsiadm -m discovery -t st -p 10.64.24.179 10.64.24.179:3260,1 iqn.2006-04.example:444 # iscsiadm -m node -T iqn.2006-04.example:444 -l Logging in to [iface: default, target: iqn.2006-04.example:444, portal: 10.64.24.179,3260] (multiple) Login to [iface: default, target: iqn.2006-04.example:444, portal: 10.64.24.179,3260] successful.
将 10.64.24.179 替换为 target-ip-address。
如果将相应的启动器名称添加到 ACL 中,您可以将这个步骤用于连接到同一目标的任意启动器名称,如创建 iSCSI ACL 所述。
找到 iSCSI 磁盘名称并在这个 iSCSI 磁盘中创建文件系统:
# grep "Attached SCSI" /var/log/messages # mkfs.ext4 /dev/disk_name
使用
/var/log/messages
文件中显示的 iSCSI 磁盘名称替换 disk_name。挂载文件系统:
# mkdir /mount/point # mount /dev/disk_name /mount/point
使用分区的挂载点替换 /mount/point。
编辑
/etc/fstab
文件,以便在系统引导时自动挂载文件系统:# vi /etc/fstab /dev/disk_name /mount/point ext4 _netdev 0 0
使用 iSCSI 磁盘名称替换 disk_name,使用分区的挂载点替换 /mount/point。
其他资源
-
targetcli(8)
和iscsiadm(8)
man page
6.2. 为发起方设置 Challenge-Handshake Authentication Protocol
通过使用 Challenge-Handshake Authentication Protocol(CHAP)
,用户可以使用密码保护目标。发起方必须了解这个密码才能连接到目标。
先决条件
- 创建 iSCSI initiator。如需更多信息,请参阅创建 iSCSI 启动器。
-
为目标设置
CHAP
。如需更多信息,请参阅 为目标设置 Challenge-Handshake Authentication Protocol。
步骤
在
iscsid.conf
文件中启用 CHAP 验证:# vi /etc/iscsi/iscsid.conf node.session.auth.authmethod = CHAP
默认情况下,
node.session.auth.authmethod
设置为None
在
iscsid.conf
文件中添加目标用户名
和密码
:node.session.auth.username = redhat node.session.auth.password = redhat_passwd
启动
iscsid
守护进程:# systemctl start iscsid.service
其他资源
-
iscsiadm(8)
man page
6.3. 使用 iscsiadm 程序监控 iSCSI 会话
这个步骤描述了如何使用 iscsiadm
程序监控 iscsi 会话。
默认情况下,iSCSI 服务是懒
启动,服务只在运行 iscsiadm
命令后才启动。如果 root 没有位于 iSCSI 设备,或者没有标记为 node.startup = automatic
的节点,则 iSCSI 服务将不会启动,直到执行 iscsiadm
命令后,需要 iscsid
或 iscsi
内核模块启动。
以 root 用户身份执行 systemctl start iscsid.service
命令,以强制 iscsid
守护进程运行和 iSCSI 内核模块来加载。
步骤
在客户端机器上安装
iscsi-initiator-utils
:# dnf install iscsi-initiator-utils
查找正在运行的会话的信息:
# iscsiadm -m session -P 3
这个命令显示会话或设备状态、会话 ID(sid)、一些协商的参数以及可通过会话访问的 SCSI 设备。
如果只需要简短的输出,例如:只显示
sid-to-node
映射,请运行:# iscsiadm -m session -P 0 or # iscsiadm -m session tcp [2] 10.15.84.19:3260,2 iqn.1992-08.com.netapp:sn.33615311 tcp [3] 10.15.85.19:3260,3 iqn.1992-08.com.netapp:sn.33615311
这些命令以以下格式显示了正在运行的会话列表:
driver [sid] target_ip:port,target_portal_group_tag proper_target_name
。
其他资源
-
/usr/share/doc/iscsi-initiator-utils-version/README
文件 -
iscsiadm(8)
man page
6.4. DM 多路径覆盖设备超时
restore_tmo
sysfs
选项控制一个特定 iSCSI 设备的超时时间。以下选项全局覆盖 recovery_tmo
值:
-
replacement_timeout
配置选项会全局覆盖所有 iSCSI 设备的recovery_tmo
值。 对于由 DM 多路径管理的所有 iSCSI 设备,DM 多路径中的
fast_io_fail_tmo
选项会全局覆盖recovery_tmo
值。DM 多路径中的
fast_io_fail_tmo
选项会覆盖光纤通道设备的fast_io_fail_tmo
选项。
DM 多路径 fast_io_fail_tmo
选项优先于 replacement_timeout
。红帽不推荐使用 replacement_timeout
覆盖由 DM 多路径管理的设备中的 recovery_tmo
,因为在 multipathd
服务重新载入时 DM 多路径总是重置 recovery_tmo
。
第 7 章 使用光纤通道设备
Red Hat Enterprise Linux 9 提供以下原生光纤频道驱动程序:
-
lpfc
-
qla2xxx
-
zfcp
7.1. 重新调整光纤通道逻辑单元的大小
作为系统管理员,您可以重新定义光纤通道逻辑单元大小。
步骤
确定哪些设备是
多路径
逻辑单元的路径:multipath -ll
在使用多路径的系统中重新扫描光纤通道逻辑单元:
$ echo 1 > /sys/block/sdX/device/rescan
其他资源
-
multipath(8)
手册页
7.2. 使用光纤通道确定设备链路丢失行为
如果驱动程序实现了传输 dev_loss_tmo
回调,当检测到传输问题时,通过链接访问设备的尝试将被阻止。
步骤
确定远程端口的状态:
$ cat /sys/class/fc_remote_port/rport-host:bus:remote-port/port_state
这个命令返回以下输出结果之一:
-
当远程端口以及通过它访问的设备被阻止时为
Blocked
。 如果远程端口正常运行,则为
Online
如果在
dev_loss_tmo
秒内没有解决这个问题,则rport
和设备将被取消阻塞。所有在该设备上运行的 I/O 以及发送到该设备的新 I/O 将失败。
-
当远程端口以及通过它访问的设备被阻止时为
当链路丢失超过 dev_loss_tmo
时,会删除 scsi_device
和 sd_N_
设备。通常,光纤通道类会将设备保留原样,即 /dev/sdx
将保留 /dev/sdx
。这是因为目标绑定由 Fibre Channel 驱动程序保存,当目标端口返回时,SCSI 地址会被重新创建。但是,这无法保证,只有在无法进行 LUN 的存储框中配置时,才会恢复 sdx
设备。
其他资源
-
multipath.conf(5)
手册页 - 推荐在 scsi、multipath 和应用程序层进行调优,同时配置 Oracle RAC 集群 知识库文章
7.3. Fibre Channel 配置文件
以下是 /sys/class/
目录中为 Fibre Channel 提供用户空间 API 的配置文件列表。
项目使用以下变量:
H
- 主机号
B
- 总线号
T
- 目标
L
- 逻辑单元(LUN)
R
- 远程端口号
如果您的系统使用多路径软件,红帽建议您在更改本节中描述的任何值前咨询您的硬件供应商。
传输配置 /sys/class/fc_transport/targetH:B:T/
port_id
- 24 位端口 ID/地址
node_name
- 64 位节点名称
port_name
- 64 位端口名称
远程端口配置 /sys/class/fc_remote_ports/rport-H:B-R/
-
port_id
-
node_name
-
port_name
dev_loss_tmo
控制 scsi 设备从系统中删除的时间。在
dev_loss_tmo
触发后,scsi 设备被删除。在multipath.conf
文件中,您可以将dev_loss_tmo
设置为infinity
。在 Red Hat Enterprise Linux 9 中,如果您没有设置
fast_io_fail_tmo
选项,dev_loss_tmo
的上限将为600
秒。默认情况下,在 Red Hat Enterprise Linux 9 中, 如果multipathd
服务正在运行,fast_io_fail_tmo
会被设置为5
秒,如果没有运行,会被设置为off
。fast_io_fail_tmo
指定在将链接标记为"bad"之前要等待的秒数。链接被标记为坏的后,现有正在运行的 I/O 或相应路径上的任何新 I/O 都将失败。
如果 I/O 处于阻塞队列中,则在
dev_loss_tmo
到期前和队列未阻塞前,它不会失败。如果
fast_io_fail_tmo
被设为不是 off 的任何值时,则会取消封dev_loss_tmo
的上限。如果fast_io_fail_tmo
设为 off,则在设备从系统中删除之前不会出现 I/O 失败。如果fast_io_fail_tmo
设置为一个数字,则在达到fast_io_fail_tmo
设置的超时会立即触发 I/O 失败。
主机设置 /sys/class/fc_host/hostH/
-
port_id
-
node_name
-
port_name
issue_lip
指示驱动重新发现远程端口。
7.4. DM 多路径覆盖设备超时
restore_tmo
sysfs
选项控制一个特定 iSCSI 设备的超时时间。以下选项全局覆盖 recovery_tmo
值:
-
replacement_timeout
配置选项会全局覆盖所有 iSCSI 设备的recovery_tmo
值。 对于由 DM 多路径管理的所有 iSCSI 设备,DM 多路径中的
fast_io_fail_tmo
选项会全局覆盖recovery_tmo
值。DM 多路径中的
fast_io_fail_tmo
选项会覆盖光纤通道设备的fast_io_fail_tmo
选项。
DM 多路径 fast_io_fail_tmo
选项优先于 replacement_timeout
。红帽不推荐使用 replacement_timeout
覆盖由 DM 多路径管理的设备中的 recovery_tmo
,因为在 multipathd
服务重新载入时 DM 多路径总是重置 recovery_tmo
。
第 8 章 使用 RDMA 的 NVMe over fabrics
在 NVMe over RDMA(NVMe/RDMA)设置中,您配置 NVMe 目标和 NVMe initiator。
作为系统管理员,完成以下任务来部署 NVMe/RDMA 设置:
8.1. NVMe over fabric 设备概述
Non-volatile Memory Express(NVMe)是一个接口,它允许主机软件实用程序与固态驱动器通信。
使用以下类型的光纤传输来通过光纤设备配置 NVMe:
- NVMe over Remote Direct Memory Access(NVMe/RDMA)
- 有关如何配置 NVMe/RDMA 的详情,请参考使用 RDMA 的 NVMe over fabrics。
- NVMe over Fibre Channel(FC-NVMe)
- 有关如何配置 FC-NVMe 的详情,请参考使用 FC 的 NVMe over fabrics。
当使用 Fibre Channel(FC)和 Remote Direct Memory Access(RDMA)时,固态驱动器不必对您的系统进行本地设置;可以通过 FC 或 RDMA 控制器远程配置。
8.2. 使用 configfs 设置 NVMe/RDMA 目标
使用这个步骤使用 configfs
配置 NVMe/RDMA 目标。
先决条件
-
验证您有一个要分配给
nvmet
子系统的块设备。
步骤
创建
nvmet-rdma
子系统:# modprobe nvmet-rdma # mkdir /sys/kernel/config/nvmet/subsystems/testnqn # cd /sys/kernel/config/nvmet/subsystems/testnqn
使用子系统名称替换 testnqn。
允许任何主机连接到这个目标:
# echo 1 > attr_allow_any_host
配置命名空间:
# mkdir namespaces/10 # cd namespaces/10
使用命名空间号替换 10
设置 NVMe 设备的路径:
# echo -n /dev/nvme0n1 > device_path
启用命名空间:
# echo 1 > enable
创建带有 NVMe 端口的目录:
# mkdir /sys/kernel/config/nvmet/ports/1 # cd /sys/kernel/config/nvmet/ports/1
显示 mlx5_ib0 的 IP 地址:
# ip addr show mlx5_ib0 8: mlx5_ib0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 4092 qdisc mq state UP group default qlen 256 link/infiniband 00:00:06:2f:fe:80:00:00:00:00:00:00:e4:1d:2d:03:00:e7:0f:f6 brd 00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff inet 172.31.0.202/24 brd 172.31.0.255 scope global noprefixroute mlx5_ib0 valid_lft forever preferred_lft forever inet6 fe80::e61d:2d03:e7:ff6/64 scope link noprefixroute valid_lft forever preferred_lft forever
为目标设置传输地址:
# echo -n 172.31.0.202 > addr_traddr
将 RDMA 设置为传输类型:
# echo rdma > addr_trtype # echo 4420 > addr_trsvcid
为端口设置地址系列:
# echo ipv4 > addr_adrfam
创建软链接:
# ln -s /sys/kernel/config/nvmet/subsystems/testnqn /sys/kernel/config/nvmet/ports/1/subsystems/testnqn
验证
验证 NVMe 目标是否在指定端口上侦听并准备好连接请求:
# dmesg | grep "enabling port" [ 1091.413648] nvmet_rdma: enabling port 1 (172.31.0.202:4420)
其他资源
-
nvme(1)
man page
8.3. 使用 nvmetcli 设置 NVMe/RDMA 目标
使用 nvmetcli
实用程序编辑、查看和启动 NVMe 目标。nvmetcli
实用程序提供命令行和交互式 shell 选项。使用这个步骤为 nvmetcli
配置 NVMe/RDMA 目标。
先决条件
-
验证您有一个要分配给
nvmet
子系统的块设备。 -
以 root 用户身份执行以下
nvmetcli
操作。
步骤
安装
nvmetcli
软件包:# dnf install nvmetcli
下载
rdma.json
文件:# wget http://git.infradead.org/users/hch/nvmetcli.git/blob_plain/0a6b088db2dc2e5de11e6f23f1e890e4b54fee64:/rdma.json
-
编辑
rdma.json
文件,并将traddr
值更改为172.31.0.202
。 通过载入 NVMe 目标配置文件来设置目标:
# nvmetcli restore rdma.json
如果没有指定 NVMe 目标配置文件名称,nvmetcli
将使用 /etc/nvmet/config.json
文件。
验证
验证 NVMe 目标是否在指定端口上侦听并准备好连接请求:
# dmesg | tail -1 [ 4797.132647] nvmet_rdma: enabling port 2 (172.31.0.202:4420)
可选:清除当前的 NVMe 目标:
# nvmetcli clear
其他资源
-
nvmetcli
和nvme(1)
man page
8.4. 配置 NVMe/RDMA 客户端
使用这个步骤使用 NVMe 管理命令行界面(nvme-cli
)工具配置 NVMe/RDMA 客户端。
步骤
安装
nvme-cli
工具:# dnf install nvme-cli
如果没有加载,则加载
nvme-rdma
模块:# modprobe nvme-rdma
在 NVMe 目标中发现可用子系统:
# nvme discover -t rdma -a 172.31.0.202 -s 4420 Discovery Log Number of Records 1, Generation counter 2 =====Discovery Log Entry 0====== trtype: rdma adrfam: ipv4 subtype: nvme subsystem treq: not specified, sq flow control disable supported portid: 1 trsvcid: 4420 subnqn: testnqn traddr: 172.31.0.202 rdma_prtype: not specified rdma_qptype: connected rdma_cms: rdma-cm rdma_pkey: 0x0000
连接到发现的子系统:
# nvme connect -t rdma -n testnqn -a 172.31.0.202 -s 4420 # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465.8G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 464.8G 0 part ├─rhel_rdma--virt--03-root 253:0 0 50G 0 lvm / ├─rhel_rdma--virt--03-swap 253:1 0 4G 0 lvm [SWAP] └─rhel_rdma--virt--03-home 253:2 0 410.8G 0 lvm /home nvme0n1 # cat /sys/class/nvme/nvme0/transport rdma
使用 NVMe 子系统名称替换 testnqn。
将 172.31.0.202 替换为目标 IP 地址。
使用端口号替换 4420。
验证
列出当前连接的 NVMe 设备:
# nvme list
可选:断开与目标的连接:
# nvme disconnect -n testnqn NQN:testnqn disconnected 1 controller(s) # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465.8G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 464.8G 0 part ├─rhel_rdma--virt--03-root 253:0 0 50G 0 lvm / ├─rhel_rdma--virt--03-swap 253:1 0 4G 0 lvm [SWAP] └─rhel_rdma--virt--03-home 253:2 0 410.8G 0 lvm /home
其他资源
-
nvme(1)
man page - Nvme-cli Github 软件仓库
第 9 章 使用 FC 的光纤的 NVMe over fabrics
当与特定 Broadcom Emulex 和 Marvell Qlogic Fibre Channel 适配器一起使用时,在 initiator 模式中完全支持 NVMe over Fibre Channel(FC-NVMe)。作为系统管理员,在以下部分中完成任务来部署 FC-NVMe 设置:
9.1. NVMe over fabric 设备概述
Non-volatile Memory Express(NVMe)是一个接口,它允许主机软件实用程序与固态驱动器通信。
使用以下类型的光纤传输来通过光纤设备配置 NVMe:
- NVMe over Remote Direct Memory Access(NVMe/RDMA)
- 有关如何配置 NVMe/RDMA 的详情,请参考使用 RDMA 的 NVMe over fabrics。
- NVMe over Fibre Channel(FC-NVMe)
- 有关如何配置 FC-NVMe 的详情,请参考使用 FC 的 NVMe over fabrics。
当使用 Fibre Channel(FC)和 Remote Direct Memory Access(RDMA)时,固态驱动器不必对您的系统进行本地设置;可以通过 FC 或 RDMA 控制器远程配置。
9.2. 为广播适配器配置 NVMe initiator
使用这个流程,使用 NVMe 管理命令行界面(nvme-cli
)工具为 Broadcom 适配器客户端配置 NVMe initiator。
步骤
安装
nvme-cli
工具:# dnf install nvme-cli
这会在
/etc/nvme/
目录中创建hostnqn
文件。hostn
文件标识 NVMe 主机。要生成新的
hostnqn
,请使用以下命令:# nvme gen-hostnqn
找到本地和远程端口的 WWNN 和 WWPN 标识符,并使用输出查找子系统 NQN:
# cat /sys/class/scsi_host/host*/nvme_info NVME Initiator Enabled XRI Dist lpfc0 Total 6144 IO 5894 ELS 250 NVME LPORT lpfc0 WWPN x10000090fae0b5f5 WWNN x20000090fae0b5f5 DID x010f00 ONLINE NVME RPORT WWPN x204700a098cbcac6 WWNN x204600a098cbcac6 DID x01050e TARGET DISCSRVC ONLINE NVME Statistics LS: Xmt 000000000e Cmpl 000000000e Abort 00000000 LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000 Total FCP Cmpl 00000000000008ea Issue 00000000000008ec OutIO 0000000000000002 abort 00000000 noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr 00000000 err 00000000 FCP CMPL: xb 00000000 Err 00000000
# nvme discover --transport fc \ --traddr nn-0x204600a098cbcac6:pn-0x204700a098cbcac6 \ --host-traddr nn-0x20000090fae0b5f5:pn-0x10000090fae0b5f5 Discovery Log Number of Records 2, Generation counter 49530 =====Discovery Log Entry 0====== trtype: fc adrfam: fibre-channel subtype: nvme subsystem treq: not specified portid: 0 trsvcid: none subnqn: nqn.1992-08.com.netapp:sn.e18bfca87d5e11e98c0800a098cbcac6:subsystem.st14_nvme_ss_1_1 traddr: nn-0x204600a098cbcac6:pn-0x204700a098cbcac6
将 nn-0x204600a098cbcac6:pn-0x204700a098cbcac6 替换为
traddr
。将 nn-0x20000090fae0b5f5:pn-0x10000090fae0b5f5 替换为
host-traddr
。使用
nvme-cli
连接到 NVMe 目标:# nvme connect --transport fc \ --traddr nn-0x204600a098cbcac6:pn-0x204700a098cbcac6 \ --host-traddr nn-0x20000090fae0b5f5:pn-0x10000090fae0b5f5 \ -n nqn.1992-08.com.netapp:sn.e18bfca87d5e11e98c0800a098cbcac6:subsystem.st14_nvme_ss_1_1
将 nn-0x204600a098cbcac6:pn-0x204700a098cbcac6 替换为
traddr
。将 nn-0x20000090fae0b5f5:pn-0x10000090fae0b5f5 替换为
host-traddr
。将 nqn.1992-08.com.netapp:sn.e18bfca87d5e11e98c0800a098cbcac6:subsystem.st14_nvme_ss_1_1 替换为
subnqn
。
验证
列出当前连接的 NVMe 设备:
# nvme list Node SN Model Namespace Usage Format FW Rev ---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- -------- /dev/nvme0n1 80BgLFM7xMJbAAAAAAAC NetApp ONTAP Controller 1 107.37 GB / 107.37 GB 4 KiB + 0 B FFFFFFFF
# lsblk |grep nvme nvme0n1 259:0 0 100G 0 disk
其他资源
-
nvme(1)
man page - Nvme-cli Github 软件仓库
9.3. 为 QLogic 适配器配置 NVMe initiator
使用这个流程,使用 NVMe 管理命令行界面(nvme-cli
)工具为 Qlogic 适配器客户端配置 NVMe initiator。
步骤
安装
nvme-cli
工具:# dnf install nvme-cli
这会在
/etc/nvme/
目录中创建hostnqn
文件。hostn
文件标识 NVMe 主机。要生成新的
hostnqn
,请使用以下命令:# nvme gen-hostnqn
重新载入
qla2xxx
模块:# rmmod qla2xxx # modprobe qla2xxx
查找本地和远程端口的 WWNN 和 WWPN 标识符:
# dmesg |grep traddr [ 6.139862] qla2xxx [0000:04:00.0]-ffff:0: register_localport: host-traddr=nn-0x20000024ff19bb62:pn-0x21000024ff19bb62 on portID:10700 [ 6.241762] qla2xxx [0000:04:00.0]-2102:0: qla_nvme_register_remote: traddr=nn-0x203b00a098cbcac6:pn-0x203d00a098cbcac6 PortID:01050d
使用这些
host-traddr
和traddr
值,查找子系统 NQN:# nvme discover --transport fc \ --traddr nn-0x203b00a098cbcac6:pn-0x203d00a098cbcac6 \ --host-traddr nn-0x20000024ff19bb62:pn-0x21000024ff19bb62 Discovery Log Number of Records 2, Generation counter 49530 =====Discovery Log Entry 0====== trtype: fc adrfam: fibre-channel subtype: nvme subsystem treq: not specified portid: 0 trsvcid: none subnqn: nqn.1992-08.com.netapp:sn.c9ecc9187b1111e98c0800a098cbcac6:subsystem.vs_nvme_multipath_1_subsystem_468 traddr: nn-0x203b00a098cbcac6:pn-0x203d00a098cbcac6
将 nn-0x203b00a098cbcac6:pn-0x203d00a098cbcac6 替换为
traddr
。将 nn-0x20000024ff19bb62:pn-0x21000024ff19bb62 替换为
host-traddr
。使用
nvme-cli
工具连接到 NVMe 目标:# nvme connect --transport fc \ --traddr nn-0x203b00a098cbcac6:pn-0x203d00a098cbcac6 \ --host-traddr nn-0x20000024ff19bb62:pn-0x21000024ff19bb62 \ -n nqn.1992-08.com.netapp:sn.c9ecc9187b1111e98c0800a098cbcac6:subsystem.vs_nvme_multipath_1_subsystem_468
将 nn-0x203b00a098cbcac6:pn-0x203d00a098cbcac6 替换为
traddr
。将 nn-0x20000024ff19bb62:pn-0x21000024ff19bb62 替换为
host-traddr
。将 nqn.1992-08.com.netapp:sn.c9ecc9187b1111e98c0800a098cbcac6:subsystem.vs_nvme_multipath_1_subsystem_468 替换为
subnqn
。
验证
列出当前连接的 NVMe 设备:
# nvme list Node SN Model Namespace Usage Format FW Rev ---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- -------- /dev/nvme0n1 80BgLFM7xMJbAAAAAAAC NetApp ONTAP Controller 1 107.37 GB / 107.37 GB 4 KiB + 0 B FFFFFFFF # lsblk |grep nvme nvme0n1 259:0 0 100G 0 disk
其他资源
-
nvme(1)
man page - Nvme-cli Github 软件仓库
第 10 章 在 NVMe 设备中启用多路径
您可以通过光纤传输(如光纤通道(FC))连接到您的系统的多路径 NVMe 设备。您可以在多个多路径解决方案之间进行选择。
10.1. 本地 NVMe 多路径和 DM 多路径
NVMe 设备支持原生多路径功能。当在 NVMe 中配置多路径时,您可以在标准 DM 多路径和原生 NVMe 多路径之间进行选择。
DM 多路径和原生 NVMe 多路径都支持 NVMe 设备的 Asymmetric Namespace Access(ANA)多路径方案。ANA 识别目标与发起方之间的优化路径并提高性能。
当启用原生 NVMe 多路径时,它会全局地应用于所有 NVMe 设备。它可以提供更高的性能,但不包含 DM 多路径提供的所有功能。例如,原生 NVMe 多路径只支持 故障切换(failover)
和循环(round-robin)
路径选择方法。
默认情况下,Red Hat Enterprise Linux 9 中启用了 NVMe 多路径,也是推荐的多路径解决方案。
10.2. 启用原生 NVMe 多路径
此流程使用原生 NVMe 多路径解决方案在连接的 NVMe 设备中启用多路径。
先决条件
NVMe 设备连接到您的系统。
有关通过光纤传输连接 NVMe 的详情请参考 NVMe over fabric 设备概述。
步骤
检查内核中是否启用了原生 NVMe 多路径:
# cat /sys/module/nvme_core/parameters/multipath
这个命令显示以下之一:
N
- 禁用原生 NVMe 多路径。
Y
- 启用原生 NVMe 多路径。
如果禁用原生 NVMe 多路径,使用以下方法之一启用它:
使用内核选项:
在内核命令行中添加
nvme_core.multipath=Y
选项:# grubby --update-kernel=ALL --args="nvme_core.multipath=Y"
在 64 位 IBM Z 构架中更新引导菜单:
# zipl
- 重启系统。
使用内核模块配置文件:
使用以下内容创建
/etc/modprobe.d/nvme_core.conf
配置文件:options nvme_core multipath=Y
备份
initramfs
文件系统:# cp /boot/initramfs-$(uname -r).img \ /boot/initramfs-$(uname -r).bak.$(date +%m-%d-%H%M%S).img
重建
initramfs
文件系统:# dracut --force --verbose
- 重启系统。
可选:在运行的系统中,更改 NVMe 设备中的 I/O 策略,以便在所有可用路径中分发 I/O:
# echo "round-robin" > /sys/class/nvme-subsystem/nvme-subsys0/iopolicy
可选:使用
udev
规则永久设置 I/O 策略。使用以下内容创建/etc/udev/rules.d/71-nvme-io-policy.rules
文件:ACTION=="add|change", SUBSYSTEM=="nvme-subsystem", ATTR{iopolicy}="round-robin"
验证
检查您的系统是否识别 NVMe 设备:
# nvme list Node SN Model Namespace Usage Format FW Rev ---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- -------- /dev/nvme0n1 a34c4f3a0d6f5cec Linux 1 250.06 GB / 250.06 GB 512 B + 0 B 4.18.0-2 /dev/nvme0n2 a34c4f3a0d6f5cec Linux 2 250.06 GB / 250.06 GB 512 B + 0 B 4.18.0-2
列出所有连接的 NVMe 子系统:
# nvme list-subsys nvme-subsys0 - NQN=testnqn \ +- nvme0 fc traddr=nn-0x20000090fadd597a:pn-0x10000090fadd597a host_traddr=nn-0x20000090fac7e1dd:pn-0x10000090fac7e1dd live +- nvme1 fc traddr=nn-0x20000090fadd5979:pn-0x10000090fadd5979 host_traddr=nn-0x20000090fac7e1dd:pn-0x10000090fac7e1dd live +- nvme2 fc traddr=nn-0x20000090fadd5979:pn-0x10000090fadd5979 host_traddr=nn-0x20000090fac7e1de:pn-0x10000090fac7e1de live +- nvme3 fc traddr=nn-0x20000090fadd597a:pn-0x10000090fadd597a host_traddr=nn-0x20000090fac7e1de:pn-0x10000090fac7e1de live
检查活动传输类型。例如,
nvme0 fc
表示设备通过光纤通道传输连接,nvme tcp
则表示设备通过 TCP 连接。如果您编辑了内核选项,请检查内核命令行中是否启用了原生 NVMe 多路径:
# cat /proc/cmdline BOOT_IMAGE=[...] nvme_core.multipath=Y
检查 DM 多路径报告了 NVMe 命名空间为,例如:
nvme0c0c0n1
到nvme0c3n1
,而不是,例如:nvme0n1
到nvme3n1
:# multipath -e -ll | grep -i nvme uuid.8ef20f70-f7d3-4f67-8d84-1bb16b2bfe03 [nvme]:nvme0n1 NVMe,Linux,4.18.0-2 | `- 0:0:1 nvme0c0n1 0:0 n/a optimized live | `- 0:1:1 nvme0c1n1 0:0 n/a optimized live | `- 0:2:1 nvme0c2n1 0:0 n/a optimized live `- 0:3:1 nvme0c3n1 0:0 n/a optimized live uuid.44c782b4-4e72-4d9e-bc39-c7be0a409f22 [nvme]:nvme0n2 NVMe,Linux,4.18.0-2 | `- 0:0:1 nvme0c0n1 0:0 n/a optimized live | `- 0:1:1 nvme0c1n1 0:0 n/a optimized live | `- 0:2:1 nvme0c2n1 0:0 n/a optimized live `- 0:3:1 nvme0c3n1 0:0 n/a optimized live
如果您更改了 I/O 策略,请检查
round-robin
是 NVMe 设备中的活跃 I/O 策略:# cat /sys/class/nvme-subsystem/nvme-subsys0/iopolicy round-robin
其他资源
10.3. 在 NVMe 设备中启用 DM 多路径
这个过程使用 DM 多路径解决方案在连接的 NVMe 设备中启用多路径。
先决条件
NVMe 设备连接到您的系统。
有关通过光纤传输连接 NVMe 的详情请参考 NVMe over fabric 设备概述。
步骤
检查是否禁用了原生 NVMe 多路径:
# cat /sys/module/nvme_core/parameters/multipath
这个命令显示以下之一:
N
- 禁用原生 NVMe 多路径。
Y
- 启用原生 NVMe 多路径。
如果启用了原生 NVMe 多路径,请禁用它:
在内核命令行中删除
nvme_core.multipath=Y
选项:# grubby --update-kernel=ALL --remove-args="nvme_core.multipath=Y"
在 64 位 IBM Z 构架中更新引导菜单:
# zipl
-
如果存在,从
/etc/modprobe.d/nvme_core.conf
文件中删除options nvme_core multipath=Y
行。 - 重启系统。
确保启用了 DM 多路径:
# systemctl enable --now multipathd.service
在所有可用路径中分发 I/O。在
/etc/multipath.conf
文件中添加以下内容:device { vendor "NVME" product ".*" path_grouping_policy group_by_prio }
注意当 DM 多路径管理 NVMe 设备时,
/sys/class/nvme-subsys0/iopolicy
配置文件不会影响 I/O 分发。重新载入
multipathd
服务以应用配置更改:# multipath -r
备份
initramfs
文件系统:# cp /boot/initramfs-$(uname -r).img \ /boot/initramfs-$(uname -r).bak.$(date +%m-%d-%H%M%S).img
重建
initramfs
文件系统:# dracut --force --verbose
验证
检查您的系统是否识别 NVMe 设备:
# nvme list Node SN Model Namespace Usage Format FW Rev ---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- -------- /dev/nvme0n1 a34c4f3a0d6f5cec Linux 1 250.06 GB / 250.06 GB 512 B + 0 B 4.18.0-2 /dev/nvme0n2 a34c4f3a0d6f5cec Linux 2 250.06 GB / 250.06 GB 512 B + 0 B 4.18.0-2 /dev/nvme1n1 a34c4f3a0d6f5cec Linux 1 250.06 GB / 250.06 GB 512 B + 0 B 4.18.0-2 /dev/nvme1n2 a34c4f3a0d6f5cec Linux 2 250.06 GB / 250.06 GB 512 B + 0 B 4.18.0-2 /dev/nvme2n1 a34c4f3a0d6f5cec Linux 1 250.06 GB / 250.06 GB 512 B + 0 B 4.18.0-2 /dev/nvme2n2 a34c4f3a0d6f5cec Linux 2 250.06 GB / 250.06 GB 512 B + 0 B 4.18.0-2 /dev/nvme3n1 a34c4f3a0d6f5cec Linux 1 250.06 GB / 250.06 GB 512 B + 0 B 4.18.0-2 /dev/nvme3n2 a34c4f3a0d6f5cec Linux 2 250.06 GB / 250.06 GB 512 B + 0 B 4.18.0-2
列出所有连接的 NVMe 子系统。检查命令报告为
nvme0n1
到nvme3n2
,而不是,例如:nvme0c0c0n1
到nvme0c3n1
:# nvme list-subsys nvme-subsys0 - NQN=testnqn \ +- nvme0 fc traddr=nn-0x20000090fadd5979:pn-0x10000090fadd5979 host_traddr=nn-0x20000090fac7e1dd:pn-0x10000090fac7e1dd live +- nvme1 fc traddr=nn-0x20000090fadd597a:pn-0x10000090fadd597a host_traddr=nn-0x20000090fac7e1dd:pn-0x10000090fac7e1dd live +- nvme2 fc traddr=nn-0x20000090fadd5979:pn-0x10000090fadd5979 host_traddr=nn-0x20000090fac7e1de:pn-0x10000090fac7e1de live +- nvme3 fc traddr=nn-0x20000090fadd597a:pn-0x10000090fadd597a host_traddr=nn-0x20000090fac7e1de:pn-0x10000090fac7e1de live
# multipath -ll mpathae (uuid.8ef20f70-f7d3-4f67-8d84-1bb16b2bfe03) dm-36 NVME,Linux size=233G features='1 queue_if_no_path' hwhandler='0' wp=rw `-+- policy='service-time 0' prio=50 status=active |- 0:1:1:1 nvme0n1 259:0 active ready running |- 1:2:1:1 nvme1n1 259:2 active ready running |- 2:3:1:1 nvme2n1 259:4 active ready running `- 3:4:1:1 nvme3n1 259:6 active ready running mpathaf (uuid.44c782b4-4e72-4d9e-bc39-c7be0a409f22) dm-39 NVME,Linux size=233G features='1 queue_if_no_path' hwhandler='0' wp=rw `-+- policy='service-time 0' prio=50 status=active |- 0:1:2:2 nvme0n2 259:1 active ready running |- 1:2:2:2 nvme1n2 259:3 active ready running |- 2:3:2:2 nvme2n2 259:5 active ready running `- 3:4:2:2 nvme3n2 259:7 active ready running
第 11 章 swap 入门
这部分论述了 swap 空间以及如何添加和删除它。
11.1. swap 空间概述
当物理内存(RAM)已满时,将使用 Linux 中的 交换空间。如果系统需要更多的内存资源并且 RAM 已满,内存中的不活动页面将移到交换空间。虽然交换空间可以帮助具有少量 RAM 的计算机,但不应将其视为更多 RAM 的替代品。
交换空间位于硬盘驱动器上,其访问时间比物理内存要慢。交换空间可以是专用的交换分区(推荐)、交换文件,或者交换分区和交换文件的组合。
过去数年,推荐的 swap 空间会随系统中的 RAM 量增加而线性增大。然而,现代系统通常包含了成百 GB 内存。因此,推荐的交换空间被视为系统内存工作负载的功能,而不是系统内存的功能。
- 添加 swap 空间
以下是添加 swap 空间的不同方法:
- 在 LVM2 逻辑卷中扩展 swap
- 为 swap 创建 LVM2 逻辑卷
例如,您可以将系统中的 RAM 量从 1 GB 升级到 2 GB,但只有 2 GB 的交换空间。如果您执行内存密集型操作或运行需要大量内存的应用程序,则最好将交换空间大小增加到 4 GB。
- 删除 swap 空间
以下是删除 swap 空间的不同方法:
- 在 LVM2 逻辑卷中减少 swap
- 为 swap 删除 LVM2 逻辑卷
例如:您将系统中的 RAM 大小从 1GB 降到 512MB,但仍分配了 2GB swap 空间。最好将交换空间大小减少到 1 GB,因为较大的 2 GB 可能会浪费磁盘空间。
11.2. 推荐的系统 swap 空间
这部分论述了推荐的 swap 分区大小,具体取决于系统中的 RAM 量以及是否有足够的内存供系统休眠。推荐的 swap 分区会在安装过程中自动建立。但是,为了允许休眠,您需要在自定义分区阶段编辑交换空间。
在内存不足(如 1 GB 和 less )的系统中,以下推荐尤其重要。无法在这些系统中分配足够 swap 空间可能会导致问题,如不稳定,甚至会导致安装的系统无法引导。
表 11.1. 推荐的 swap 空间
系统中的 RAM 量 | 推荐的 swap 空间 | 如果允许休眠则推荐使用 swap 空间 |
---|---|---|
⩽ 2 GB | RAM 量的 2 倍 | RAM 量的 3 倍 |
> 2 GB – 8 GB | 与 RAM 量相等 | RAM 量的 2 倍 |
> 8 GB – 64 GB | 至少 4 GB | RAM 量的 1.5 倍 |
> 64 GB | 至少 4 GB | 不推荐休眠 |
在此表中列出的每个范围之间的边界(例如,带有 2 GB、8 GB 或 64 GB 系统 RAM 的系统),可以根据选项的交换空间和休眠支持进行判断。如果您的系统资源允许这样做,增加交换空间可能会导致更好的性能。
请注意,将交换空间分布到多个存储设备也可以提高交换空间的性能,特别是在具有快速驱动器、控制器和接口的系统上。
在修改时,不应 使用分配被为交换空间的文件系统和 LVM2 卷。如果系统进程或内核正在使用交换空间,则任何修改交换的尝试都会失败。使用 free
和 cat /proc/swaps
命令验证交换的使用量以及位置。
重新定义 swap 空间大小需要临时从系统中删除 swap 空间。如果运行的应用程序依赖于额外的 swap 空间,且可能会遇到低内存情况,这可能会出现问题。最好是,在救援模式中执行 swap 大小调整,请参阅执行高级 RHEL 9 安装中的 的 Debug 引导选项。当提示挂载文件系统时,请选择 Skip。
11.3. 在 LVM2 逻辑卷中扩展 swap
这个步骤描述了如何在现有 LVM2 逻辑卷中扩展 swap 空间。假设 /dev/VolGroup00/LogVol01 是您要将其扩展为 2 GB 的卷。
先决条件
- 您有足够的磁盘空间。
步骤
为关联的逻辑卷禁用交换:
# swapoff -v /dev/VolGroup00/LogVol01
将 LVM2 逻辑卷调整为 2 GB :
# lvresize /dev/VolGroup00/LogVol01 -L +2G
格式化新 swap 空间:
# mkswap /dev/VolGroup00/LogVol01
启用扩展的逻辑卷:
# swapon -v /dev/VolGroup00/LogVol01
验证
要测试是否成功扩展和激活 swap 逻辑卷,请使用以下命令检查活跃 swap 空间:
$ cat /proc/swaps $ free -h
11.4. 为 swap 创建 LVM2 逻辑卷
这个步骤描述了如何为 swap 创建 LVM2 逻辑卷。假设 /dev/VolGroup00/LogVol02 是您要添加的交换卷。
先决条件
- 您有足够的磁盘空间。
步骤
创建大小为 2 GB 的 LVM2 逻辑卷:
# lvcreate VolGroup00 -n LogVol02 -L 2G
格式化新 swap 空间:
# mkswap /dev/VolGroup00/LogVol02
在
/etc/fstab
文件中添加以下条目:/dev/VolGroup00/LogVol02 swap swap defaults 0 0
重新生成挂载单元以便您的系统注册新配置:
# systemctl daemon-reload
在逻辑卷中激活 swap:
# swapon -v /dev/VolGroup00/LogVol02
验证
要测试是否成功创建并激活 swap 逻辑卷,请使用以下命令检查活跃 swap 空间:
$ cat /proc/swaps $ free -h
11.5. 创建交换文件
这个步骤描述了如何创建交换文件。
先决条件
- 您有足够的磁盘空间。
步骤
- 以 MB 为单位确定新交换文件的大小,再乘以 1024 来确定块的数量。例如: 64MB swap 文件的块大小为 65536。
创建一个空文件:
# dd if=/dev/zero of=/swapfile bs=1024 count=65536
使用与所需块大小相等的值替换 65536。
使用以下命令设定 swap 文件:
# mkswap /swapfile
更改交换文件的安全性,使其不可读。
# chmod 0600 /swapfile
使用以下条目编辑
/etc/fstab
文件,以在引导时启用交换文件:/swapfile swap swap defaults 0 0
下次系统引导时,它会激活新的 swap 文件。
重新生成挂载单元,以便您的系统注册新的
/etc/fstab
配置:# systemctl daemon-reload
立即激活 swap 文件:
# swapon /swapfile
验证
要测试新 swap 文件是否已成功创建并激活,请使用以下命令检查活跃 swap 空间:
$ cat /proc/swaps $ free -h
11.6. 在 LVM2 逻辑卷中减少 swap
这个步骤描述了如何在 LVM2 逻辑卷中减少交换。假设 /dev/VolGroup00/LogVol01 是您要缩小的卷。
步骤
为关联的逻辑卷禁用交换:
# swapoff -v /dev/VolGroup00/LogVol01
将 LVM2 逻辑卷减少 512 MB:
# lvreduce /dev/VolGroup00/LogVol01 -L -512M
格式化新 swap 空间:
# mkswap /dev/VolGroup00/LogVol01
在逻辑卷中激活 swap:
# swapon -v /dev/VolGroup00/LogVol01
验证
要测试是否成功缩小 swap 逻辑卷,请使用以下命令检查活跃 swap 空间:
$ cat /proc/swaps $ free -h
11.7. 为 swap 删除 LVM2 逻辑卷
这个步骤描述了如何为 swap 删除 LVM2 逻辑卷。假设 /dev/VolGroup00/LogVol02 是您要删除的交换卷。
步骤
为关联的逻辑卷禁用交换:
# swapoff -v /dev/VolGroup00/LogVol02
删除 LVM2 逻辑卷:
# lvremove /dev/VolGroup00/LogVol02
从
/etc/fstab
文件中删除以下关联的条目:/dev/VolGroup00/LogVol02 swap swap defaults 0 0
重新生成挂载单元以便您的系统注册新配置:
# systemctl daemon-reload
验证
要测试逻辑卷是否已成功删除,请使用以下命令检查活跃 swap 空间:
$ cat /proc/swaps $ free -h
11.8. 删除交换文件
这个步骤描述了如何删除交换文件。
步骤
在 shell 提示下,执行以下命令禁用交换文件,其中
/swapfile
是交换文件:# swapoff -v /swapfile
-
相应地从
/etc/fstab
文件中删除其条目。 重新生成挂载单元以便您的系统注册新配置:
# systemctl daemon-reload
删除实际的文件:
# rm /swapfile
第 12 章 使用以太网配置光纤
根据 IEEE T11 FC-BB-5 标准,使用以太网(FCoE)的光纤通道是通过以太网传输光纤通道帧的协议。通常数据中心有一个专用的 LAN 和 Storage Area Network(SAN),它和它们自己的配置是相互分开的。FCoE 将这些网络合并为一个整合的网络结构。例如 FCoE 的优点是降低硬件和能源成本。
12.1. 在 RHEL 中使用硬件 FCoE HBA
在 RHEL 中,您可以使用以太网的硬件光纤通道(FCoE)主机总线适配器(HBA),这些驱动程序支持以下驱动程序:
-
qedf
-
bnx2fc
-
fnic
如果您使用这样的 HBA,在 HBA 设置中配置 FCoE 设置。如需更多信息,请参阅适配器文档。
配置 HBA 后,从 Storage Area Network(SAN)中导出的逻辑单元号(LUN)将自动用于 RHEL 作为 /dev/sd*
设备。您可以使用类似本地存储设备的设备。
12.2. 设置软件 FCoE 设备
使用软件 FCoE 设备通过 FCoE 访问逻辑单元号(LUN),它使用部分支持 FCoE 卸载的以太网适配器。
RHEL 不支持需要 fcoe.ko
内核模块的软件 FCoE 设备。
完成此步骤后,RHEL 会自动从 Storage Area Network(SAN)导出的 LUN 作为 /dev/sd*
设备。您可以使用类似本地存储设备的方法使用这些设备。
先决条件
- 您已将网络交换机配置为支持 VLAN。
- SAN 使用 VLAN 来将存储流量与普通以太网流量分开。
- 您已在其 BIOS 中配置了服务器的 HBA。
- HBA 连接至网络,连接是在线的。如需更多信息,请参阅您的 HBA 文档。
步骤
安装
fcoe-utils
软件包:# dnf install fcoe-utils
将
/etc/fcoe/cfg-ethx
模板文件复制到/etc/fcoe/cfg-interface_name
。例如,如果要将enp1s0
接口配置为使用 FCoE,请输入以下命令:# cp /etc/fcoe/cfg-ethx /etc/fcoe/cfg-enp1s0
启用并启动
fcoe
服务:# systemctl enable --now fcoe
在接口
enp1s0
中发现 FCoE VLAN,为发现的 VLAN 创建网络设备,并启动启动器:# fipvlan -s -c enp1s0 Created VLAN device enp1s0.200 Starting FCoE on interface enp1s0.200 Fibre Channel Forwarders Discovered interface | VLAN | FCF MAC ------------------------------------------ enp1s0 | 200 | 00:53:00:a7:e7:1b
可选:显示发现的目标、LUN 和与 LUN 关联的设备详情:
# fcoeadm -t Interface: enp1s0.200 Roles: FCP Target Node Name: 0x500a0980824acd15 Port Name: 0x500a0982824acd15 Target ID: 0 MaxFrameSize: 2048 bytes OS Device Name: rport-11:0-1 FC-ID (Port ID): 0xba00a0 State: Online LUN ID Device Name Capacity Block Size Description ------ ----------- ---------- ---------- --------------------- 0 sdb 28.38 GiB 512 NETAPP LUN (rev 820a) ...
本例显示 SAN 中的 LUN 0 已作为
/dev/sdb
设备附加到主机中。
验证
显示所有活跃 FCoE 接口的信息:
# fcoeadm -i Description: BCM57840 NetXtreme II 10 Gigabit Ethernet Revision: 11 Manufacturer: Broadcom Inc. and subsidiaries Serial Number: 000AG703A9B7 Driver: bnx2x Unknown Number of Ports: 1 Symbolic Name: bnx2fc (QLogic BCM57840) v2.12.13 over enp1s0.200 OS Device Name: host11 Node Name: 0x2000000af70ae935 Port Name: 0x2001000af70ae935 Fabric Name: 0x20c8002a6aa7e701 Speed: 10 Gbit Supported Speed: 1 Gbit, 10 Gbit MaxFrameSize: 2048 bytes FC-ID (Port ID): 0xba02c0 State: Online
其他资源
-
fcoeadm(8)
手册页 -
/usr/share/doc/fcoe-utils/README
- 使用光纤通道设备
第 13 章 管理磁带设备
磁带设备是保存数据并按顺序访问的磁带。使用磁带驱动器将数据写入此磁带设备。不需要创建文件系统来存储磁带设备中的数据。可以使用各种接口(如 SCSI、FC、USB、SATA 和其他接口)连接到主机计算机。
13.1. 磁带设备的类型
以下是不同类型的磁带设备列表:
-
/dev/st0
是一个回卷磁带设备。 -
/dev/nst0
是一个非回卷磁带设备。使用非缓解设备进行日常备份。
使用磁带设备有几个优点。它们成本效益高且稳定。磁带设备也对数据崩溃具有弹性,并适合长久保存数据。
13.2. 安装磁带驱动器管理工具
使用 mt
命令返回数据。mt
实用程序控制 magnetic 磁带驱动器操作,而 st
程序则用于 SCSI 磁带驱动程序。这个步骤描述了如何为磁带驱动器操作安装 mt-st
软件包。
步骤
安装
mt-st
软件包:# dnf install mt-st
其他资源
-
mt(1)
和st(4)
man pages
13.3. 写入如回卷磁带设备
在每次操作后,回卷磁带设备会进行回卷。要备份数据,您可以使用 tar
命令。默认情况下,在磁带设备中,块大小为
10KB(bs=10k
)。您可以使用 export
属性来设置 TAPE 环境变量。使用 TAPE
=/dev/st0-f
设备选项指定磁带设备文件。当您使用多个磁带设备时,这个选项很有用。
先决条件
-
已安装
mt-st
软件包。如需更多信息,请参阅安装磁带驱动器管理工具。 加载磁带驱动器:
# mt -f /dev/st0 load
步骤
检查磁带头:
# mt -f /dev/st0 status SCSI 2 tape drive: File number=-1, block number=-1, partition=0. Tape block size 0 bytes. Density code 0x0 (default). Soft error count since last status=0 General status bits on (50000): DR_OPEN IM_REP_EN
在这里:
-
当前
文件号
为 -1。 -
块编号
定义磁带头。默认情况下,它被设置为 -1。 -
块大小
0 表示磁带设备没有固定的块大小。 -
软错误数
表示在执行 mt status 命令后遇到的错误数量。 -
General status 位
解释了磁带设备的状态。 -
DR_OPEN
表示公开,磁带设备为空。IM_REP_EN
是即时报告模式。
-
当前
如果磁带设备不是空的,覆盖它:
# tar -czf /dev/st0 _/source/directory
该命令使用
/source/directory
目录的内容覆盖 tape 设备中的数据将
/source/directory
目录备份到磁带设备中:# tar -czf /dev/st0 _/source/directory tar: Removing leading `/' from member names /source/directory /source/directory/man_db.conf /source/directory/DIR_COLORS /source/directory/rsyslog.conf [...]
查看磁带设备的状态:
# mt -f /dev/st0 status
验证步骤
查看磁带设备上的所有文件列表:
# tar -tzf /dev/st0 /source/directory/ /source/directory/man_db.conf /source/directory/DIR_COLORS /source/directory/rsyslog.conf [...]
其他资源
-
mt(1)
,st(4)
, 和tar(1)
man pages - 磁带驱动器介质被识别为带有写保护 Red Hat 知识库文章
- 如何在系统 Red Hat Knowlegebase 文章中探测到磁带驱动器
13.4. 写入非回卷解磁带设备
在完成特定命令后,非回卷磁带设备会将磁带保持在当前位置。例如,备份后,您可以将更多数据附加到非回卷的磁带设备中。您还可以使用它来避免任何意外的回卷。
先决条件
-
已安装
mt-st
软件包。如需更多信息,请参阅安装磁带驱动器管理工具。 加载磁带驱动器:
# mt -f /dev/nst0 load
步骤
检查非回卷磁带设备
/dev/nst0
的磁带头:# mt -f /dev/nst0 status
指定位于头或磁带末尾的指针:
# mt -f /dev/nst0 rewind
附加磁带设备中的数据:
# mt -f /dev/nst0 eod # tar -czf /dev/nst0 /source/directory/
将
/source/directory/
备份到磁带设备中:# tar -czf /dev/nst0 /source/directory/ tar: Removing leading `/' from member names /source/directory/ /source/directory/man_db.conf /source/directory/DIR_COLORS /source/directory/rsyslog.conf [...]
查看磁带设备的状态:
# mt -f /dev/nst0 status
验证步骤
查看磁带设备上的所有文件列表:
# tar -tzf /dev/nst0 /source/directory/ /source/directory/man_db.conf /source/directory/DIR_COLORS /source/directory/rsyslog.conf [...]
其他资源
-
mt(1)
,st(4)
, 和tar(1)
man pages - 磁带驱动器介质被识别为带有写保护 Red Hat 知识库文章
- 如何在系统 Red Hat Knowlegebase 文章中探测到磁带驱动器
13.5. 在磁带设备中切换磁带头
使用以下步骤切换磁带设备中的磁带头。
先决条件
-
已安装
mt-st
软件包。如需更多信息,请参阅安装磁带驱动器管理工具。 - 数据被写入磁带设备。如需更多信息,请参阅写入回卷磁带设备,或写入非回卷磁带设备。
步骤
查看磁带指针的当前位置:
# mt -f /dev/nst0 tell
在将数据附加到磁带设备时切换磁带头:
# mt -f /dev/nst0 eod
使用之前的记录:
# mt -f /dev/nst0 bsfm 1
转至正向记录:
# mt -f /dev/nst0 fsf 1
其他资源
-
mt(1)
man page
13.6. 从磁带设备中恢复数据
要从磁带设备中恢复数据,请使用 tar
命令。
先决条件
-
已安装
mt-st
软件包。如需更多信息,请参阅安装磁带驱动器管理工具。 - 数据被写入磁带设备。如需更多信息,请参阅写入回卷磁带设备,或写入非回卷磁带设备。
步骤
对于回卷磁带设备
/dev/st0
:恢复
/source/directory/
:# tar -xzf /dev/st0 /source/directory/
对于非回卷磁带设备
/dev/nst0
:重新构建磁带设备:
# mt -f /dev/nst0 rewind
恢复
etc
目录:# tar -xzf /dev/nst0 /source/directory/
其他资源
-
mt(1)
和tar(1)
man pages
13.7. 从磁带设备中删除数据
要从磁带设备中删除数据,使用 erase
选项。
先决条件
-
已安装
mt-st
软件包。如需更多信息,请参阅安装磁带驱动器管理工具。 - 数据被写入磁带设备。如需更多信息,请参阅写入回卷磁带设备,或写入非回卷磁带设备。
步骤
从磁带设备中删除数据:
# mt -f /dev/st0 erase
卸载磁带设备:
mt -f /dev/st0 offline
其他资源
-
mt(1)
man page
13.8. 磁带命令
以下是常见的 mt
命令:
表 13.1. mt 命令
命令 | 描述 |
---|---|
| 显示磁带设备的状态。 |
| 擦除整个磁带。 |
| 插入磁带设备。 |
| 将磁带头切换到转发记录。在这里,n 是一个可选的文件数。如果指定了文件计数,磁带头将跳过 n 个记录。 |
| 将磁头切换到之前的记录。 |
| 将磁带头切换到数据的末尾。 |