管理存储设备
大约 149 分钟
管理存储设备
来源:官方文档 原始多页入口:管理存储设备 内容规模:约 138,022 字符,189 个章节标题,583 个命令/代码块,61 条提示框
阅读提要
- 副标题:配置和管理本地和远程存储设备
- 摘要:Red Hat Enterprise Linux (RHEL)提供了几个本地和远程存储选项。使用可用的存储选项,您可以执行以下任务: 创建一个独立磁盘冗余阵列(RAID),来在多个驱动器上存储数据,并避免数据丢失。 使用 iSCSI 和 Fabrics 上的 NVMe 通过网络访问存储。 设置 Stratis 来管理物理存储设备的池。
- 主要章节:配置和管理本地和远程存储设备;对红帽文档提供反馈;第 1 章 可用存储选项概述;第 2 章 持久性命名属性;第 3 章 磁盘分区;第 4 章 分区入门;第 5 章 重新分区磁盘策略;第 6 章 配置 iSCSI 目标;第 7 章 配置 iSCSI initiator;第 8 章 使用光纤通道设备;第 9 章 NVMe over fabric 设备概述;第 10 章 使用 NVMe/RDMA 配置 NVMe over fabrics
- 推荐阅读顺序:先看“阅读提要”和目录,再按章节查看“关键点/命令/注意”;需要原文细节时点击来源链接。
章节笔记
概览
- 该章节主要为下一级主题的入口。
配置和管理本地和远程存储设备
- 要点:摘要
- 列表:创建一个独立磁盘冗余阵列(RAID),来在多个驱动器上存储数据,并避免数据丢失。
- 列表:使用 iSCSI 和 Fabrics 上的 NVMe 通过网络访问存储。
- 列表:设置 Stratis 来管理物理存储设备的池。
对红帽文档提供反馈
- 要点:我们致力于为您提供高质量的文档,您的反馈将对我们有很大帮助。为帮助我们改进,您可以通过 Red Hat Jira 跟踪系统提交建议或报告错误。
- 要点:流程
- 列表:登录到 Jira 网站。 如果您还没有帐户,请创建一个。
- 列表:单击顶部导航栏中的 Create。
- 列表:在 Summary 字段中输入描述性标题。
- 列表:在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 列表:点窗口底部的 Create。
第 1 章 可用存储选项概述
- 要点:Red Hat Enterprise Linux 中可用的本地、远程和基于集群的存储选项。有直接附加的存储设备和远程存储可通过 LAN、互联网或光纤通道网络访问。
- 要点:本地存储意味着存储设备安装在系统上,或者直接附加到系统。
1.1. 本地存储概述
- 要点:本地存储指的是安装在或直接附加到您的系统中的存储设备。这包括您可以在没有网络连接的情况下管理的磁盘分区、逻辑卷和文件系统。
- 要点:Red Hat Enterprise Linux 10 提供了多个本地存储选项。
- 列表:扩展 VDO 卷
- 列表:通过多个设备生成 VDO 卷
1.2. 远程存储概述
- 要点:远程存储允许通过网络连接(如 LAN、互联网或光纤通道)访问存储设备。这可让您集中存储资源,并在多个系统中共享它们。
- 要点:以下是 RHEL 10 中提供的远程存储选项:
- 列表:lpfc
- 列表:qla2xxx
- 列表:zfcp
- 列表:使用远程直接内存访问(NVMe/RDMA)的 NVMe over fabrics
- 列表:使用光纤通道(NVMe/FC)的 NVMe over fabrics
- 列表:使用 TCP (NVMe/TCP)的 NVMe over fabrics
第 2 章 持久性命名属性
- 要点:持久性命名属性(PNA)根据唯一硬件特性提供稳定、可预测的设备识别。它们确保系统重启后一致的命名和硬件更改。
- 要点:您识别和管理存储设备的方式确保了系统的稳定性和可预测性。
- 列表:即使系统重启后,其内容保持唯一的目录: by-id :基于硬件属性,使用 vendor/model/serial_string 组合。 按路径 :基于物理硬件放置。对于物理附加到机器的设备或磁盘,这是指连接点。它是连接到主板上的主机总线的插槽或端口。但是,对于通过网络连接的设备或磁盘,这包含网络地址规范。 by-partlabel :基于分配给设备分区的标签。这些标签由用户分配。 by-partuuid :基于自动生成的 UUID 形式的唯一数字。 by-uuid :基于自动生成的 UUID 形式的唯一数字。
- 列表:by-id :基于硬件属性,使用 vendor/model/serial_string 组合。
- 列表:按路径 :基于物理硬件放置。对于物理附加到机器的设备或磁盘,这是指连接点。它是连接到主板上的主机总线的插槽或端口。但是,对于通过网络连接的设备或磁盘,这包含网络地址规范。
- 列表:by-partlabel :基于分配给设备分区的标签。这些标签由用户分配。
- 列表:by-partuuid :基于自动生成的 UUID 形式的唯一数字。
- 列表:by-uuid :基于自动生成的 UUID 形式的唯一数字。
2.1. 用于识别文件系统和块设备的持久属性
- 要点:在 RHEL 10 存储中,持久性命名属性(PNA)是一致的设备命名机制。它们在系统启动时保持可靠性、硬件更改或其他事件。
- 要点:这些属性用于一致地识别存储设备,即使存储设备被添加、被删除或被重新配置。PNA 用于识别文件系统和块设备,但它们的用途不同:
- 列表:通用唯一标识符(UUID) UUID 主要用于唯一识别存储设备上的文件系统。每个文件系统实例都会自动分配自己的 UUID。即使卸载、重新挂载文件系统或者设备被分离并重新附加,这个标识符也会保持不变。
- 列表:标签 标签是用户为文件系统分配的名称。虽然它们可以用来识别和引用文件系统,但它们并不像 UUID 那样标准化。由于用户分配文件系统标签,所以其唯一性取决于他们的选择。标签通常用作 UUID 的替代方法,用来在配置文件中指定文件系统。 当您为文件系统分配标签时,它会成为文件系统元数据的一部分。这个标签与文件系统保持关联,即使文件系统被卸载了、重新挂载了或者设备被分离了和重新连接了。
- 列表:通用唯一标识符(UUID) UUID 可用于识别存储块设备。当存储设备被格式化时,通常会为设备本身分配一个 UUID。此类 UUID 通常会被生成,并分配给在其他块设备之上分层的虚拟块设备。实际设备处于底部级别。例如,基于设备映射器(DM)的设备和相关子系统,如逻辑卷管理器(LVM)和 crypt,使用 UUID 进行设备识别。示例包括逻辑卷 UUID (LVUUID)和 crypt UUID。 此外,基于多设备(MD)的设备都分配了 UUID。虚拟设备通常也使用组件 UUID 标记底层设备。例如,LVM 使用物理卷 UUID (PVUUID)标记其底层设备。MD 使用 MD 组件 UUID 标记其底层设备。 这些 UUID 嵌在…
- 列表:标签或名称标签或名称也可以分配给特定的块设备。这适用于有用户分配的标签的分区。某些虚拟块设备,如基于设备映射器(DM)的设备和基于多设备(MD)的设备也使用名称来识别设备。
- 列表:全球标识符(WWID) WWID 包括了一组与存储块设备或存储组件关联的全局唯一标识符。它们通常用于企业级存储区域网络(SAN),如光纤通道(FC),用于标识存储节点。示例包括节点全球节点名称(WWNN),以及用于端口或与存储设备连接的 World Wide Port Name (WWPN)。WWID 确保服务器和 SAN 存储设备之间的一致通信,并帮助管理存储设备的冗余路径。 其他类型的设备也可能使用 WWID 形式,如 NVME 设备。这些设备不一定需要通过网络或 SAN 访问。它们也不必是企业级设备。 WWID 格式不遵循单一的标准。例如,SCSI 使用 NAA、T10 和 EUI 等格式。NVME 使用 EUI-64、NG…
- 列表:序列字符串 序列字符串是制造商分配给每个存储块设备的唯一标识符。它可以区分存储设备,并可与其他属性(如 UUID 或 WWID)结合使用,以进行设备管理。 在 udev 规则和 /dev/disk/by-id 内容中,'short serial string' 代表设备报告的实际串行字符串。而"序列字符串"由几个组件组成,通常为 <bus_type>-<vendor_name><model_name><short_serial_string>。 实际设备首选 wwids 和序列字符串。对于虚拟设备,首选 UUID 或名称。
2.2. udev 设备命名规则
- 要点:用户空间设备管理器(udev)子系统允许您为设备分配持久名称定义规则。这些规则存储在带有 .rules 扩展名的文件中。
- 要点:有两个存储 udev 规则的主要位置:
- 列表:/usr/lib/udev/rules.d/ 目录包含安装的软件包附带的默认规则。
- 列表:/etc/udev/rules.d 目录用于自定义 udev 规则。
- 列表:可访问性计时:在 udev 查询时可能无法访问一些存储设备。
- 列表:基于事件的处理:内核可以随时发送 udev 事件,如果设备无法访问,可能会触发规则处理和链接删除。
- 列表:处理延迟:事件生成和处理之间可能会有延迟,特别是大量设备。这会导致内核检测和链接可用性间进行滞后。
- 列表:设备可访问性:udev 规则调用的外部程序(如 blkid )可能会短暂打开该设备,使其他任务暂时无法访问它。
- 注意:注意 如果修改了 /usr/lib/udev/rules.d/ 中的规则,它将在更新过程中被软件包的规则文件所覆盖。因此,任何手动或自定义规则都应添加到 /etc/udev/rules.d 中,它在其中一直保留,直到明确删除为止。在使用前,两个目录中的 udev 规则会被合并。如果 /etc/udev/rules.d 中的规则与 /usr/lib/udev/rules.d/ 中的规则的名称相同,则前者优先。
- 表格样本(共 18 行):
- 设备类型 | 非持久名称(内核名称) | 持久符号链接名称
- 真实设备
- nvme (Non-Volatile Memory Express) | /dev/nvme* | /dev/disk/by-id/nvme-<wwid> /dev/disk/by-id/nvme-<model><serial><nsid>
- SCSI (小型计算机系统接口) | /dev/sd*, /dev/sr* | /dev/disk/by-id/scsi-<model><serial> /dev/disk/by-id/wwn-<wwn> /dev/disk/by-id/usb-<vendor><model><serial>-<instance> /dev/disk/by-id/ieee1394-<ieee1394_id> /dev/disk/by-path/ip-<ip_address>:<ip_port>-iscsi-<nqi_name>-lun_lun> /dev/disk/by-id/scsi-0<vendor><model>_<id> /dev/disk/by-id/scsi-1<t10_vendor_id> /dev/disk/by-id/scsi-2<eui64_id> /dev/disk/by-id/scsi-3<naa_regext_id> /dev/disk/by-id/scsi-3<naa_reg_id> /dev/disk/by-id/scsi-3<naa_ext_id> /dev/disk/by-id/scsi-3<naa_local_id> /dev/disk/by-id/scsi-8<name> /dev/disk/by-id/scsi-S<vendor>_model>
2.2.1. 获取现有设备的设备链接值
- 要点:您可以从当前 udev 数据库获取现有设备的设备链接值。
- 要点:先决条件
- 列表:设备存在且连接到系统。
- 列表:列出 /dev 下现有设备的到基本内核设备节点(DEVNAME)的所有分配的设备符号链接(DEVLINKS): # udevadm info --name /dev/nvme0n1 --query property --property DEVLINKS --value /dev/disk/by-path/pci-0000:00:02.0-nvme-1 /dev/disk/by-diskseq/6 /dev/disk/by-id/nvme-QEMU_NVMe_Ctrl_nvme-1_1 /dev/disk/by-id/nvme-QEMU_NVMe_Ctrl_nvme-1 /dev/disk/by-id/nvme-QEMU_NVMe…
- 列表:您还可以使用以下命令获得所有 devlink 指向的基本内核名称: # udevadm info --name /dev/nvme0n1 --query property --property DEVNAME --value /dev/nvme0n1 内核名称和其任何 devlink 可以互换使用。
- 列表:您可以使用以下命令之一获取 devlink 的完整列表: # udevadm info --name /dev/disk/by-id/nvme-nvme.8086-6e766d652d31-51454d55204e564d65204374726c-00000001 --query property --property DEVLINKS --value /dev/disk/by-id/nvme-QEMU_NVMe_Ctrl_nvme-1 /dev/disk/by-diskseq/6 /dev/disk/by-id/nvme-nvme.8086-6e766d652d31-51454d55204e564d65204374726c-00…
- 命令/配置摘录:
# udevadm info --name /dev/nvme0n1 --query property --property DEVLINKS --value
/dev/disk/by-path/pci-0000:00:02.0-nvme-1 /dev/disk/by-diskseq/6 /dev/disk/by-id/nvme-QEMU_NVMe_Ctrl_nvme-1_1 /dev/disk/by-id/nvme-QEMU_NVMe_Ctrl_nvme-1 /dev/disk/by-id/nvme-QEMU_NVMe_Ctrl_nvme-1-ns-1 /dev/disk/by-id/nvme-nvme.8086-6e766d652d31-51454d55204e564d65204374726c-00000001第 3 章 磁盘分区
- 要点:磁盘分区基本内容包括分区表、MBR 与 GPT 比较、分区类型、命名方案和挂载点。您可以将磁盘划分为逻辑区域,以进行单独的管理。
- 要点:要将磁盘分成一个或多个逻辑区域,请使用磁盘分区实用程序。这可以对每个分区进行独立的管理。
3.1. 分区概述
- 要点:磁盘分区将物理存储设备划分为独立的部分,每个部分都可被操作系统视为独立的磁盘。这可以更好地组织、安全性和您的数据和系统文件。
- 要点:硬盘在分区表中保存每个磁盘分区的位置和大小信息。使用分区表中的信息,操作系统会将每个分区视为一个逻辑磁盘。磁盘分区的一些优点包括:
- 列表:帮助防止管理物理存储时的错误
- 列表:保证有足够的备份
- 列表:提供有效的磁盘管理
3.2. 分区表类型比较
- 要点:分区表类型有不同的属性,包括最大分区数和大小,GUID 分区表和主引导记录格式支持不同的配置。
- 要点:下表比较您可以在块设备中创建的不同类型的分区表的属性。
- 列表:在 IBM Z 中配置 Linux 实例
- 列表:您需要了解的 DASD 的信息
- 注意:注意 本节不涵盖 DASD 分区表,它特定于 IBM Z 构架。
- 表格样本(共 3 行):
- 分区表 | 最多分区数 | 最大分区大小
- GUID 分区表(GPT) | 128 | 8 ZiB 如果使用 512 b 扇区驱动器,如果使用 4 k 扇区驱动器 64 ZiB
- 主引导记录(MBR) | 4 个主分区,或 3 个主分区以及 1 个有 56 个逻辑分区的扩展分区 | 如果使用 4 个 k sector 驱动器,使用 512 b 扇区驱动器时 2 TiB
3.3. GUID 分区表
- 要点:GUID 分区表(GPT)是基于全局唯一标识符(GUID)的分区方案。
- 要点:GPT 处理 Mater Boot Record (MBR)分区表的限制。MBR 分区表无法处理大于 2 TiB 的存储,相当于大约 2.2 TB。相反,GPT 支持容量较大的硬盘。
- 列表:为了向后兼容 MBR 磁盘,系统为 MBR 数据保留 GPT 的第一个扇区(LBA 0)。这称为"保护 MBR"。
- 列表:主 GPT 标头从设备的第二个逻辑块(LBA 1)开始。标头包含磁盘 GUID、主分区表和二级 GPT 标头的位置,以及其自身和主分区表的 CRC32 checksums。它还指定表上的分区条目数目。 默认情况下,主 GPT 包含 128 个分区条目。每个分区的条目大小为 128 字节、分区类型 GUID 和唯一的分区 GUID。
- 列表:标头从设备的第二个逻辑块(LBA 1)开始。标头包含磁盘 GUID、主分区表和二级 GPT 标头的位置,以及其自身和主分区表的 CRC32 checksums。它还指定表上的分区条目数目。
- 列表:默认情况下,主 GPT 包含 128 个分区条目。每个分区的条目大小为 128 字节、分区类型 GUID 和唯一的分区 GUID。
- 列表:二级 GPT 对于恢复,当主分区表格损坏时,备份表非常有用。 最后一个逻辑扇区包含二级 GPT 标头,并在主标头损坏时恢复 GPT 信息。 它包含: 磁盘 GUID 二级分区表和主 GPT 标头的位置 自身的 CRC32 checksums 二级分区表 可能的分区条目数
- 列表:对于恢复,当主分区表格损坏时,备份表非常有用。
- 注意:注意 GPT 有基于 GUID 的分区类型。某些分区需要特定的 GUID。例如,可扩展固件接口(EFI)引导装载程序的系统分区需要 GUID C12A7328-F81F-11D2-BA4B-00A0C93EC93B。
- 注意:重要 要在 BIOS 兼容模式的 BIOS 系统或 UEFI 系统的 GPT 磁盘中安装引导装载程序,必须存在 BIOS 引导分区。
3.4. MBR 磁盘分区
- 要点:分区表保存在磁盘的最开始,任何文件系统或用户数据都会保存在它的后面。
- 要点:为了更明确的显示,下图中的不同分区表分开显示。
- 列表:磁盘上分区启动和结束的点
- 列表:分区的状态,因为只有一个分区可以被标记为 活跃分区
- 列表:分区的类型
- 列表:表示特定的文件系统类型
- 列表:将分区标记为与特定操作系统关联的
- 列表:指明分区包含可引导操作系统
3.5. 扩展 MBR 分区
- 要点:要创建额外分区(如果需要),请将类型设置为 extended。扩展分区类似于磁盘驱动器。它有自己的分区表,指向一个或多个逻辑分区,完全包含在扩展分区中。
- 要点:下图显示了一个磁盘驱动器,它有两个主分区和一个包含两个逻辑分区(以及一些未分区的可用空间)的扩展分区:
3.6. MBR 分区类型
- 要点:主引导记录分区类型使用特定的十六进制标识符来指定块设备上不同的文件系统和分区目的。
- 要点:下表显示了一些最常用的 MBR 分区类型和用于代表它们的十六进制数字。
- 表格样本(共 10 行):
- MBR 分区类型 | value
- 空 | 00
- Extended | 05
- Linux swap | 82
3.7. 分区类型
- 要点:主分区类型和支持实用程序,如 fdisk 和 parted-define、识别和管理存储布局。分区标志和 GUID 控制 Linux 环境中的文件系统使用、引导选项和设备兼容性。
- 要点:管理分区类型的方法有多种:
- 列表:fdisk 工具通过指定十六进制代码来支持所有的分区类型。
- 列表:systemd-gpt-auto-generator (单位生成器程序程序)使用分区类型自动识别和挂载设备。
- 列表:parted 实用程序使用 flags 对分区类型进行映射。parted 工具只处理某些分区类型,如 LVM、swap 或 RAID。 parted 实用程序支持设置以下标记: boot root swap hidden raid lvm lba legacy_boot irst esp palo
- 列表:boot
- 列表:root
- 列表:swap
3.8. 分区命名方案
- 要点:Red Hat Enterprise Linux 使用基于文件的命名方案,其文件名采用 /dev/xxyN 的形式。
- 要点:设备和分区名称由以下结构组成:
- 注意:注意 即使 Red Hat Enterprise Linux 可以识别和引用 所有类型的磁盘分区,它可能无法读取文件系统,因此无法访问分区类型中保存的数据。然而,在很多情况下,成功访问专用于另一个操作系统的分区中的数据是可能的。
3.9. 挂载点和磁盘分区
- 要点:在 Red Hat Enterprise Linux 中,每个分区都被用来成为支持一组文件和目录所必需的存储的一部分。挂载分区会导致该分区的存储可用,从指定目录开始,称为挂载点。
- 要点:例如,如果分区 /dev/sda5 挂载在 /usr/ 上,这意味着 /usr/ 下的所有文件和目录都在 /dev/sda5 上。文件 /usr/share/doc/FAQ/txt/Linux-FAQ 位于 /dev/sda5 中,而文件 /etc/gdm/custom.conf 不在。
第 4 章 分区入门
- 要点:磁盘分区将磁盘分成多个逻辑区域,以便可以独立处理每个磁盘。硬盘在分区表中保存位置和大小数据。操作系统将每个分区视为一个单独的逻辑磁盘,从而单独允许读写操作。
4.1. 使用 parted 在磁盘中创建分区表
- 要点:在磁盘上创建一个分区表,以定义将存储空间组织到单独的、可管理的部分的布局。您可以使用这个步骤为不同的目的和操作系统创建多个分区。
- 要点:流程
- 列表:启动交互式 parted shell: # parted block-device
- 列表:确定该设备中是否已有一个分区表: (parted) print 如果设备已经包含分区,则以下步骤中会删除它们。
- 列表:创建新分区表: (parted) mklabel table-type 使用预期的分区表类型替换 table-type : 用于主引导记录(MBR)的 msdos 用于 GUID 分区表(GPT)的 GPT 例如,要在磁盘上创建一个 GPT 表,请使用: (parted) mklabel gpt 在输入以下命令后,这些更改将开始应用。
- 列表:使用预期的分区表类型替换 table-type : 用于主引导记录(MBR)的 msdos 用于 GUID 分区表(GPT)的 GPT 例如,要在磁盘上创建一个 GPT 表,请使用: (parted) mklabel gpt 在输入以下命令后,这些更改将开始应用。
- 列表:用于主引导记录(MBR)的 msdos
- 列表:用于 GUID 分区表(GPT)的 GPT 例如,要在磁盘上创建一个 GPT 表,请使用: (parted) mklabel gpt 在输入以下命令后,这些更改将开始应用。
- 命令/配置摘录:
# parted block-device
(parted) print- 注意:警告 使用分区表格式化块设备会删除该设备中所有存储的数据。
4.2. 查看使用 parted 的分区表
- 要点:显示块设备的分区表,以查看分区布局和单个分区的详情。您可以使用 parted 工具查看块设备上的分区表。如需更多信息,请参阅您系统上的 parted (8) 手册页。
- 要点:流程
- 列表:启动 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 2…
- 列表:可选:切换到您要检查的设备: (parted) select block-device 有关打印命令输出的详细描述,请查看以下信息: 模型:ATA SAMSUNG MZNLN256(scsi) 磁盘类型、制造商、型号号和接口。 磁盘 /dev/sda: 256GB 块设备的文件路径和存储容量。 分区表:msdos 磁盘标签类型。 Number 分区号。例如,次号 1 的分区对应于 /dev/sda1。 Start 和 End 在分区启动和结束的设备中的位置。 Type 有效类型为 metadata、free、primary、extended 或 logical。 File system 文件系统类型。如果设备的 File syst…
- 命令/配置摘录:
# parted /dev/sda
(parted) print4.3. 使用 parted 创建分区
- 要点:创建新磁盘分区,以有效地组织存储空间,并分隔不同类型的数据。您可以为系统文件、用户数据和交换空间配置专用区域。
- 要点:先决条件
- 列表:磁盘上的分区表。
- 列表:如果要创建大于 2 TiB 的分区,请使用 GUID 分区表(GPT) 格式化磁盘。
- 列表:启动 parted 工具: # parted block-device
- 列表:查看当前的分区表来确定是否有足够空闲空间: (parted) print 如果分区没有足够的可用空间,则调整分区大小。 从分区表中决定: 新分区的开始和结束点。 在 MBR 上,应该是什么分区类型。
- 列表:如果分区没有足够的可用空间,则调整分区大小。
- 列表:从分区表中决定: 新分区的开始和结束点。 在 MBR 上,应该是什么分区类型。
- 命令/配置摘录:
# parted block-device
(parted) print- 注意:注意 所需分区是 swap、/boot/ 和 /(root)。
4.4. 使用 fdisk 设置分区类型
- 要点:您可以使用 fdisk 工具设置分区类型或标志。
- 要点:先决条件
- 列表:磁盘上的一个分区。
- 列表:启动交互式 fdisk shell: # fdisk block-device
- 列表:查看当前的分区表以确定副分区号码: Command (m for help): print 您可以在 Type 列中看到当前的分区类型,在 Id 列中看到相应的类型 ID 。
- 列表:输入分区类型命令并使用其次编号选择一个分区: Command (m for help): type Partition number (1-3, default 3): 2
- 列表:可选:显示分区类型: 对于有 MBR 分区表的磁盘: Hex code or alias (type L to list all codes): L 对于有 GPT 分区表的磁盘: Partition type or alias (type L to list all): L
- 列表:对于有 MBR 分区表的磁盘: Hex code or alias (type L to list all codes): L
- 命令/配置摘录:
# fdisk block-device
Command (m for help): print4.5. 使用 parted 重新定义分区大小
- 要点:使用 parted 工具扩展分区以使用未使用的磁盘空间,或者缩小分区以将其容量用于不同的目的。如需更多信息,请参阅您系统上的 parted (8) 手册页。
- 要点:先决条件
- 列表:在缩小分区前备份数据。
- 列表:如果要创建大于 2 TiB 的分区,请使用 GUID 分区表(GPT) 格式化磁盘。
- 列表:如果您想缩小分区,首先缩小文件系统,使其不大于重新定义大小的分区。
- 列表:启动 parted 工具: # parted block-device
- 列表:查看当前的分区表: (parted) print 从分区表中决定: 分区的副号码。 调整大小后现有分区的位置和新结束点。 重要 当调整分区大小时,请确保要调整大小的分区末尾和下一个分区的开始,或磁盘的末尾(如果其是最后一个分区)之间有足够的未分配空间。如果没有足够的空间,parted 将返回一个错误。但是,最好在尝试调整大小之前验证可用空间,以避免分区重叠。
- 列表:分区的副号码。
- 命令/配置摘录:
# parted block-device
(parted) print- 注意:注意 XFS 不支持缩小。
- 注意:重要 当调整分区大小时,请确保要调整大小的分区末尾和下一个分区的开始,或磁盘的末尾(如果其是最后一个分区)之间有足够的未分配空间。如果没有足够的空间,parted 将返回一个错误。但是,最好在尝试调整大小之前验证可用空间,以避免分区重叠。
4.6. 使用 parted 删除分区
- 要点:删除不必要的磁盘分区,以为其他目的回收存储空间。您可以使用此操作重组磁盘布局,消除未使用的分区,并优化系统上的存储利用率。
- 要点:流程
- 列表:启动交互式 parted shell: # parted block-device 使用您要删除分区的设备的路径替换 block-device :例如 /dev/sda。
- 列表:使用您要删除分区的设备的路径替换 block-device :例如 /dev/sda。
- 列表:查看当前的分区表以确定要删除的分区的次号: (parted) print
- 列表:删除分区: (parted) rm partition-number 使用您要删除的分区号替换 partition-number。 输入此命令后,这些更改会立即应用。
- 列表:使用您要删除的分区号替换 partition-number。
- 列表:验证您是否已从分区表中删除了分区: (parted) print
- 命令/配置摘录:
# parted block-device
(parted) print- 注意:重要 要删除 /proc/cmdline 中提到的分区,或者作为逻辑卷管理器(LVM)的一部分,请参阅 配置和管理逻辑卷,以及 dracut (8) 和 grubby (8) 手册页。
第 5 章 重新分区磁盘策略
- 要点:大多数 RHEL 系统使用 LVM 管理存储空间。您还可以使用 parted、fdisk 或其他图形工具进行磁盘分区。重新分区可以使用未分区的空闲空间、未使用的分区或可用空间从活跃分区中回收。
- 注意:注意 以下示例提供了分区技术的一般概述。为清晰起见,对它们进行了简化,并没有反映典型的 Red Hat Enterprise Linux 安装过程中确切的分区布局。
5.1. 使用未分区的空闲空间
- 要点:已定义且不会跨越整个硬盘的分区,请保留未分配的空间。这个空间不是任何定义的分区的一部分。
- 要点:未使用的硬盘也属于这一类别。唯一的区别是,所有 空间并不是任何定义的分区的一部分。
5.2. 使用未使用分区中的空间
- 要点:要使用分配给未使用分区的空间,请删除分区,然后创建适当的 Linux 分区。或者,在安装过程中,删除未使用的分区并手动创建新分区。
5.3. 使用活跃分区中的空闲空间
- 要点:如果所需的可用空间位于已在使用的活跃分区上,则管理此过程可能比较困难。大多数预安装软件的计算机都有一个大型分区,其中包含操作系统和用户数据。
- 要点:要选择使用可用空间,您可以使用破坏性或非破坏性重新分区的方法。
- 注意:警告 如果您尝试调整或修改包含操作系统(OS)的活动分区,则丢失数据或使操作系统无法引导的风险。因此,在某些情况下,您可能需要重新安装操作系统。在继续操作前,请检查您的系统是否包含恢复或安装介质。
5.3.1. 破坏性重新分区
- 要点:破坏性重新分区会破坏硬盘上的分区,并在其位置上创建新分区。备份原始分区中任何需要的数据,因为此方法会删除全部内容。
- 要点:从现有操作系统创建新分区后,您可以:
- 列表:重新安装软件。
- 列表:恢复您的数据。
- 注意:警告 这个方法会删除之前存储在原始分区中的所有数据。
5.3.2. 非破坏性重新分区
- 要点:非破坏性重新分区分区大小,没有任何数据丢失。这个方法是可靠的,但在大型驱动器上需要更长的处理时间。
- 要点:以下是帮助启动非破坏性重新分区的方法列表。
- 列表:重新组织现有数据
- 列表:重新划分现存分区的大小
- 列表:可选:创建新分区
- 注意:注意 调整大小和创建分区可能因您使用的工具而异,如 parted、GParted。具体说明请参考工具的文档。
第 6 章 配置 iSCSI 目标
- 要点:使用 targetcli 配置 iSCSI 目标,以导出本地存储资源,包括文件、卷、SCSI 设备和 RAM 磁盘。涵盖后端存储创建、门户设置、LUN 配置和验证。
- 要点:Red Hat Enterprise Linux 使用 targetcli shell 作为命令行界面执行以下操作:
- 列表:添加、删除、查看和监控 iSCSI 存储间的连接以使用 iSCSI 硬件。
- 列表:将由文件、卷、本地 SCSI 设备或者 RAM 磁盘支持的本地存储资源导出到远程系统。
6.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 O…
- 命令/配置摘录:
# dnf install targetcli
# systemctl start target6.2. 创建 iSCSI 目标
- 要点:创建一个 iSCSI 目标,以提供客户端可以远程连接到的网络可访问的存储。此配置允许您通过网络共享存储资源,并为多个系统集中管理。
- 要点:先决条件
- 列表:已安装并运行 targetcli。如需更多信息,请参阅安装 targetcli。
- 列表:导航到 iSCSI 目录。您也可以使用 cd 命令导航到 iSCSI 目录。 /> iscsi/
- 列表:使用以下选项之一创建 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 将 iqn.2006-04.com.example:444 替换为特定目标名称。
- 列表:使用默认目标名称创建 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 将 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 P…
- 命令/配置摘录:
/> iscsi/
/iscsi> create6.3. iSCSI Backstore
- 要点:iSCSI 后端存储支持支持在本地计算机上存储导出的 LUN 数据的不同方法。创建存储对象定义了后端存储使用的资源。
- 要点:管理员可以选择 Linux-IO(LIO)支持的任何后端存储设备:
6.4. 创建 fileio 存储对象
- 要点:fileio 存储对象支持 write_back 或 write_thru 操作。write_back 使用本地文件系统缓存,提高性能,但会增加数据丢失风险。要使用 write_thru,请设置 write_back=false。
- 要点:先决条件
- 列表:已安装并运行 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
- 命令/配置摘录:
/> backstores/fileio
/backstores/fileio> create file1 /tmp/disk1.img 200M write_back=false6.5. 创建块存储对象
- 要点:块驱动程序允许使用 /sys/block/ 目录中出现的任何块设备来与 Linux-IO(LIO)一起使用。这包括物理设备,如 HDD、SSD、CD 和 DVD,以及逻辑设备,如软件或硬件 RAID 卷或 LVM 卷。
- 要点:先决条件
- 列表:已安装并运行 targetcli。
- 列表:从 backstores/ 目录中进入 block/: /> backstores/block/
- 列表:创建 块 后备存储: /backstores/block> create name=block_backend dev=/dev/sdb Created block storage object block_backend using /dev/sdb.
- 列表:验证创建的块存储对象: /backstores/block> ls
- 列表:安装 targetcli
- 命令/配置摘录:
/> backstores/block/
/backstores/block> create name=block_backend dev=/dev/sdb6.6. 创建 pscsi 存储对象
- 要点:您可以将任何支持直接传递 SCSI 命令而无需 SCSI 仿真的存储对象,且带有使用 lsscsi 在 /proc/scsi/scsi 中显示的底层 SCSI 设备(如 SAS 硬盘)配置为后备存储。这个子系统支持 SCSI-3 及更高系统。
- 要点:先决条件
- 列表:已安装并运行 targetcli。
- 列表:从 backstores/ 目录中进入到 pscsi/ : /> backstores/pscsi/
- 列表:为物理 SCSI 设备创建 pscsi 后端存储,本示例中是使用 /dev/sr0 的 TYPE_ROM 设备: /backstores/pscsi> create name=pscsi_backend dev=/dev/sr0 Created pscsi storage object pscsi_backend using /dev/sr0
- 列表:验证创建的 pscsi 存储对象: /backstores/pscsi> ls
- 列表:安装 targetcli
- 命令/配置摘录:
/> backstores/pscsi/
/backstores/pscsi> create name=pscsi_backend dev=/dev/sr0 Created pscsi storage object pscsi_backend using /dev/sr0- 注意:警告 pscsi 应该仅由高级用户使用。高级 SCSI 命令(如 Asymmetric Logical Unit Assignment (ALUAs) 或 Persistent Reservations(例如被 VMware ESX, 和 vSphere 使用))通常不会在设备固件中实施,并可能导致出现故障或崩溃。如果有疑问,请在生产环境中改为使用 block 后端存储。
6.7. 创建内存副本 RAM 磁盘存储对象
- 要点:Memory Copy RAM 磁盘(ramdisk)为 RAM 磁盘提供完整的 SCSI 模拟,并使用启动器的内存副本来分隔内存映射。这为多会话提供了功能,在用于生产目的的快速和可变量存储中特别有用。
- 要点:先决条件
- 列表:已安装并运行 targetcli。
- 列表:从 backstores/ 目录进入到 ramdisk/ : /> backstores/ramdisk/
- 列表:创建 1GB RAM 磁盘后备存储: /backstores/ramdisk> create name=rd_backend size=1GB Created ramdisk rd_backend with size 1GB.
- 列表:验证创建的 ramdisk 存储对象: /backstores/ramdisk> ls
- 列表:安装 targetcli
- 命令/配置摘录:
/> backstores/ramdisk/
/backstores/ramdisk> create name=rd_backend size=1GB6.8. 创建 iSCSI 门户
- 要点:您可以创建一个 iSCSI 门户。这会在目标中添加一个 IP 地址和端口,使目标保持启用状态。如需更多信息,请参阅系统中的 targetcli (8) 手册页。
- 要点:先决条件
- 列表:已安装并运行 targetcli。如需更多信息,请参阅安装 targetcli。
- 列表:与目标门户组(TPG)关联的 iSCSI 目标。如需更多信息,请参阅创建 iSCSI 目标。
- 列表:进入 TPG 目录: /iscsi> iqn.2006-04.com.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 使用特定 IP 地址创建门户: /iscsi/iqn.20...mple:444/tpg1> portals/ create 192.168.122.137 Using default IP port 3260 Cre…
- 列表:创建默认门户使用默认 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
- 列表:使用特定 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.2006-04.com.example:444/tpg1/
/iscsi/iqn.20...mple:444/tpg1> portals/ create6.9. 创建 iSCSI LUN
- 要点:逻辑单元号(LUN)是一个由 iSCSI 后端存储支持的物理设备。每个 LUN 都有唯一的数字。如需更多信息,请参阅系统中的 targetcli (8) 手册页。
- 要点:先决条件
- 列表:已安装并运行 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.................................. [enabled, auth] o- acls ......................................[0 ACL] o- luns .....................................[3 LUNs] | o- lun0.........................[ramdisk/ramdisk1] | o- lun1.................[block/block1 (/dev/vdb1)]…
- 列表:配置 ACL。如需更多信息,请参阅创建 iSCSI ACL。
- 命令/配置摘录:
/iscsi/iqn.20...mple:444/tpg1> luns/ create /backstores/ramdisk/rd_backend
Created LUN 0.- 注意:重要 默认情况下,创建的 LUN 有读/写权限。如果在创建 ACL 后添加了新的 LUN,LUN 会自动映射到所有可用 ACL,并可能导致安全风险。要创建具有只读权限的 LUN,请参阅创建只读 iSCSI LUN。
6.10. 创建只读 iSCSI LUN
- 要点:默认情况下,创建的 LUN 有读/写权限。您可以创建一个只读 LUN。如需更多信息,请参阅系统中的 targetcli (8) 手册页。
- 要点:先决条件
- 列表:已安装并运行 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:888> create mapped_lun=1 tpg_lun_or_backstore=/backstores/block/block2 write_protect=1 Created LUN 1. Created…
- 命令/配置摘录:
/> set global auto_add_mapped_luns=false
Parameter auto_add_mapped_luns is now 'false'.6.11. 创建 iSCSI ACL
- 要点:创建访问控制列表(ACL),以定义哪些启动器可以访问特定存储目标,以及控制安全 iSCSI 连接的权限。这一基本安全措施可确保只有授权的客户端才能访问您的共享存储资源。
- 要点:先决条件
- 列表:已安装并运行 targetcli。如需更多信息,请参阅安装 targetcli。
- 列表:与目标门户组(TPG)关联的 iSCSI 目标。如需更多信息,请参阅创建 iSCSI 目标。
- 列表:可选: 要禁用 LUN 自动映射到 ACL,请参阅创建只读 iSCSI LUN。
- 列表:进入 acls 目录: /> iscsi/target_iqn_name/tpg_name/acls/
- 列表:使用以下选项之一创建一个 ACL: 使用启动器上的 /etc/iscsi/initiatorname.iscsi 文件中的 initiator_iqn_name : iscsi/target_iqn_name/tpg_name/acls> create initiator_iqn_name Created Node ACL for initiator_iqn_name Created mapped LUN 2. Created mapped LUN 1. Created mapped LUN 0. 使用 custom_name ,并更新启动器以匹配它: iscsi/target_iqn_name/tpg_name/acls> cr…
- 列表:使用启动器上的 /etc/iscsi/initiatorname.iscsi 文件中的 initiator_iqn_name : iscsi/target_iqn_name/tpg_name/acls> create initiator_iqn_name Created Node ACL for initiator_iqn_name Created mapped LUN 2. Created mapped LUN 1. Created mapped LUN 0.
- 命令/配置摘录:
/> iscsi/target_iqn_name/tpg_name/acls/
iscsi/target_iqn_name/tpg_name/acls> create initiator_iqn_name6.12. 为目标配置 CHAP 身份验证
- 要点:通过使用 Challenge-Handshake Authentication Protocol(CHAP),用户可以使用密码保护目标。发起方必须了解这个密码才能连接到目标。如需更多信息,请参阅系统中的 targetcli (8) 手册页。
- 要点:先决条件
- 列表:创建 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'.
- 列表:进入 acls 目录: /> iscsi/target_iqn_name/tpg1/acls/initiator_iqn_name/
- 列表:设置属性身份验证: /iscsi/iqn.20...:605fcc6a48be> set attribute authentication=1 Parameter authentication is now '1'.
- 列表:设置 userid 和密码 : /iscsi/iqn.20...:605fcc6a48be> set auth userid=redhat Parameter userid is now 'redhat'. /iscsi/iqn.20...:605fcc6a48be> set auth password=redhat_passwd Parameter password is now 'redhat_passwd'.
- 命令/配置摘录:
/iscsi/iqn.20...mple:444/tpg1> set attribute authentication=1
Parameter authentication is now '1'.6.13. 使用 targetcli 工具删除 iSCSI 对象
- 要点:您可以使用 targetcli 工具删除 iSCSI 对象。如需更多信息,请参阅系统中的 targetcli (8) 手册页。
- 要点:流程
- 列表:从目标登出: # iscsiadm -m node -T iqn.2006-04.com.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-nam…
- 列表:删除 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
- 命令/配置摘录:
# iscsiadm -m node -T iqn.2006-04.com.example:444 -u
/> iscsi/ delete iqn.2006-04.com.example:444第 7 章 配置 iSCSI initiator
- 要点:iSCSI 启动器会打开连接到 iSCSI 目标的会话。iSCSI 服务在运行 iscsiadm 后默认启动。对于必须在重启后自动重新连接到 iSCSI 目标的系统,启用 iscsid 和 iscsi 服务。
- 要点:如果 root 不在 iSCSI 设备上,或者没有节点具有 node.startup = automatic,则服务将不会启动,直到 iscsiadm 触发 iscsid 或 内核模块。以 root 身份运行 systemctl start iscsid 命令,以强制 iscsid 服务运行并加载 iSCSI 内核模块。
7.1. 创建 iSCSI 启动程序
- 要点:创建 iSCSI 启动器以连接到 iSCSI 目标,以访问服务器上的存储设备。如需更多信息,请参阅系统中的 targetcli (8) 和 iscsiadm (8) 手册页。
- 要点:先决条件
- 列表:您有一个 iSCSI 目标的主机名和 IP 地址: 如果您要连接到外部软件创建的存储目标,请从存储管理员查找目标主机名和 IP 地址。 如果您要创建 iSCSI 目标,请参阅创建 iSCSI 目标。
- 列表:如果您要连接到外部软件创建的存储目标,请从存储管理员查找目标主机名和 IP 地址。
- 列表:如果您要创建 iSCSI 目标,请参阅创建 iSCSI 目标。
- 列表:在客户端机器上安装 iscsi-initiator-utils: # dnf install iscsi-initiator-utils
- 列表:启动 iscsid 服务: # systemctl start iscsid
- 列表:启用 iscsid 和 iscsi 服务,以在重启后自动恢复 iSCSI 会话: # systemctl enable iscsid iscsi 启用这些服务可确保在 /etc/fstab 中配置的 iSCSI 支持的文件系统可在引导过程中成功挂载。
- 命令/配置摘录:
# dnf install iscsi-initiator-utils
# systemctl start iscsid7.2. 为发起方配置 CHAP 身份验证
- 要点:通过使用 Challenge-Handshake Authentication Protocol(CHAP),用户可以使用密码保护目标。发起方必须了解这个密码才能连接到目标。如需更多信息,请参阅系统中的 iscsiadm (8) 手册页。
- 要点:先决条件
- 列表:创建 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 restart iscsid
- 命令/配置摘录:
# vi /etc/iscsi/iscsid.conf
node.session.auth.authmethod = CHAP7.3. 使用 iscsiadm 工具监控 iSCSI 会话
- 要点:使用 iscsiadm 监控 iSCSI 会话。iSCSI 服务通常启动 lazily,通常在运行 iscsiadm 命令后启动。如果没有自动节点或 iSCSI 根存储,则启动会等待到需要的组件为止。
- 要点:以 root 用户身份使用 systemctl start iscsid 命令,来强制 iscsid 服务运行和加载 iSCSI 内核模块。
- 列表:/usr/share/doc/iscsi-initiator-utils/README 文件
- 列表:您系统上的 iscsiadm (8) 手册页
- 列表:在客户端机器上安装 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 这些命令以以下格式显示了…
- 列表:如果只需要简短的输出,例如:只显示 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。
- 命令/配置摘录:
# dnf install iscsi-initiator-utils
# iscsiadm -m session -P 37.4. DM 多路径覆盖设备超时
- 要点:recovery_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 选项。
第 8 章 使用光纤通道设备
- 要点:使用原生 RHEL 驱动程序(包括 lpfc、qla2xxx 和 zfcp )为高速 SAN 连接配置光纤通道设备。在存储更改后重新扫描 LUN,配置链路丢失行为,以便恢复和管理配置文件。
8.1. 在调整 LUN 的大小后重新扫描光纤通道逻辑单元
- 要点:如果您更改了外部存储上的逻辑单元号(LUN)大小,请使用 echo 命令更新内核的大小视图。
- 要点:流程
- 列表:确定哪些设备是 多路径 逻辑单元的路径: # multipath -ll
- 列表:在使用多路径的系统中重新扫描光纤通道逻辑单元: $ echo 1 > /sys/block/<device_ID>/device/rescan 将 <device_ID> 替换为您设备的 ID,如 sda。
- 命令/配置摘录:
# multipath -ll
$ echo 1 > /sys/block/<device_ID>/device/rescan8.2. 使用光纤通道确定设备链路丢失行为
- 要点:如果驱动程序实现了传输 dev_loss_tmo 回调,传输问题会影响设备访问。通过链接访问设备的尝试将被阻止。
- 要点:流程
- 列表:确定远程端口的状态: $ cat /sys/class/fc_remote_ports/rport-host🚌remote-port/port_state 这个命令返回以下输出之一: 当远程端口以及通过它访问的设备被阻止时为 Blocked。 如果远程端口正常运行,则为 Online 如果在 dev_loss_tmo 秒内没有解决这个问题,则 rport 和设备将被取消阻塞。所有在该设备上运行的 I/O 以及发送到该设备的新 I/O 将失败。 当链路丢失超过 dev_loss_tmo 时,会删除 scsi_device 和 sd_N_ 设备。通常,光纤通道类不会更改设备,例如 /dev/sda 保留 /dev/sda 不变…
- 列表:当远程端口以及通过它访问的设备被阻止时为 Blocked。
- 列表:如果远程端口正常运行,则为 Online 如果在 dev_loss_tmo 秒内没有解决这个问题,则 rport 和设备将被取消阻塞。所有在该设备上运行的 I/O 以及发送到该设备的新 I/O 将失败。 当链路丢失超过 dev_loss_tmo 时,会删除 scsi_device 和 sd_N_ 设备。通常,光纤通道类不会更改设备,例如 /dev/sda 保留 /dev/sda 不变。这是因为目标绑定由 Fibre Channel 驱动程序保存。当目标端口返回时,SCSI 地址会被重新创建。但是,这无法保证。只有在 LUN 没有额外的更改时,才会恢复该设备。
- 列表:在配置 Oracle RAC 集群时,建议在 scsi、multipath 和应用程序层进行调优
- 命令/配置摘录:
$ cat /sys/class/fc_remote_ports/rport-host:bus:remote-port/port_state8.3. Fibre Channel 配置文件
- 要点:/sys/class/ 目录中的光纤通道配置文件描述文件结构和密钥变量。它们还包括在多路径环境中安全地调整设备参数的建议。
- 要点:以下是 /sys/class/ 目录中为 Fibre Channel 提供用户空间 API 的配置文件列表。
- 列表:port_id
- 列表:node_name
- 列表:port_name
- 列表:dev_loss_tmo 控制 scsi 设备从系统中删除的时间。在 dev_loss_tmo 触发后,scsi 设备被删除。在 multipath.conf 文件中,您可以将 dev_loss_tmo 设置为 infinity。 在 Red Hat Enterprise Linux 10 中,如果您没有设置 fast_io_fail_tmo 选项,dev_loss_tmo 的上限为 600 秒。默认情况下,如果 multipathd 服务正在运行,fast_io_fail_tmo 会在 Red Hat Enterprise Linux 10 中被设置为 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 失败。
- 列表:issue_lip 指示驱动重新发现远程端口。
- 注意:重要 如果您的系统使用多路径软件,请在更改本节中描述的任何值前咨询您的硬件厂商。
第 9 章 NVMe over fabric 设备概述
- 要点:Non-volatile Memory Express™(NVMe™)是一个接口,它允许主机软件工具与固态驱动器进行通信。
- 要点:使用以下类型的光纤传输来通过光纤设备配置 NVMe:
- 列表:NVMe over Remote Direct Memory Access(NVMe/RDMA)
- 列表:NVMe over Fibre Channel (NVMe/FC)
- 列表:NVMe over TCP (NVMe/TCP)
- 列表:使用 NVMe/RDMA 配置 NVMe over fabrics
- 列表:使用 NVMe/FC 配置 NVMe over fabrics
- 列表:使用 NVMe/TCP 配置 NVMe over fabrics
第 10 章 使用 NVMe/RDMA 配置 NVMe over fabrics
- 要点:NVMe over RDMA 实现低延迟远程存储访问,对数据中心和高性能工作负载具有接近本地的性能。使用 configfs 或 nvmetcli 配置 NVMe 控制器,并配置 RDMA 主机以实现高效的高速存储连接。
10.1. 使用 configfs 配置 NVMe/RDMA 控制器
- 要点:您可以使用 configfs 配置一个 Non-volatile Memory Express™ (NVMe™) over RDMA (NVMe™/RDMA) 控制器。如需更多信息,请参阅系统中的 nvme (1) 手册页。
- 要点:先决条件
- 列表:验证您有一个要分配给 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
- 命令/配置摘录:
# modprobe nvmet-rdma
# mkdir /sys/kernel/config/nvmet/subsystems/testnqn10.2. 使用 nvmetcli 配置 NVMe™/RDMA 控制器
- 要点:您可以使用 nvmetcli 工具配置 Non-volatile Memory Express™ (NVMe™) over RDMA (NVMe™/RDMA)控制器。nvmetcli 实用程序提供命令行和交互式 shell 选项。如需更多信息,请参阅系统中的 nvmetcli 和 nvme (1) man page。
- 要点:先决条件
- 列表:验证您有一个要分配给 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 文件。
- 命令/配置摘录:
# dnf install nvmetcli
# wget http://git.infradead.org/users/hch/nvmetcli.git/blob_plain/0a6b088db2dc2e5de11e6f23f1e890e4b54fee64:/rdma.json- 注意:注意 如果没有指定 NVMe 控制器配置文件名称,则 nvmetcli 使用 /etc/nvmet/config.json 文件。
10.3. 配置 NVMe/RDMA 主机
- 要点:您可以使用 NVMe 管理命令行界面(nvme-cli)工具配置一个 Non-volatile Memory Express™ (NVMe™) over RDMA (NVMe™/RDMA) 主机。如需更多信息,请参阅系统中的 nvme (1) 手册页。
- 要点:流程
- 列表:安装 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 2, Generation counter 2 =====Discovery Log Entry 0====== trtype: rdma adrfam: ipv4 subtype: current discovery subsystem treq: not specified, sq flow control disable supported portid: 2 trsvcid: 4420 subnqn: nqn.2014-08…
- 列表:连接到发现的子系统: # nvme connect -t rdma -a 172.31.0.202 -s 4420 -n testnqn connecting to device: nvme0 # 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 […
- 列表:列出当前连接的 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_…
- 命令/配置摘录:
# dnf install nvme-cli
# modprobe nvme-rdma第 11 章 使用 NVMe/FC 配置 NVMe over fabrics
- 要点:主机模式中完全支持通过 Fibre Channel (NVMe™/FC)传输的 Non-volatile Memory Express™(NVMe™)传输。它受到某些 Broadcom Emulex 和 Marvell Qlogic Fibre Channel 适配器的支持。
11.1. 为广播适配器配置 NVMe 主机
- 要点:您可以使用 Broadcom 适配器配置 Non-volatile Memory Express™(NVMe™)主机。您可以使用 NVMe 管理命令行界面(nvme-cli)工具进行此操作。如需更多信息,请参阅系统中的 nvme (1) 手册页。
- 要点:流程
- 列表:安装 nvme-cli 工具: # dnf install nvme-cli 这会在 /etc/nvme/ 目录中创建 hostnqn 文件。hostn 文件标识 NVMe 主机。
- 列表:查找本地和远程端口的全球节点名称(WWNN)和全球端口名称(WWPN)标识符: # cat /sys/class/scsi_host/host*/nvme_info NVME Host 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 NV…
- 列表:使用 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 \ -k 5 注意 如果您在连接时间超过默认的 keep-alive 超时值时,如果 keep-alive…
- 列表:列出当前连接的 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 #…
- 命令/配置摘录:
# dnf install nvme-cli
# cat /sys/class/scsi_host/host*/nvme_info- 注意:注意 如果您在连接时间超过默认的 keep-alive 超时值时,如果 keep-alive 计时器(5 秒)已过期! 错误,请使用 the -k 选项来增加它。例如,您可以使用 -k 7。
11.2. 为 QLogic 适配器配置 NVMe 主机
- 要点:您可以使用 Qlogic 适配器配置 Non-volatile Memory Express™(NVMe™)主机。您可以使用 NVMe 管理命令行界面(nvme-cli)工具进行此操作。如需更多信息,请参阅系统中的 nvme (1) 手册页。
- 要点:流程
- 列表:安装 nvme-cli 工具: # dnf install nvme-cli 这会在 /etc/nvme/ 目录中创建 hostnqn 文件。hostn 文件标识 NVMe 主机。
- 列表:重新载入 qla2xxx 模块: # modprobe -r 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 Por…
- 列表:使用 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\ -k 5 注意 如果您在连接时间超过默认的 keep-alive …
- 列表:列出当前连接的 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 #…
- 命令/配置摘录:
# dnf install nvme-cli
# modprobe -r qla2xxx- 注意:注意 如果您在连接时间超过默认的 keep-alive timeout 值时看到 keep-alive timer (5 seconds) expired! 错误,请使用 -k 选项增加它。例如,您可以使用 -k 7。
第 12 章 使用 NVMe/TCP 配置 NVMe over fabrics
- 要点:在通过 TCP (NVMe/TCP)设置的 Non-volatile Memory Express™(NVMe/TCP)设置中,主机模式被完全支持。不支持控制器设置。
- 要点:红帽不支持 NVMe Target (nvmet)功能。有关如何通过 Fabrics 块存储目标设备配置 NVMe 的说明,请参考您的存储厂商文档。
- 注意:注意 在 Red Hat Enterprise Linux 10 中,原生 NVMe 多路径默认启用。NVMe/TCP 不支持启用 DM 多路径。
12.1. 配置 NVMe/TCP 主机
- 要点:您可以使用 NVMe 管理命令行界面(nvme-cli)工具配置一个 Non-volatile Memory Express™ (NVMe™) over TCP (NVMe/TCP)主机。如需更多信息,请参阅系统中的 nvme (1) 手册页。
- 要点:流程
- 列表:安装 nvme-cli 工具: # dnf install nvme-cli
- 列表:检查控制器的状态: # nmcli device show ens6 GENERAL.DEVICE: ens6 GENERAL.TYPE: ethernet GENERAL.HWADDR: 52:57:02:12:02:02 GENERAL.MTU: 1500 GENERAL.STATE: 30 (disconnected) GENERAL.CONNECTION: -- GENERAL.CON-PATH: -- WIRED-PROPERTIES.CARRIER: on
- 列表:使用静态 IP 地址为新安装的以太网控制器配置主机网络: # nmcli connection add con-name ens6 ifname ens6 type ethernet ip4 192.168.101.154/24 gw4 192.168.101.1 此处,将 192.168.101.154 替换为主机 IP 地址。 # nmcli connection mod ens6 ipv4.method manual # nmcli connection up ens6 由于创建了一个新网络来将 NVMe/TCP 主机连接到 NVMe/TCP 控制器,因此也在控制器上重复此步骤。
- 列表:验证新创建的主机网络是否正常工作: # nmcli device show ens6 GENERAL.DEVICE: ens6 GENERAL.TYPE: ethernet GENERAL.HWADDR: 52:57:02:12:02:02 GENERAL.MTU: 1500 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: ens6 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/5 WIRED-PROPERTIES.CARRIER: on IP4.ADDRESS[1]: 192.168.10…
- 命令/配置摘录:
# dnf install nvme-cli
# nmcli device show ens612.2. 将 NVMe/TCP 主机连接到 NVMe/TCP 控制器
- 要点:将 NVMe™ over TCP (NVMe/TCP)主机连接到 NVMe/TCP 控制器系统。验证 NVMe/TCP 主机现在可以访问命名空间。如需更多信息,请参阅系统中的 nvme (1) 手册页。
- 要点:先决条件
- 列表:您已配置了 NVMe/TCP 主机。如需更多信息,请参阅配置 NVMe/TCP 主机。
- 列表:您已使用外部存储软件配置了 NVMe/TCP 控制器,且在控制器上配置了网络。在此流程中,192.168.101.55 是 NVMe/TCP 控制器的 IP 地址。
- 列表:如果还没有加载 nvme-tcp 模块,请加载它: # modprobe nvme-tcp
- 列表:在 NVMe 控制器中发现可用的子系统: # nvme discover --transport=tcp --traddr=192.168.101.55 --trsvcid=8009 Discovery Log Number of Records 2, Generation counter 7 =====Discovery Log Entry 0====== trtype: tcp adrfam: ipv4 subtype: current discovery subsystem treq: not specified, sq flow control disable supported portid: 2 trsvcid: 80…
- 列表:配置 /etc/nvme/discovery.conf 文件,以添加 nvme discover 命令中使用的参数: # echo "--transport=tcp --traddr=192.168.101.55 --trsvcid=8009" >> /etc/nvme/discovery.conf
- 列表:将 NVMe/TCP 主机连接到控制器系统: # nvme connect-all
- 命令/配置摘录:
# modprobe nvme-tcp
# nvme discover --transport=tcp --traddr=192.168.101.55 --trsvcid=8009- 注意:注意 不支持 NVMe/TCP 控制器(nvmet-tcp)模块。
12.3. 配置 NVMe 主机身份验证
- 要点:您可以在 Non-volatile Memory Express (NVMe)主机上配置身份验证。这会建立一个通过 Fabrics (NVMe-oF)控制器的 NVMe 进行身份验证。NVMe 身份验证使用共享 secret 或一对 secret,并使用 challenge-response 协议。
- 要点:先决条件
- 列表:nvme-cli 软件包已安装。
- 列表:您知道 Host NVMe 限定名称(Host NQN)和 子系统 NVMe 限定名称(Subsystem NQN) (如果使用双向身份验证)。要查看系统的默认主机 NQN,请运行 nvme show-hostnqn。
- 列表:生成一个身份验证 secret: 对于主机: # hostkey=$(nvme gen-dhchap-key -n ${HOSTNQN}) 对于子系统: # ctrlkey=$(nvme gen-dhchap-key -n ${SUBSYSTEM})
- 列表:对于主机: # hostkey=$(nvme gen-dhchap-key -n ${HOSTNQN})
- 列表:对于子系统: # ctrlkey=$(nvme gen-dhchap-key -n ${SUBSYSTEM})
- 列表:配置主机以进行身份验证: # nvme connect -t tcp -n ${SUBSYSTEM} -a ${TRADDR} -s 4420 --dhchap-secret=${hostkey} --dhchap-ctrl-secret=${ctrlkey} 这为 nvme-connect 工具提供了身份验证 secret,以便它可以验证并建立到目标的连接。 可选: 要启用自动登录,请配置持久性 NVMe fabrics 配置。为此,请将 --dhchap-secret 和 --dhchap-ctrl-secret 参数添加到 /etc/nvme/discovery.conf 或 /etc/nvme/config.json。
- 命令/配置摘录:
# hostkey=$(nvme gen-dhchap-key -n ${HOSTNQN})
# ctrlkey=$(nvme gen-dhchap-key -n ${SUBSYSTEM})- 注意:注意 NVMe 身份验证只支持 NVMe/TCP 传输类型。此功能不适用于 NVMe over Remote Direct Memory Access (NVMe/RDMA)或 NVMe over Fibre Channel (NVMe/FC)。
12.4. 使用带有预共享密钥的 TLS 配置 NVMe/TCP 主机
- 要点:您可以在启用 TLS 加密时配置一个 Non-volatile Memory Express™ (NVMe™) over TCP (NVMe™/TCP)主机。NVMe/TLS 配置使用 TLS 预共享密钥(PSK)。
- 要点:NVM Express TCP 传输规范指定一个 PSK 交换格式,来在系统之间交换 PSK 信息。您可以使用 nvme-cli 或其他方法以这个格式生成 PSK。例如,在存储目标上创建它(请参阅您的厂商文档)。然后,nvme-cli 使用这些配置的 PSK 来派生保留的 PSK,这些 PSK 会被插入到内核 keyring 中以供使用。
- 列表:nvme_tcp 内核模块已安装在您的系统上。
- 列表:以下软件包已安装在您的系统上: nvme-cli ktls-utils
- 列表:nvme-cli
- 列表:ktls-utils
- 列表:您有子系统 NVMe 限定名称(子系统 NQN)。
- 列表:您在系统上具有 root 权限。
- 命令/配置摘录:
# HOSTNQN=$(nvme show-hostnqn)
# PSK=$(nvme gen-tls-key)- 注意:重要 使用 TLS 的 NVMe/TCP 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。 有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
12.5. 其他资源
- 列表:NVMe 规格
第 13 章 swap 入门
- 要点:交换空间为物理内存满时不活跃的进程和数据提供临时存储,有助于防止内存不足错误。它充当额外的内存,允许系统保持运行。但是,交换可能会降低性能,因此首先优化物理内存使用。
13.1. swap 空间概述
- 要点:当物理内存(RAM)耗尽时,将使用 Linux 中的 交换空间。当需要更多内存并且 RAM 已满时,不活跃的内存页面将移到交换中。交换可帮助系统具有有限的 RAM,但没有替换来添加更多实际内存。
- 要点:交换空间位于硬盘驱动器上,其访问时间比物理内存要慢。交换空间可以是专用的交换分区(推荐)、交换文件,或者交换分区和交换文件的组合。
13.2. 推荐的系统 swap 空间
- 要点:适当 swap 分区的大小取决于系统内存工作负载,而不是只使用内存。建议的最小 swap 大小指南基于 RAM 量。通常在安装过程中自动设置这些指南。
- 要点:swap 分区大小会在安装过程中自动设置。但是,为了允许休眠,您需要在自定义分区阶段编辑交换空间。
- 列表:调试引导选项
- 列表:为红帽平台推荐的 swap 大小是多少?(红帽知识库)
- 注意:重要 在修改时,不应使用 分配给交换空间的文件系统和 LVM 卷。如果系统进程或内核正在使用交换空间,则任何修改交换的尝试都会失败。使用 free 和 cat /proc/swaps 命令验证交换的使用量以及位置。 调整 swap 空间大小需要临时将其从系统中删除。这可以通过使用 swapoff 命令禁用文件的交换卷来完成。如果运行的应用程序依赖于额外的 swap 空间,且可能会遇到低内存情况,这可能会出现问题。 如果您遇到因为内存压力或锁定的页面而禁用交换的情况,或者,从救援模式中执行 swap 大小调整。当提示挂载文件系统时,请选择 Skip。
- 表格样本(共 5 行):
- 系统中的 RAM 量 | 推荐的 swap 空间 | 如果允许休眠则推荐使用 swap 空间
- 小于 2 GiB | RAM 量的 2 倍 | RAM 量的 3 倍
- 2 GiB - 8 GiB | 与 RAM 量相等 | RAM 量的 2 倍
- 8 GiB – 64 GiB | 至少 4 GiB | RAM 量的 1.5 倍
13.3. 为 swap 创建 LVM 逻辑卷
- 要点:您可以为 swap 创建 LVM 逻辑卷。假设 /dev/rhel/swap 是您要添加的交换卷。
- 要点:先决条件
- 列表:您有足够的磁盘空间。
- 列表:创建大小为 4 GB 的 LVM 逻辑卷: # lvcreate -n swap -L 4G rhel
- 列表:格式化新 swap 空间: # mkswap /dev/rhel/swap
- 列表:检索交换分区的 UUID: # lsblk -no UUID /dev/rhel/swap 请注意输出,如 550e8400-e29b-41d4-a716-446655440000。
- 列表:使用检索到的 UUID 将条目添加到 /etc/fstab 文件中: UUID=550e8400-e29b-41d4-a716-446655440000 none swap defaults 0 0
- 列表:更新内核参数以匹配新标识符: # grubby --update-kernel=ALL --args="resume=UUID=550e8400-e29b-41d4-a716-446655440000"
- 命令/配置摘录:
# lvcreate -n swap -L 4G rhel
# mkswap /dev/rhel/swap13.4. 创建和管理标准交换分区
- 要点:使用标准交换分区作为交换空间。您可以使用 fdisk 或 parted 等标准分区工具来创建专用分区。
- 要点:先决条件
- 列表:在驱动器中有足够的未分配磁盘空间。
- 列表:您有磁盘设备的名称,例如 /dev/sda。
- 列表:为您的磁盘启动分区工具,例如 /dev/sda : $ fdisk /dev/sda
- 列表:创建所需大小的新分区,并将其类型设置为 Linux swap : 注意 对于 fdisk,使用"t"命令更改分区类型,输入 Linux swap 的十六进制代码 82。
- 列表:编写更改并退出工具。
- 列表:格式化新交换分区(假设新分区为 /dev/sda4): # mkswap /dev/sda4
- 命令/配置摘录:
$ fdisk /dev/sda
# mkswap /dev/sda4- 注意:注意 对于 fdisk,使用"t"命令更改分区类型,输入 Linux swap 的十六进制代码 82。
13.5. 创建交换文件
- 要点:创建交换文件以提供虚拟内存,从而防止物理 RAM 满时系统崩溃。当您需要额外交换空间而无需重新分区磁盘或修改现有存储配置时,此解决方案特别有用。
- 要点:先决条件
- 列表:您有足够的磁盘空间。
- 列表:以 MB 为单位确定新交换文件的大小,再乘以 1024 来确定块的数量。例如,64 MB 文件所需的 1024 字节大小的块的数量为 65536。
- 列表:创建一个空文件: # dd if=/dev/zero of=/swapfile bs=1024 count=65536 将 65536 替换为等于所需块大小的值。 注意 在 ext4 或 XFS 等现代文件系统上,最好使用 fallocate 而不是 dd。这个方法速度更快,并避免不必要的磁盘 I/O。
- 列表:使用以下命令配置交换文件: # mkswap /swapfile
- 列表:更改交换文件的安全性,使其不可读。 # chmod 0600 /swapfile
- 列表:使用以下条目编辑 /etc/fstab 文件,以在引导时启用交换文件: /swapfile none swap defaults 0 0 下次系统引导时,它会激活新的 swap 文件。
- 命令/配置摘录:
# dd if=/dev/zero of=/swapfile bs=1024 count=65536
# mkswap /swapfile- 注意:注意 在 ext4 或 XFS 等现代文件系统上,最好使用 fallocate 而不是 dd。这个方法速度更快,并避免不必要的磁盘 I/O。
13.6. 使用 storage RHEL 系统角色创建 swap 卷
- 要点:您可以使用 storage RHEL 系统角色在块设备上创建或修改 swap 卷。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Create a disk device with swap hosts: managed-node-01.example.com roles: - rhel-system-roles.storage vars: storage_volumes: - name: swap_fs type: disk disks: - /dev/sdb size: 15 GiB fs_type: swap 卷名称(示例中的 swap_fs )目前是任意的。存储 角色根据 disks: 属性下列出的磁盘设备来识别卷。 有…
- 列表:验证 playbook 语法: $ ansible-playbook --syntax-check ~/playbook.yml 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
- 列表:运行 playbook: $ ansible-playbook ~/playbook.yml
- 命令/配置摘录:
--- - name: Create a disk device with swap hosts: managed-node-01.example.com roles: - rhel-system-roles.storage vars: storage_volumes: - name: swap_fs type: disk disks: - /dev/sdb size: 15 GiB fs_type: swap
$ ansible-playbook --syntax-check ~/playbook.yml13.7. 在 LVM 逻辑卷中扩展 swap
- 要点:您可以在现有 LVM 逻辑卷中扩展 swap 空间。假设 /dev/rhel/swap 是您要扩展为 2 GB 的卷。
- 要点:先决条件
- 列表:您有足够的磁盘空间。
- 列表:root 文件系统和引导装载程序参数使用交换设备的 UUID。
- 列表:为关联的逻辑卷禁用交换: # swapoff -v /dev/rhel/swap
- 列表:将 LVM 逻辑卷调整为 2 GB : # lvresize -L +2G /dev/rhel/swap
- 列表:格式化新交换空间。使用以下方法之一同步 UUID,确保服务器保持可引导: 检索 swap 分区的现有 UUID,以避免配置更改: # lsblk -no UUID /dev/rhel/swap 请注意输出,如 550e8400-e29b-41d4-a716-446655440000,然后使用该 UUID 格式化交换空间: # mkswap --uuid <old_UUID> /dev/rhel/swap 使用标准 mkswap 生成新 UUID: # mkswap /dev/rhel/swap 更新 /etc/fstab 和内核参数以匹配新标识符: # vi /etc/fstab # grubby --update-kernel=…
- 列表:检索 swap 分区的现有 UUID,以避免配置更改: # lsblk -no UUID /dev/rhel/swap 请注意输出,如 550e8400-e29b-41d4-a716-446655440000,然后使用该 UUID 格式化交换空间: # mkswap --uuid <old_UUID> /dev/rhel/swap
- 命令/配置摘录:
# swapoff -v /dev/rhel/swap
# lvresize -L +2G /dev/rhel/swap13.8. 在减少的 LVM 逻辑卷中重新创建交换区
- 要点:要在 LVM 逻辑卷中更改 swap 大小,请禁用 swap,缩小逻辑卷和重新初始化 swap。由于删除了交换签名,因此重新创建交换会造成破坏。您必须创建新的交换签名并更新系统配置,以确保系统保持启动。
- 要点:先决条件
- 列表:您有 root 特权。
- 列表:您有足够的物理 RAM 来处理当前保存在 swap 空间中的数据。
- 列表:为关联的逻辑卷禁用交换: # swapoff -v /dev/rhel/swap
- 列表:减少 LVM 逻辑卷,例如使用 2 GB: # lvreduce -L -2G /dev/rhel/swap
- 列表:清理 swap 签名: # wipefs -a /dev/rhel/swap
- 列表:格式化新交换空间。使用以下方法之一同步 UUID,确保服务器保持可引导: 使用标准 mkswap 生成新 UUID: # mkswap /dev/rhel/swap 请注意输出,如 550e8400-e29b-41d4-a716-446655440000。 检索新的 UUID 并更新配置: # lsblk -no UUID /dev/rhel/swap 更新 /etc/fstab 和内核参数以匹配新标识符: # vi /etc/fstab # grubby --update-kernel=ALL --args="resume=UUID=<new_UUID>"
- 命令/配置摘录:
# swapoff -v /dev/rhel/swap
# lvreduce -L -2G /dev/rhel/swap13.9. 为 swap 删除 LVM 逻辑卷
- 要点:您可以为 swap 删除 LVM 逻辑卷。假设 /dev/rhel/swap 是您要删除的交换卷。
- 要点:流程
- 列表:为关联的逻辑卷禁用交换: # swapoff -v /dev/rhel/swap
- 列表:删除 LVM 逻辑卷: # lvremove /dev/rhel/swap
- 列表:从 /etc/fstab 中删除交换条目。找到并删除与 swap 卷关联的行: UUID=550e8400-e29b-41d4-a716-446655440000 none swap defaults 0 0
- 列表:从内核参数中删除 swap 标识符,以防止在卷被删除后引导失败: # grubby --update-kernel=ALL --remove-args="resume=UUID=550e8400-e29b-41d4-a716-446655440000"
- 列表:重新生成挂载单元以注册新配置: # systemctl daemon-reload
- 列表:测试逻辑卷是否被成功删除,使用以下命令检查活跃的 swap 空间: $ cat /proc/swaps $ free -h
- 命令/配置摘录:
# swapoff -v /dev/rhel/swap
# lvremove /dev/rhel/swap13.10. 删除 swap 文件
- 要点:您可以从系统中删除交换文件以释放磁盘空间。这涉及禁用交换文件、更新系统配置和删除文件。
- 要点:流程
- 列表:禁用 /swapfile swap 文件: # swapoff -v /swapfile
- 列表:相应地从 /etc/fstab 文件中删除其条目。
- 列表:重新生成挂载单元以便您的系统注册新配置: # systemctl daemon-reload
- 列表:删除实际的文件: # rm /swapfile
- 命令/配置摘录:
# swapoff -v /swapfile
# systemctl daemon-reload13.11. 调整虚拟内存(VM)可调项
- 要点:虚拟内存(VM)可调项是控制系统如何管理内存的内核参数,包括其使用交换空间的方式。根据工作负载调整这些设置可能会影响系统性能。
- 要点:vm.swappiness 参数控制内核倾向于将进程移出物理内存并进入交换空间。该值是一个百分比,范围从 0 到 100:
- 列表:更高的值(如 60 或 100) :内核会将 进程交换到更积极地进行磁盘。这可以为其他用途释放物理内存(如文件系统缓存),但如果频繁需要交换的进程,则可能会增加 I/O 操作和延迟。
- 列表:较低值(如 0 或 10) :内核将尝试避免交换进程, 并尽可能将进程保留在物理内存中。这通常适用于具有快速 I/O 和大量 RAM 的桌面系统或服务器。
- 列表:vm.dirty_ratio :在内核开始主动写入前,可以填充"dirty"页面(未修改但还没有写入磁盘的内存页面)的系统内存百分比。
- 列表:vm.dirty_background_ratio :在后台内核进程开始写出前可填充脏页面的系统内存百分比。这是一个比 vm.dirty_ratio 更积极的操作。
- 列表:查看当前值: $ cat /proc/sys/vm/swappiness 默认值为 60。
- 列表:临时将值设置为 10 : # sysctl vm.swappiness=10
- 命令/配置摘录:
$ cat /proc/sys/vm/swappiness
# sysctl vm.swappiness=10第 14 章 使用以太网配置光纤
- 要点:由 IEEE T11 FC-BB-5 定义的以太网光纤通道(FCoE)通过以太网封装光纤通道帧。它将 LAN 和 SAN 融合到一个统一的网络中,在削减硬件和能源成本的同时降低了复杂性。这要求为丢失存储流量配置以太网。
14.1. 在 RHEL 中使用硬件 FCoE HBA
- 要点:在 RHEL 中,您可以使用以太网的硬件光纤通道(FCoE)主机总线适配器(HBA)。由 qedf 和 fnic 驱动程序支持。如果您使用这样的 HBA,在 HBA 设置中配置 FCoE 设置。如需更多信息,请参阅适配器文档。
- 要点:配置 HBA 后,会自动从存储区域网络(SAN)导出的逻辑单元号(LUN)。RHEL 将它们作为 /dev/sd* 设备访问。您可以使用类似本地存储设备的设备。
第 15 章 管理磁带设备
- 要点:磁带设备通过磁带驱动器存储数据,从而按顺序访问。您不需要在其中写入文件系统。磁带驱动器可以通过 SCSI、FC、USB、SATA 或其他接口进行连接,从而促进数据备份和存档。
15.1. 磁带设备的类型
- 要点:磁带设备是 magnetic 存储介质,按顺序读取和写入数据,使其成为备份和归档目的的理想选择。它们提供符合成本效益、稳定的存储,对长期数据保留的数据崩溃具有恢复能力。
- 要点:以下是不同类型的磁带设备列表:
- 列表:/dev/st0 是一个回卷磁带设备。
- 列表:/dev/nst0 是一个非回卷磁带设备。使用非缓解设备进行日常备份。
15.2. 安装磁带驱动器管理工具
- 要点:为磁带驱动器操作安装 mt-st 软件包。使用 mt 工具控制磁带驱动器操作,使用 st 工具控制 SCSI 磁带驱动器。
- 要点:流程
- 列表:安装 mt-st 软件包: # dnf install mt-st 如需更多信息,请参阅系统中的 mt (1) 和 st (4) man page。
- 命令/配置摘录:
# dnf install mt-st15.3. 磁带命令
- 要点:mt 工具提供 magnetic 磁带控制命令来管理磁带设备操作,如状态检查、回卷和头定位。
- 要点:以下是常见的 mt 命令:
- 表格样本(共 7 行):
- 命令 | 描述
- mt -f /dev/st0 status | 显示磁带设备的状态。
- mt -f /dev/st0 erase | 擦除整个磁带。
- mt -f /dev/nst0 rewind | 插入磁带设备。
15.4. 写入如回卷磁带设备
- 要点:在每次操作后,回卷磁带设备会进行回卷。要备份数据,您可以使用 tar 命令。默认情况下,在磁带设备中,块大小 为 10 KB (bs=10k)。
- 要点:您可以使用 export TAPE=/dev/st0 属性设置 TAPE 环境变量。使用 -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 statu…
- 列表:当前文件号为 -1。
- 列表:块编号 定义磁带头。默认情况下,它被设置为 -1。
- 列表:块大小 0 表示磁带设备没有固定的块大小。
- 命令/配置摘录:
# mt -f /dev/st0 load
# mt -f /dev/st0 status15.5. 写入非回卷解磁带设备
- 要点:在完成特定命令后,非回卷磁带设备会将磁带保持在当前位置。例如,备份后,您可以将更多数据附加到非回卷的磁带设备中。您还可以使用它来避免任何意外的回卷。
- 要点:先决条件
- 列表:已安装 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 load
# mt -f /dev/nst0 status15.6. 在磁带设备中切换磁带头
- 要点:您可以使用 eod 选项切换磁带设备中的磁带头。
- 要点:先决条件
- 列表:已安装 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 -f /dev/nst0 tell
# mt -f /dev/nst0 eod15.7. 从磁带设备中恢复数据
- 要点:您可以使用 tar 命令从磁带设备中恢复数据。如需更多信息,请参阅系统中的 mt (1) 和 tar (1) 手册页。
- 要点:先决条件
- 列表:已安装 mt-st 软件包。如需更多信息,请参阅安装磁带驱动器管理工具。
- 列表:数据被写入磁带设备。如需更多信息,请参阅写入回卷磁带设备,或写入非回卷磁带设备。
- 列表:对于回卷磁带设备 /dev/st0: 恢复 /source/directory/ : # tar -xzf /dev/st0 /source/directory/
- 列表:恢复 /source/directory/ : # tar -xzf /dev/st0 /source/directory/
- 列表:对于非回卷磁带设备 /dev/nst0 : 重新构建磁带设备: # mt -f /dev/nst0 rewind 恢复 etc 目录: # tar -xzf /dev/nst0 /source/directory/
- 列表:重新构建磁带设备: # mt -f /dev/nst0 rewind
- 命令/配置摘录:
# tar -xzf /dev/st0 /source/directory/
# mt -f /dev/nst0 rewind15.8. 从磁带设备中删除数据
- 要点:您可以使用 erase 选项删除磁带设备中的数据。
- 要点:先决条件
- 列表:已安装 mt-st 软件包。如需更多信息,请参阅安装磁带驱动器管理工具。
- 列表:数据被写入磁带设备。如需更多信息,请参阅写入回卷磁带设备,或写入非回卷磁带设备。
- 列表:从磁带设备中删除数据: # mt -f /dev/st0 erase
- 列表:卸载磁带设备: # mt -f /dev/st0 offline
- 命令/配置摘录:
# mt -f /dev/st0 erase
# mt -f /dev/st0 offline第 16 章 管理 RAID
- 要点:您可以使用独立磁盘的冗余阵列 (RAID) 在多个驱动器间存储数据。它可以帮助避免驱动器失败时数据丢失。
16.1. RAID 概述
- 要点:在 RAID 中,多个驱动器(HDD、SSD 或 NVMe)组合成一个阵列。这提供了比单个驱动器更高的性能或冗余性。这个阵列将系统显示为一个逻辑存储单元。
- 要点:RAID 支持各种配置,包括 0、1、4、5、6、10 和 linear。RAID 使用磁盘条带和磁盘镜像等技术。它还在 RAID 4、5 和 6 中使用奇偶校验的磁盘条带。这有助于实现冗余、较低延迟、增加带宽和最大化能力,从硬盘崩溃中恢复。
- 列表:它可以提高速度
- 列表:它使用单个虚拟磁盘增加存储容量
- 列表:尽可能减少磁盘出现问题时导致数据丢失的问题
- 列表:RAID 布局和级别在线转换
16.2. RAID 类型
- 要点:RAID 可通过固件、专用硬件控制器或软件实现。每种类型在成本、性能和功能方面都提供了不同的优势。这可让您选择最佳的存储要求方法。
- 要点:以下是可能的 RAID 类型:
- 列表:多线程设计
- 列表:在不同的 Linux 机器间移动磁盘阵列不需要重新构建数据
- 列表:使用空闲系统资源进行后台阵列重构
- 列表:支持热插拔驱动器
- 列表:自动 CPU 检测以利用某些 CPU 功能,如流传输单一指令多个数据 (SIMD) 支持。
- 列表:自动更正阵列磁盘中的错误扇区。
- 注意:注意 resync 是一个通过现有 RAID 设备同步数据以达到冗余的过程
16.3. RAID 级别和线性支持
- 要点:RAID 和线性存储级别提供各种数据保护、性能和容量选项。比较 RAID 级别 0、1、4、5、6、10 和线性阵列,以确定最佳的 Linux 存储配置。
- 要点:以下是 RAID 支持的配置,包括级别 0、1、4、5、6、10 和线性:
16.4. 支持的 RAID 转换
- 要点:使用特定的 mdadm 命令支持 RAID 级别转换,磁盘要求因目标 RAID 类型而异。
- 要点:您可以从一个 RAID 级别转换到另一个 RAID 级别。例如:您可以从 RAID10 转换为 RAID5。但是,从 RAID10 到 RAID0 之间有一个中间步骤,然后是 RAID5。有关更多支持的 RAID 转换的信息,请查看下表:
- 注意:注意 只有在使用 ALGORITHM_PARITY_N 布局时,才可以将 RAID5 转换到 RAID0 和 RAID4。
- 表格样本(共 15 行):
- RAID 转换级别 | 转换步骤 | 注
- RAID 级别 0 到 RAID 级别 4 | # mdadm --grow /dev/md0 --level=4 -n3 --add /dev/vdd | 您需要在 MD 阵列中添加一块磁盘,因为它至少需要 3 块磁盘。
- RAID 级别 0 到 RAID 级别 5 | # mdadm --grow /dev/md0 --level=5 -n3 --add /dev/vdd | 您需要在 MD 阵列中添加一块磁盘,因为它至少需要 3 块磁盘。
- RAID 级别 0 到 RAID 级别 10 | # mdadm --grow /dev/md0 --level 10 -n 4 --add /dev/vd[ef] | 您需要在 MD 阵列中添加两块额外的磁盘。
16.5. RAID 子系统
- 要点:RAID 子系统是管理您系统上 RAID 阵列的软件组件。每个子系统使用不同的元数据格式和管理工具,mdraid 是 Red Hat Enterprise Linux 的首选软件 RAID 解决方案。
- 要点:以下子系统组成了 RAID:
16.6. 在安装过程中创建软件 RAID
- 要点:您可以在 Red Hat Enterprise Linux 安装过程中创建软件 RAID,将多个磁盘配置为单一逻辑设备。这可提高性能、可靠性或两者。
- 要点:先决条件
- 列表:您已经选择了两个或者多个磁盘,然后才能看到 RAID 配置选项。根据您要创建的 RAID 类型,至少需要两个磁盘。
- 列表:您已在 安装目的 窗口中选择了 自定义 单选按钮。您已通过单击 Done 按钮输入 Manual Partitioning 窗口。
- 列表:您创建了挂载点。通过配置挂载点,您可以配置 RAID 设备。
- 列表:在 Manual Partitioning 窗口左面地框中,选所需的分区。
- 列表:点击设备类型下拉菜单并选择 RAID。
- 列表:在 Device(s) 部分点 修改。此时会打开 Configure Mount Point 对话框。
16.7. 在安装的系统中创建软件 RAID
- 要点:您可以使用 mdadm 工具在现有系统上创建一个软件独立磁盘冗余阵列(RAID)。
- 要点:先决条件
- 列表:已安装 mdadm 软件包。
- 列表:您已在系统上创建了两个或多个分区。具体步骤请参阅 使用 parted 创建分区。
- 列表:创建两个块设备的 RAID,如 /dev/sda1 和 /dev/sdc1 : # mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sda1 /dev/sdc1 mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started. level_value 选项定义 RAID 级别。
- 列表:可选:检查 RAID 的状态: # mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Thu Oct 13 15:17:39 2022 Raid Level : raid0 Array Size : 18649600 (17.79 GiB 19.10 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Thu Oct 13 15:17:39 2022 State : clean Active Device…
- 列表:可选:观察 RAID 中每个设备的详细信息: # mdadm --examine /dev/sda1 /dev/sdc1 /dev/sda1: Magic : a92b4efc Version : 1.2 Feature Map : 0x1000 Array UUID : 77ddfb0a:41529b0e:f2c5cde1:1d72ce2c Name : 0 Creation Time : Thu Oct 13 15:17:39 2022 Raid Level : raid0 Raid Devices : 2 [...]
- 列表:在 RAID 驱动器中创建文件系统: # mkfs -t xfs /dev/md0 使用您选择格式化驱动器的文件系统替换 xfs。
- 命令/配置摘录:
# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sda1 /dev/sdc1
mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.16.8. 在 web 控制台中创建 RAID
- 要点:您可以在 RHEL 10 Web 控制台中创建软件 RAID 设备,以组合多个磁盘,从而提高性能或冗余。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体步骤请参阅安装并启用 Web 控制台。
- 列表:您已在系统上安装了 cockpit-storaged 软件包。
- 列表:您已连接了物理磁盘,且对系统可见。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:在面板中,单击 Storage。
- 列表:在 Storage 表中,单击菜单按钮,然后选择 Create MDRAID device。
16.9. 在 web 控制台中格式化 RAID
- 要点:您可以在 RHEL 10 web 控制台中格式化并挂载软件 RAID 设备。根据卷大小以及选择格式化选项,格式化可能需要几分钟。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体说明请参阅安装并启用 Web 控制台。
- 列表:您已安装了 cockpit-storaged 软件包。
- 列表:您已连接了物理磁盘,且对系统可见。
- 列表:您已创建了 RAID。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:在面板中,单击 Storage。
16.10. RAID 服务
- 要点:您可以使用 systemd 和 mdadm 自动进行 RAID 一致性检查。计划常规扫描、检测和修复错误块以及记录不一致以在 Linux 系统上维护存储可靠性。
- 要点:以下组件一起工作,来通过使用 mdadm 和 systemd 在系统上执行自动 RAID 一致性检查:
16.11. 使用 Web 控制台在 RAID 上创建分区表
- 要点:在 RHEL 10 界面中创建的新软件 RAID 设备上格式化带有分区表的 RAID。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体说明请参阅安装并启用 Web 控制台。
- 列表:您已安装了 cockpit-storaged 软件包。
- 列表:您已连接了物理磁盘,且对系统可见。
- 列表:您已创建了 RAID。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:在面板中,单击 Storage。
16.12. 使用 Web 控制台在 RAID 上创建分区
- 要点:在现有分区表中创建一个分区。您可以在创建分区后创建更多的分区。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体说明请参阅安装并启用 Web 控制台。
- 列表:cockpit-storaged 软件包已安装在您的系统上。
- 列表:RAID 上的分区表已创建。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:在面板中,单击 Storage。
- 列表:点击您要在其上创建分区的 RAID 设备。
16.13. 使用 Web 控制台在 RAID 上创建卷组
- 要点:您可以使用 RHEL Web 控制台在 RAID 设备之上创建卷组。这使您能够将 RAID 冗余与 LVM 提供的灵活存储管理相结合。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体说明请参阅安装并启用 Web 控制台。
- 列表:您已安装了 cockpit-storaged 软件包。
- 列表:您有一个没有格式化且没有挂载的 RAID 设备。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:在面板中,单击 Storage。
- 列表:在 Storage 表中,点菜单按钮 [ swig] 并选择 Create LVM 卷组。
16.14. 使用 storage RHEL 系统角色配置 RAID 卷
- 要点:使用 storage 系统角色,您可以使用 Red Hat Ansible Automation Platform 和 Ansible-Core 在 RHEL 上配置一个 RAID 卷。创建一个带参数的 Ansible Playbook,以配置 RAID 卷来满足您的要求。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:您以可在受管主机上运行 playbook 的用户身份登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Create a RAID on sdd, sde, sdf, and sdg ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_safe_mode: false storage_volumes: - name: data type: raid d…
- 列表:验证 playbook 语法: $ ansible-playbook --syntax-check ~/playbook.yml 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
- 列表:运行 playbook: $ ansible-playbook ~/playbook.yml
- 命令/配置摘录:
--- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Create a RAID on sdd, sde, sdf, and sdg ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_safe_mode: false storage_volumes: - name: data type: raid disks: [sdd, sde, sdf, sdg] raid_level: raid0 raid_chunk_size: 32 KiB mount_point: /mnt/data state: present
$ ansible-playbook --syntax-check ~/playbook.yml- 注意:警告 设备名称在某些情况下可能会改变,例如:当您在系统中添加新磁盘时。因此,为了避免数据丢失,请在 playbook 中使用持久性命名属性。有关持久命名属性的更多信息,请参阅 持久命名属性。
16.15. 扩展 RAID
- 要点:您可以使用 mdadm 工具的 --grow 选项扩展 RAID。如需更多信息,请参阅系统中的 mdadm (8)手册页。
- 要点:先决条件
- 列表:有足够的磁盘空间。
- 列表:parted 软件包已经安装。
- 列表:扩展 RAID 分区。如需更多信息,请参阅使用 parted 重新定义分区。
- 列表:将 RAID 扩展到最大分区容量: # mdadm --grow --size=max /dev/md0 要设置特定大小,设置 --size 参数的值(单位为 kB),如 --size=524228。
- 列表:增加文件系统的大小。例如,如果卷使用 XFS 并挂载到 /mnt/,请输入: # xfs_growfs /mnt/
- 列表:管理文件系统
- 命令/配置摘录:
# mdadm --grow --size=max /dev/md0
# xfs_growfs /mnt/16.16. 缩小 RAID
- 要点:您可以使用 mdadm 工具的 --grow 选项缩小 RAID。XFS 文件系统不支持缩小。如需更多信息,请参阅系统中的 mdadm (8) 手册页。
- 要点:先决条件
- 列表:parted 软件包已经安装。
- 列表:缩小文件系统。如需更多信息,请参阅管理文件系统。
- 列表:减少 RAID 的大小,例如 512 MB : # mdadm --grow --size=524228 /dev/md0 写 --size 参数(单位为 kB)。
- 列表:将分区缩小到您需要的大小。
- 列表:使用 parted 重新定义分区大小
- 命令/配置摘录:
# mdadm --grow --size=524228 /dev/md016.17. 安装后将根磁盘转换为 RAID1
- 要点:您可在安装 Red Hat Enterprise Linux 10 后,将非 RAID root 磁盘转换为 RAID1 镜像。
- 要点:流程
- 列表:在 x86 架构中,完成红帽知识库解决方案中的步骤 ,如何在安装后将单个磁盘 EFI 引导转换为软件 RAID。
- 列表:在 PowerPC (PPC)构架中,完成安装 Red Hat Enterprise Linux 10 后如何将根磁盘转换为 RAID1。
16.18. 创建高级 RAID 设备
- 要点:在某些情况下,您可能想要在预先创建的阵列上安装操作系统。这通常涉及 /boot 或 root 文件系统 RAID 设备。这种情况可能需要 Anaconda 安装程序不支持的数组选项。
- 要点:流程
- 列表:插入安装磁盘。
- 列表:在初始启动过程中,选择 Rescue Mode 而不是 Install 或 Upgrade。当系统完全引导至 Rescue mode 时,您可以看到命令行。
- 列表:在命令行中运行以下命令: 使用 parted 命令在目标硬盘上创建 RAID 分区。 使用这些分区中的 mdadm 命令,使用任何以及所有可用的设置和选项来手动创建 raid 阵列。
- 列表:使用 parted 命令在目标硬盘上创建 RAID 分区。
- 列表:使用这些分区中的 mdadm 命令,使用任何以及所有可用的设置和选项来手动创建 raid 阵列。
- 列表:可选:创建阵列后,在阵列上创建文件系统。
- 注意:注意 安装程序的有限 Rescue Mode 不包括 man page。mdadm (8) 和 md (4) 手册页包含创建自定义 RAID 阵列的有用信息,在整个临时解决方案中可能都需要这些信息。
16.19. 配置用于监控 RAID 的电子邮件通知
- 要点:您可以使用 mdadm 工具配置电子邮件警报来监控 RAID。当 MAILADDR 变量设置为所需的电子邮件地址后,监控系统会将警报发送到添加的电子邮件地址。如需更多信息,请参阅系统中的 mdadm.conf (5) 手册页。
- 要点:先决条件
- 列表:已安装 mdadm 软件包。
- 列表:配置了邮件服务。
- 列表:通过扫描 RAID 详情来创建 /etc/mdadm.conf 配置文件来监控阵列: # mdadm --detail --scan >> /etc/mdadm.conf 请注意,ARRAY 和 MAILADDR 是强制的变量。
- 列表:使用您选择的文本编辑器打开 /etc/mdadm.conf 配置文件,并使用通知的电子邮件地址添加 MAILADDR 变量。例如,添加新行: MAILADDR example@example.com 在这里,example@example.com 是从阵列监控接收警报的电子邮件地址。
- 列表:保存 /etc/mdadm.conf 文件中的更改并关闭它。
- 命令/配置摘录:
# mdadm --detail --scan >> /etc/mdadm.conf
MAILADDR example@example.com16.20. 替换 RAID 中失败的磁盘
- 要点:您可以使用剩余的磁盘从失败的磁盘重建数据。RAID 级别和磁盘总数决定了成功重建数据所需的最小剩余磁盘量。
- 要点:在此过程中,/dev/md0 RAID 包含四个磁盘。/dev/sdd 磁盘失败,您需要将它替换为 /dev/sdf 磁盘。
- 列表:用于替换的备用磁盘。
- 列表:已安装 mdadm 软件包。
- 列表:检查失败的磁盘: 查看内核日志: # journalctl -k -f 搜索类似如下的消息: md/raid:md0: Disk failure on sdd, disabling device. md/raid:md0: Operation continuing on 3 devices. 按 Ctrl+C 键退出 journalctl 程序。
- 列表:查看内核日志: # journalctl -k -f
- 列表:搜索类似如下的消息: md/raid:md0: Disk failure on sdd, disabling device. md/raid:md0: Operation continuing on 3 devices.
- 列表:按 Ctrl+C 键退出 journalctl 程序。
- 命令/配置摘录:
# journalctl -k -f
md/raid:md0: Disk failure on sdd, disabling device. md/raid:md0: Operation continuing on 3 devices.- 注意:警告 如果您的 RAID 无法与另一个磁盘失败,在新磁盘有 active sync 状态前不会删除任何磁盘。您可以使用 watch cat /proc/mdstat 命令监控进度。
16.21. 修复 RAID 磁盘
- 要点:您可以使用 repair 选项修复 RAID 阵列中的磁盘。
- 要点:先决条件
- 列表:已安装 mdadm 软件包。
- 列表:检查阵列失败的磁盘行为: # echo check > /sys/block/md0/md/sync_action 这会检查数组和 /sys/block/md0/md/sync_action 文件显示 sync 操作。
- 列表:使用您选择的文本编辑器打开 /sys/block/md0/md/sync_action 文件,并查看是否有任何有关磁盘同步失败的消息。
- 列表:查看 /sys/block/md0/md/mismatch_cnt 文件。如果 mismatch_cnt 参数不是 0,这意味着 RAID 磁盘需要修复。
- 列表:修复阵列中的磁盘: # echo repair > /sys/block/md0/md/sync_action 这会修复阵列中的磁盘,并将结果写入 /sys/block/md0/md/sync_action 文件。
- 列表:查看同步进度: # cat /sys/block/md0/md/sync_action repair # cat /proc/mdstat Personalities : [raid0] [raid6] [raid5] [raid4] [raid1] md0 : active raid1 sdg[1] dm-3[0] 511040 blocks super 1.2 [2/2] [UU] unused devices: <none>
- 命令/配置摘录:
# echo check > /sys/block/md0/md/sync_action
# echo repair > /sys/block/md0/md/sync_action第 17 章 使用 LUKS 加密块设备
- 要点:您可以使用磁盘加密来保护块设备中的数据。要访问解密的内容,请输入密码短语或密钥。这对笔记本电脑和可移动介质尤为重要,即使物理删除,也保护内容。LUKS 是 Red Hat Enterprise Linux 中默认的块设备加密格式。
17.1. LUKS 磁盘加密
- 要点:Linux Unified Key Setup-on-disk-format (LUKS)提供了一组简化管理加密设备的工具。使用 LUKS,您可以加密块设备并启用多个用户密钥来解密主密钥。
- 要点:Red Hat Enterprise Linux 使用 LUKS 执行块设备加密。默认情况下,在安装过程中不选中加密块设备的选项。如果您选择加密磁盘的选项,则系统会在每次引导计算机时提示您输入密码短语。这个密码短语解锁了解密分区的批量加密密钥。如果要修改默认分区表,您可以选择要加密的分区。这是在分区表设置中设定的。
- 列表:高级加密标准(AES)
- 列表:Twofish
- 列表:Serpent
- 列表:LUKS 会加密整个块设备,因此非常适合保护移动设备的内容。这包括可移动存储介质或笔记本电脑磁盘驱动器。
- 列表:加密块设备的底层内容是任意的,这有助于加密交换设备。对于将特殊格式化块设备用于数据存储的某些数据库,这也很有用。
- 列表:LUKS 使用现有的设备映射器内核子系统。
- 注意:重要 在以下情况下不建议使用 LUKS: 磁盘加密解决方案,如 LUKS,仅在您的系统关闭时保护数据。在系统开启并且 LUKS 解密了磁盘后,该磁盘上的文件将可用。有权访问他们的用户可以查看这些文件。 需要多个用户对同一设备具有不同的访问密钥的情况。LUKS1 格式提供八个密钥插槽,LUKS2 提供最多 32 个密钥插槽。 需要文件级加密的应用程序。
17.2. RHEL 中的 LUKS 版本
- 要点:在 Red Hat Enterprise Linux 中,LUKS 加密的默认格式为 LUKS2。旧的 LUKS1 格式仍被完全支持,并作为与早期 Red Hat Enterprise Linux 版本兼容的格式提供。与 LUKS1 重新加密相比,LUKS2 重新加密被视为更强大且更安全。
- 要点:LUKS2 格式允许各种部分的未来更新,而无需修改二进制结构。在内部,它将 JSON 文本格式用于元数据,并提供元数据冗余。它检测元数据崩溃,并从元数据副本中自动修复。
- 列表:更改卷密钥
- 列表:更改加密算法 加密未加密的设备时,您仍然必须卸载文件系统。您可以在简短初始化加密后重新挂载文件系统。 LUKS1 格式不支持在线重新加密。
- 列表:LUKS1 设备被标记为被基于策略的解密(PBD) Clevis 解决方案使用。当检测到某些 luksmeta 元数据时,cryptsetup 工具不会转换设备。
- 列表:设备正在活跃。在任何转换前,设备必须处于不活跃状态。
- 注意:重要 不要在只支持 LUKS1 的系统中使用 LUKS2。
17.3. LUKS2 重新加密过程中数据保护选项
- 要点:LUKS2 提供了几个选项,在重新加密过程中优先选择性能或数据保护。
- 要点:它为 弹性 选项提供以下模式:您可以使用 cryptsetup reencrypt --resilience resilience-mode /dev/ <device_ID> 命令选择其中任何一种模式。将 <device_ID > 替换为您的设备的 ID。
- 列表:执行 cryptsetup open 命令。
- 列表:使用 systemd-cryptsetup 命令附加设备。
17.4. 使用 LUKS2 加密块设备上的现有数据
- 要点:您可以使用 LUKS2 格式在尚未加密的设备上加密现有数据。新的 LUKS 标头保存在设备的标头中。
- 要点:先决条件
- 列表:块设备有一个文件系统。
- 列表:已备份了数据。 警告 由于硬件、内核或人为故障,您可能会在加密过程中丢失数据。在开始加密数据之前,请确保您有可靠的备份。
- 列表:卸载您要加密的设备上的所有文件系统,例如: # umount /dev/mapper/vg00-lv00
- 列表:为存储 LUKS 标头腾出空间。使用以下适合您场景的选项之一: 如果是加密逻辑卷,您可以扩展逻辑卷而无需调整文件系统的大小。例如: # lvextend -L+32M /dev/mapper/vg00-lv00 使用分区管理工具(如 parted )扩展分区。 缩小该设备的文件系统。您可以对 ext2、ext3 或 ext4 文件系统使用 resize2fs 工具。请注意,您无法缩小 XFS 文件系统。
- 列表:如果是加密逻辑卷,您可以扩展逻辑卷而无需调整文件系统的大小。例如: # lvextend -L+32M /dev/mapper/vg00-lv00
- 列表:使用分区管理工具(如 parted )扩展分区。
- 命令/配置摘录:
# umount /dev/mapper/vg00-lv00
# lvextend -L+32M /dev/mapper/vg00-lv00- 注意:警告 由于硬件、内核或人为故障,您可能会在加密过程中丢失数据。在开始加密数据之前,请确保您有可靠的备份。
17.5. 使用带有分离标头的 LUKS2 在块设备上加密现有数据
- 要点:您可以加密块设备上的现有数据,而无需为存储 LUKS 标头创建可用空间。标头存储在分离的位置,它也充当额外的安全层。该流程使用 LUKS2 加密格式。
- 要点:先决条件
- 列表:块设备有一个文件系统。
- 列表:您的数据已备份。 警告 由于硬件、内核或人为故障,您可能会在加密过程中丢失数据。在开始加密数据之前,请确保您有可靠的备份。
- 列表:卸载设备上的所有文件系统,例如: # umount /dev/<nvme0n1p1> 将 <nvme0n1p1> 替换为与您要卸载的分区对应的设备标识符。
- 列表:初始化加密: # cryptsetup reencrypt --encrypt --init-only --header </home/header> /dev/<nvme0n1p1> <nvme_encrypted> WARNING! ======== Header file does not exist, do you want to create it? Are you sure? (Type 'yes' in capital letters): YES Enter passphrase for </home/header>: Verify passphrase: /dev/mapper/<nvme_encrypted> i…
- 列表:</home/header> 替换为带有分离的 LUKS 头的文件的路径。分离的 LUKS 标头必须可以访问,以便稍后解锁加密设备。
- 列表:<nvme_encrypted> 替换为加密后创建的设备映射器的名称。
- 命令/配置摘录:
# umount /dev/<nvme0n1p1>
# cryptsetup reencrypt --encrypt --init-only --header </home/header> /dev/<nvme0n1p1> <nvme_encrypted>- 注意:警告 由于硬件、内核或人为故障,您可能会在加密过程中丢失数据。在开始加密数据之前,请确保您有可靠的备份。
17.6. 使用 LUKS2 加密空白块设备
- 要点:加密空白块设备来创建安全存储,以便使用强大的加密保护您的数据。这个过程适用于需要确保开始数据的机密性的新存储设备。
- 要点:先决条件
- 列表:空白块设备。您可以使用 lsblk 等命令来查找该设备上是否没有实际的数据,例如,文件系统。
- 列表:将分区配置为加密的 LUKS 分区: # cryptsetup luksFormat /dev/nvme0n1p1 WARNING! ======== This will overwrite data on /dev/nvme0n1p1 irrevocably. Are you sure? (Type 'yes' in capital letters): YES Enter passphrase for /dev/nvme0n1p1: Verify passphrase:
- 列表:打开加密的 LUKS 分区: # cryptsetup open /dev/nvme0n1p1 nvme0n1p1_encrypted Enter passphrase for /dev/nvme0n1p1: 这会解锁分区,并使用设备映射器将其映射到新设备。要不覆盖加密的数据,这个命令会警告内核,该设备是一个加密设备,并使用 /dev/mapper/device_mapped_name 路径通过 LUKS 解决了。
- 列表:创建一个文件系统来将加密的数据写入分区,该分区必须可通过设备映射名称访问: # mkfs -t ext4 /dev/mapper/nvme0n1p1_encrypted
- 列表:挂载该设备: # mount /dev/mapper/nvme0n1p1_encrypted mount-point
- 列表:验证空白块设备是否已加密: # cryptsetup luksDump /dev/nvme0n1p1 LUKS header information Version: 2 Epoch: 3 Metadata area: 16384 [bytes] Keyslots area: 16744448 [bytes] UUID: 34ce4870-ffdf-467c-9a9e-345a53ed8a25 Label: (no label) Subsystem: (no subsystem) Flags: (no flags) Data segments: 0: crypt offset: 16777216 [bytes] length…
- 命令/配置摘录:
# cryptsetup luksFormat /dev/nvme0n1p1
WARNING! ======== This will overwrite data on /dev/nvme0n1p1 irrevocably. Are you sure? (Type 'yes' in capital letters): YES Enter passphrase for /dev/nvme0n1p1: Verify passphrase:17.7. 在 web 控制台中配置 LUKS 密码短语
- 要点:如果要在系统中的现有逻辑卷中添加加密,则只能通过格式化卷进行。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体说明请参阅安装并启用 Web 控制台。
- 列表:cockpit-storaged 软件包已安装在您的系统上。
- 列表:在没有加密的情况下可用的现有逻辑卷.
- 列表:登录到 RHEL 10 web 控制台。
- 列表:在面板中,单击 Storage。
- 列表:在 Storage 表中,点您要加密的存储设备的菜单按钮 ⋮,然后单击 Format。
17.8. 使用命令行更改 LUKS 密码短语
- 要点:使用命令行更改加密磁盘或分区上的 LUKS 密码短语。使用 cryptsetup 实用程序,您可以使用各种配置选项和功能控制加密过程。您还可以将其整合到现有自动化工作流中。
- 要点:先决条件
- 列表:您有 root 权限或使用 sudo 输入管理命令的权限。
- 列表:更改 LUKS 加密设备上现有的密码短语: # cryptsetup luksChangeKey /dev/<device_ID> 将 <device_ID> 替换为设备标识符,例如 sda。 如果您配置了多个密钥插槽,您可以指定要使用的插槽: # cryptsetup luksChangeKey /dev/<device_ID> --key-slot <slot_number> 将 <slot_number> 替换为您要修改的密钥插槽的编号。
- 列表:插入当前的密码短语和新密码短语: Enter passphrase to be changed: Enter new passphrase: Verify passphrase:
- 列表:验证新密码短语: # cryptsetup --verbose open --test-passphrase /dev/<device_ID>
- 列表:验证新密码短语是否可以解锁设备: Enter passphrase for /dev/<device_ID>: Key slot <slot_number> unlocked. Command successful.
- 命令/配置摘录:
# cryptsetup luksChangeKey /dev/<device_ID>
# cryptsetup luksChangeKey /dev/<device_ID> --key-slot <slot_number>17.9. 在 web 控制台中更改 LUKS 密码短语
- 要点:在 web 控制台中的加密磁盘或分区上更改 LUKS 密码短语。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体说明请参阅安装并启用 Web 控制台。
- 列表:cockpit-storaged 软件包已安装在您的系统上。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:在面板中,单击 Storage。
- 列表:在 Storage 表中,选择带有加密数据的磁盘。
- 列表:在磁盘页面中,滚动到 Keys 部分,然后点 edit 按钮。
17.10. 使用 storage RHEL 系统角色创建 LUKS2 加密的卷
- 要点:您可以使用 storage 角色,通过运行 Ansible Playbook 来创建和配置使用 LUKS 加密的卷。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:以可在受管主机上运行 playbook 的用户登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:将敏感变量存储在加密的文件中: 创建 vault : $ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password> 在 ansible-vault create 命令打开编辑器后,以 <key>: <value> 格式输入敏感数据: luks_password: <password> 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
- 列表:创建 vault : $ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
- 列表:在 ansible-vault create 命令打开编辑器后,以 <key>: <value> 格式输入敏感数据: luks_password: <password>
- 命令/配置摘录:
$ ansible-vault create ~/vault.yml
New Vault password: <vault_password> Confirm New Vault password: <vault_password>第 18 章 使用 NVDIMM 持久性内存存储
- 要点:非易失性双内存模块(NVDIMM)持久内存将类似 RAM 的速度与对延迟敏感工作负载的数据持久性(如数据库和缓存)相结合。您可以在连接到您的系统的 NVDIMM 设备中启用和管理各种存储类型。
18.1. NVDIMM 持久内存技术
- 要点:非易失性双内存模块(NVDIMM)持久内存将存储的持久性与 RAM (DRAM)的速度和低延迟相结合。这个字节可寻址的技术会在电源丢失时保留数据,同时为应用程序提供类似内存的性能。
- 要点:以下是使用 NVDIMM 的其他优点:
- 列表:NVDIMM 存储是字节地址的,这意味着可以使用 CPU 负载和存储指令来访问。传统的基于块的存储需要 read ()和 write ()系统调用来访问。NVDIMM 还支持直接加载和存储编程模型。
- 列表:NVDIMM 的性能特征与具有非常低访问延迟的 DRAM 类似,通常以十到百纳秒为单位。
- 列表:当电源关闭时,保存在 NVDIMM 中的数据会被保留,类似于持久性内存。
- 列表:通过直接访问 (DAX) 技术,无需通过系统页面缓存,即可直接到内存映射存储。这样便可为其他目的释放 DRAM。
18.2. NVDIMM 交集和地区
- 要点:非易失性双内存模块 (NVDIMM) 设备支持分组到交集区域。NVDIMM 设备可以像常规动态 RAM (DRAM) 一样分组为交集。
- 要点:interleave 集与跨多个 DIMM 的 RAID 0 级别(条带)配置类似。Interleave 集也称为区域(region)。
- 列表:当 NVDIMM 设备被配置为 interleave 集时,会提高性能。
- 列表:交集可以将多个较小的 NVDIMM 设备组合成一个更大的逻辑设备。
18.3. NVDIMM 命名空间
- 要点:非易失性双内存模块(NVDIMM)区域可以划分为一个或多个命名空间。这取决于标签区域的大小。使用命名空间,您可以使用不同的方法访问该设备。这些方法基于访问模式,如 fsdax、devdax 和 raw。
- 要点:有些 NVDIMM 设备不支持区域中的多个命名空间:
- 列表:如果您的 NVDIMM 设备支持标签,您可以将区域重新划分到命名空间。
- 列表:如果您的 NVDIMM 设备不支持标签,则区域只能包含单个命名空间。在这种情况下,Red Hat Enterprise Linux 会创建一个覆盖整个区域的默认命名空间。
18.4. NVDIMM 访问模式
- 要点:非易失性双内存模块命名空间支持不同的访问模式,包括 devdax、fsdax 和 raw 模式,每个模式都有特定的功能和限制。
- 要点:您可以配置 Non-Volatile Dual In-line Memory Modules (NVDIMM) 命名空间,以使用以下模式之一:
18.5. 安装 ndctl
- 要点:您可以安装 ndctl 工具来配置和监控 Non-Volatile Dual In-line Memory Modules (NVDIMM) 设备。
- 要点:流程
- 列表:安装 ndctl 工具: # dnf install ndctl
- 命令/配置摘录:
# dnf install ndctl18.6. 在 NVDIMM 上创建设备 DAX 命名空间
- 要点:在设备 DAX 模式下配置附加到您系统的 NVDIMM 设备,以支持具有直接访问功能的字符存储。
- 要点:要做到这一点,请考虑以下选项:
- 列表:将现有命名空间重新配置为设备 DAX 模式。
- 列表:如果有可用空间,请创建新设备 DAX 命名空间。
18.6.1. 设备直接访问模式中的 NVDIMM
- 要点:设备直接访问(设备 DAX、devdax)提供了应用程序直接访问存储的方法,而无需参与文件系统。设备 DAX 的优点在于它提供保证的容错粒度。您可以使用 ndctl 工具的 - align 选项进行配置。
- 要点:对于 Intel 64 和 AMD64 构架,支持以下故障颗粒度:
- 列表:4 KiB
- 列表:2 MiB
- 列表:1 GiB
- 列表:open()
- 列表:close()
- 列表:mmap()
- 注意:注意 不支持 read () 和 write () 系统调用。这是因为设备 DAX 用例与 SNIA Non-Volatile Memory Programming Model 关联。
18.6.2. 将现有的 NVDIMM 命名空间重新配置为设备 DAX 模式
- 要点:您可以将现有的 Non-Volatile Dual In-line Memory Modules (NVDIMM) 命名空间重新配置为设备 DAX 模式。
- 要点:先决条件
- 列表:已安装 ndctl 工具。如需更多信息,请参阅安装 ndctl。
- 列表:列出系统中的所有命名空间: # ndctl list --namespaces --idle [ { "dev":"namespace1.0", "mode":"raw", "size":34359738368, "uuid":"ac951312-b312-4e76-9f15-6e00c8f2e6f4" "state":"disabled", "numa_node":1 }, { "dev":"namespace0.0", "mode":"raw", "size":38615912448, "uuid":"ff5a0a16-3495-4ce8-b86b-f0e3bd9d1817", "state":"d…
- 列表:重新配置任何命名空间: # ndctl create-namespace --force --mode=devdax --reconfig=namespace-ID 例如,以下命令为支持 DAX 的数据存储重新配置 namespace0.1。它与 2-MiB 故障粒度一致,以确保操作系统一次在 2-MiB 页面中故障: # ndctl create-namespace --force --mode=devdax --align=2M --reconfig=namespace0.1 { "dev":"namespace0.1", "mode":"devdax", "map":"dev", "size":"35.44 GiB …
- 列表:验证系统中的现有命名空间是否已重新配置: # ndctl list --namespace namespace0.1 [ { "dev":"namespace0.1", "mode":"devdax", "map":"dev", "size":38048628736, "uuid":"426d6a52-df92-43d2-8cc7-046241d6d761", "chardev":"dax0.1", "align":2097152 } ]
- 命令/配置摘录:
# ndctl list --namespaces --idle
[ { "dev":"namespace1.0", "mode":"raw", "size":34359738368, "uuid":"ac951312-b312-4e76-9f15-6e00c8f2e6f4" "state":"disabled", "numa_node":1 }, { "dev":"namespace0.0", "mode":"raw", "size":38615912448, "uuid":"ff5a0a16-3495-4ce8-b86b-f0e3bd9d1817", "state":"disabled", "numa_node":0 } ]- 注意:警告 重新配置命名空间会删除之前在命名空间中存储的数据。
18.6.3. 在设备 DAX 模式下创建新 NVDIMM 命名空间
- 要点:您可以在非线性内存模块(NVDIMM)设备上创建新设备 DAX 命名空间。这要求区域中的可用空间。
- 要点:先决条件
- 列表:已安装 ndctl 工具。如需更多信息,请参阅安装 ndctl。
- 列表:NVDIMM 设备支持标签在区域中创建多个命名空间。您可以使用以下命令检查它: # ndctl read-labels nmem0 >/dev/null read 1 nmem 这表示它读取一个 NVDIMM 设备的标签。如果值为 0,这表示您的设备不支持标签。
- 列表:列出系统上有可用空间的 pmem 区域。在以下示例中,在 region1 和 region0 区域中有空间: # ndctl list --regions [ { "dev":"region1", "size":2156073582592, "align":16777216, "available_size":2117418876928, "max_available_extent":2117418876928, "type":"pmem", "iset_id":-9102197055295954944, "badblock_count":1, "persistence_domain":"memory_cont…
- 列表:在任何可用区域上分配一个或多个命名空间: # ndctl create-namespace --mode=devdax --region=regionN --size=namespace-size 例如,以下命令在 region0 上创建 36-GiB 设备 DAX 命名空间。它与 2-MiB 故障粒度一致。这样可确保操作系统一次在 2-MiB 页面中失败: # ndctl create-namespace --mode=devdax --region=region0 --align=2M --size=36G { "dev":"namespace0.2", "mode":"devdax", "map":"dev", "s…
- 列表:验证是否已在设备 DAX 模式下创建了新命名空间: # ndctl list -RN -n namespace0.2 { "regions":[ { "dev":"region0", "size":2156073582592, "align":16777216, "available_size":2065879269376, "max_available_extent":2065879269376, "type":"pmem", "iset_id":736272362787276936, "badblock_count":3, "persistence_domain":"memory_controller",…
- 命令/配置摘录:
# ndctl read-labels nmem0 >/dev/null
read 1 nmem18.7. 在 NVDIMM 上创建文件系统 DAX 命名空间
- 要点:在文件系统 DAX 模式中配置附加到您的系统的 NVDIMM 设备。这支持具有直接访问功能的文件系统。
- 要点:要做到这一点,请考虑以下选项:
- 列表:将现有命名空间重新配置为文件系统 DAX 模式。
- 列表:如果有可用空间,请创建新文件系统 DAX 命名空间。
18.7.1. 文件系统直接访问模式中的 NVDIMM
- 要点:您可以在文件系统直接访问模式(fsdax)中配置 NVDIMM 设备。在这个模式中,会在设备之上创建一个文件系统。在文件中使用 mmap () 的应用程序获得直接存储访问,启用 NVDIMM 直接访问编程模型。
- 要点:以下新的 -o dax 选项现在可用,如果需要,可以通过文件属性控制直接访问行为:
- 列表:在小设备中,开销非常小,足以满足 DRAM 的要求。例如,16-GiB 命名空间只需要 256 MiB 用于页面结构。因为 NVDIMM 设备通常比较小且昂贵,所以最好将页面跟踪数据结构保存在 DRAM 中。
- 列表:在大小为 TB 的 NVDIMM 设备中,存储页面跟踪数据结构所需的内存可能会超过系统 DRAM。一个 TiB 的 NVDIMM 需要 16 GiB 用于页面结构。一个 TiB 的 NVDIMM 需要 16 GiB 用于页面结构。因此,在这种情况下首选将数据结构存储在 NVDIMM 本身中。 您可以在配置命名空间时使用 --map 选项配置每个页面元数据存储的位置:
- 列表:要在系统 RAM 中分配,请使用 --map=mem。
- 列表:要在 NVDIMM 上分配,请使用 --map=dev。
- 注意:警告 在以后的发行版本中,-o dax 可能不被支持,如果需要,您可以使用 -o dax=always。在这个模式中,每个文件都可能处于直接访问模式。
18.7.2. 将现有的 NVDIMM 命名空间重新配置为文件系统 DAX 模式
- 要点:您可以使用 ndctl 将现有的 Non-Volatile Dual In-line Memory Modules (NVDIMM)命名空间重新配置为文件系统 DAX 模式。您还可以通过启用 DAX 来提高存储性能,并安全地转换命名空间,了解该重新配置将删除所有之前存储的数据。
- 要点:先决条件
- 列表:已安装 ndctl 工具。如需更多信息,请参阅安装 ndctl。
- 列表:列出系统中的所有命名空间: # ndctl list --namespaces --idle [ { "dev":"namespace1.0", "mode":"raw", "size":34359738368, "uuid":"ac951312-b312-4e76-9f15-6e00c8f2e6f4" "state":"disabled", "numa_node":1 }, { "dev":"namespace0.0", "mode":"raw", "size":38615912448, "uuid":"ff5a0a16-3495-4ce8-b86b-f0e3bd9d1817", "state":"d…
- 列表:重新配置任何命名空间: # ndctl create-namespace --force --mode=fsdax --reconfig=namespace-ID 例如,要将 namespace0.0 用于支持 DAX 的文件系统,请使用以下命令: # ndctl create-namespace --force --mode=fsdax --reconfig=namespace0.0 { "dev":"namespace0.0", "mode":"fsdax", "map":"dev", "size":"11.81 GiB (12.68 GB)", "uuid":"f8153ee3-c52d-4c6e-bc1d-197…
- 列表:验证系统中的现有命名空间是否已重新配置: # ndctl list --namespace namespace0.0 [ { "dev":"namespace0.0", "mode":"fsdax", "map":"dev", "size":12681478144, "uuid":"f8153ee3-c52d-4c6e-bc1d-197f5be38483", "sector_size":512, "align":2097152, "blockdev":"pmem0" } ]
- 命令/配置摘录:
# ndctl list --namespaces --idle
[ { "dev":"namespace1.0", "mode":"raw", "size":34359738368, "uuid":"ac951312-b312-4e76-9f15-6e00c8f2e6f4" "state":"disabled", "numa_node":1 }, { "dev":"namespace0.0", "mode":"raw", "size":38615912448, "uuid":"ff5a0a16-3495-4ce8-b86b-f0e3bd9d1817", "state":"disabled", "numa_node":0 } ]- 注意:警告 重新配置命名空间会删除之前在命名空间中存储的数据。
18.7.3. 在文件系统 DAX 模式下创建新 NVDIMM 命名空间
- 要点:您可以在非线性内存模块(NVDIMM)设备上创建新文件系统 DAX 命名空间。区域必须具有可用空间。
- 要点:先决条件
- 列表:已安装 ndctl 工具。如需更多信息,请参阅安装 ndctl。
- 列表:NVDIMM 设备支持标签在区域中创建多个命名空间。您可以使用以下命令检查它: # ndctl read-labels nmem0 >/dev/null read 1 nmem 这表示它读取一个 NVDIMM 设备的标签。如果值为 0,这表示您的设备不支持标签。
- 列表:列出系统上有可用空间的 pmem 区域。在以下示例中,在 region1 和 region0 区域中有空间: # ndctl list --regions [ { "dev":"region1", "size":2156073582592, "align":16777216, "available_size":2117418876928, "max_available_extent":2117418876928, "type":"pmem", "iset_id":-9102197055295954944, "badblock_count":1, "persistence_domain":"memory_cont…
- 列表:在任何可用区域上分配一个或多个命名空间: # ndctl create-namespace --mode=fsdax --region=regionN --size=namespace-size 例如,以下命令在 region0 上创建 36-GiB 文件系统 DAX 命名空间: # ndctl create-namespace --mode=fsdax --region=region0 --size=36G { "dev":"namespace0.3", "mode":"fsdax", "map":"dev", "size":"35.44 GiB (38.05 GB)", "uuid":"99e77865-42eb-4…
- 列表:验证是否已在文件系统 DAX 模式下创建了新命名空间: # ndctl list -RN -n namespace0.3 { "regions":[ { "dev":"region0", "size":2156073582592, "align":16777216, "available_size":2027224563712, "max_available_extent":2027224563712, "type":"pmem", "iset_id":736272362787276936, "badblock_count":3, "persistence_domain":"memory_controller…
- 命令/配置摘录:
# ndctl read-labels nmem0 >/dev/null
read 1 nmem18.7.4. 在文件系统 DAX 设备中创建文件系统
- 要点:您可以在文件系统 DAX 设备中创建文件系统并挂载文件系统。创建文件系统后,应用程序可以使用持久内存并在 mount-point 目录中创建文件。应用程序可以打开文件,并使用 mmap 操作来映射它们以进行直接访问。
- 要点:流程
- 列表:可选:在文件系统 DAX 设备中创建一个分区。如需更多信息,请参阅使用 parted 创建分区。 注意 当在 fsdax 设备中创建分区时,分区必须在页边界上保持一致。在 Intel 64 和 AMD64 构架中,启动和结束分区至少需要 4 KiB 校对。2 MiB 是首选的校对。 默认情况下,parted 工具在 1 MiB 边界上对齐分区。对于第一个分区,指定 2 MiB 作为分区的起点。如果分区的大小是 2 MiB 的倍数,则所有其他分区也都一致。
- 列表:在分区或者 NVDIMM 设备中创建 XFS 或者 ext4 文件系统: # mkfs.xfs -d su=2m,sw=1 fsdax-partition-or-device 注意 现在,支持 dax 的文件和 reflinked 文件现在可以在文件系统中共存。但是,对于单个文件,dax 和 reflink 是互斥的。 另外,为了增加大型页面映射的可能性,请设置条带单元和条带宽度。
- 列表:挂载文件系统: # mount f_sdax-partition-or-device mount-point_ 不需要使用 dax 选项挂载文件系统来启用直接访问模式。当您在挂载时没有指定 dax 选项时,文件系统处于 dax=inode 模式。在激活直接访问模式前,在文件上设置 dax 选项。
- 命令/配置摘录:
# mkfs.xfs -d su=2m,sw=1 fsdax-partition-or-device
# mount f_sdax-partition-or-device mount-point_- 注意:注意 当在 fsdax 设备中创建分区时,分区必须在页边界上保持一致。在 Intel 64 和 AMD64 构架中,启动和结束分区至少需要 4 KiB 校对。2 MiB 是首选的校对。 默认情况下,parted 工具在 1 MiB 边界上对齐分区。对于第一个分区,指定 2 MiB 作为分区的起点。如果分区的大小是 2 MiB 的倍数,则所有其他分区也都一致。
- 注意:注意 现在,支持 dax 的文件和 reflinked 文件现在可以在文件系统中共存。但是,对于单个文件,dax 和 reflink 是互斥的。 另外,为了增加大型页面映射的可能性,请设置条带单元和条带宽度。
18.8. 使用 S.M.A.R.T 监控 NVDIMM 健康状况。
- 要点:一些非线性内存模块 (NVDIMM) 设备支持自监控、分析和报告技术 (S.M.A.R.T.) 接口以检索健康信息。如需更多信息,请参阅系统中的 ndctl-list (1) 手册页。
- 要点:先决条件
- 列表:可选:在一些系统中,上传 acpi_ipmi 驱动程序以检索健康信息: # modprobe acpi_ipmi
- 列表:访问健康信息: # ndctl list --dimms --health [ { "dev":"nmem1", "id":"8089-a2-1834-00001f13", "handle":17, "phys_id":32, "security":"disabled", "health":{ "health_state":"ok", "temperature_celsius":36.0, "controller_temperature_celsius":37.0, "spares_percentage":100, "alarm_temperature":false, "alarm_controller_…
- 命令/配置摘录:
# modprobe acpi_ipmi
# ndctl list --dimms --health- 注意:重要 定期监控 NVDIMM 健康状况以防止数据丢失。如果 S.M.A.R.T. 报告 NVDIMM 设备健康状态的问题,请替换它,如弃用并替换有问题的 NVDIMM 设备中所述。
18.9. 检测和替换断开问题的 NVDIMM 设备
- 要点:如果您发现与系统日志或 S.M.R.T 报告的 Non-Volatile Dual In-line Memory Modules (NVDIMM)相关的错误消息,请检查该设备。这可能意味着 NVDIMM 设备失败。
- 要点:要防止 NVDIMM 设备的数据丢失,请执行以下操作:
- 列表:检测哪个 NVDIMM 设备失败
- 列表:备份保存的数据
- 列表:物理替换该设备
- 列表:检测有问题的设备: # ndctl list --dimms --regions --health { "dimms":[ { "dev":"nmem1", "id":"8089-a2-1834-00001f13", "handle":17, "phys_id":32, "security":"disabled", "health":{ "health_state":"ok", "temperature_celsius":35.0, [...] } [...] }
- 列表:查找有问题的 NVDIMM 的 phys_id 属性: # ndctl list --dimms --human 在上例中,您知道 nmem0 是有问题的 NVDIMM。因此,查找 nmem0 的 phys_id 属性。 在以下示例中,phys_id 是 0x10: # ndctl list --dimms --human [ { "dev":"nmem1", "id":"XXXX-XX-XXXX-XXXXXXXX", "handle":"0x120", "phys_id":"0x1c" }, { "dev":"nmem0", "id":"XXXX-XX-XXXX-XXXXXXXX", "handle":"0x…
- 列表:查找有问题的 NVDIMM 的内存插槽: # dmidecode 在输出中,找到 Handle 标识符与有问题的 NVDIMM 的 phys_id 属性匹配的条目。Locator 字段列出了有问题的 NVDIMM 使用的内存插槽。 在以下示例中,nmem0 设备与 0x0010 标识符匹配,并使用 DIMM-XXX-YYYY 内存插槽: # dmidecode ... Handle 0x0010, DMI type 17, 40 bytes Memory Device Array Handle: 0x0004 Error Information Handle: Not Provided Total Width: 72 bit…
- 命令/配置摘录:
# ndctl list --dimms --regions --health
{ "dimms":[ { "dev":"nmem1", "id":"8089-a2-1834-00001f13", "handle":17, "phys_id":32, "security":"disabled", "health":{ "health_state":"ok", "temperature_celsius":35.0, [...] } [...] }- 注意:警告 在某些情况下,比如 NVDIMM 完全无法正常工作,备份可能会失败。 要防止这种情况,请使用 S.M.A.R.T 定期监控 NVDIMM 设备,如 使用 S.M.A.R.T.T 监控 NVDIMM 健康状况 中所述。在中断前替换失败的 NVDIMM。
第 19 章 丢弃未使用块
- 要点:discard 操作通过通知存储设备不再使用哪个块来提高存储性能和生命周期。它允许 SSD 优化资源水平,并启用精简配置存储来回收空间。
- 要点:先决条件
- 列表:基本文件系统的块设备必须支持物理的丢弃(discard)操作。 如果 /sys/block/<device>/queue/discard_max_bytes 文件中的值不为零,则支持物理丢弃操作。
19.1. 块丢弃操作的类型
- 要点:可以使用批处理、在线或定期方法执行块丢弃操作,每个操作都有特定的用例和性能建议。
- 要点:以下列表描述了各种丢弃操作:
- 列表:系统负载不允许使用批量丢弃,或者
- 列表:为了保持性能,需要在线丢弃操作。
19.2. 执行批块丢弃
- 要点:您可以执行批量块丢弃操作,以丢弃挂载的文件系统上未使用的块。
- 要点:先决条件
- 列表:文件系统已挂载。
- 列表:文件系统底层的块设备支持物理忽略操作。
- 列表:使用 fstrim 工具: 要只在所选文件系统中执行丢弃,请使用: # fstrim mount-point 要在所有挂载的文件系统中执行丢弃,请使用: # fstrim --all
- 列表:要只在所选文件系统中执行丢弃,请使用: # fstrim mount-point
- 列表:要在所有挂载的文件系统中执行丢弃,请使用: # fstrim --all
- 列表:如果您对以下设备运行 fstrim 命令: 不支持丢弃操作的设备,或者 由多个设备组成的逻辑设备(LVM 或 MD),其中任何一个设备都不支持丢弃操作,会显示以下消息: # fstrim /mnt/non_discard fstrim: /mnt/non_discard: the discard operation is not supported
- 命令/配置摘录:
# fstrim mount-point
# fstrim --all19.3. 启用在线块丢弃
- 要点:您可以执行在线块丢弃操作,以自动丢弃所有支持的文件系统上未使用的块。如需更多信息,请参阅您系统上的 mount (8) 和 fstab (5) 手册页。
- 要点:流程
- 列表:在挂载时启用在线丢弃: 手动挂载文件系统时,请添加 -o discard 挂载选项: # mount -o discard device mount-point 永久挂载文件系统时,请将 discard 选项添加到 /etc/fstab 文件的挂载条目中。
- 列表:手动挂载文件系统时,请添加 -o discard 挂载选项: # mount -o discard device mount-point
- 列表:永久挂载文件系统时,请将 discard 选项添加到 /etc/fstab 文件的挂载条目中。
- 命令/配置摘录:
# mount -o discard device mount-point19.4. 使用 storage RHEL 系统角色启用在线块丢弃
- 要点:您可以使用在线块丢弃选项挂载 XFS 文件系统,来自动丢弃未使用的块。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:以可在受管主机上运行 playbook 的用户登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Enable online block discard ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_volumes: - name: barefs type: disk disks: - /dev/sdb fs_type: xfs mou…
- 列表:验证 playbook 语法: $ ansible-playbook --syntax-check ~/playbook.yml 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
- 列表:运行 playbook: $ ansible-playbook ~/playbook.yml
- 命令/配置摘录:
--- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Enable online block discard ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_volumes: - name: barefs type: disk disks: - /dev/sdb fs_type: xfs mount_point: /mnt/data mount_options: discard
$ ansible-playbook --syntax-check ~/playbook.yml19.5. 启用定期块丢弃
- 要点:您可以启用 systemd 计时器来定期丢弃所有支持的文件系统上未使用的块。
- 要点:流程
- 列表:启用并启动 systemd 计时器: # systemctl enable --now fstrim.timer Created symlink /etc/systemd/system/timers.target.wants/fstrim.timer → /usr/lib/systemd/system/fstrim.timer.
- 列表:验证计时器的状态: # systemctl status fstrim.timer fstrim.timer - Discard unused blocks once a week Loaded: loaded (/usr/lib/systemd/system/fstrim.timer; enabled; vendor preset: disabled) Active: active (waiting) since Wed 2023-05-17 13:24:41 CEST; 3min 15s ago Trigger: Mon 2023-05-22 01:20:46 CEST; 4 days left Docs: man:f…
- 命令/配置摘录:
# systemctl enable --now fstrim.timer
Created symlink /etc/systemd/system/timers.target.wants/fstrim.timer → /usr/lib/systemd/system/fstrim.timer.第 20 章 删除存储设备
- 要点:您可以从正在运行的系统中安全地删除存储设备,这有助于防止系统内存过载和数据丢失。
- 要点:不要删除系统上的存储设备,其中:
- 列表:空闲内存低于内存总量的 5%,每 100 个超过 10 个样本。
- 列表:交换是活跃的(在 vmstat 命令的输出中非零的 si 和 so 列)。
- 命令/配置摘录:
# vmstat 1 100
# free20.1. 安全删除存储设备
- 要点:从正在运行的系统中安全地删除存储设备需要顶级的方法。从顶层(通常是应用程序或文件系统)开始,并工作到底层。底层是物理设备。
- 要点:您可以通过多种方式使用存储设备,它们可以在物理设备之上有不同的虚拟配置。例如,您可以将设备的多个实例分组到多路径设备中。您还可以将其包含在独立磁盘的冗余阵列(RAID)中。您还可以使逻辑卷管理器(LVM)组的设备部分成为逻辑卷管理器(LVM)组。此外,设备可以通过文件系统访问,也可以直接访问设备,如"原始"设备。
- 列表:要删除的设备没有被使用
- 列表:对该设备的所有待处理的 I/O 都会被清除
- 列表:操作系统无法引用存储设备
20.2. 删除块设备和相关的元数据
- 要点:要从正在运行的系统中安全地删除块设备,并避免内存过载或数据丢失,请首先删除其元数据。从文件系统向下处理每个层,以确保系统保持稳定且处于一致状态。
- 要点:先决条件
- 列表:您有一个现有的包含文件系统、逻辑卷和卷组的块设备堆栈。
- 列表:您确保没有其他应用程序或服务正在使用您要删除的设备。
- 列表:备份您要删除的设备中的数据。
- 列表:可选:如果要删除多路径设备,且您无法访问其路径设备,请禁用多路径设备的队列。运行以下命令: # multipathd disablequeueing map multipath-device 这可让设备的 I/O 失败,允许使用该设备的应用程序关闭。
- 列表:对于 LVM,运行 lvremove、vgremove 和 pvremove。
- 列表:对于软件独立磁盘的冗余阵列(RAID),请运行 mdadm 来删除阵列。如需更多信息,请参阅 管理 RAID。
- 命令/配置摘录:
# multipathd disablequeueing map multipath-device
# umount /mnt/mount-point- 注意:注意 一次一层地删除设备及其元数据可确保不会在磁盘上保留过时的签名。
- 注意:警告 重新扫描小型计算机系统接口(SCSI)总线或执行更改操作系统状态的其他操作可能会导致延迟。这些延迟可能会导致 I/O 超时、意外删除设备或数据丢失。
第 21 章 配置 Stratis 文件系统
- 要点:Stratis 是 Red Hat Enterprise Linux 的本地存储管理解决方案。它注重简单性、易用性,并可让您访问高级存储功能。
- 要点:Stratis 作为服务运行,以管理物理存储设备池,简化本地存储管理,易于使用。它可帮助您配置和管理复杂存储配置。
- 列表:存储的初始配置
- 列表:稍后进行修改
- 列表:使用高级存储功能
- 列表:文件系统快照
- 列表:精简置备
- 列表:缓存
21.1. Stratis 文件系统的组件
- 要点:Stratis 包括三个主要组件,它们协同工作以提供高级存储管理。这些组件是块设备、存储池和文件系统。它们提供精简配置、快照和自动空间管理。
- 要点:从外部来看,Stratis 在命令行上并通过 API 表示以下文件系统组件:
- 注意:注意 Stratis 卷在其它文档中被称为 "Stratis filesystem"。这是为了保持与命令行界面保持一致。
- 注意:重要 Stratis 跟踪它所创建的文件系统的信息。XFS 不知道此信息。使用 XFS 所做的更改不会自动更新 Stratis。
21.2. 与 Stratis 兼容的块设备
- 要点:Stratis 支持各种块设备,包括物理驱动器、逻辑卷和网络存储。您可以从不同的存储类型构建 Stratis 池,同时保持精简配置和快照等高级功能。
- 要点:可与 Stratis 一起使用的存储设备。
- 列表:Linux Unified Key Setup (LUKS)
- 列表:逻辑卷管理器(LVM)逻辑卷
- 列表:多个设备(MD)独立磁盘的冗余阵列(RAID)
- 列表:设备映射器(DM)多路径
- 列表:Internet Small Computer System Interface (iSCSI)
- 列表:硬盘(HDD)和 Solid-State 磁盘(SSD)
21.3. 安装 Stratis
- 要点:安装 Stratis 存储管理系统,以便在 RHEL 系统上启用高级存储功能。这包括精简配置、文件系统快照以及灵活的基于池的存储管理。
- 要点:流程
- 列表:安装提供 Stratis 服务和命令行工具的软件包: # dnf install stratisd stratis-cli
- 列表:要启动 stratisd 服务并使其在引导时启动: # systemctl enable --now stratisd
- 列表:验证 stratisd 服务是否已启用并正在运行: # systemctl status stratisd stratisd.service - Stratis daemon Loaded: loaded (/usr/lib/systemd/system/stratisd.service; enabled; preset:> Active: active (running) since Tue 2025-03-25 14:04:42 CET; 30min ago Docs: man:stratisd(8) Main PID: 24141 (stratisd) Tasks: 22 (limit: 99365) Memory: 10.…
- 命令/配置摘录:
# dnf install stratisd stratis-cli
# systemctl enable --now stratisd21.4. 创建未加密的 Stratis 池
- 要点:您可以从一个或多个块设备创建未加密的 Stratis 池。
- 要点:先决条件
- 列表:Stratis 已安装,stratisd 服务正在运行。如需更多信息,请参阅 安装 Stratis。
- 列表:您在其上创建 Stratis 池的块设备没有被使用、卸载,且至少有 1 GB 空间。
- 列表:在 IBM Z 构架中,必须对 /dev/dasd* 块设备进行分区。使用分区设备来创建 Stratis 池。 有关分区 DASD 设备的详情,请参考 在 64 位 IBM Z 上配置 Linux 实例。
- 列表:删除您要在 Stratis 池中使用的每个块设备上存在的任何文件系统、分区表或 RAID 签名: # wipefs --all block-device block-device 值是块设备的路径,例如 /dev/sdb。
- 列表:在所选的块设备上创建新的未加密的 Stratis 池: # stratis pool create my-pool block-device block-device 值是空或者擦除的块设备的路径。 您还可以使用以下命令在一行上指定多个块设备: # stratis pool create my-pool block-device-1 block-device-2
- 列表:确认创建了新的 Stratis 池: # stratis pool list
- 命令/配置摘录:
# wipefs --all block-device
# stratis pool create my-pool block-device- 注意:注意 您只能在创建过程中加密 Stratis 池,之后不能。
21.5. 使用 Web 控制台创建未加密的 Stratis 池
- 要点:您可以使用 Web 控制台从一个或多个块设备创建一个未加密的 Stratis 池。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体说明请参阅安装并启用 Web 控制台。
- 列表:Stratis 已安装,stratisd 服务正在运行。如需更多信息,请参阅 安装 Stratis。
- 列表:您在其上创建 Stratis 池的块设备没有被使用、卸载,且至少有 1 GB 空间。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage。
- 列表:在 Storage 表中,点菜单按钮并选择 Create Stratis pool。
- 注意:注意 您不能在其创建后加密一个未加密的 Stratis 池。
21.6. 使用内核密钥环中的密钥创建加密的 Stratis 池
- 要点:要保护您的数据,请使用内核密钥环从一个或多个块设备创建加密的 Stratis 池。当您这样做时,内核密钥环将用作主加密机制。后续系统重启此内核密钥环后,用来解锁加密的 Stratis 池。
- 要点:当从一个或多个块设备创建加密的 Stratis 池时,请注意以下几点:
- 列表:每个块设备都使用 cryptsetup 库加密,并实施 LUKS2 格式。
- 列表:每个 Stratis 池都可以有一个唯一的密钥,或者与其他池共享相同的密钥。这些密钥保存在内核密钥环中。
- 列表:组成 Stratis 池的块设备必须全部加密或者全部未加密。不可能同时在同一个 Stratis 池中加密和未加密块设备。
- 列表:添加到加密的 Stratis 池的数据缓存中的块设备被自动加密。
- 列表:Stratis v2.1.0 或更高版本已安装,stratisd 服务正在运行。如需更多信息,请参阅 安装 Stratis。
- 列表:您在其上创建 Stratis 池的块设备没有被使用、卸载,且至少有 1 GB 空间。
- 命令/配置摘录:
# wipefs --all block-device
# stratis key set --capture-key key-description21.7. 使用 Clevis 创建加密的 Stratis 池
- 要点:从 Stratis 2.4.0 开始,您可以通过在命令行中指定 Clevis 选项来创建加密池。
- 要点:先决条件
- 列表:Stratis v2.3.0 或更高版本已安装,stratisd 服务正在运行。如需更多信息,请参阅 安装 Stratis。
- 列表:已创建一个加密的 Stratis 池。如需更多信息,请参阅使用内核密钥环 中的密钥创建加密的 Stratis 池。
- 列表:您的系统支持受信任的平台模块(TPM) 2.0。
- 列表:删除您要在 Stratis 池中使用的每个块设备上存在的任何文件系统、分区表或 RAID 签名: # wipefs --all block-device block-device 值是块设备的路径,例如 /dev/sdb。
- 列表:创建加密的 Stratis 池,并指定用于加密的 Clevis 机制: # stratis pool create --clevis tpm2 my-pool block-device tpm2 指定要使用的 Clevis 机制。 my-pool 指定新的 Stratis 池的名称。 block-device 指定到空或者有线块设备的路径。 或者,使用以下命令使用 Clevis tang 服务器机制: # stratis pool create --clevis tang --tang-url my-url --thumbprint thumbprint my-pool block-device tang 指定要使用的 Clevi…
- 列表:确认创建了新的 Stratis 池: # stratis pool list 注意 您还可以通过在创建池期间同时指定 Clevis 和 keyring 选项,使用 Clevis 和 keyring 机制创建加密的池。
- 命令/配置摘录:
# wipefs --all block-device
# stratis pool create --clevis tpm2 my-pool block-device- 注意:注意 您还可以通过在创建池期间同时指定 Clevis 和 keyring 选项,使用 Clevis 和 keyring 机制创建加密的池。
21.8. 使用 storage RHEL 系统角色创建加密的 Stratis 池
- 要点:要保护数据,您可以使用 storage RHEL 系统角色创建一个加密的 Stratis 池。除了密码短语外,您还可以使用 Clevis 和 Tang 或 TPM 保护作为加密方法。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:以可在受管主机上运行 playbook 的用户登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:您可以连接到 Tang 服务器。如需更多信息,请参阅 部署 SELinux 为 enforcing 模式的 Tang 服务器。
- 列表:将敏感变量存储在加密的文件中: 创建 vault : $ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password> 在 ansible-vault create 命令打开编辑器后,以 <key>: <value> 格式输入敏感数据: luks_password: <password> 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
- 列表:创建 vault : $ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
- 命令/配置摘录:
$ ansible-vault create ~/vault.yml
New Vault password: <vault_password> Confirm New Vault password: <vault_password>- 注意:重要 您只能对整个池配置 Stratis 加密。
21.9. 使用 Web 控制台创建加密的 Stratis 池
- 要点:要保护您的数据,您可以使用 Web 控制台从一个或多个块设备创建一个加密的 Stratis 池。
- 要点:当从一个或多个块设备创建加密的 Stratis 池时,请注意以下几点:
- 列表:每个块设备都使用 cryptsetup 库加密,并实现 Linux Unified Key Setup 版本 2 (LUKS2)格式。
- 列表:每个 Stratis 池都可以有一个唯一的密钥,或者与其他池共享相同的密钥。这些密钥保存在内核密钥环中。
- 列表:组成 Stratis 池的块设备必须全部加密或者全部未加密。不可能同时在同一个 Stratis 池中加密和未加密块设备。
- 列表:添加到加密 Stratis 池的数据层中的块设备会自动加密。
- 列表:您已安装了 RHEL 10 web 控制台。 具体说明请参阅安装并启用 Web 控制台。
- 列表:Stratis v2.1.0 或更高版本已安装,stratisd 服务正在运行。
21.10. 使用 Web 控制台重命名 Stratis 池
- 要点:您可以使用 Web 控制台重命名现有的 Stratis 池。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体说明请参阅安装并启用 Web 控制台。
- 列表:Stratis 已安装,stratisd 服务正在运行。 默认情况下,web 控制台会检测并安装 Stratis。但是,要手动安装 Stratis,请参阅 安装 Stratis。
- 列表:一个 Stratis 池已创建。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage。
- 列表:在 Storage 表中,点您要重命名的 Stratis 池。
21.11. 在 Stratis 文件系统中配置过度置备模式
- 要点:默认情况下,每个 Stratis 池都过度置备,这意味着逻辑文件系统大小可能会超过物理分配。Stratis 监控使用情况,并在有空间可用时自动增加分配。如果池已满,则无法分配额外的空间。
- 要点:Stratis 持续监控池使用情况,并使用 D-Bus API 报告值。存储管理员必须监控这些值,并根据需要将设备添加到池中,以防止其达到容量上限。
- 列表:Stratis 已安装。如需更多信息,请参阅 安装 Stratis。
- 列表:要正确配置池,您可以有两个可能: 从一个或多个块设备创建池,以便在创建时完全置备池: # stratis pool create --no-overprovision pool-name /dev/sdb 通过使用 --no-overprovision 选项,池无法分配比实际可用的物理空间更多的逻辑空间。 在现有池中设置过度置备模式: # stratis pool overprovision pool-name <yes|no> 如果设置为 "yes",则启用过度置备到池。这意味着池支持的 Stratis 文件系统的逻辑大小可能会超过可用的数据空间。如果池被过度置备,且所有文件系统的逻辑大小总和都超过可用空间,则无法关闭过度置备。…
- 列表:从一个或多个块设备创建池,以便在创建时完全置备池: # stratis pool create --no-overprovision pool-name /dev/sdb
- 列表:通过使用 --no-overprovision 选项,池无法分配比实际可用的物理空间更多的逻辑空间。 在现有池中设置过度置备模式: # stratis pool overprovision pool-name <yes|no> 如果设置为 "yes",则启用过度置备到池。这意味着池支持的 Stratis 文件系统的逻辑大小可能会超过可用的数据空间。如果池被过度置备,且所有文件系统的逻辑大小总和都超过可用空间,则无法关闭过度置备。系统返回错误。
- 列表:在现有池中设置过度置备模式: # stratis pool overprovision pool-name <yes|no> 如果设置为 "yes",则启用过度置备到池。这意味着池支持的 Stratis 文件系统的逻辑大小可能会超过可用的数据空间。如果池被过度置备,且所有文件系统的逻辑大小总和都超过可用空间,则无法关闭过度置备。系统返回错误。
- 列表:查看 Stratis 池的完整列表: # stratis pool list Name Total Physical Properties UUID Alerts pool-name 1.42 TiB / 23.96 MiB / 1.42 TiB ~Ca,~Cr,~Op cb7cb4d8-9322-4ac4-a6fd-eb7ae9e1e540
- 命令/配置摘录:
# stratis pool create --no-overprovision pool-name /dev/sdb
# stratis pool overprovision pool-name <yes|no>- 注意:注意 如果文件系统耗尽空间,用户可能会丢失数据。对于数据丢失的风险超过过度置备的好处的应用程序,可以禁用此功能。
21.12. 将 Stratis 池绑定到 NBDE
- 要点:将加密的 Stratis 池绑定到网络绑定磁盘加密(NBDE)需要 Tang 服务器。当包含 Stratis 池的系统重启时,它会与 Tang 服务器连接,以自动解锁加密的池。您不需要提供内核密钥环描述。
- 要点:先决条件
- 列表:Stratis v2.3.0 或更高版本已安装,stratisd 服务正在运行。如需更多信息,请参阅 安装 Stratis。
- 列表:已创建一个加密的 Stratis 池,并且您有用于加密的密钥的密钥的密钥描述。如需更多信息,请参阅使用内核密钥环 中的密钥创建加密的 Stratis 池。
- 列表:您可以连接到 Tang 服务器。如需更多信息,请参阅 部署 SELinux 为 enforcing 模式的 Tang 服务器。
- 列表:将加密的 Stratis 池绑定到 NBDE: # stratis pool bind nbde --trust-url my-pool tang-server my-pool 指定加密的 Stratis 池的名称。 tang-server 指定 Tang 服务器的 IP 地址或 URL。
- 列表:使用基于策略的解密配置加密卷的自动解锁
- 命令/配置摘录:
# stratis pool bind nbde --trust-url my-pool tang-server- 注意:注意 将 Stratis 池绑定到补充的 Clevis 加密机制不会删除主内核密钥环加密。
21.13. 将 Stratis 池绑定到 TPM
- 要点:当您将加密的 Stratis 池绑定到受信任的平台模块(TPM) 2.0 时,包含池的系统会重启,并且池会自动解锁,而无需提供内核 keyring 描述。
- 要点:先决条件
- 列表:Stratis v2.3.0 或更高版本已安装,stratisd 服务正在运行。如需更多信息,请参阅 安装 Stratis。
- 列表:已创建一个加密的 Stratis 池,并且您有用于加密的密钥的密钥的密钥描述。如需更多信息,请参阅使用内核密钥环 中的密钥创建加密的 Stratis 池。
- 列表:您的系统支持 TPM 2.0。
- 列表:将加密的 Stratis 池绑定到 TPM: # stratis pool bind tpm my-pool my-pool 指定加密的 Stratis 池的名称。 key-description 引用内核密钥环中存在的密钥,该密钥是在您创建加密的 Stratis 池时生成的。
- 命令/配置摘录:
# stratis pool bind tpm my-pool21.14. 使用内核密钥环解加密的 Stratis 池
- 要点:系统重启后,您的加密 Stratis 池或组成它的块设备可能不可见。您可以使用用于加密池的内核密钥环来解锁池。
- 要点:先决条件
- 列表:Stratis v2.1.0 已安装,stratisd 服务正在运行。如需更多信息,请参阅 安装 Stratis。
- 列表:已创建一个加密的 Stratis 池。如需更多信息,请参阅使用内核密钥环 中的密钥创建加密的 Stratis 池。
- 列表:使用之前使用的同一密钥描述重新创建密钥集: # stratis key set --capture-key key-description key-description 引用内核 keyring 中存在的密钥,该密钥是在您创建加密的 Stratis 池时生成的。
- 列表:验证 Stratis 池是可见的: # stratis pool list
- 命令/配置摘录:
# stratis key set --capture-key key-description
# stratis pool list21.15. 解除 Stratis 池与补充加密的绑定
- 要点:当您解除加密的 Stratis 池与支持的附加加密机制的绑定时,主内核密钥环加密将保持不变。对于一开始就使用 Clevis 加密创建的池,这并不适用。
- 要点:先决条件
- 列表:Stratis v2.3.0 或更高版本已安装在您的系统上。如需更多信息,请参阅 安装 Stratis。
- 列表:已创建一个加密的 Stratis 池。如需更多信息,请参阅使用内核密钥环 中的密钥创建加密的 Stratis 池。
- 列表:加密的 Stratis 池绑定到受支持的补充加密机制。
- 列表:解除加密的 Stratis 池与补充加密机制的绑定: # stratis pool unbind clevis my-pool my-pool 指定您要解绑的 Stratis 池的名称。
- 列表:将加密的 Stratis 池绑定到 NBDE
- 列表:将加密的 Stratis 池绑定到 TPM
- 命令/配置摘录:
# stratis pool unbind clevis my-pool21.16. 启动和停止 Stratis 池
- 要点:您可以启动和停止 Stratis 池。这可让您选择忽略或关闭用于构建池的所有对象。这些对象包括文件系统、缓存设备、精简池和加密设备。
- 要点:请注意,如果池主动使用任何设备或文件系统,则可能会发出警告而不是停止。stopped 状态记录在池的元数据中。这些池不会在以下引导上启动,直到池收到 start 命令。
- 列表:Stratis 已安装,stratisd 服务正在运行。如需更多信息,请参阅 安装 Stratis。
- 列表:一个未加密的或加密的 Stratis 池已创建。如需更多信息,请参阅 创建未加密的 Stratis 池 ,或使用内核密钥环中的密钥创建加密的 Stratis 池。
- 列表:使用以下命令停止 Stratis 池。这会关闭存储堆栈,但保留所有元数据不变: # stratis pool stop --name pool-name
- 列表:使用以下命令启动 Stratis 池。--unlock-method 选项指定池被加密的解锁方法: # stratis pool start --unlock-method <keyring|clevis> --name pool-name 注意 您可以使用池名称或池 UUID 启动池。
- 列表:使用以下命令列出系统上所有活跃的池: # stratis pool list
- 列表:使用以下命令列出所有停止的池: # stratis pool list --stopped
- 命令/配置摘录:
# stratis pool stop --name pool-name
# stratis pool start --unlock-method <keyring|clevis> --name pool-name- 注意:注意 您可以使用池名称或池 UUID 启动池。
21.17. 创建 Stratis 文件系统
- 要点:创建 Stratis 文件系统,以利用存储池中的高级存储功能。这包括精简配置、自动文件系统增长和集成的快照支持。
- 要点:先决条件
- 列表:Stratis 已安装,stratisd 服务正在运行。如需更多信息,请参阅 安装 Stratis。
- 列表:一个 Stratis 池已创建。如需更多信息,请参阅 创建未加密的 Stratis 池 或使用内核密钥环 中的密钥。
- 列表:在池上创建一个 Stratis 文件系统: # stratis filesystem create --size number-and-unit my-pool my-fs number-and-unit 指定文件系统的大小。规格格式必须遵循标准大小规格格式进行输入,即 B、KiB、MiB、GiB、TiB 或 PiB。 my-pool 指定 Stratis 池的名称。 my-fs 为文件系统指定一个任意名称。 例如,创建一个 Stratis 文件系统: # stratis filesystem create --size 10GiB pool1 filesystem1
- 列表:设置文件系统的大小限制: # stratis filesystem create --size number-and-unit --size-limit number-and-unit my-pool my-fs 注意 从 Stratis 3.6.0 开始提供这个选项。 如果需要,您还可以稍后删除大小限制: # stratis filesystem unset-size-limit my-pool my-fs
- 列表:列出池中的文件系统,以检查 Stratis 文件系统是否已创建: # stratis fs list my-pool
- 列表:挂载 Stratis 文件系统
- 命令/配置摘录:
# stratis filesystem create --size number-and-unit my-pool my-fs
# stratis filesystem create --size 10GiB pool1 filesystem1- 注意:注意 从 Stratis 3.6.0 开始提供这个选项。
21.18. 挂载 Stratis 文件系统
- 要点:挂载现有的 Stratis 文件系统以访问其内容。
- 要点:先决条件
- 列表:Stratis 已安装,stratisd 服务正在运行。如需更多信息,请参阅 安装 Stratis。
- 列表:一个 Stratis 文件系统已创建。如需更多信息,请参阅创建 Stratis 文件系统。
- 列表:要挂载文件系统,请使用 Stratis 在 /dev/stratis/ 目录中维护的条目: # mount /dev/stratis/my-pool/my-fs mount-point 现在该文件系统被挂载到 mount-point 目录中并可使用。 注意 在停止池之前,卸载属于池的所有文件系统。如果仍然挂载了任何文件系统,则池不会停止。
- 命令/配置摘录:
# mount /dev/stratis/my-pool/my-fs mount-point- 注意:注意 在停止池之前,卸载属于池的所有文件系统。如果仍然挂载了任何文件系统,则池不会停止。
21.19. 在引导时配置挂载一个 Stratis 文件系统
- 要点:您可以通过配置正确启动池的机制,将 Stratis 文件系统配置为在引导时挂载。如果没有此机制,挂载操作会失败。Stratis 提供两个 systemd 服务来支持此过程。
- 要点:先决条件
- 列表:Stratis 文件系统(如 <my-fs>)是在 Stratis 池(如 <my-pool>)上创建的。如需更多信息,请参阅 创建一个 Stratis 文件系统。
- 列表:已创建一个挂载点目录,如 <mount-point>。
- 列表:已确定文件系统池的 UUID ,如 <pool-uuid>。
- 列表:以 root 用户身份编辑 /etc/fstab 文件。 将 x-systemd.requires=stratis-fstab-setup@<pool-uuid > .service 添加到 /etc/fstab 条目的挂载选项中: /dev/stratis/<my-pool>/<my-fs> <mount-point> xfs defaults,x-systemd.requires=stratis-fstab-setup@<pool-uuid>.service 如果池通过 Clevis 加密,请添加 x-systemd.requires=stratis-fstab-with-network@ <pool-uuid > .serv…
- 列表:将 x-systemd.requires=stratis-fstab-setup@<pool-uuid > .service 添加到 /etc/fstab 条目的挂载选项中: /dev/stratis/<my-pool>/<my-fs> <mount-point> xfs defaults,x-systemd.requires=stratis-fstab-setup@<pool-uuid>.service
- 列表:如果池通过 Clevis 加密,请添加 x-systemd.requires=stratis-fstab-with-network@ <pool-uuid > .service 和 _netdev : /dev/stratis/<my-pool>/<my-fs> <mount-point> xfs defaults,x-systemd.requires=stratis-fstab-setup-with-network@<pool-uuid>.service,_netdev 替换:
- 命令/配置摘录:
/dev/stratis/<my-pool>/<my-fs> <mount-point> xfs defaults,x-systemd.requires=stratis-fstab-setup@<pool-uuid>.service
/dev/stratis/<my-pool>/<my-fs> <mount-point> xfs defaults,x-systemd.requires=stratis-fstab-setup-with-network@<pool-uuid>.service,_netdev- 注意:注意 Stratis 目前不支持管理根文件系统。这些指令只适用于非根文件系统。
- 注意:重要 在引导时从加密的 Stratis 池挂载 Stratis 文件系统可能会导致引导过程停止。这将继续,直到提供密码。如果使用任何无人值守机制(如 NBDE 或 TPM2)加密池,则 Stratis 池会自动解锁。如果没有解锁,用户可能需要在控制台中输入密码来解锁文件系统的池。
21.20. 使用 Web 控制台创建和配置 Stratis 文件系统
- 要点:您可以使用 Web 控制台在现有 Stratis 池中创建一个文件系统。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体说明请参阅安装并启用 Web 控制台。
- 列表:stratisd 服务在运行。
- 列表:一个 Stratis 池已创建。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage。
- 列表:点击您要在其上创建文件系统的 Stratis 池。
第 22 章 使用附加的块设备扩展 Stratis 池
- 要点:您可以在 Stratis 池中添加附加块设备以便为 Stratis 文件系统提供更多存储容量。您可以手动或使用 Web 控制台进行此操作。
22.1. 在 Stratis 池中添加块设备
- 要点:您可以在 Stratis 池中添加一个或多个块设备。
- 要点:先决条件
- 列表:Stratis 已安装,stratisd 服务正在运行。如需更多信息,请参阅 安装 Stratis。
- 列表:您在其上创建 Stratis 池的块设备没有被使用、卸载,且至少有 1 GB 空间。
- 列表:要在池中添加一个或多个块设备,请使用: # stratis pool add-data my-pool device-1 device-2 device-n
- 命令/配置摘录:
# stratis pool add-data my-pool device-1 device-2 device-n22.2. 使用 Web 控制台向 Stratis 池中添加块设备
- 要点:您可以使用 Web 控制台向现有 Stratis 池中添加块设备。您还可以将缓存添加为块设备。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体说明请参阅安装并启用 Web 控制台。
- 列表:stratisd 服务在运行。
- 列表:一个 Stratis 池已创建。
- 列表:您在其上创建 Stratis 池的块设备没有被使用、卸载,且至少有 1 GB 空间。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage。
第 23 章 监控 Stratis 文件系统
- 要点:作为 Stratis 用户,您可以查看系统上有关 Stratis 文件系统的信息,以监控其状态和可用空间。
23.1. 显示有关 Stratis 文件系统的信息
- 要点:您可以使用 stratis 工具列出 Stratis 文件系统的统计信息。这包括属于池的总、已使用、可用大小、文件系统和块设备。
- 要点:XFS 文件系统的大小是它可以管理的用户数据总量。在精简配置的 Stratis 池中,Stratis 文件系统可能似乎具有大于分配的空间的大小。XFS 文件系统的大小与这个表观大小相匹配,这意味着它通常大于所分配的空间。标准 Linux 工具(如 df )报告 XFS 文件系统的大小。这个值通常高估了 XFS 文件系统所需的空间,因此也高估了 Stratis 为其分配的空间。
- 列表:Stratis 已安装,stratisd 服务正在运行。如需更多信息,请参阅安装 Stratis。
- 列表:要显示系统中用于 Stratis 的所有块设备的信息: # stratis blockdev Pool Name Device Node Physical Size Tier UUID my-pool /dev/sdb 9.10 TiB Data ec9fb718-f83c-11ef-861e-7446a09dccfb
- 列表:显示系统中所有 Stratis 池的信息: # stratis pool Name Total/Used/Free Properties UUID Alerts my-pool 8.00 GiB / 800.99 MiB / 7.22 GiB -Ca,-Cr,Op e22772c2-afe9-446c-9be5-2f78f682284e WS001
- 列表:显示系统中所有 Stratis 文件系统的信息: # stratis filesystem Pool Filesystem Total/Used/Free/Limit Device UUID Spool1 sfs1 1 TiB / 546 MiB / 1023.47 GiB / None /dev/stratis/spool1/sfs1 223265f5-8f17-4cc2-bf12-c3e9e71ff7bf 您还可以通过指定文件系统名称或 UUID 显示有关系统上 Stratis 文件系统的详细信息: # stratis filesystem list my-pool --name my-fs UUID: 47255008-9b…
- 命令/配置摘录:
# stratis blockdev
Pool Name Device Node Physical Size Tier UUID my-pool /dev/sdb 9.10 TiB Data ec9fb718-f83c-11ef-861e-7446a09dccfb- 注意:重要 定期监控过度置备的 Stratis 池的使用情况。如果文件系统使用量接近分配的空间,Stratis 会自动使用池中的可用空间增加分配。但是,如果已经分配了所有可用空间,并且池已满,则不会分配额外的空间。这会导致文件系统用尽空间。这可能导致使用 Stratis 文件系统的应用程序中数据丢失的风险。
23.2. 使用 Web 控制台查看 Stratis 池
- 要点:您可以使用 Web 控制台查看现有的 Stratis 池,以及其包含的文件系统。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体说明请参阅安装并启用 Web 控制台。
- 列表:stratisd 服务在运行。
- 列表:您有一个现有的 Stratis 池。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage。
- 列表:在 Storage 表中,点您要查看的 Stratis 池。 Stratis 池页面显示有关池以及您在池中创建的文件系统的所有信息。
第 24 章 在 Stratis 文件系统中使用快照
- 要点:您可以使用 Stratis 文件系统的快照任意时间捕获文件系统状态,并在以后恢复它。
24.1. Stratis 快照的特性
- 要点:Stratis 快照是作为其他 Stratis 文件系统的时点副本创建的常规文件系统。它们独立于源文件系统运行,可用于备份、测试或数据恢复目的。
- 要点:Stratis 中的当前快照实现的特征如下:
- 列表:文件系统快照是另一个文件系统。
- 列表:快照及其原始卷在生命周期中不会被链接。快照的文件系统可以比它从中创建的文件系统更长。
- 列表:文件系统不一定被挂载来生成快照。
- 列表:每个快照使用大约一半的实际后备存储,这是 XFS 日志所需要的。
24.2. 创建 Stratis 快照
- 要点:您可以创建一个 Stratis 文件系统作为现有 Stratis 文件系统的一个快照。
- 要点:先决条件
- 列表:Stratis 已安装,stratisd 服务正在运行。如需更多信息,请参阅 安装 Stratis。
- 列表:您已创建了 Stratis 文件系统。如需更多信息,请参阅创建 Stratis 文件系统。
- 列表:创建一个 Stratis 快照: # stratis fs snapshot my-pool my-fs my-fs-snapshot 快照是一流的 Stratis 文件系统。您可以创建多个 Stratis 快照。这包括单个原始文件系统或者另一个快照文件系统的快照。如果文件系统是快照,其 origin 字段会显示其原始文件系统的 UUID。这会出现在详细的文件系统列表中。
- 命令/配置摘录:
# stratis fs snapshot my-pool my-fs my-fs-snapshot24.3. 访问 Stratis 快照的内容
- 要点:您可以挂载 Stratis 文件系统的快照,使其可被读写。
- 要点:先决条件
- 列表:Stratis 已安装,stratisd 服务正在运行。如需更多信息,请参阅 安装 Stratis。
- 列表:您已创建了 Stratis 快照。如需更多信息,请参阅创建 Stratis 快照。
- 列表:要访问快照,请将其作为常规文件系统挂载到 /dev/stratis/my-pool/ 目录: # mount /dev/stratis/my-pool/my-fs-snapshot mount-point
- 命令/配置摘录:
# mount /dev/stratis/my-pool/my-fs-snapshot mount-point24.4. 将 Stratis 文件系统恢复到以前的快照
- 要点:您可以将 Stratis 文件系统的内容恢复回 Stratis 快照中捕获的状态。
- 要点:先决条件
- 列表:Stratis 已安装,stratisd 服务正在运行。如需更多信息,请参阅 安装 Stratis。
- 列表:您已创建了 Stratis 快照。如需更多信息,请参阅创建 Stratis 快照。
- 列表:可选:备份文件系统的当前状态,以便以后可以访问它: # stratis filesystem snapshot my-pool my-fs my-fs-backup
- 列表:计划将文件系统的恢复回之前创建的快照: # stratis filesystem schedule-revert my-pool my-fs-snapshot
- 列表:可选:运行以下命令检查恢复是否被成功安排: # stratis filesystem list my-pool --name my-fs-snapshot UUID: b14987eb-b735-4c68-8962-f53f6b644cbc Name: my-fs-snapshot Pool: my-pool Device: /dev/stratis/p1/my-fs-snapshot Created: Mar 18 2025 12:29 Snapshot origin: f5a881b1-299d-4147-8ead-b4a56c623692 Revert scheduled: Yes Sizes: Logical size o…
- 列表:列出属于池的文件系统: # stratis filesystem list my-pool
- 命令/配置摘录:
# stratis filesystem snapshot my-pool my-fs my-fs-backup
# stratis filesystem schedule-revert my-pool my-fs-snapshot- 注意:注意 无法将多个恢复操作安排给同一原始文件系统。另外,如果您尝试销毁原始文件系统,或者调度恢复的快照,则操作会失败。
24.5. 删除 Stratis 快照
- 要点:您可以从池中删除 Stratis 快照。快照中的数据会丢失。
- 要点:先决条件
- 列表:Stratis 已安装,stratisd 服务正在运行。如需更多信息,请参阅安装 Stratis。
- 列表:您已创建了 Stratis 快照。如需更多信息,请参阅创建 Stratis 快照。
- 列表:卸载快照: # umount /dev/stratis/my-pool/my-fs-snapshot
- 列表:销毁快照: # stratis filesystem destroy my-pool my-fs-snapshot
- 命令/配置摘录:
# umount /dev/stratis/my-pool/my-fs-snapshot
# stratis filesystem destroy my-pool my-fs-snapshot第 25 章 删除 Stratis 文件系统
- 要点:您可以删除现有的 Stratis 文件系统或池。删除 Stratis 文件系统或池后,无法恢复它。
25.1. 删除 Stratis 文件系统
- 要点:您可以删除现有的 Stratis 文件系统。保存的数据会丢失。
- 要点:先决条件
- 列表:Stratis 已安装,stratisd 服务正在运行。如需更多信息,请参阅 安装 Stratis。
- 列表:您已创建了 Stratis 文件系统。如需更多信息,请参阅创建 Stratis 文件系统。
- 列表:卸载文件系统: # umount /dev/stratis/my-pool/my-fs
- 列表:销毁文件系统: # stratis filesystem destroy my-pool my-fs
- 列表:验证文件系统不再存在: # stratis filesystem list my-pool
- 命令/配置摘录:
# umount /dev/stratis/my-pool/my-fs
# stratis filesystem destroy my-pool my-fs25.2. 使用 Web 控制台从 Stratis 池中删除文件系统
- 要点:您可以使用 Web 控制台从现有 Stratis 池中删除一个文件系统。删除 Stratis 池文件系统会删除其包含的所有数据。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体说明请参阅安装并启用 Web 控制台。
- 列表:Stratis 已安装,stratisd 服务正在运行。 默认情况下,web 控制台会检测并安装 Stratis。但是,要手动安装 Stratis,请参阅 安装 Stratis。
- 列表:您有一个现有的 Stratis 池,且已在 Stratis 池上创建了一个文件系统。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage。
- 列表:在 Storage 表中,点击您要从中删除文件系统的 Stratis 池。
25.3. 删除 Stratis 池
- 要点:您可以删除现有的 Stratis 池。保存的数据会丢失。
- 要点:先决条件
- 列表:Stratis 已安装,stratisd 服务正在运行。如需更多信息,请参阅 安装 Stratis。
- 列表:您已创建了 Stratis 池: 要创建未加密的池,请参阅 创建未加密的 Stratis 池。 要创建加密的池,请参阅使用 内核密钥环 中的密钥创建加密的 Stratis 池。
- 列表:要创建未加密的池,请参阅 创建未加密的 Stratis 池。
- 列表:要创建加密的池,请参阅使用 内核密钥环 中的密钥创建加密的 Stratis 池。
- 列表:列出池中的文件系统: # stratis filesystem list my-pool
- 列表:卸载池中的所有文件系统: # umount /dev/stratis/my-pool/my-fs-1 \ /dev/stratis/my-pool/my-fs-2 \ /dev/stratis/my-pool/my-fs-n
- 命令/配置摘录:
# stratis filesystem list my-pool
# umount /dev/stratis/my-pool/my-fs-1 \ /dev/stratis/my-pool/my-fs-2 \ /dev/stratis/my-pool/my-fs-n25.4. 使用 Web 控制台删除 Stratis 池
- 要点:您可以使用 Web 控制台删除现有的 Stratis 池。删除 Stratis 池会删除其包含的所有数据。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体说明请参阅安装并启用 Web 控制台。
- 列表:stratisd 服务在运行。
- 列表:您有一个现有的 Stratis 池。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage。
- 列表:在 Storage 表中,点您要删除的 Stratis 池的菜单按钮 ⋮。
完整目录
- 配置和管理本地和远程存储设备
- 对红帽文档提供反馈
- 第 1 章 可用存储选项概述
- 1.1. 本地存储概述
- 1.2. 远程存储概述
- 第 2 章 持久性命名属性
- 2.1. 用于识别文件系统和块设备的持久属性
- 2.2. udev 设备命名规则
- 2.2.1. 获取现有设备的设备链接值
- 第 3 章 磁盘分区
- 3.1. 分区概述
- 3.2. 分区表类型比较
- 3.3. GUID 分区表
- 3.4. MBR 磁盘分区
- 3.5. 扩展 MBR 分区
- 3.6. MBR 分区类型
- 3.7. 分区类型
- 3.8. 分区命名方案
- 3.9. 挂载点和磁盘分区
- 第 4 章 分区入门
- 4.1. 使用 parted 在磁盘中创建分区表
- 4.2. 查看使用 parted 的分区表
- 4.3. 使用 parted 创建分区
- 4.4. 使用 fdisk 设置分区类型
- 4.5. 使用 parted 重新定义分区大小
- 4.6. 使用 parted 删除分区
- 第 5 章 重新分区磁盘策略
- 5.1. 使用未分区的空闲空间
- 5.2. 使用未使用分区中的空间
- 5.3. 使用活跃分区中的空闲空间
- 5.3.1. 破坏性重新分区
- 5.3.2. 非破坏性重新分区
- 第 6 章 配置 iSCSI 目标
- 6.1. 安装 targetcli
- 6.2. 创建 iSCSI 目标
- 6.3. iSCSI Backstore
- 6.4. 创建 fileio 存储对象
- 6.5. 创建块存储对象
- 6.6. 创建 pscsi 存储对象
- 6.7. 创建内存副本 RAM 磁盘存储对象
- 6.8. 创建 iSCSI 门户
- 6.9. 创建 iSCSI LUN
- 6.10. 创建只读 iSCSI LUN
- 6.11. 创建 iSCSI ACL
- 6.12. 为目标配置 CHAP 身份验证
- 6.13. 使用 targetcli 工具删除 iSCSI 对象
- 第 7 章 配置 iSCSI initiator
- 7.1. 创建 iSCSI 启动程序
- 7.2. 为发起方配置 CHAP 身份验证
- 7.3. 使用 iscsiadm 工具监控 iSCSI 会话
- 7.4. DM 多路径覆盖设备超时
- 第 8 章 使用光纤通道设备
- 8.1. 在调整 LUN 的大小后重新扫描光纤通道逻辑单元
- 8.2. 使用光纤通道确定设备链路丢失行为
- 8.3. Fibre Channel 配置文件
- 第 9 章 NVMe over fabric 设备概述
- 第 10 章 使用 NVMe/RDMA 配置 NVMe over fabrics
- 10.1. 使用 configfs 配置 NVMe/RDMA 控制器
- 10.2. 使用 nvmetcli 配置 NVMe™/RDMA 控制器
- 10.3. 配置 NVMe/RDMA 主机
- 第 11 章 使用 NVMe/FC 配置 NVMe over fabrics
- 11.1. 为广播适配器配置 NVMe 主机
- 11.2. 为 QLogic 适配器配置 NVMe 主机
- 第 12 章 使用 NVMe/TCP 配置 NVMe over fabrics
- 12.1. 配置 NVMe/TCP 主机
- 12.2. 将 NVMe/TCP 主机连接到 NVMe/TCP 控制器
- 12.3. 配置 NVMe 主机身份验证
- 12.4. 使用带有预共享密钥的 TLS 配置 NVMe/TCP 主机
- 12.5. 其他资源
- 第 13 章 swap 入门
- 13.1. swap 空间概述
- 13.2. 推荐的系统 swap 空间
- 13.3. 为 swap 创建 LVM 逻辑卷
- 13.4. 创建和管理标准交换分区
- 13.5. 创建交换文件
- 13.6. 使用 storage RHEL 系统角色创建 swap 卷
- 13.7. 在 LVM 逻辑卷中扩展 swap
- 13.8. 在减少的 LVM 逻辑卷中重新创建交换区
- 13.9. 为 swap 删除 LVM 逻辑卷
- 13.10. 删除 swap 文件
- 13.11. 调整虚拟内存(VM)可调项
- 第 14 章 使用以太网配置光纤
- 14.1. 在 RHEL 中使用硬件 FCoE HBA
- 第 15 章 管理磁带设备
- 15.1. 磁带设备的类型
- 15.2. 安装磁带驱动器管理工具
- 15.3. 磁带命令
- 15.4. 写入如回卷磁带设备
- 15.5. 写入非回卷解磁带设备
- 15.6. 在磁带设备中切换磁带头
- 15.7. 从磁带设备中恢复数据
- 15.8. 从磁带设备中删除数据
- 第 16 章 管理 RAID
- 16.1. RAID 概述
- 16.2. RAID 类型
- 16.3. RAID 级别和线性支持
- 16.4. 支持的 RAID 转换
- 16.5. RAID 子系统
- 16.6. 在安装过程中创建软件 RAID
- 16.7. 在安装的系统中创建软件 RAID
- 16.8. 在 web 控制台中创建 RAID
- 16.9. 在 web 控制台中格式化 RAID
- 16.10. RAID 服务
- 16.11. 使用 Web 控制台在 RAID 上创建分区表
- 16.12. 使用 Web 控制台在 RAID 上创建分区
- 16.13. 使用 Web 控制台在 RAID 上创建卷组
- 16.14. 使用 storage RHEL 系统角色配置 RAID 卷
- 16.15. 扩展 RAID
- 16.16. 缩小 RAID
- 16.17. 安装后将根磁盘转换为 RAID1
- 16.18. 创建高级 RAID 设备
- 16.19. 配置用于监控 RAID 的电子邮件通知
- 16.20. 替换 RAID 中失败的磁盘
- 16.21. 修复 RAID 磁盘
- 第 17 章 使用 LUKS 加密块设备
- 17.1. LUKS 磁盘加密
- 17.2. RHEL 中的 LUKS 版本
- 17.3. LUKS2 重新加密过程中数据保护选项
- 17.4. 使用 LUKS2 加密块设备上的现有数据
- 17.5. 使用带有分离标头的 LUKS2 在块设备上加密现有数据
- 17.6. 使用 LUKS2 加密空白块设备
- 17.7. 在 web 控制台中配置 LUKS 密码短语
- 17.8. 使用命令行更改 LUKS 密码短语
- 17.9. 在 web 控制台中更改 LUKS 密码短语
- 17.10. 使用 storage RHEL 系统角色创建 LUKS2 加密的卷
- 第 18 章 使用 NVDIMM 持久性内存存储
- 18.1. NVDIMM 持久内存技术
- 18.2. NVDIMM 交集和地区
- 18.3. NVDIMM 命名空间
- 18.4. NVDIMM 访问模式
- 18.5. 安装 ndctl
- 18.6. 在 NVDIMM 上创建设备 DAX 命名空间
- 18.6.1. 设备直接访问模式中的 NVDIMM
- 18.6.2. 将现有的 NVDIMM 命名空间重新配置为设备 DAX 模式
- 18.6.3. 在设备 DAX 模式下创建新 NVDIMM 命名空间
- 18.7. 在 NVDIMM 上创建文件系统 DAX 命名空间
- 18.7.1. 文件系统直接访问模式中的 NVDIMM
- 18.7.2. 将现有的 NVDIMM 命名空间重新配置为文件系统 DAX 模式
- 18.7.3. 在文件系统 DAX 模式下创建新 NVDIMM 命名空间
- 18.7.4. 在文件系统 DAX 设备中创建文件系统
- 18.8. 使用 S.M.A.R.T 监控 NVDIMM 健康状况。
- 18.9. 检测和替换断开问题的 NVDIMM 设备
- 第 19 章 丢弃未使用块
- 19.1. 块丢弃操作的类型
- 19.2. 执行批块丢弃
- 19.3. 启用在线块丢弃
- 19.4. 使用 storage RHEL 系统角色启用在线块丢弃
- 19.5. 启用定期块丢弃
- 第 20 章 删除存储设备
- 20.1. 安全删除存储设备
- 20.2. 删除块设备和相关的元数据
- 第 21 章 配置 Stratis 文件系统
- 21.1. Stratis 文件系统的组件
- 21.2. 与 Stratis 兼容的块设备
- 21.3. 安装 Stratis
- 21.4. 创建未加密的 Stratis 池
- 21.5. 使用 Web 控制台创建未加密的 Stratis 池
- 21.6. 使用内核密钥环中的密钥创建加密的 Stratis 池
- 21.7. 使用 Clevis 创建加密的 Stratis 池
- 21.8. 使用 storage RHEL 系统角色创建加密的 Stratis 池
- 21.9. 使用 Web 控制台创建加密的 Stratis 池
- 21.10. 使用 Web 控制台重命名 Stratis 池
- 21.11. 在 Stratis 文件系统中配置过度置备模式
- 21.12. 将 Stratis 池绑定到 NBDE
- 21.13. 将 Stratis 池绑定到 TPM
- 21.14. 使用内核密钥环解加密的 Stratis 池
- 21.15. 解除 Stratis 池与补充加密的绑定
- 21.16. 启动和停止 Stratis 池
- 21.17. 创建 Stratis 文件系统
- 21.18. 挂载 Stratis 文件系统
- 21.19. 在引导时配置挂载一个 Stratis 文件系统
- 21.20. 使用 Web 控制台创建和配置 Stratis 文件系统
- 第 22 章 使用附加的块设备扩展 Stratis 池
- 22.1. 在 Stratis 池中添加块设备
- 22.2. 使用 Web 控制台向 Stratis 池中添加块设备
- 第 23 章 监控 Stratis 文件系统
- 23.1. 显示有关 Stratis 文件系统的信息
- 23.2. 使用 Web 控制台查看 Stratis 池
- 第 24 章 在 Stratis 文件系统中使用快照
- 24.1. Stratis 快照的特性
- 24.2. 创建 Stratis 快照
- 24.3. 访问 Stratis 快照的内容
- 24.4. 将 Stratis 文件系统恢复到以前的快照
- 24.5. 删除 Stratis 快照
- 第 25 章 删除 Stratis 文件系统
- 25.1. 删除 Stratis 文件系统
- 25.2. 使用 Web 控制台从 Stratis 池中删除文件系统
- 25.3. 删除 Stratis 池
- 25.4. 使用 Web 控制台删除 Stratis 池
