管理文件系统
大约 173 分钟
管理文件系统
来源:官方文档 原始多页入口:管理文件系统 内容规模:约 137,099 字符,224 个章节标题,541 个命令/代码块,77 条提示框
阅读提要
- 副标题:创建、修改和管理文件系统
- 摘要:Red Hat Enterprise Linux 支持各种文件系统。每种类型的文件系统解决不同的问题,它们的用法是特定于应用程序的。使用有关关键差异和注意事项的信息,来根据特定应用程序要求部署合适的文件系统。 支持的文件系统包括本地磁盘文件系统 XFS 和 ext4,以及网络和客户端-和-服务器文件系统 NFS 和 SMB。您可以使用文件系统执行多个操作,如创建、挂载、备份、恢复、检查和修复,以及使用配额限制存储空间。
- 主要章节:创建、修改和管理文件系统;第 1 章 可用文件系统概述;第 2 章 使用 RHEL 系统角色管理本地存储;第 3 章 使用 Web 控制台管理分区;第 4 章 挂载 NFS 共享;第 5 章 挂载 SMB 共享;第 6 章 持久性命名属性概述;第 7 章 使用 parted 的分区操作;第 8 章 重新分区磁盘策略;第 9 章 XFS 入门;第 10 章 创建 XFS 文件系统;第 11 章 备份 XFS 文件系统
- 推荐阅读顺序:先看“阅读提要”和目录,再按章节查看“关键点/命令/注意”;需要原文细节时点击来源链接。
章节笔记
概览
- 该章节主要为下一级主题的入口。
创建、修改和管理文件系统
- 要点:摘要
第 1 章 可用文件系统概述
- 要点:由于大量可用选项以及要考虑的选项,选择适合您应用程序的文件系统是一个重要的决定。
- 要点:以下章节描述了 Red Hat Enterprise Linux 10 默认包括的文件系统,以及对最适合您应用程序的文件系统的建议。
1.1. 文件系统类型
- 要点:Red Hat Enterprise Linux 10 支持各种文件系统(FS)。不同类型的文件系统可以解决不同类型的问题,它们的使用会根据特定应用程序而有所不同。
- 要点:在最一般的级别上,可用的文件系统可以分为以下主要类型:
- 表格样本(共 6 行):
- 类型 | 文件系统 | 属性和使用案例
- 磁盘或本地 FS | XFS | XFS 是 RHEL 中的默认文件系统。将 XFS 部署为本地文件系统,除非有特殊原因。例如,与性能有关的兼容性或理想情况。
- ext4 | ext4 在 Linux 中有相似性的好处,其从较旧的 ext2 和 ext3 文件系统演变而来。在很多情况下,它在性能上可以与 XFS 相媲美。对 ext4 文件系统和文件大小的支持限制小于 XFS 上的大小。
- 网络或客户端-和-服务器 FS | 网络文件系统 (NFS) | 使用 NFS 在同一个网络中的多个系统间共享文件。
1.2. 本地文件系统
- 要点:本地文件系统在带有直接附加存储的一个服务器上运行。它们用于内部 Serial Advanced Technology Attachment (SATA)或 Serial Attached SCSI (SAS)磁盘、硬件 RAID 和非共享 SAN 设备。
- 要点:所有本地文件系统都遵循可移植操作系统接口(POSIX)标准,并为一组明确的系统调用提供支持。示例包括 read ()、write ()和 seek ()。
- 列表:XFS
- 列表:ext4
1.3. XFS 文件系统
- 要点:XFS 是一个可扩展、高性能的 64 位日志文件系统。它支持非常大的文件和文件系统,在 RHEL 10 中是默认设置。SGI 最初于 1990 年代,它长期用于大型服务器和存储阵列。
- 要点:XFS 的功能包括:
- 列表:元数据日志可确保系统崩溃后文件系统的完整性。它保留文件系统操作的记录。当系统重启并重新挂载文件系统时,可以重新执行这些记录。
- 列表:广泛的运行时元数据一致性检查
- 列表:可扩展且快速修复工具
- 列表:配额日志。这可避免在崩溃后进行冗长的配额一致性检查。
- 列表:支持最多 1024 TiB 的文件系统大小
- 列表:支持大量并发操作的能力
1.4. ext4 文件系统
- 要点:ext4 文件系统是 ext 文件系统系列的第四代。ext4 驱动程序可以对 ext2 和 ext3 文件系统进行读写。但是 ext4 文件系统格式与 ext2 和 ext3 驱动程序不兼容。
- 要点:ext4 添加了几个新的改进的功能,例如:
- 列表:支持的文件系统大小高达 50 TiB
- 列表:基于扩展的元数据
- 列表:延迟分配
- 列表:日志的 checksum
- 列表:大型存储支持
1.5. XFS 和 ext4 的比较
- 要点:XFS 是 RHEL 中的默认文件系统。本节比较 XFS 和 ext4 的用法和功能。
- 要点:在 ext4 中,您可以在创建文件系统时启用配额,或稍后在现有文件系统上启用配额。然后,您可以使用挂载选项配置配额强制。
- 列表:文件系统大于 1 TiB,其 inode 为 256 字节。
- 列表:文件系统大于 2 TiB,其 inode 为 512 字节。
- 列表:XFS 中的可配置错误处理
- 注意:重要 除非特定环境需要,否则 请勿 使用 inode32 选项。inode32 选项可改变分配行为。因此,如果没有可用空间在较低磁盘块中分配 inode ,则可能会出现 ENOSPC 错误。
1.6. 选择本地文件系统
- 要点:要选择一个满足应用程序要求的文件系统,您必须了解部署文件系统的目标系统。通常情况下,请使用 XFS,除非您有 ext4 的特定用例。
- 要点:在目标服务器和存储系统上基准测试您的应用程序的性能,以确保所选的文件系统满足您的性能和可扩展性要求。
- 表格样本(共 11 行):
- 场景 | 推荐的文件系统
- 没有特殊用例 | XFS
- 大服务器 | XFS
- 大存储设备 | XFS
1.7. 网络文件系统
- 要点:网络文件系统也称为客户端/服务器文件系统,为客户端系统提供对存储在共享服务器上的文件的访问权限。这使得多个系统上的多个用户可以共享文件和存储资源。
- 要点:此类文件系统构建自一个或多个服务器,它们将一组文件系统导出到一个或多个客户端。客户端节点无法访问底层块存储。相反,它们通过使用允许更好的访问控制的协议与存储交互。
- 列表:RHEL 客户的最常见客户端/服务器文件系统是网络文件系统(NFS)。RHEL 提供了一个 NFS 服务器组件,来通过网络导出本地文件系统,并提供 NFS 客户端来导入这些文件系统。
- 列表:RHEL 还包括通用 Internet 文件系统(CIFS)客户端。这支持流行的 Microsoft 服务器消息块(SMB)文件服务器,用于 Windows 互操作性。用户空间 Samba 服务器为 Windows 客户端提供 RHEL 服务器的 Microsoft SMB 服务。
1.8. 共享存储文件系统
- 要点:共享存储文件系统(有时被称为集群文件系统)可让集群中的每台服务器直接访问共享块设备。它们使用本地存储区域网络(SAN)。
- 要点:缓存一致性是集群文件系统中确保数据一致性和完整性的关键。集群中所有文件的单个版本都必须对群集内的所有节点可见。文件系统必须阻止群集成员同时更新相同的存储块,并导致数据崩溃。为此,共享存储文件系统使用集群范围的锁定机制。这控制对存储的访问,作为防止冲突的方法。
1.9. 在网络和共享存储文件系统间进行选择
- 要点:根据可用性、性能和维护需求,在网络和共享存储文件系统之间进行选择。网络文件系统适合大多数情况,而共享存储文件系统则最适合于高可用性,最小停机时间要求。
- 要点:在网络和共享存储文件系统间选择时,请考虑以下几点:
- 列表:对于提供 NFS 服务器的环境,基于 NFS 的网络文件系统是非常常见和流行的选择。
- 列表:可以使用非常高性能的网络技术(如 Infiniband 或 10 Gigabit Ethernet)部署网络文件系统。这意味着您不应该仅仅为了获得存储的原始带宽而转向共享存储文件系统。如果访问速度至关重要,则使用 NFS 导出类似 XFS 的本地文件系统。
- 列表:共享存储文件系统无法轻松设置或维护。仅在无法向本地或网络文件系统提供所需的可用性时才部署它们。
- 列表:集群环境中的共享存储文件系统有助于减少停机时间。它消除了在涉及高可用性服务重新定位的典型故障切换场景中卸载和挂载步骤。
1.10. 卷管理文件系统
- 要点:卷管理文件系统集成整个存储堆栈,以实现存储层内简单和改进的目的。
- 要点:Red Hat Enterprise Linux 10 提供 Stratis 卷管理器。Stratis 对文件系统层使用 XFS,并将其与逻辑卷管理器(LVM)、设备映射器和其他组件集成。
- 列表:Red Hat Enterprise Linux 10 提供 Stratis 卷管理器。Stratis 对文件系统层使用 XFS,并将其与逻辑卷管理器(LVM)、设备映射器和其他组件集成。 Stratis 首次在 Red Hat Enterprise Linux 8.0 中发布。它被设计为填补红帽弃用 Btrfs 时出现的空白。Stratis 1.0 是一个直观的、基于命令行的卷管理器。它可以在隐藏用户复杂性的同时执行重要的存储管理操作: 卷管理 创建池 精简存储池 快照 自动读取缓存 Stratis 提供强大的功能,但目前缺乏其他产品(如 Btrfs 或 ZFS)的某些功能。最值得注意的是,它不支持自动修复错误的校验和。
- 列表:卷管理
- 列表:创建池
- 列表:精简存储池
- 列表:快照
- 列表:自动读取缓存
第 2 章 使用 RHEL 系统角色管理本地存储
- 要点:要使用 Ansible 管理逻辑卷管理器(LVM)和本地文件系统(FS),您可以使用 存储 角色。
- 要点:通过使用 存储 角色,您可以自动管理多台机器上磁盘和逻辑卷上的文件系统。
2.1. 使用 storage RHEL 系统角色在块设备上创建 XFS 文件系统
- 要点:您可以使用 storage RHEL 系统角色在块设备上自动创建 XFS 文件系统。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:以可在受管主机上运行 playbook 的用户登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Create an XFS file system on a block device ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_volumes: - name: barefs type: disk disks: - sdb fs_typ…
- 列表:验证 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 an XFS file system on a block device ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_volumes: - name: barefs type: disk disks: - sdb fs_type: xfs
$ ansible-playbook --syntax-check ~/playbook.yml- 注意:注意 存储 角色只能在未分区、整个磁盘或逻辑卷(LV)上创建文件系统。它不能在分区中创建文件系统。
2.2. 使用 storage RHEL 系统角色永久挂载文件系统
- 要点:您可以使用 storage RHEL 系统角色来持久挂载文件系统,以确保它们在系统重启后仍然可用,并在启动时自动挂载。如果 playbook 中指定的设备上的文件系统不存在,则角色会创建它。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:以可在受管主机上运行 playbook 的用户登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Persistently mount a file system ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_safe_mode: false storage_volumes: - name: barefs type: disk disks:…
- 列表:验证 playbook 语法: $ ansible-playbook --syntax-check ~/playbook.yml 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
- 列表:运行 playbook: $ ansible-playbook ~/playbook.yml
- 命令/配置摘录:
--- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Persistently mount a file system ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_safe_mode: false storage_volumes: - name: barefs type: disk disks: - sdb fs_type: xfs mount_point: /mnt/data mount_user: somebody mount_group: somegroup mount_mode: "0755"
$ ansible-playbook --syntax-check ~/playbook.yml2.3. 使用 storage RHEL 系统角色创建或者调整逻辑卷大小
- 要点:您可以使用 storage RHEL 系统角色来创建和调整逻辑卷管理器(LVM)逻辑卷。如果卷组不存在,该角色会自动创建卷组。
- 要点:使用 storage 角色执行以下任务:
- 列表:在由多个磁盘组成的卷组中创建 LVM 逻辑卷
- 列表:调整 LVM 上现有文件系统的大小
- 列表:以池总大小的百分比表示 LVM 卷大小
- 列表:您已准备好控制节点和受管节点。
- 列表:以可在受管主机上运行 playbook 的用户登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 命令/配置摘录:
--- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Create logical volume ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_safe_mode: false storage_pools: - name: myvg disks: - sda - sdb - sdc volumes: - name: mylv size: 2G fs_type: ext4 mount_point: /mnt/data
$ ansible-playbook --syntax-check ~/playbook.yml2.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.yml2.5. 使用 storage RHEL 系统角色创建并挂载文件系统
- 要点:您可以使用 storage RHEL 系统角色来创建和挂载在重启后保留的文件系统。该角色自动向 /etc/fstab 添加条目,以确保永久挂载。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:以可在受管主机上运行 playbook 的用户登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Manage local storage hosts: managed-node-01.example.com tasks: -name: Create and mount a file system ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_safe_mode: false storage_volumes: - name: barefs type: disk disks: -…
- 列表:验证 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 and mount a file system ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_safe_mode: false storage_volumes: - name: barefs type: disk disks: - sdb fs_type: ext4 fs_label: label-name mount_point: /mnt/data
$ ansible-playbook --syntax-check ~/playbook.yml2.6. 使用 storage RHEL 系统角色配置 RAID 卷
- 要点:使用 storage 系统角色,您可以使用 Red Hat Ansible Automation Platform 和 Ansible-Core 在 RHEL 上配置一个 RAID 卷。创建带有配置 RAID 卷参数的 Ansible Playbook,以满足您的要求。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:以可在受管主机上运行 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 中使用持久性命名属性。如需有关持久性命名属性的更多信息,请参阅 持久性命名属性。
2.7. 使用 storage RHEL 系统角色在 RAID 上配置 LVM 卷组
- 要点:您可以使用 storage RHEL 系统角色在 RAID 阵列上配置 LVM 卷组。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:以可在受管主机上运行 playbook 的用户登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Configure LVM pool with RAID ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_safe_mode: false storage_pools: - name: my_pool type: lvm disks: [sdh,…
- 列表:验证 playbook 语法: $ ansible-playbook --syntax-check ~/playbook.yml 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
- 列表:运行 playbook: $ ansible-playbook ~/playbook.yml
- 命令/配置摘录:
--- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Configure LVM pool with RAID ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_safe_mode: false storage_pools: - name: my_pool type: lvm disks: [sdh, sdi] raid_level: raid1 volumes: - name: my_volume size: "1 GiB" mount_point: "/mnt/app/shared" fs_type: xfs state: present
$ ansible-playbook --syntax-check ~/playbook.yml- 注意:注意 在 storage_pool 级别设置 raid_level 会首先创建一个 MD RAID 阵列,然后在其上构建 LVM 卷组。
2.8. 使用 storage RHEL 系统角色为 RAID LVM 卷配置条带大小
- 要点:您可以使用 storage RHEL 系统角色为 RAID LVM 卷配置条带大小。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:以可在受管主机上运行 playbook 的用户登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Configure stripe size for RAID LVM volumes ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_safe_mode: false storage_pools: - name: my_pool type: lvm…
- 列表:验证 playbook 语法: $ ansible-playbook --syntax-check ~/playbook.yml 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
- 列表:运行 playbook: $ ansible-playbook ~/playbook.yml
- 命令/配置摘录:
--- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Configure stripe size for RAID LVM volumes ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_safe_mode: false storage_pools: - name: my_pool type: lvm disks: [sdh, sdi] volumes: - name: my_volume size: "1 GiB" mount_point: "/mnt/app/shared" fs_type: xfs raid_level: raid0 raid_stripe_size: "256 KiB" state: present
$ ansible-playbook --syntax-check ~/playbook.yml- 注意:注意 在 volumes 级别设置 raid_level 会创建 LVM RAID 逻辑卷。
2.9. 使用 storage RHEL 系统角色配置 LVM-VDO 卷
- 要点:您可以使用 storage RHEL 系统角色在启用了压缩和去重的 LVM (LVM-VDO)上创建一个 VDO 卷。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:以可在受管主机上运行 playbook 的用户登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Create LVM-VDO volume under volume group 'myvg' ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_pools: - name: myvg disks: - /dev/sdb volumes: - n…
- 列表:验证 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 LVM-VDO volume under volume group 'myvg' ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_pools: - name: myvg disks: - /dev/sdb volumes: - name: mylv1 compression: true deduplication: true vdo_pool_size: 10 GiB size: 30 GiB mount_point: /mnt/app/shared
$ ansible-playbook --syntax-check ~/playbook.yml- 注意:注意 由于 storage 系统角色使用 LVM-VDO,因此每个池只能创建一个卷。
2.10. 使用 storage RHEL 系统角色创建 LUKS2 加密的卷
- 要点:您可以通过运行一个 Ansible Playbook,使用 storage 角色创建和配置使用 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>2.11. 使用 storage RHEL 系统角色创建共享 LVM 设备
- 要点:如果您希望多个系统同时访问同一个存储,则您可以使用 storage RHEL 系统角色创建共享的 LVM 设备。
- 要点:共享 LVM 设备提供以下显著优点:
- 列表:资源共享
- 列表:管理存储资源方面的灵活性
- 列表:存储管理任务的简化
- 列表:您已准备好控制节点和受管节点。
- 列表:以可在受管主机上运行 playbook 的用户登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 命令/配置摘录:
--- - name: Manage local storage hosts: managed-node-01.example.com become: true tasks: - name: Create shared LVM device ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_pools: - name: vg1 disks: /dev/vdb type: lvm shared: true state: present volumes: - name: lv1 size: 4g mount_point: /opt/test1 fs_type: gfs2 storage_safe_mode: false storage_use_partitions: true
$ ansible-playbook --syntax-check ~/playbook.yml2.12. 使用 storage RHEL 系统角色调整物理卷大小
- 要点:使用存储系统角色,您可以在从主机外部重新定义底层存储或磁盘大小后调整逻辑卷管理器(LVM)物理卷的大小。例如:您增加了虚拟磁盘的大小,并希望在现有 LVM 中使用额外的空间。
- 要点:先决条件
- 列表:您已准备好控制节点和受管节点。
- 列表:以可在受管主机上运行 playbook 的用户登录到控制节点。
- 列表:用于连接到受管节点的帐户具有这些节点的 sudo 权限。
- 列表:底层块存储的大小已被更改。
- 列表:创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml : --- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Resize LVM PV size ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_pools: - name: myvg disks: ["sdf"] type: lvm grow_to_fill: true 示例 playbook 中指定的…
- 列表:验证 playbook 语法: $ ansible-playbook --syntax-check ~/playbook.yml 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
- 命令/配置摘录:
--- - name: Manage local storage hosts: managed-node-01.example.com tasks: - name: Resize LVM PV size ansible.builtin.include_role: name: redhat.rhel_system_roles.storage vars: storage_pools: - name: myvg disks: ["sdf"] type: lvm grow_to_fill: true
$ ansible-playbook --syntax-check ~/playbook.yml2.13. 其他资源
- 列表:RHEL 系统角色简介
第 3 章 使用 Web 控制台管理分区
- 要点:使用 Web 控制台管理磁盘分区,以查看格式化的分区、创建新分区以及删除现有分区。
3.1. 在 web 控制台中显示使用文件系统格式化的分区
- 要点:Web 控制台中的 Storage 部分会在 Filesystems 表中显示所有可用文件系统。除了使用文件系统格式化的分区列表外,您还可以使用页面创建新存储。
- 要点:先决条件
- 列表:cockpit-storaged 软件包已安装在您的系统上。
- 列表:您已安装了 RHEL 10 web 控制台。 具体步骤请参阅安装并启用 Web 控制台。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage 选项卡。 在 Storage 表中,您可以看到使用文件系统格式化的所有可用分区、其 ID、类型、位置、大小以及每个分区中有多少可用空间。 您还可以使用右上角的下拉菜单来创建新的本地或联网存储。
3.2. 在 web 控制台中创建分区
- 要点:使用 RHEL web 控制台创建带有自定义文件系统、挂载点和可选加密的磁盘分区。您可以在未格式化的磁盘中初始化分区表,并使用 XFS 或 ext4 文件系统创建分区。
- 要点:先决条件
- 列表:cockpit-storaged 软件包已安装在您的系统上。
- 列表:您已安装了 RHEL 10 web 控制台。 具体步骤请参阅安装并启用 Web 控制台。
- 列表:在 Storage 选项卡的 Storage 表中可以看到一个连接到系统的未格式化的卷。
- 列表:登录到 RHEL 10 web 控制台并点击 Storage 选项卡。
- 列表:在 Storage 表中,点您要进行分区的设备,以打开用于该设备的页和选项。
- 列表:在设备页面中,点菜单按钮 ⋮ ,然后选择 Create partition table。
3.3. 在 web 控制台中删除分区
- 要点:您可以在 web 控制台界面中删除分区。
- 要点:先决条件
- 列表:cockpit-storaged 软件包已安装在您的系统上。
- 列表:您已安装了 RHEL 10 web 控制台。 具体步骤请参阅安装并启用 Web 控制台。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage 选项卡。
- 列表:点击您要从中删除分区的设备。
- 列表:在设备页和 GPT partitions 部分中,点您要删除的分区旁的菜单按钮 ⋮。
第 4 章 挂载 NFS 共享
- 要点:作为系统管理员,您可以在您的系统上挂载远程 NFS 共享来访问共享数据。
4.1. NFS 客户端上所需的服务
- 要点:网络文件系统(NFS)客户端使用的主体服务包括提供对 NFS 文件共享访问权限的内核模块和用户空间进程。这些服务还包括其功能和配置的详细信息。
- 要点:安装 nfs-utils 软件包以启用 NFS 客户端功能。NFS 客户端使用的主要服务包括以下:
- 表格样本(共 8 行):
- 服务名称 | NFS 版本 | 描述
- nfsidmap | 4 | 一个从来自 NFSv4 名称(<user@domain> 形式的字符串)和本地用户和组 ID 的 NFSv4 客户端映射提供 upcall 的程序。它提供与代表 NFSv4 服务器的 rpc.idmapd 提供的功能类似。区别在于,当 rpc.idmapd 是守护进程时,使用内核请求密钥机制按需调用 nfsidmap。nfsidmap 使用两个配置文件:/etc/idmapd.conf 和 /etc/request-key.d/id_resolver.conf。在大多数情况下,默认值已足够,不需要修改其中任何一个配置文件。
- rpc.statd | 3 | 一个实现 Network Status Monitor 协议的守护进程。rpc.statd 的两个主要功能: 侦听来自本地 lockd 进程(实现网络锁定管理器协议的内核守护进程)的请求,来监控网络对等点(如果是 NFS 客户端,rpc.statd 监控 NFS 服务器)。 侦听来自远程对等点(已重启的 NFS 服务器)的重启通知,然后转发给 lockd ,以便它可以从这些服务器回收任何锁。 使用 /etc/nfs.conf 文件中的 [statd] 部分来配置 rpc.statd。
- rpc-statd.service | 3 | 一个启动 rpc.statd 守护进程的 systemd 单元文件。请注意,不需要手动启用或禁用服务,因为 mount.nfs 程序自动启动 rpc-statd.service (使用 /usr/sbin/start-statd shell 脚本),第一次使用 NFSv3 挂载远程文件系统时。但是,如果将 NFSv3 客户端配置为在防火墙后面运行,则通常需要重启 rpc-statd.service。
4.2. 准备一个在防火墙后面运行的 NFSv3 客户端
- 要点:NFS 服务器通知客户端有关文件锁和服务器状态。要建立回到客户端的连接,您必须在客户端的防火墙中打开相关端口。
- 要点:流程
- 列表:默认情况下,NFSv3 RPC 服务使用随机端口。要启用防火墙配置,请在 /etc/nfs.conf 文件中配置固定端口号: 在 [lockd] 部分中,为 nlockmgr RPC 服务设置固定端口号,例如: port=5555 使用这个设置时,服务会自动将这个端口号用于 UDP 和 TCP 协议。 在 [statd] 部分中,为 rpc.statd 服务设置一个固定端口号,例如: port=6666 使用这个设置时,服务会自动将这个端口号用于 UDP 和 TCP 协议。
- 列表:在 [lockd] 部分中,为 nlockmgr RPC 服务设置固定端口号,例如: port=5555 使用这个设置时,服务会自动将这个端口号用于 UDP 和 TCP 协议。
- 列表:在 [statd] 部分中,为 rpc.statd 服务设置一个固定端口号,例如: port=6666 使用这个设置时,服务会自动将这个端口号用于 UDP 和 TCP 协议。
- 列表:在 firewalld 中打开相关端口: # firewall-cmd --permanent --add-service=rpc-bind # firewall-cmd --permanent --add-port={5555/tcp,5555/udp,6666/tcp,6666/udp} # firewall-cmd --reload
- 列表:重启 rpc-statd 服务: # systemctl restart rpc-statd nfs-server
- 命令/配置摘录:
port=5555
port=66664.3. 准备一个 NFSv4 客户端来在防火墙后面运行
- 要点:NFS 服务器通知客户端有关文件锁和服务器状态。要建立回到客户端的连接,您必须在客户端的防火墙中打开相关端口。
- 要点:先决条件
- 列表:服务器使用 NFS 4 协议。
- 列表:在 firewalld 中打开相关端口: # firewall-cmd --permanent --add-port=<callback_port>/tcp # firewall-cmd --reload
- 命令/配置摘录:
# firewall-cmd --permanent --add-port=<callback_port>/tcp
# firewall-cmd --reload- 注意:注意 NFS v4.1 及之后的版本对于回调使用预先存在的客户端端口,因此回调端口无法被单独设置。如需更多信息,请参阅 如何将 NFS4 客户端回调端口设置为特定端口? 解决方案
4.4. 手动挂载 NFS 共享
- 要点:如果您不要求在启动时自动挂载 NFS 共享,您可以手动挂载它。
- 要点:流程
- 列表:使用以下命令在客户端上挂载 NFS 共享: # mount <nfs_server_ip_or_hostname>:/<exported_share> <mount point> 例如,要将 /nfs/projects 共享从 server.example.com NFS 服务器挂载到 /mnt,请输入: # mount server.example.com:/nfs/projects/ /mnt/
- 列表:作为具有访问 NFS 共享权限的用户,显示挂载的共享的内容: $ ls -l /mnt/
- 命令/配置摘录:
# mount <nfs_server_ip_or_hostname>:/<exported_share> <mount point>
# mount server.example.com:/nfs/projects/ /mnt/- 注意:警告 如果您的 NFS 客户端有相同的短主机名,您可能会在 NFSv4 clientid 中遇到冲突,以及其突然过期。为避免 NFSv4 clientid 任何可能的突然过期,您必须为 NFS 客户端使用唯一主机名,或者在每个容器上配置标识符,具体取决于您在使用什么系统。如需更多信息,请参阅红帽知识库解决方案 由于在几个 NFS 客户端上使用相同的主机名,NFSv4 clientid 突然过期。
4.5. 系统引导时自动挂载 NFS 共享
- 要点:在系统引导过程中自动挂载 NFS 共享确保依赖于集中数据的关键服务,如在 NFS 服务器上托管的 /home 目录,从系统启动的那一刻起具有无缝且不间断的访问。
- 要点:流程
- 列表:编辑 /etc/fstab 文件,并为您要挂载的共享添加一行: <nfs_server_ip_or_hostname>:/<exported_share> <mount point> nfs default 0 0 例如,要将来自 server.example.com NFS 服务器的 /nfs/projects 共享挂载到 /home,请输入: server.example.com:/nfs/projects /home nfs defaults 0 0
- 列表:挂载共享: # mount /home
- 列表:作为具有访问 NFS 共享权限的用户,显示挂载的共享的内容: $ ls -l /home/
- 命令/配置摘录:
<nfs_server_ip_or_hostname>:/<exported_share> <mount point> nfs default 0 0
server.example.com:/nfs/projects /home nfs defaults 0 04.6. 在 web 控制台中连接 NFS 挂载
- 要点:使用 Web 控制台通过可配置的挂载选项指定服务器地址、远程路径和本地挂载点来挂载远程 NFS 目录。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体步骤请参阅安装并启用 Web 控制台。
- 列表:cockpit-storaged 软件包已安装在您的系统上。
- 列表:NFS 服务器名称或 IP 地址。
- 列表:到远程服务器中的目录的路径。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage。
4.7. 在 web 控制台中自定义 NFS 挂载选项
- 要点:编辑现有 NFS 挂载并添加自定义挂载选项。自定义挂载选项可帮助您对 NFS 挂载的连接或更改参数进行故障排除。示例包括更改超时限制或配置身份验证。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体步骤请参阅安装并启用 Web 控制台。
- 列表:cockpit-storaged 软件包已安装在您的系统上。
- 列表:NFS 挂载被添加到您的系统上。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage。
- 列表:在 Storage 表中,点您要调整的 NFS 挂载。
4.8. 在 IdM 域中设置带有 Kerberos 的 NFS 客户端
- 要点:如果网络文件系统(NFS)服务器使用 Kerberos 并注册到 RHEL 身份管理(IdM)域中,您的客户端也必须是域成员才能挂载共享。这可集中管理用户和组,并支持基于 Kerberos 的身份验证、完整性保护和流量加密。
- 要点:先决条件
- 列表:NFS 客户端已在 Red Hat Enterprise Linux Identity Management (IdM)域中 注册。
- 列表:导出的 NFS 共享使用 Kerberos。
- 列表:rpc.gssd 服务提供 gss 安全上下文建立。如需更多信息,请参阅您系统上的 rpc.gssd(8)手册页。
- 列表:以 IdM 管理员身份获取 kerberos 票据: # kinit admin
- 列表:检索主机主体,并将其存储在 /etc/krb5.keytab 文件中: # ipa-getkeytab -s idm_server.idm.example.com -p host/nfs_client.idm.example.com -k /etc/krb5.keytab 在将主机加入到 IdM 域时,IdM 自动创建 host 主体。
- 列表:可选:显示 /etc/krb5.keytab 文件中的主体: # klist -k /etc/krb5.keytab Keytab name: FILE:/etc/krb5.keytab KVNO Principal ---- -------------------------------------------------------------------------- 6 host/nfs_client.idm.example.com@IDM.EXAMPLE.COM 6 host/nfs_client.idm.example.com@IDM.EXAMPLE.COM 6 host/nfs_client.idm.examp…
- 命令/配置摘录:
# kinit admin
# ipa-getkeytab -s idm_server.idm.example.com -p host/nfs_client.idm.example.com -k /etc/krb5.keytab4.9. 配置 GNOME 以将用户设置存储在 NFS 共享上托管的主目录中
- 要点:如果您在托管在 NFS 服务器上的主目录的系统中使用 GNOME,您必须更改 dconf 数据库的 keyfile 后端。否则,dconf 可能无法正常工作。这个更改会影响所有用户,因为它更改了 dconf 管理存储在主目录中的设置的方式。
- 要点:流程
- 列表:将以下行添加到 /etc/dconf/profile/user 文件的开头。如果文件不存在,则创建它。 service-db:keyfile/user 使用这个设置,dconf 会轮询 keyfile 后端 ,来确定是否已进行了更新,因此设置可能没有被立即更新。
- 列表:当用户退出并登录时,更改生效。
- 命令/配置摘录:
service-db:keyfile/user4.10. 配置一个带有 TLS 支持的 NFS 服务器
- 要点:如果没有 RPCSEC_GSS 协议,网络文件系统(NFS)流量默认是未加密的。从 Red Hat Enterprise Linux 10 开始,可以使用传输层安全(TLS)配置 NFS。这允许默认加密 NFS 流量。
- 要点:先决条件
- 列表:您已配置了一个 NFSv4 服务器。具体说明请参阅 配置一个仅 NFSv4 服务器。
- 列表:您有一个证书颁发机构(CA)证书。
- 列表:您已安装了 ktls-utils 软件包。
- 列表:创建一个私钥和一个证书签名请求(CSR): # openssl req -new -newkey rsa:4096 -noenc \ -keyout /etc/pki/tls/private/server.example.com.key \ -out /etc/pki/tls/private/server.example.com.csr \ -subj "/C=US/ST=State/L=City/O=Organization/CN=server.example.com" \ -addext "subjectAltName=DNS:server.example.com,IP:192.0.2.1" 重要 通用名称(CN)和域名系统(…
- 列表:将 /etc/pki/tls/private/server.example.com.csr 文件发送到一个 CA ,并请求一个服务器证书。将收到的 CA 证书和服务器证书保存在主机上。
- 列表:将 CA 证书导入到系统的信任存储中: # cp ca.crt /etc/pki/ca-trust/source/anchors # update-ca-trust
- 命令/配置摘录:
# openssl req -new -newkey rsa:4096 -noenc \ -keyout /etc/pki/tls/private/server.example.com.key \ -out /etc/pki/tls/private/server.example.com.csr \ -subj "/C=US/ST=State/L=City/O=Organization/CN=server.example.com" \ -addext "subjectAltName=DNS:server.example.com,IP:192.0.2.1"
# cp ca.crt /etc/pki/ca-trust/source/anchors- 注意:重要 通用名称(CN)和域名系统(DNS)必须与主机名匹配。IP 必须与主机的 IP 匹配。
4.11. 配置带有 TLS 支持的 NFS 客户端
- 要点:如果服务器支持带有 TLS 的 NFS,请使用 xprtsec=tls 配置客户端并挂载。导入 CA 证书,启用 TLS 守护进程,并使用加密挂载共享。TLS 有助于保护客户端和服务器之间的传输数据。
- 要点:先决条件
- 列表:您已配置了带有 TLS 加密的 NFS 服务器。详情请参阅 配置支持 TLS 的 NFS 服务器。
- 列表:您已安装了 ktls-utils 软件包。
- 列表:将证书颁发机构(CA)证书导入到系统的 truststore 中: # cp ca.crt /etc/pki/ca-trust/source/anchors # update-ca-trust
- 列表:启用并启动 tlshd 服务: # systemctl enable --now tlshd.service
- 列表:使用 TLS 加密挂载一个 NFS 共享: # mount -o xprtsec=tls server.example.com:/nfs/projects/ /mnt/
- 列表:验证客户端是否成功挂载了带有 TLS 支持的 NFS 共享: # journalctl -u tlshd … Apr 01 08:37:56 client.example.com tlshd[10688]: Handshake with server.example.com (192.0.2.1) was successful
- 命令/配置摘录:
# cp ca.crt /etc/pki/ca-trust/source/anchors
# update-ca-trust4.12. 配置带有双向 TLS 支持的 NFS 客户端
- 要点:如果服务器支持带有 TLS 加密的 NFS,请同时配置服务器和客户端。TLS 在系统间提供 mutual 身份验证。配置包括证书、TLS 守护进程设置和加密的 NFS 挂载。
- 要点:先决条件
- 列表:您已配置了带有 TLS 加密的 NFS 服务器。详情请参阅 配置支持 TLS 的 NFS 服务器。
- 列表:您已安装了 ktls-utils 软件包。
- 列表:创建一个私钥和一个证书签名请求(CSR): # openssl req -new -newkey rsa:4096 -noenc \ -keyout /etc/pki/tls/private/client.example.com.key \ -out /etc/pki/tls/private/client.example.com.csr \ -subj "/C=US/ST=State/L=City/O=Organization/CN=client.example.com" \ -addext "subjectAltName=DNS:client.example.com,IP:192.0.2.2" 重要 通用名称(CN)和域名系统(…
- 列表:将 /etc/pki/tls/private/client.example.com.csr 文件发送给一个证书颁发机构(CA),并请求一个客户端证书。将收到的 CA 证书和客户端证书保存在主机上。
- 列表:将 CA 证书导入到系统的信任存储中: # cp ca.crt /etc/pki/ca-trust/source/anchors # update-ca-trust
- 列表:将客户端证书移到 /etc/pki/tls/certs/ 目录: # mv client.example.com.crt /etc/pki/tls/certs/
- 命令/配置摘录:
# openssl req -new -newkey rsa:4096 -noenc \ -keyout /etc/pki/tls/private/client.example.com.key \ -out /etc/pki/tls/private/client.example.com.csr \ -subj "/C=US/ST=State/L=City/O=Organization/CN=client.example.com" \ -addext "subjectAltName=DNS:client.example.com,IP:192.0.2.2"
# cp ca.crt /etc/pki/ca-trust/source/anchors- 注意:重要 通用名称(CN)和域名系统(DNS)必须与主机名匹配。IP 必须与主机的 IP 匹配。
4.13. 常用的 NFS 挂载选项
- 要点:常用的 NFS 挂载选项在使用命令行、fstab 或 autofs 挂载 NFS 共享时配置性能、安全性和兼容性。
- 要点:以下是挂载 NFS 共享时常用的选项。您可以在 /etc/fstab 设置和 autofs automapper 中,将这些选项与 mount 命令一起使用。
- 列表:sec=sys 使用本地 UNIX UID 和 GID。它们使用 AUTH_SYS 验证 NFS 操作。
- 列表:sec=krb5 使用 Kerberos V5 ,而不是本地 UNIX UID 和 GID 来验证用户。
- 列表:sec=krb5i 使用 Kerberos V5 进行用户身份验证,并使用安全校验和执行 NFS 操作的完整性检查,以防止数据篡改。
- 列表:sec=krb5p 使用 Kerberos V5 进行用户身份验证、完整性检查,并加密 NFS 流量以防止流量嗅探。这是最安全的设置,但它也会涉及最大的性能开销。
4.14. 启用 NFS 内容的客户端缓存
- 要点:FS-Cache 是客户端中的一个持久的本地缓存。文件系统可以使用它通过网络检索数据并将其缓存在本地磁盘上。这有助于最小化网络流量。
4.14.1. NFS 缓存如何工作
- 要点:网络文件系统(NFS)缓存利用 FS-Cache 提高网络文件系统性能,减少服务器负载,并通过缓存后端和透明集成启用高效的本地数据检索。
- 要点:下图显示了 FS-Cache 的工作原理:
- 列表:XFS
- 列表:ext3
- 列表:ext4
4.14.2. 安装和配置 cachefilesd 服务
- 要点:Red Hat Enterprise Linux 只提供 cachefiles 缓存后端。cachefilesd 服务启动并管理 cachefiles。/etc/cachefilesd.conf 文件控制 cachefile 如何提供缓存服务。
- 要点:先决条件
- 列表:挂载在 /var/cache/fscache/ 目录下的文件系统是 ext3、ext4 或 xfs。
- 列表:挂载在 /var/cache/fscache/ 下的文件系统使用扩展属性,如果您在 RHEL 8 或更高版本上创建了文件系统,则这是默认设置。
- 列表:安装 cachefilesd 软件包: # dnf install cachefilesd
- 列表:启用并启动 cachefilesd 服务: # systemctl enable --now cachefilesd
- 列表:使用 fsc 选项挂载 NFS 共享以使用缓存: 要临时挂载一个共享,请输入: # mount -o fsc server.example.com:/nfs/projects/ /mnt/ 要永久挂载一个共享,请在 /etc/fstab 文件中的条目中添加 fsc 选项: <nfs_server_ip_or_hostname>:/<exported_share> <mount point> nfs fsc 0 0
- 列表:要临时挂载一个共享,请输入: # mount -o fsc server.example.com:/nfs/projects/ /mnt/
- 命令/配置摘录:
# dnf install cachefilesd
# systemctl enable --now cachefilesd4.14.3. 共享 NFS 缓存
- 要点:NFS 根据挂载选项、安全性和协议详情来挂载共享或隔离缓存。超级块唯一性和配置参数等因素决定是否可在不同的挂载之间访问缓存。
- 要点:因为缓存是持久的,所以缓存中的数据块会根据由四个键组成的序列来索引的:
- 列表:第 1 级:服务器详情
- 列表:第 2 级:有些挂载选项;安全类型;FSID;唯一标识符字符串
- 列表:第 3 级:文件处理
- 列表:第 4 级:文件中的页号
- 命令/配置摘录:
# mount -o fsc home0:/nfs/projects /projects
# mount -o fsc home0:/nfs/home /home/- 注意:注意 用户无法在具有不同通信或协议参数的超级块之间共享缓存。例如,无法在 NFSv4.0 和 NFSv3 之间或在 NFSv4.1 和 NFSv4.2 之间共享缓存,因为它们强制使用不同的超级块。另外,设置参数,如读大小(rsize),可防止缓存共享,因为它强制使用不同的超级块。
4.14.4. NFS 缓存限制
- 要点:NFS 缓存提高性能,但可能会带来一致性问题。
- 要点:NFS 有一些缓存限制:
- 列表:为直接 I/O 打开共享文件系统的文件将自动绕过缓存。这是因为这种访问类型必须与服务器直接进行。
- 列表:从共享文件系统打开一个文件直接 I/O 或写入清除文件缓存的副本。FS-Cache 不会再次缓存文件,直到它不再打开以进行直接 I/O 或写操作。
- 列表:另外,FS-Cache 的这个发行版本只缓存常规 NFS 文件。FS-Cache 不缓存目录、符号链接、设备文件、FIFO 和套接字。
4.14.5. 缓存剔除是如何工作的
- 要点:缓存剔除是删除较少访问缓存对象的过程,以确保在本地磁盘上维护足够的可用空间。
- 要点:cachefilesd 服务缓存本地磁盘上的远程数据,这可能会消耗可用空间。要管理这一点,缓存剔除会定期丢弃缓存中旧的、不用的对象,以维护可用空间。
- 列表:brun/frun: 10%
- 列表:bcull/fcull: 7%
- 列表:bstop/fstop: 3%
- 列表:0 ≤ bstop < bcull < brun < 100
- 列表:0 ≤ fstop < fcull < frun < 100
- 注意:重要 剔除同时依赖于 bxxx 和 fxxx 对;用户无法单独处理它们。
第 5 章 挂载 SMB 共享
- 要点:服务器消息块(SMB)协议实现用于访问服务器上资源的应用层网络协议,如文件共享和共享打印机。
- 要点:cifs-utils 软件包为以下情况提供工具:
- 列表:挂载 SMB 和 CIFS 共享
- 列表:管理内核 keyring 中的 NT LAN Manager (NTLM)凭据
- 列表:在 SMB 和 CIFS 共享上的安全描述符中设置和显示访问控制列表(ACL)
- 列表:显示挂载的 SMB 共享中的会话 ID、加密/解码密钥、特定于 SMB 的文件和配额信息
- 注意:注意 在 SMB 的上下文中,您可以发现提到了通用 Internet 文件系统(CIFS)协议,该协议是 SMB 的一种方言。SMB 和 CIFS 协议都支持,并且挂载 SMB 和 CIFS 共享时所涉及的内核模块和工具均使用名称 cifs。
5.1. 支持的 SMB 协议版本
- 要点:Linux cifs.ko 内核模块支持特定的服务器消息块(SMB)协议版本。SMB1、SMB2、SMB3 和更新的版本中有一些安全注意事项和功能差异,可用于最佳网络文件共享。
- 要点:cifs.ko 内核模块支持以下 SMB 协议版本:
- 列表:SMB 1 警告 因为已知的安全问题,SMB1 协议已弃用,仅 在私有网络上可以安全使用。SMB1 仍然作为受支持的选项提供,其主要原因是,当前它是唯一支持 UNIX 扩展的 SMB 协议版本。如果您不需要在 SMB 上使用 UNIX 扩展,请使用 SMB2 或更高版本。
- 列表:SMB 2.0
- 列表:SMB 2.1
- 列表:SMB 3.0
- 列表:SMB 3.1.1
- 注意:警告 因为已知的安全问题,SMB1 协议已弃用,仅 在私有网络上可以安全使用。SMB1 仍然作为受支持的选项提供,其主要原因是,当前它是唯一支持 UNIX 扩展的 SMB 协议版本。如果您不需要在 SMB 上使用 UNIX 扩展,请使用 SMB2 或更高版本。
- 注意:注意 根据协议版本,并非所有 SMB 功能都已实施。
5.2. UNIX 扩展支持
- 要点:Samba 在 SMB 协议中使用 CAP_UNIX 功能位来提供 UNIX 扩展功能。cifs.ko 内核模块也支持这些扩展。但是,Samba 和内核模块仅支持 SMB 1 协议中的 UNIX 扩展。
- 要点:先决条件
- 列表:cifs-utils 软件包已安装。
- 列表:将 /etc/samba/smb.conf 文件 [global] 部分中的 server min protocol 参数设为 NT1。
- 列表:通过向 mount 命令提供 -o vers=1.0 选项,使用 SMB 1 协议挂载共享。例如: # mount -t cifs -o vers=1.0,username=<user_name> //<server_name>/<share_name> /mnt/ 默认情况下,内核模块使用 SMB 2 或服务器支持的最高协议版本。将 -o vers=1.0 选项传给 mount 命令会强制内核模块使用 SMB 1 协议,该协议在使用 UNIX 扩展时是必需的。
- 列表:显示挂载的共享的选项: # mount ... //<server_name>/<share_name> on /mnt type cifs (...,unix,...) 如果在挂载选项列表中显示了 unix 条目,则启用了 UNIX 扩展。
- 命令/配置摘录:
# mount -t cifs -o vers=1.0,username=<user_name> //<server_name>/<share_name> /mnt/
# mount5.3. 手动挂载 SMB 共享
- 要点:您可以使用 mount 工具手动挂载共享来临时访问远程 SMB 服务器上的文件。
- 要点:先决条件
- 列表:cifs-utils 软件包已安装。
- 列表:使用带有 -t cifs 参数的 mount 工具挂载 SMB 共享: # mount -t cifs -o username=<user_name> //<server_name>/<share_name> /mnt/ Password for <user_name>@//<server_name>/<share_name>: password 在 -o 参数中,您可以指定用于挂载共享的选项。详情请查看 mount.cifs (8) 手册页中的 OPTIONS 部分,以及 常 使用 SMB 挂载选项。以下是使用加密的 SMB 3.0 连接挂载共享的示例。 要以 DOMAIN\Administrator 用户的身份,将 \ser…
- 列表:列出挂载的共享的内容: # ls -l /mnt/ total 4 drwxr-xr-x. 2 root root 8748 Dec 4 16:27 test.txt drwxr-xr-x. 17 root root 4096 Dec 4 07:43 Demo-Directory
- 命令/配置摘录:
# mount -t cifs -o username=<user_name> //<server_name>/<share_name> /mnt/
Password for <user_name>@//<server_name>/<share_name>: password- 注意:注意 重启系统时,手动挂载的共享不会再次自动挂载。要配置 Red Hat Enterprise Linux 在系统引导时自动挂载共享,请参阅 在系统引导时自动挂载 SMB 共享。
5.4. 系统启动时自动挂载 SMB 共享
- 要点:如果服务器上需要永久访问挂载的 SMB 共享,请在启动时自动挂载共享。
- 要点:先决条件
- 列表:cifs-utils 软件包已安装。
- 列表:向 /etc/fstab 文件中添加一个共享条目。例如: //<server_name>/<share_name> /mnt cifs credentials=/root/smb.cred 0 0 重要 要让系统自动挂载共享,您必须将用户名、密码和域名存储在凭据文件中。详情请参阅 创建凭据文件以向 smb 共享进行身份验证。 在 /etc/fstab 行的第四个字段中,指定挂载选项,如凭据文件的路径。详情请查看 mount.cifs (8) 手册页中的 OPTIONS 部分,以及 常 使用 SMB 挂载选项。
- 列表:通过指定挂载点来挂载共享: # mount /mnt/
- 命令/配置摘录:
//<server_name>/<share_name> /mnt cifs credentials=/root/smb.cred 0 0
# mount /mnt/- 注意:重要 要让系统自动挂载共享,您必须将用户名、密码和域名存储在凭据文件中。详情请参阅 创建凭据文件以向 smb 共享进行身份验证。
5.5. 创建一个凭据文件来向 SMB 共享进行身份验证
- 要点:在某些情况下,比如在启动时自动挂载共享,应当在不输入用户名和密码的情况下挂载共享。要实施此操作,请创建一个凭据文件。
- 要点:先决条件
- 列表:cifs-utils 软件包已安装。
- 列表:创建一个文件,如 /root/smb.cred,并在该文件中指定用户名、密码和域名: username=user_name password=password domain=domain_name
- 列表:将权限设置为只允许所有者可以访问该文件: # chown user_name /root/smb.cred # chmod 600 /root/smb.cred 现在,您可以将 credentials=file_name 挂载选项传给 mount 工具,或者在 /etc/fstab 文件中使用它来挂载共享,而无需提示输入用户名和密码。
- 命令/配置摘录:
username=user_name password=password domain=domain_name
# chown user_name /root/smb.cred5.6. 执行多用户 SMB 挂载
- 要点:用于挂载共享的凭据定义默认访问权限。例如,如果您使用 DOMAIN\example 用户挂载共享,则对该共享的所有操作都以该用户身份运行,无论哪个本地用户执行它们。
- 要点:在某些情况下,管理员希望在系统启动时自动挂载共享,但用户应使用其自己的凭据对共享的内容执行操作。您可以使用 multiuser 挂载选项配置此场景。
- 列表:确保已安装了 cifs-utils 软件包。
- 列表:使用 multiuser 选项挂载共享。
- 列表:(可选)验证共享是否使用 multiuser 选项成功挂载。
- 列表:以用户身份访问共享。
- 注意:重要 要使用 multiuser 挂载选项,还必须将 sec 挂载选项设置为支持以非交互方式提供凭据的安全类型,如 krb5 ,或带有凭据文件的 ntlmssp 选项。
5.6.1. 使用 multiuser 选项挂载共享
- 要点:在用户可以使用自己的凭据访问共享之前,使用权限有限的帐户,以 root 用户身份挂载共享。
- 要点:流程
- 列表:在 /etc/fstab 文件中为共享创建条目。例如: //server_name/share_name /mnt cifs multiuser,sec=ntlmssp,credentials=/root/smb.cred 0 0
- 列表:挂载共享: # mount /mnt/ 如果您不想在系统启动时自动挂载共享,请通过将 -o multiuser,sec=security_type 传给 mount 命令来手动挂载它。有关手动挂载 SMB 共享的详情,请参考 手动挂载 SMB 共享。
- 命令/配置摘录:
//server_name/share_name /mnt cifs multiuser,sec=ntlmssp,credentials=/root/smb.cred 0 0
# mount /mnt/5.6.2. 验证是否使用 multiuser 选项挂载 SMB 共享
- 要点:若要验证共享是否是通过 multiuser 选项挂载的,可显示挂载选项。
- 要点:流程
- 列表:显示挂载选项: # mount ... //server_name/share_name on /mnt type cifs (sec=ntlmssp,multiuser,...) 如果挂载选项列表中显示了 multiuser 条目,则启用了该功能。
- 命令/配置摘录:
# mount
... //server_name/share_name on /mnt type cifs (sec=ntlmssp,multiuser,...)5.6.3. 以用户身份访问共享
- 要点:如果 SMB 共享是使用 multiuser 选项挂载的 ,则用户可以向内核密钥环提供其服务器凭据:
- 要点:当用户在包含挂载的 SMB 共享的目录中执行操作时,服务器会为此用户应用文件系统权限。它不会应用最初挂载共享的用户的权限。
- 列表:以用户身份访问共享
- 列表:使用 multiuser 选项挂载共享
- 列表:(可选)验证共享是否使用 multiuser 选项成功挂载
- 命令/配置摘录:
# cifscreds add -u SMB_user_name server_name
Password: password- 注意:注意 多个用户可以通过同时对挂载的共享使用自己的凭据来执行操作。
5.7. 常用的 SMB 挂载选项
- 要点:探索常用 SMB 挂载选项,包括凭证处理、权限、加密、安全模式和协议版本的配置详情,以优化 Linux 环境中安全且高效的 SMB 共享连接。
- 要点:当您挂载 SMB 共享时,挂载选项将决定:
- 列表:如何与服务器建立连接。例如:连接到服务器时使用 SMB 协议版本。
- 列表:如何将共享挂载到本地文件系统.例如,如果系统覆盖了远程文件和目录权限,以提供对服务器上多个本地用户的访问。
- 列表:使用 multiuser 选项挂载共享
- 列表:创建凭据文件以向 smb 共享进行身份验证
- 列表:手动挂载 SMB 共享
- 表格样本(共 9 行):
- 选项 | 描述
- credentials=file_name | 设置凭证文件的路径。
- dir_mode=mode | 如果服务器不支持 CIFS UNIX 扩展,则设置目录模式。
- file_mode=mode | 如果服务器不支持 CIFS UNIX 扩展,则设置文件模式。
第 6 章 持久性命名属性概述
- 要点:作为系统管理员,您需要使用持久性命名属性来构建比多个系统引导可靠存储设置来指代存储卷。
6.1. 非持久性命名属性的缺陷
- 要点:Red Hat Enterprise Linux 提供识别存储设备的多种方法。务必要使用正确的选项来识别每个设备。这有助于避免意外访问错误的设备。
- 要点:安装到或重新格式化驱动器时,这一点尤为重要。
- 列表:系统引导过程的并行化会根据每个系统引导的顺序检测到存储设备。
- 列表:磁盘无法启动或响应小型计算机系统接口(SCSI)控制器。这会导致通常的设备探测不会检测到它。系统无法访问磁盘。因此,后续的设备会切换其主号和次号范围。这也会影响关联的 sd 名称。例如,通常被称为 sdb 的磁盘可能无法检测到。在这种情况下,通常称为 sdc 的磁盘会被显示为 sdb。
- 列表:SCSI 控制器(主机总线适配器或 HBA)无法初始化,从而导致不能检测到与该 HBA 连接的所有磁盘。任何连接到随后探测到的 HBA 的磁盘都会被分配不同的主号和次号范围,以及不同的相关 sd 名称。
- 列表:如果系统中存在不同类型的 HBA,则驱动初始化顺序会改变。这会导致连接到那些 HBA 的磁盘以不同顺序被检测到。当将 HBA 移动到系统的不同 PCI 插槽时也会出现这种情况。
- 列表:当探测到时,通过光纤通道、互联网小型计算机系统接口(iSCSI)或以太网光纤通道(FCoE)适配器连接的磁盘可能无法被探测到。例如,这可能是因为存储阵列或干预开关被关闭而发生。当系统在电源失败后重启,且存储阵列需要比系统上线的时间更长时,会出现这种情况。某些光纤通道驱动程序支持一种向全球端口名称(WWPN)映射指定持久的 SCSI 目标 ID 的机制。但是,这不会保留主号和次号范围或关联的 sd 名称。它仅提供一致的 SCSI 目标 ID 号。
6.2. 文件系统和设备识别符
- 要点:文件系统标识符与文件系统本身绑定,设备标识符则链接到物理块设备。了解区别对正确的存储管理非常重要。
- 要点:文件系统识别符
- 列表:唯一标识符(UUID)
- 列表:标签
- 列表:World Wide Identifier (WWID)
- 列表:分区 UUID
- 列表:序列号
- 列表:有些文件系统(比如逻辑卷)会跨越多个设备。使用文件系统标识符而不是设备标识符访问这些文件系统。
6.3. 使用 /dev/disk/ 中的 udev 机制管理的设备名称
- 要点:Linux 中的 udev 机制处理所有设备类型,而不仅仅是存储设备。它在 /dev/disk/ 中提供永久命名属性。在 Red Hat Enterprise Linux 中,存储设备的 udev 规则在此目录中创建符号链接。
- 要点:您可以通过以下方法引用存储设备:
- 列表:其内容
- 列表:唯一标识符
- 列表:它们的序列号。
6.3.1. 文件系统识别符
- 要点:/dev/disk/by-uuid/ 中的 UUID 属性
- 要点:此目录中的条目提供一个符号链接名称,通过存储在设备上的内容(即数据)中的 唯一标识符 (UUID) 来指向存储设备。例如:
- 命令/配置摘录:
/dev/disk/by-uuid/3e6be9de-8139-11d1-9106-a43f08d823a6
UUID=3e6be9de-8139-11d1-9106-a43f08d823a66.3.2. 设备识别符
- 要点:/dev/disk/by-id/ 中的 WWID 属性
- 要点:全球识别符(WWID)是一个持久的、系统独立的标识符,所有设备需要小型计算机系统接口(SCSI)标准。保证 WWID 标识符对于每个存储设备都是唯一的,并且独立于用于访问该设备的路径。标识符是设备的属性,但不存储在设备上的内容(也就是数据)中。
- 列表:您需要识别您要替换的磁盘。
- 列表:您计划在特定位置的磁盘中安装存储服务。
- 注意:注意 如果您在使用 NVMe 设备,如果设备的序列号有前导空格,则可能会遇到某些供应商按磁盘 id 命名的更改。
- 表格样本(共 4 行):
- WWID 符号链接 | 非持久性设备 | 备注
- /dev/disk/by-id/scsi-3600508b400105e210000900000490000 | /dev/sda | 具有页面 0x83 标识符的设备
- /dev/disk/by-id/scsi-SSEAGATE_ST373453LW_3HW1RHM6 | /dev/sdb | 具有页面 0x80 标识符的设备
- /dev/disk/by-id/ata-SAMSUNG_MZNLN256HMHQ-000L7_S2WDNX0J336519-part3 | /dev/sdc3 | 磁盘分区
6.4. 使用 DM 多路径的通用识别符
- 要点:您可以配置设备映射器(DM)多路径,来映射全球识别符(WWID)和非持久性设备名称。
- 要点:如果系统中有多路径到某个设备,DM 多路径会使用 WWID 探测到这个设备。然后,DM 多路径会在 /dev/mapper/wwid 目录中显示一个"pseudo-device",如 /dev/mapper/3600508b400105df70000e00000ac0000。
- 列表:Host:Channel:Target:LUN
- 列表:/dev/sd 名称
- 列表:major:minor 号
- 命令/配置摘录:
3600508b400105df70000e00000ac0000 dm-2 vendor,product [size=20G][features=1 queue_if_no_path][hwhandler=0][rw] \_ round-robin 0 [prio=0][active] \_ 5:0:1:1 sdc 8:32 [active][undef] \_ 6:0:1:1 sdg 8:96 [active][undef] \_ round-robin 0 [prio=0][enabled] \_ 5:0:0:1 sdb 8:16 [active][undef] \_ 6:0:0:1 sdf 8:80 [active][undef]- 注意:重要 如果使用 user_friendly_names,则需要额外的步骤来获得集群中的一致名称。
6.5. udev 设备命名规则的限制
- 要点:udev 设备命名规则存在一些挑战和限制。这包括事件时间、设备可访问性、延迟、命名稳定性和动态存储环境中的外部进程潜在的冲突。
- 要点:以下是 udev 命名规则的一些限制:
- 列表:执行查询时可能无法访问该设备。这是因为 udev 机制在为 udev 事件处理 udev 规则时可能会依赖存储设备。这更有可能使用光纤通道、互联网小型计算机系统接口(iSCSI)或以太网光纤通道(FCoE)存储设备。当设备没有位于服务器机箱中时会出现这种情况。
- 列表:内核可能会随时发送 udev 事件,从而导致处理规则。如果设备无法访问,这可能会删除 /dev/disk/by reasonable/ 链接。
- 列表:在 udev 事件和处理时间之间可能会有延迟。当检测到很多设备且用户空间 udevd 服务需要时间来处理每个设备的规则时,会出现这种情况。这可能会在内核检测到该设备和在 /dev/disk/by-*/ 名称可用之间出现延迟。
- 列表:规则调用的 blkid 等外部程序可能会简要打开该设备。这使得设备在其他用途临时无法访问。
- 列表:/dev/disk/ 中 udev 机制管理的设备名称可能会在主版本之间有所变化,需要您更新链接。
6.6. 列出持久性命名属性
- 要点:您可以找到非持久性存储设备的持久性命名属性。
- 要点:流程
- 列表:要列出通用唯一标识符(UUID)和标签属性,请使用 lsblk 工具: $ lsblk --fs storage-device 例如,查看文件系统的 UUID 标签: $ lsblk --fs /dev/sda1 NAME FSTYPE LABEL UUID MOUNTPOINT sda1 xfs Boot afa5d5e3-9050-48c3-acc1-bb30095f3dc4 /boot
- 列表:要列出 PARTUUID 属性,请使用 lsblk 工具以及 --output +PARTUUID 选项: $ lsblk --output +PARTUUID 例如,查看分区的 PARTUUID 属性: $ lsblk --output +PARTUUID /dev/sda1 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT PARTUUID sda1 8:1 0 512M 0 part /boot 4cd1448a-01
- 列表:要列出 World Wide Identifier (WWID)属性,请检查 /dev/disk/by-id/ 目录中符号链接的目标。 例如,查看系统上所有存储设备的 WWID: $ file /dev/disk/by-id/* /dev/disk/by-id/ata-QEMU_HARDDISK_QM00001 symbolic link to ../../sda /dev/disk/by-id/ata-QEMU_HARDDISK_QM00001-part1 symbolic link to ../../sda1 /dev/disk/by-id/ata-QEMU_HARDDISK_QM00001-part2 symbolic li…
- 命令/配置摘录:
$ lsblk --fs storage-device
$ lsblk --fs /dev/sda16.7. 修改持久性命名属性
- 要点:您可以更改文件系统的 UUID 或 Label persistent naming 属性。
- 要点:在以下命令中:
- 列表:将 new-uuid 替换为您要设置的 UUID;例如,1cdfbc07-1c90-4984-b5ec-f61943f5ea50。您可以使用 uuidgen 命令生成 UUID。
- 列表:使用标签替换 new-label,如 backup_data。
- 列表:如果您要修改 XFS 文件系统的属性,首先卸载它。
- 列表:要更改 XFS 文件系统的 UUID 或 Label 属性,请使用 xfs_admin 工具: # xfs_admin -U new-uuid -L new-label storage-device # udevadm settle
- 列表:要更改 ext4、ext3 或 ext2 文件系统的 UUID 或 Label 属性,请使用 tune2fs 工具: # tune2fs -U new-uuid -L new-label storage-device # udevadm settle
- 列表:要更改 swap 卷的 UUID 或 Label 属性,请使用 swaplabel 工具: # swaplabel --uuid new-uuid --label new-label swap-device # udevadm settle
- 命令/配置摘录:
# xfs_admin -U new-uuid -L new-label storage-device
# udevadm settle- 注意:注意 更改 udev 属性在后台进行,可能需要很长时间。udevadm settle 命令会等待更改完全注册,这样可确保您的下一个命令能够正确使用新属性。
第 7 章 使用 parted 的分区操作
- 要点:parted 是一个操作磁盘分区的程序。它支持多种分区表格式,包括 MS-DOS 和 GPT。它可用于为新操作系统创建空间,重新整理磁盘使用情况,并将数据复制到新的硬盘中。
7.1. 查看使用 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) print7.2. 使用 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- 注意:警告 使用分区表格式化块设备会删除该设备中所有存储的数据。
7.3. 使用 parted 创建分区
- 要点:创建新磁盘分区,以有效地组织存储空间,并分隔不同类型的数据。您可以为系统文件、用户数据和交换空间配置专用区域。
- 要点:先决条件
- 列表:磁盘上的分区表。
- 列表:如果您要创建的分区大于 2 TiB,请使用 GUID 分区表(GPT) 格式化磁盘。
- 列表:启动 parted 工具: # parted block-device
- 列表:查看当前的分区表来确定是否有足够空闲空间: (parted) print 如果分区没有足够的可用空间,则调整分区大小。 从分区表中决定: 新分区的开始和结束点。 在 MBR 上,应该是什么分区类型。
- 列表:如果分区没有足够的可用空间,则调整分区大小。
- 列表:从分区表中决定: 新分区的开始和结束点。 在 MBR 上,应该是什么分区类型。
- 命令/配置摘录:
# parted block-device
(parted) print- 注意:注意 所需分区是 swap、/boot/ 和 /(root)。
7.4. 使用 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) 手册页。
7.5. 使用 parted 重新定义分区大小
- 要点:使用 parted 工具扩展分区以使用未使用的磁盘空间,或者缩小分区以将其容量用于不同的目的。如需更多信息,请参阅您系统上的 parted (8) 手册页。
- 要点:先决条件
- 列表:在缩小分区前备份数据。
- 列表:如果您要创建的分区大于 2 TiB,请使用 GUID 分区表(GPT) 格式化磁盘。
- 列表:如果您想缩小分区,首先缩小文件系统,使其不大于重新定义大小的分区。
- 列表:启动 parted 工具: # parted block-device
- 列表:查看当前的分区表: (parted) print 从分区表中决定: 分区的副号码。 调整大小后现有分区的位置和新结束点。 重要 当调整分区大小时,请确保调整大小的分区末尾和下一个分区的开始之间或与磁盘的末尾(如果是最后一个分区)之间有足够的未分配空间。如果没有足够的空间,parted 将返回一个错误。但是,最好在尝试调整大小以之前验证可用空间,以避免分区重叠。
- 列表:分区的副号码。
- 命令/配置摘录:
# parted block-device
(parted) print- 注意:注意 XFS 不支持缩小。
- 注意:重要 当调整分区大小时,请确保调整大小的分区末尾和下一个分区的开始之间或与磁盘的末尾(如果是最后一个分区)之间有足够的未分配空间。如果没有足够的空间,parted 将返回一个错误。但是,最好在尝试调整大小以之前验证可用空间,以避免分区重叠。
第 8 章 重新分区磁盘策略
- 要点:大多数 RHEL 系统使用 LVM 管理存储空间。您还可以使用 parted、fdisk 或其他图形工具进行磁盘分区。重新分区可以使用未分区的空闲空间、未使用的分区或可用空间从活跃分区中回收。
- 注意:注意 以下示例提供了分区技术的一般概述。为清晰起见,对它们进行了简化,并没有反映在典型的 Red Hat Enterprise Linux 安装过程中的确切的分区布局。
8.1. 使用未分区的空闲空间
- 要点:已定义且不会跨越整个硬盘的分区,请保留未分配的空间。这个空间不是任何定义的分区的一部分。
- 要点:未使用的硬盘也属于这一类别。唯一的区别是,所有 空间并不是任何定义的分区的一部分。
8.2. 使用未使用分区中的空间
- 要点:要使用分配给未使用分区的空间,请删除分区,然后创建适当的 Linux 分区。或者,在安装过程中,删除未使用的分区并手动创建新分区。
8.3. 使用活跃分区中的空闲空间
- 要点:如果所需的可用空间位于已在使用的活跃分区上,则管理此过程可能比较困难。大多数预安装软件的计算机都有一个大型分区,其中包含操作系统和用户数据。
- 要点:要选择使用可用空间,您可以使用破坏性或非破坏性重新分区的方法。
- 注意:警告 如果您尝试调整或修改包含操作系统(OS)的活动分区,则丢失数据或使操作系统无法引导的风险。因此,在某些情况下,您可能需要重新安装操作系统。在继续操作前,检查您的系统是否包含一个恢复或安装介质。
8.3.1. 破坏性重新分区
- 要点:破坏性重新分区会破坏硬盘上的分区,并在其位置上创建新分区。备份原始分区中任何需要的数据,因为此方法会删除整个内容。
- 要点:从现有操作系统创建新分区后,您可以:
- 列表:重新安装软件。
- 列表:恢复您的数据。
- 注意:警告 这个方法会删除之前存储在原始分区中的所有数据。
8.3.2. 非破坏性重新分区
- 要点:非破坏性重新分区分区大小,没有任何数据丢失。这个方法是可靠的,但在大型驱动器上需要更长的处理时间。
- 要点:以下是帮助启动非破坏性重新分区的方法列表。
- 列表:重新组织现有数据
- 列表:重新划分现存分区的大小
- 列表:可选:创建新分区
- 注意:注意 调整大小和创建分区可能因您使用的工具而异,如 parted、GParted。具体说明请参考工具的文档。
第 9 章 XFS 入门
- 要点:这是如何创建和维护 XFS 文件系统的概述。
9.1. XFS 文件系统
- 要点:XFS 是一个可扩展、高性能的 64 位日志文件系统。它支持非常大的文件和文件系统,在 RHEL 10 中是默认设置。SGI 最初于 1990 年代,它长期用于大型服务器和存储阵列。
- 要点:XFS 的功能包括:
- 列表:元数据日志可确保系统崩溃后文件系统的完整性。它保留文件系统操作的记录。当系统重启并重新挂载文件系统时,可以重新执行这些记录。
- 列表:广泛的运行时元数据一致性检查
- 列表:可扩展且快速修复工具
- 列表:配额日志。这可避免在崩溃后进行冗长的配额一致性检查。
- 列表:支持最多 1024 TiB 的文件系统大小
- 列表:支持大量并发操作的能力
9.2. 和 ext4 和 XFS 一起使用的工具比较
- 要点:不同的工具和命令可完成 ext4 和 XFS 上的常见文件系统任务,包括创建、检查、调整大小和备份操作。
- 要点:这部分比较用于完成 ext4 和 XFS 文件系统中常用任务的工具。
- 注意:注意 如果您需要一个通过网络的备份的完整客户端-服务器解决方案,您可以使用 RHEL 9 中提供的 bacula 备份工具。有关 Bacula 的更多信息,请参阅 Bacula 备份解决方案。
- 表格样本(共 9 行):
- 任务 | ext4 | XFS
- 创建文件系统 | mkfs.ext4 | mkfs.xfs
- 文件系统检查 | e2fsck | xfs_repair
- 重新定义文件系统大小 | resize2fs | xfs_growfs
第 10 章 创建 XFS 文件系统
- 要点:作为系统管理员,您可以在块设备上创建 XFS 文件系统,使其可以存储文件和目录。
10.1. 使用 mkfs.xfs 创建 XFS 文件系统
- 要点:创建 XFS 文件系统,以利用大型存储环境的高性能、可扩展性和高级功能。对于需要大量文件和高吞吐量的应用程序,XFS 特别有用。
- 要点:流程
- 列表:要创建文件系统,请执行以下操作: 如果设备是常规分区、LVM 卷、MD 卷、磁盘或者类似的设备,请使用以下命令: # mkfs.xfs block-device 注意 最小 XFS 文件系统大小为 300 MB。mkfs.xfs 不支持创建较小的文件系统,以防止性能和冗余问题。 使用到块设备的路径替换 block-device。例如:/dev/sdb1、/dev/disk/by-uuid/05e99ec8-def1-4a5e-8a9d-5945339ceb2a 或 /dev/my-volgroup/my-lv。 一般情况下,默认选项是常见用途的最佳选择。 当在包含现有文件系统的块设备上使用 mkfs.xfs 时,请添加 -f 选项…
- 列表:如果设备是常规分区、LVM 卷、MD 卷、磁盘或者类似的设备,请使用以下命令: # mkfs.xfs block-device 注意 最小 XFS 文件系统大小为 300 MB。mkfs.xfs 不支持创建较小的文件系统,以防止性能和冗余问题。 使用到块设备的路径替换 block-device。例如:/dev/sdb1、/dev/disk/by-uuid/05e99ec8-def1-4a5e-8a9d-5945339ceb2a 或 /dev/my-volgroup/my-lv。 一般情况下,默认选项是常见用途的最佳选择。 当在包含现有文件系统的块设备上使用 mkfs.xfs 时,请添加 -f 选项来覆盖该文件系统。
- 列表:使用到块设备的路径替换 block-device。例如:/dev/sdb1、/dev/disk/by-uuid/05e99ec8-def1-4a5e-8a9d-5945339ceb2a 或 /dev/my-volgroup/my-lv。
- 列表:一般情况下,默认选项是常见用途的最佳选择。
- 列表:当在包含现有文件系统的块设备上使用 mkfs.xfs 时,请添加 -f 选项来覆盖该文件系统。
- 列表:要在硬件 RAID 设备上创建文件系统,检查系统是否正确检测到该设备的条带几何结构: 如果条带几何结构信息正确,则不需要额外的选项。创建文件系统: # mkfs.xfs block-device 如果信息不正确,请使用 -d 选项的 su 和 sw 参数手动指定条带几何结构。su 参数指定 RAID 块大小,sw 参数指定 RAID 设备中的数据磁盘的数量。 例如: # mkfs.xfs -d su=64k,sw=4 /dev/sda3
- 命令/配置摘录:
# mkfs.xfs block-device
# mkfs.xfs block-device- 注意:注意 最小 XFS 文件系统大小为 300 MB。mkfs.xfs 不支持创建较小的文件系统,以防止性能和冗余问题。
第 11 章 备份 XFS 文件系统
- 要点:作为系统管理员,您可以使用 xfsdump 将 XFS 文件系统备份到文件或磁带。这提供了一个命令行备份机制,它支持增量备份,且不需要卸载文件系统。
11.1. XFS 备份特性
- 要点:这部分描述了使用 xfsdump 工具备份 XFS 文件系统的主要概念和功能。
- 要点:您可以使用 xfsdump 工具来:
- 列表:对常规文件镜像执行备份。 只能将一个备份写入常规文件。
- 列表:在磁带驱动器中执行备份。 您还可以使用 xfsdump 工具将多个备份写入同一磁带。备份可跨越多个标题。 要将多个文件系统备份到单个磁带设备,请将备份写入已包含 XFS 备份的磁带。这会将新备份附加到上一个备份。默认情况下,xfsdump 永远不会覆盖现有的备份。
- 列表:创建增量备份。 xfsdump 工具使用转储级来确定其他备份所相对的基本备份。从 0 到 9 的数字表示增加的转储级。增量备份只备份自上一次较低级别转储以来发生变化的文件: 要执行全备份,请对文件系统中执行 0 级转储。 1 级转储是全备份后的第一个增量备份。下一个增量备份为 2 级,它仅备份自 1 级转储以来更改的文件,以此类推,最高到 9 级。
- 列表:要执行全备份,请对文件系统中执行 0 级转储。
- 列表:1 级转储是全备份后的第一个增量备份。下一个增量备份为 2 级,它仅备份自 1 级转储以来更改的文件,以此类推,最高到 9 级。
- 列表:通过使用大小、子树或 inode 标志过滤文件,从备份中排除文件。
11.2. 使用 xfsdump 备份 XFS 文件系统
- 要点:您可以使用 xfsdump 工具将 XFS 文件系统的内容备份到文件或磁带中。
- 要点:先决条件
- 列表:您可以备份的 XFS 文件系统。
- 列表:可以保存备份的其它文件系统或者磁带驱动器。
- 列表:使用以下命令备份 XFS 文件系统: # xfsdump -l level [-L label] \ -f backup-destination path-to-xfs-filesystem 使用备份的转储级别替换 level。使用 0 执行全备份,或使用 1 到 9 执行后续增量备份。 使用您要存储备份的路径替换 backup-destination。目的地可以是常规文件、磁带驱动器或远程磁带设备。例如,用于文件的 /backup-files/Data.xfsdump 或用于磁带驱动器的 /dev/st0。 使用您要备份的 XFS 文件系统的挂载点替换 path-to-xfs-filesystem。例如:/mnt/data/。文…
- 列表:使用备份的转储级别替换 level。使用 0 执行全备份,或使用 1 到 9 执行后续增量备份。
- 列表:使用您要存储备份的路径替换 backup-destination。目的地可以是常规文件、磁带驱动器或远程磁带设备。例如,用于文件的 /backup-files/Data.xfsdump 或用于磁带驱动器的 /dev/st0。
- 列表:使用您要备份的 XFS 文件系统的挂载点替换 path-to-xfs-filesystem。例如:/mnt/data/。文件系统必须挂载。
- 命令/配置摘录:
# xfsdump -l level [-L label] \ -f backup-destination path-to-xfs-filesystem
# xfsdump -l 0 -f /backup-files/boot.xfsdump /boot第 12 章 从备份中恢复 XFS 文件系统
- 要点:作为系统管理员,您可以使用 xfsrestore 工具来恢复用 xfsdump 工具创建的,并存储在文件或磁带中的 XFS 备份。
12.1. 从备份中恢复 XFS 的特性
- 要点:您可以使用 xfsrestore 从备份中恢复 XFS 文件系统。发现可用的恢复模式、会话识别和用于选择性地恢复文件的方法,帮助确保数据完整性和灵活的恢复解决方案。
- 要点:xfsrestore 工具从 xfsdump 生成的备份中恢复文件系统。xfsrestore 工具有两个模式:
- 列表:使用 简单 模式,您可以从 0 级转储恢复整个文件系统。这是默认的模式。
- 列表:使用 累积 模式,您可以从增量备份中恢复文件系统:即,1 级到 9 级。
12.2. 使用 xfsrestore 从备份中恢复 XFS 文件系统
- 要点:使用 xfsrestore 从文件或磁带备份中恢复 XFS 文件系统内容,包括带有可选互动模式的全和增量备份。
- 要点:先决条件
- 列表:XFS 文件系统的文件或磁带备份,如 备份 XFS 文件系统 中所述。
- 列表:您可以恢复备份的存储设备。
- 列表:恢复备份的命令因您是从全备份或增量备份中恢复,还是从单个磁带设备恢复多个备份而有所不同: # xfsrestore [-r] [-S session-id] [-L session-label] [-i] -f backup-location restoration-path 使用备份位置替换 backup-location。这可以是常规文件、磁带驱动器或远程磁带设备。例如,用于文件的 /backup-files/Data.xfsdump 或用于磁带驱动器的 /dev/st0。 使用要恢复文件系统的目录的路径替换 restore-path。例如:/mnt/data/。 要从增量(1 级到 9 级)备份中恢复文件系统,请添加 -r …
- 列表:使用备份位置替换 backup-location。这可以是常规文件、磁带驱动器或远程磁带设备。例如,用于文件的 /backup-files/Data.xfsdump 或用于磁带驱动器的 /dev/st0。
- 列表:使用要恢复文件系统的目录的路径替换 restore-path。例如:/mnt/data/。
- 列表:要从增量(1 级到 9 级)备份中恢复文件系统,请添加 -r 选项。
- 命令/配置摘录:
# xfsrestore [-r] [-S session-id] [-L session-label] [-i] -f backup-location restoration-path
# xfsrestore -f /backup-files/boot.xfsdump /mnt/boot/12.3. 从磁带恢复 XFS 备份时的说明性消息
- 要点:当从存有多个文件系统备份的磁带恢复备份时,xfsrestore 工具可能会发出消息。当 xfsrestore 按顺序检查磁带上的每个备份时,消息会通知您是否找到了与请求的备份相匹配的备份。
- 要点:例如:
- 命令/配置摘录:
xfsrestore: preparing drive xfsrestore: examining media file 0 xfsrestore: inventory session uuid (8590224e-3c93-469c-a311-fc8f23029b2a) does not match the media header's session uuid (7eda9f86-f1e9-4dfd-b1d4-c50467912408) xfsrestore: examining media file 1 xfsrestore: inventory session uuid (8590224e-3c93-469c-a311-fc8f23029b2a) does not match the media header's session uuid (7eda9f86-f1e9-4dfd-b1d4-c50467912408) [...]第 13 章 增加 XFS 文件系统的大小
- 要点:作为系统管理员,您可以增大 XFS 文件系统的大小,以充分利用更大的存储容量。但是,目前无法缩小 XFS 文件系统的大小。
- 注意:重要 将文件系统从很小增加到非常大会产生大量分配组,可能会导致性能问题。作为最佳实践,将大小增加限制为原始大小的最多 10 倍。
13.1. 使用 xfs_growfs 增加 XFS 文件系统的大小
- 要点:在文件系统仍然挂载时,使用 xfs_growfs 扩展 XFS 文件系统。您可以对特定大小或最大设备容量进行此操作。
- 要点:先决条件
- 列表:确保底层块设备的大小适当,以便以后保留调整了大小的文件系统。为受影响的块设备使用合适的调整大小的方法。
- 列表:挂载 XFS 文件系统。
- 列表:在挂载 XFS 文件系统时,使用 xfs_growfs 工具来增加其大小: # xfs_growfs file-system -D new-size 使用 XFS 文件系统的挂载点替换 file-system。 使用 -D 选项,将 new-size 替换为在文件系统块数中指定的文件系统所需的新大小。 要找出给定 XFS 文件系统的块大小(kB),请使用 xfs_info 工具: # xfs_info block-device ... data = bsize=4096 ... 如果没有 -D 选项,xfs_growfs 将文件系统增大到底层设备支持的最大大小。 如需更多信息,请参阅您系统上的 xfs_growfs (8) 手册页。
- 列表:使用 XFS 文件系统的挂载点替换 file-system。
- 列表:使用 -D 选项,将 new-size 替换为在文件系统块数中指定的文件系统所需的新大小。 要找出给定 XFS 文件系统的块大小(kB),请使用 xfs_info 工具: # xfs_info block-device ... data = bsize=4096 ...
- 列表:如果没有 -D 选项,xfs_growfs 将文件系统增大到底层设备支持的最大大小。 如需更多信息,请参阅您系统上的 xfs_growfs (8) 手册页。
- 命令/配置摘录:
# xfs_growfs file-system -D new-size
# xfs_info block-device第 14 章 配置 XFS 错误行为
- 要点:您可以配置 XFS 文件系统在遇到 I/O 错误时的行为方式。错误处理控制操作是否被重试、继续或系统关闭。这有助于防止数据崩溃,并允许适应工作负载和存储可靠性要求。
14.1. XFS 中的可配置错误处理
- 要点:您可以通过为 I/O 错误设置重试限制和超时来配置 XFS 文件系统错误处理。控制 XFS 如何响应设备错误、没有空间条件和设备丢失,在操作和卸载过程中增强可靠性和灵活性。
- 要点:当 I/O 操作期间发生错误时,XFS 文件系统以以下其中一种方式响应:
- 列表:XFS 重复重试 I/O 操作,直到操作成功或 XFS 达到设定的限制。 限制是基于重试的最大次数或重试的最长时间。
- 列表:XFS 认为错误是永久性的,并停止文件系统上的操作。
14.2. 特定和未定义的 XFS 错误条件的配置文件
- 要点:通过为特定错误条件设置重试限制和超时的文件配置 XFS 错误处理,以及未定义错误的默认值,确保强大和受控的文件系统行为。
- 要点:以下目录保存用来控制不同错误条件的 XFS 错误行为的配置文件:
14.3. 为特定条件设置 XFS 行为
- 要点:通过使用 sysfs 参数为特定错误条件设置最大重试尝试和超时限制来配置 XFS 元数据错误处理。
- 要点:流程
- 列表:设置重试的最大重试次数、重试时间限制或两者: 要设置重试的最大数量,请将所需的数字写入 max_retries 文件: # echo value > /sys/fs/xfs/device/error/metadata/condition/max_retries 要设置时间限制,请将所需的秒数写入 retry_timeout_seconds 文件: # echo value > /sys/fs/xfs/device/error/metadata/condition/retry_timeout_second value 是介于 -1 和 C 带符号整数类型的最大可能值之间的数字。64 位 Linux 中是 2147483647。 在这…
- 列表:要设置重试的最大数量,请将所需的数字写入 max_retries 文件: # echo value > /sys/fs/xfs/device/error/metadata/condition/max_retries
- 列表:要设置时间限制,请将所需的秒数写入 retry_timeout_seconds 文件: # echo value > /sys/fs/xfs/device/error/metadata/condition/retry_timeout_second
- 命令/配置摘录:
# echo value > /sys/fs/xfs/device/error/metadata/condition/max_retries
# echo value > /sys/fs/xfs/device/error/metadata/condition/retry_timeout_second14.4. 为未定义条件设置 XFS 行为
- 要点:通过为未定义错误条件设置重试尝试和超时限制来配置默认的 XFS 元数据错误处理。您可以使用 sysfs 参数完成此操作。
- 要点:流程
- 列表:设置重试的最大重试次数、重试时间限制或两者: 要设置重试的最大数量,请将所需的数字写入 max_retries 文件: # echo value > /sys/fs/xfs/device/error/metadata/default/max_retries 要设置时间限制,请将所需的秒数写入 retry_timeout_seconds 文件: # echo value > /sys/fs/xfs/device/error/metadata/default/retry_timeout_seconds value 是介于 -1 和 C 带符号整数类型的最大可能值之间的数字。64 位 Linux 中是 2147483647。 在这两个限…
- 列表:要设置重试的最大数量,请将所需的数字写入 max_retries 文件: # echo value > /sys/fs/xfs/device/error/metadata/default/max_retries
- 列表:要设置时间限制,请将所需的秒数写入 retry_timeout_seconds 文件: # echo value > /sys/fs/xfs/device/error/metadata/default/retry_timeout_seconds
- 命令/配置摘录:
# echo value > /sys/fs/xfs/device/error/metadata/default/max_retries
# echo value > /sys/fs/xfs/device/error/metadata/default/retry_timeout_seconds14.5. 设置 XFS 卸载行为
- 要点:配置 XFS 在卸载过程中如何响应错误。fail_at_unmount 覆盖其他错误设置和卸载,而不重试 I/O 操作。即使出现持久错误,卸载也会成功。
- 要点:流程
- 列表:启用或禁用 fail_at_unmount 选项: 要在文件系统卸载时取消重试所有操作,请启用这个选项: # echo 1 > /sys/fs/xfs/device/error/fail_at_unmount 要在文件系统卸载时遵守 max_retries 和 retry_timeout_seconds 重试限制,请禁用这个选项: # echo 0 > /sys/fs/xfs/device/error/fail_at_unmount device 是设备的名称,可以在 /dev/ 目录中找到;例如,sda.
- 列表:要在文件系统卸载时取消重试所有操作,请启用这个选项: # echo 1 > /sys/fs/xfs/device/error/fail_at_unmount
- 列表:要在文件系统卸载时遵守 max_retries 和 retry_timeout_seconds 重试限制,请禁用这个选项: # echo 0 > /sys/fs/xfs/device/error/fail_at_unmount
- 命令/配置摘录:
# echo 1 > /sys/fs/xfs/device/error/fail_at_unmount
# echo 0 > /sys/fs/xfs/device/error/fail_at_unmount- 注意:警告 在卸载过程启动后,您不能更改 fail_at_unmount 值,因为卸载过程会从相应文件系统的 sysfs 接口删除配置文件。您必须在文件系统开始卸载前配置卸载行为。
第 15 章 使用 PCP 对 XFS 的性能分析
- 要点:XFS PMDA 作为 pcp 软件包的一部分提供,并在安装过程中默认启用。它用于在 Performance Co-Pilot (PCP) 中收集 XFS 文件系统的性能指标数据。您可以使用 PCP 分析 XFS 文件系统的性能。
15.1. 手动安装 XFS PMDA
- 要点:手动安装 XFS 性能指标域代理(PMDA)。当代理没有在 pcp 配置输出中列出时,Yoo 可以运行 Install 脚本。
- 要点:先决条件
- 列表:Performance Co-Pilot (PCP)已安装。如需更多信息,请参阅安装并启用 PCP。
- 列表:进入 xfs 目录: # cd /var/lib/pcp/pmdas/xfs/
- 列表:手动安装 XFS PMDA: xfs]# ./Install Updating the Performance Metrics Name Space (PMNS) ... Terminate PMDA if already installed ... Updating the PMCD control file, and notifying PMCD ... Check xfs metrics have appeared ... 387 metrics and 387 values
- 列表:验证 pmcd 进程是否在主机上运行,且在配置中列出 XFS PMDA: # pcp Performance Co-Pilot configuration on workstation: platform: Linux workstation 4.18.0-80.el8.x86_64 #1 SMP Wed Mar 13 12:02:46 UTC 2019 x86_64 hardware: 12 cpus, 2 disks, 1 node, 36023MB RAM timezone: CEST-2 services: pmcd pmcd: Version 4.3.0-1, 8 agents pmda: root pmcd proc …
- 列表:系统服务和使用 PCP 分发的工具
- 命令/配置摘录:
# cd /var/lib/pcp/pmdas/xfs/
xfs]# ./Install Updating the Performance Metrics Name Space (PMNS) ... Terminate PMDA if already installed ... Updating the PMCD control file, and notifying PMCD ... Check xfs metrics have appeared ... 387 metrics and 387 values15.2. 使用 pminfo 检查 XFS 性能指标
- 要点:PCP 支持通过 XFS PMDA 报告每个挂载的 XFS 文件系统的某些 XFS 指标。这样可以更加轻松地查明特定挂载的文件系统问题并评估性能。pminfo 命令为每个挂载的 XFS 文件系统提供每个设备 XFS 指标。
- 要点:先决条件
- 列表:已安装 PCP。如需更多信息,请参阅安装并启用 PCP。
- 列表:显示 XFS PMDA 提供的所有可用指标列表: # pminfo xfs
- 列表:显示各个指标的信息。以下示例使用 pminfo 工具检查特定的 XFS 读和写 指标: 显示 xfs.write_bytes 指标的简短描述: # pminfo --oneline xfs.write_bytes xfs.write_bytes [number of bytes written in XFS file system write operations] 显示 xfs.read_bytes 指标的长描述: # pminfo --helptext xfs.read_bytes xfs.read_bytes Help: This is the number of bytes read from read(2) system…
- 列表:显示 xfs.write_bytes 指标的简短描述: # pminfo --oneline xfs.write_bytes xfs.write_bytes [number of bytes written in XFS file system write operations]
- 列表:显示 xfs.read_bytes 指标的长描述: # pminfo --helptext xfs.read_bytes xfs.read_bytes Help: This is the number of bytes read from read(2) system calls to files in XFS file systems. It can be used in conjunction with the read_calls count to calculate the average size of the read operations to file in XFS file systems.
- 列表:获取 xfs.read_bytes 指标的当前性能值: # pminfo --fetch xfs.read_bytes xfs.read_bytes value 4891346238
- 命令/配置摘录:
# pminfo xfs
# pminfo --oneline xfs.write_bytes15.3. 使用 pmstore 重置 XFS 性能指标
- 要点:使用 PCP,您可以修改特定指标的值,特别是当指标充当控制变量时,如 xfs.control.reset 指标。要修改指标值,请使用 pmstore 工具。
- 要点:先决条件
- 列表:已安装 PCP。如需更多信息,请参阅安装并启用 PCP。
- 列表:显示指标的值: $ pminfo -f xfs.write xfs.write value 325262
- 列表:重置所有 XFS 指标: # pmstore xfs.control.reset 1 xfs.control.reset old value=0 new value=1
- 列表:在重置指标后查看信息: $ pminfo --fetch xfs.write xfs.write value 0 如需更多信息,请参阅您系统上的 pmstore (1) 和 pminfo (1) 手册页。
- 列表:系统服务和使用 PCP 分发的工具
- 命令/配置摘录:
$ pminfo -f xfs.write
xfs.write value 32526215.4. XFS 的 PCP 指标组
- 要点:Performance Co-Pilot 提供全面的指标组,用于监控所有设备的 XFS 文件系统操作,包括分配、事务和缓冲区活动。
- 要点:下表描述了 XFS 可用的 PCP 指标组。
- 表格样本(共 14 行):
- 指标组 | 提供的指标
- xfs.* | 常规 XFS 指标,包括读取和写入操作计数、读取和写入字节计数。另外,索引节点的次数也会刷新、集群集群和集群失败数的计数器。
- xfs.allocs.* xfs.alloc_btree.* | 有关文件系统中对象分配的指标范围,其中包括扩展的数量和块创建/自由。分配树查找和比较,以及扩展从 btree 创建和删除记录。
- xfs.block_map.* xfs.bmap_btree.* | 指标包括块映射的读/写入和块删除次数,用于插入、删除和查找的扩展列表操作。另外,还可从 blockmap 进行比较、查找、插入和删除操作的操作计数器。
15.5. 每个设备 PCP 指标组用于 XFS
- 要点:Performance Co-Pilot 为监控单个 XFS 设备提供指标组,覆盖从分配到事务管理的操作。
- 要点:下表描述了适用于 XFS 的每设备 PCP 指标组。
- 表格样本(共 13 行):
- 指标组 | 提供的指标
- xfs.perdev.* | 常规 XFS 指标,包括读取和写入操作计数、读取和写入字节计数。另外,索引节点的次数也会刷新、集群集群和集群失败数的计数器。
- xfs.perdev.allocs.* xfs.perdev.alloc_btree.* | 有关文件系统中对象分配的指标范围,其中包括扩展的数量和块创建/自由。分配树查找和比较,以及扩展从 btree 创建和删除记录。
- xfs.perdev.block_map.* xfs.perdev.bmap_btree.* | 指标包括块映射的读/写入和块删除次数,用于插入、删除和查找的扩展列表操作。另外,还可从 blockmap 进行比较、查找、插入和删除操作的操作计数器。
第 16 章 检查和修复文件系统
- 要点:RHEL 提供称为 fsck (文件系统检查)的文件系统管理工具来检查和修复文件系统。如果检测到问题,系统管理工具可能会在引导期间自动运行,但在需要时也可以手动运行。
- 注意:重要 文件系统检查程序只保证跨文件系统的元数据的一致性。它们不知道文件系统中所包含的实际数据,它们不是数据恢复工具。
16.1. 需要文件系统检查的场景
- 要点:确定需要文件系统检查时的情况,如损坏、引导失败或系统错误。您可以采取适当的操作和考虑诊断和修复文件系统问题。您可以使用标准检查工具完成此操作。
- 要点:如果出现以下情况,可以使用相关的 fsck 工具来检查您的系统:
- 列表:系统无法引导
- 列表:特定磁盘上的文件损坏
- 列表:由于不一致,文件系统关闭或变为只读
- 列表:文件系统上的文件无法访问
- 注意:重要 文件系统检查工具不能修复硬件问题。如果修复操作成功,文件系统必须是完全可读写的。如果文件系统因为硬件错误而损坏,则必须首先将该文件系统移至好的磁盘,例如,使用 dd(8) 工具。
- 注意:重要 通过将 /etc/fstab 中的第 6 字段设为 0,可以在引导时禁用文件系统检查。但是,除非在启动时遇到 fsck 的问题,否则不要这样做,例如对于非常大或远程文件系统。
16.2. 运行 fsck 的潜在副作用
- 要点:通常,运行文件系统检查和修复工具至少可以自动修复发现的一些不一致问题。在某些情况下可能会出现以下问题:
- 要点:要确保不会永久地进行意外或不必要的更改,请确保遵循流程中概述的任何预防步骤。
- 列表:如果无法修复,可以丢弃严重损坏的 inode 或目录。
- 列表:可能会对文件系统进行大量更改。
16.3. XFS 中的错误处理机制
- 要点:这部分论述了 XFS 如何处理文件系统中各种错误。
- 要点:未完全卸载
- 列表:硬件故障
- 列表:存储固件、设备驱动程序、软件堆栈或者文件系统本身的错误
- 列表:导致文件系统部分内容被文件系统之外的内容覆盖的问题
- 命令/配置摘录:
# dmesg --notime | tail -15
XFS (loop0): Mounting V5 Filesystem XFS (loop0): Metadata CRC error detected at xfs_agi_read_verify+0xcb/0xf0 [xfs], xfs_agi block 0x2 XFS (loop0): Unmount and run xfs_repair XFS (loop0): First 128 bytes of corrupted metadata buffer: 00000000027b3b56: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000005f9abc7a: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000005b0aef35: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000da9d2ded: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000000001e265b07: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ …16.4. 使用 xfs_repair 检查 XFS 文件系统
- 要点:使用 xfs_repair 对 XFS 文件系统执行只读检查。与其他工具不同,xfs_repair 不会在引导时运行,即使未完全卸载也是如此。相反,XFS 在挂载时重新执行日志; xfs_repair 无法在不重新挂载 的情况下修复脏日志。
- 要点:流程
- 列表:通过挂载和卸载文件系统重新显示日志: # mount file-system # umount file-system 注意 如果挂载失败,并带有结构需要清理的错误,则日志已损坏,且无法重播。试运行应发现并报告更多有关磁盘损坏的信息。
- 列表:使用 xfs_repair 工具执行试运行来检查文件系统。打印任何错误并指示将要采取的操作,而不修改文件系统。 # xfs_repair -n block-device
- 列表:挂载文件系统: # mount file-system 如需更多信息,请参阅您系统上的 xfs_repair (8) 和 xfs_metadump (8) 手册页。
- 命令/配置摘录:
# mount file-system
# umount file-system- 注意:注意 xfsprogs 软件包中存在 fsck.xfs 二进制文件,以满足在引导时查找 fsck.file 系统二进制文件的 initscripts。fsck.xfs 立即退出,退出代码为 0。
- 注意:注意 如果挂载失败,并带有结构需要清理的错误,则日志已损坏,且无法重播。试运行应发现并报告更多有关磁盘损坏的信息。
16.5. 使用 xfs_repair 修复 XFS 文件系统
- 要点:通过在卸载的文件系统上使用 xfs_repair 来修复损坏的 XFS 文件系统,对于严重损坏,可选日志归零。
- 要点:流程
- 列表:使用 xfs_metadump 工具在修复前为诊断或测试目的创建元数据镜像。如果损坏是由软件错误导致的,修复前文件系统元数据镜像对于支持调查非常有用。预修复镜像中出现的损坏模式有助于分析根本原因。 使用 xfs_metadump 调试工具将 XFS 文件系统中的元数据复制到文件。如果需要发送大的 metadump 文件来支持,可以使用标准压缩工具来压缩生成的 metadump 文件,以减少文件大小。 # xfs_metadump block-device metadump-file
- 列表:使用 xfs_metadump 调试工具将 XFS 文件系统中的元数据复制到文件。如果需要发送大的 metadump 文件来支持,可以使用标准压缩工具来压缩生成的 metadump 文件,以减少文件大小。 # xfs_metadump block-device metadump-file
- 列表:通过重新挂载文件系统来重新显示日志: # mount file-system # umount file-system
- 列表:使用 xfs_repair 工具来修复卸载的文件系统: 如果挂载成功,则不需要额外的选项: # xfs_repair block-device 如果挂载失败,带有 Structure needs cleaning 错误,日志会破坏且无法重复显示。使用 -L 选项(强制日志归零)清除日志: 警告 该命令会导致崩溃时正在进行的所有元数据更新丢失,这可能会造成严重的文件系统损坏和数据丢失。只有在无法重播日志时,才应将其作为最后的手段。 # xfs_repair -L block-device
- 列表:如果挂载成功,则不需要额外的选项: # xfs_repair block-device
- 列表:如果挂载失败,带有 Structure needs cleaning 错误,日志会破坏且无法重复显示。使用 -L 选项(强制日志归零)清除日志: 警告 该命令会导致崩溃时正在进行的所有元数据更新丢失,这可能会造成严重的文件系统损坏和数据丢失。只有在无法重播日志时,才应将其作为最后的手段。 # xfs_repair -L block-device
- 命令/配置摘录:
# xfs_metadump block-device metadump-file
# mount file-system- 注意:警告 该命令会导致崩溃时正在进行的所有元数据更新丢失,这可能会造成严重的文件系统损坏和数据丢失。只有在无法重播日志时,才应将其作为最后的手段。
16.6. ext2、ext3 和 ext4 中的处理机制出错
- 要点:ext2、ext3 和 ext4 文件系统使用 e2fsck 进行检查和修复。fsck.ext2、fsck.ext3 和 fsck.ext4 二进制文件是到 e2fsck 的硬链接,并在引导时自动运行。它们的行为因文件系统类型及其状态而异。
- 要点:对于不是元数据日志记录文件系统的 ext2 和没有日志的 ext4 文件系统,会调用完整的文件系统检查和修复。
16.7. 使用 e2fsck 检查 ext2、ext3 或者 ext4 文件系统
- 要点:使用 e2fsck -n 检查 ext2、ext3 或 ext4 文件系统,以在不修改的情况下报告错误的空运行。
- 要点:流程
- 列表:通过重新挂载文件系统来重新显示日志: # mount file-system # umount file-system
- 列表:执行空运行检查文件系统。 # e2fsck -n block-device 注意 打印任何错误并指示将要采取的操作,而不修改文件系统。稍后一致性检查阶段可能会打印额外的错误,因为在修复模式下运行时,它会发现可能在早期阶段已经修复了的不一致问题。 如需更多信息,请参阅您系统上的 e2image (8) 和 e2fsck (8) 手册页。
- 命令/配置摘录:
# mount file-system
# umount file-system- 注意:注意 打印任何错误并指示将要采取的操作,而不修改文件系统。稍后一致性检查阶段可能会打印额外的错误,因为在修复模式下运行时,它会发现可能在早期阶段已经修复了的不一致问题。
16.8. 使用 e2fsck 修复 ext2、ext3 或者 ext4 文件系统
- 要点:使用 e2fsck -p 修复损坏的 ext2、ext3 或 ext4 文件系统进行自动修复。您可以使用为诊断的可选元数据镜像进行此操作。
- 要点:流程
- 列表:保存文件系统镜像以进行支持调查。如果损坏是由软件 bug 导致的,则预修复文件系统元数据映像对于支持调查非常有用。预修复镜像中出现的损坏模式有助于分析根本原因。 注意 严重损坏的文件系统可能会导致元数据镜像创建出现问题。 如果要为测试目的创建镜像,请使用 -r 选项来创建与文件系统本身大小相同的稀疏文件。然后 e2fsck 可以直接对生成的文件进行操作。 # e2image -r block-device image-file 如果您要创建要存档或提供用于诊断的镜像,请使用 -Q 选项,该选项可创建适合于传输的更紧凑的文件格式。 # e2image -Q block-device image-file
- 列表:如果要为测试目的创建镜像,请使用 -r 选项来创建与文件系统本身大小相同的稀疏文件。然后 e2fsck 可以直接对生成的文件进行操作。 # e2image -r block-device image-file
- 列表:如果您要创建要存档或提供用于诊断的镜像,请使用 -Q 选项,该选项可创建适合于传输的更紧凑的文件格式。 # e2image -Q block-device image-file
- 列表:通过重新挂载文件系统来重新显示日志: # mount file-system # umount file-system
- 列表:自动修复文件系统。如果需要用户干预,e2fsck 指明其输出中未修复的问题,并在退出代码中反映此状态。 # e2fsck -p block-device
- 命令/配置摘录:
# e2image -r block-device image-file
# e2image -Q block-device image-file- 注意:注意 严重损坏的文件系统可能会导致元数据镜像创建出现问题。
第 17 章 挂载文件系统
- 要点:作为系统管理员,您可以在系统上挂载文件系统以访问其上的数据。
17.1. Linux 挂载机制
- 要点:在 Linux 和类似系统中,文件系统可以存在于分区或可移动设备中,如 CD、DVD 和 USB 驱动器。它们连接到挂载点的目录树中,也可以分离。挂载后,无法访问原始目录内容。
- 要点:Linux 不会阻止您将文件系统挂载到已附加了文件系统的目录。
- 列表:通用唯一标识符(UUID):例如,UUID=34795a28-ca6d-4fd8-a347-73671d0c19cb
- 列表:卷标签:例如,LABEL=home
- 列表:到非持久性块设备的完整路径:例如,/dev/sda3
- 列表:使用挂载点挂载: # mount directory
- 列表:使用块设备挂载: # mount device
- 命令/配置摘录:
# mount directory
# mount device17.2. 列出当前挂载的文件系统
- 要点:在命令行上使用 findmnt 工具列出当前挂载的所有文件系统。
- 要点:流程
- 列表:要列出所有挂载的文件系统,请使用 findmnt 工具: $ findmnt
- 列表:要将列出的文件系统限制为特定的文件系统类型,请添加 --types 选项: $ findmnt --types fs-type 以下是仅列出 XFS 文件系统的示例: $ findmnt --types xfs TARGET SOURCE FSTYPE OPTIONS / /dev/mapper/luks-5564ed00-6aac-4406-bfb4-c59bf5de48b5 xfs rw,relatime ├─/boot /dev/sda1 xfs rw,relatime └─/home /dev/mapper/luks-9d185660-7537-414d-b727-d92ea036051e xfs rw,relatime
- 命令/配置摘录:
$ findmnt
$ findmnt --types fs-type17.3. 使用 mount 挂载文件系统
- 要点:您可以使用 mount 实用程序将文件系统附加到文件层次结构中的目录中。这样用户和应用程序就可以访问该文件系统。
- 要点:先决条件
- 列表:验证您选择的挂载点上是否没有挂载文件系统: $ findmnt mount-point
- 列表:要附加某个文件系统,请使用 mount 工具: # mount device mount-point 例如:要挂载由 UUID 识别的本地 XFS 文件系统: # mount UUID=ea74bbec-536d-490c-b8d9-5b40bbd7545b /mnt/data
- 列表:如果 mount 无法自动识别文件系统类型,请使用-- types 选项指定它 : # mount --types type device mount-point 例如:要挂载远程 NFS 文件系统: # mount --types nfs4 host:/remote-export /mnt/nfs
- 命令/配置摘录:
$ findmnt mount-point
# mount device mount-point17.4. 移动挂载点
- 要点:使用 mount 工具将挂载的文件系统的挂载点改为不同的目录。
- 要点:流程
- 列表:要更改挂载文件系统的目录: # mount --move old-directory new-directory 例如,将挂载在 /mnt/userdirs/ 目录的文件系统移动到 /home/ 挂载点: # mount --move /mnt/userdirs /home
- 列表:验证文件系统是否已如预期移动: $ findmnt $ ls old-directory $ ls new-directory
- 命令/配置摘录:
# mount --move old-directory new-directory
# mount --move /mnt/userdirs /home17.5. 使用 umount 卸载文件系统
- 要点:使用 umount 工具卸载文件系统。
- 要点:流程
- 列表:使用以下命令之一卸载文件系统: 通过挂载点: # umount mount-point 通过设备: # umount device 如果命令失败并显示类似如下的错误,这意味着文件系统正在使用,因为进程正在使用其上的资源: umount: /run/media/user/FlashDrive: target is busy.
- 列表:通过挂载点: # umount mount-point
- 列表:通过设备: # umount device
- 列表:如果文件系统正在使用,请使用 fuser 工具来确定哪个进程正在访问它。例如: $ fuser --mount /run/media/user/FlashDrive /run/media/user/FlashDrive: 18351 之后,使用文件系统停止进程,并尝试再次卸载它。
- 命令/配置摘录:
# umount mount-point
# umount device17.6. 在 web 控制台中挂载和卸载文件系统
- 要点:为了能够在 RHEL 系统中使用分区,您需要在分区中作为一个设备挂载文件系统。您还可以卸载文件系统,RHEL 系统将会停止使用它。您可以通过卸载文件系统来删除、删除或重新格式化设备。
- 要点:先决条件
- 列表:cockpit-storaged 软件包已安装在您的系统上。
- 列表:您已安装了 RHEL 10 web 控制台。 具体步骤请参阅安装并启用 Web 控制台。
- 列表:如果要卸载文件系统,请确保系统没有使用存储在分区中的任何文件、服务或应用程序。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage 选项卡。
- 列表:在 Storage 表中,选择您要从中删除分区的卷。
17.7. 常用挂载选项
- 要点:mount 工具支持各种选项,用于控制不同文件系统类型中的文件系统行为、访问权限和挂载首选项。
- 要点:下表列出了 mount 工具的最常见选项。您可以使用以下语法应用这些挂载选项:
- 命令/配置摘录:
# mount --options option1,option2,option3 device mount-point- 表格样本(共 13 行):
- 选项 | 描述
- async | 对文件系统启用异步输入和输出操作。
- auto | 使用 mount -a 命令时为自动挂载配置文件系统。
- defaults | 为 async,auto,dev,exec,nouser,rw,suid 选项提供别名。
第 18 章 在多个挂载点共享挂载
- 要点:作为系统管理员,您可以重复挂载点以便从多个目录中访问文件系统。
18.1. 共享挂载的类型
- 要点:您可以使用多种共享挂载。它们之间的主要区别在于,当另一个文件系统挂载到其中一个共享挂载点下时,它们是如何操作的。这些共享挂载使用 共享子树 功能来工作。
- 要点:可用的挂载类型如下:
- 列表:Linux Weekly News 上的 Shared subtrees 文章
18.2. 创建私有挂载点副本
- 要点:将挂载点复制为私有挂载。您稍后挂载到复制或原始挂载点下的文件系统不会反映在另一个文件系统中。
- 要点:流程
- 列表:从原始挂载点创建虚拟文件系统(VFS)节点: # mount --bind original-dir original-dir
- 列表:将原始挂载点标记为私有: # mount --make-private original-dir 或者,要更改所选挂载点以及其下的所有挂载点的挂载类型,请使用 --make-rprivate 选项,而不是 --make-private 选项。
- 列表:创建副本: # mount --bind original-dir duplicate-dir
- 列表:从 /media 目录创建 VFS 节点: # mount --bind /media /media
- 列表:将 /media 目录标记为私有: # mount --make-private /media
- 列表:在 /mnt 中创建副本: # mount --bind /media /mnt
- 命令/配置摘录:
# mount --bind original-dir original-dir
# mount --make-private original-dir18.3. 创建共享挂载点副本
- 要点:将挂载点复制为共享挂载。您稍后挂载到原始目录或副本下的文件系统始终反映在其它文件系统中。
- 要点:流程
- 列表:从原始挂载点创建虚拟文件系统(VFS)节点: # mount --bind original-dir original-dir
- 列表:将原始挂载点标记为共享: # mount --make-shared original-dir 或者,要更改所选挂载点和其下的所有挂载点的挂载类型,请使用 --make-rshared 选项,而不是 --make-shared。
- 列表:创建副本: # mount --bind original-dir duplicate-dir
- 列表:从 /media 目录创建 VFS 节点: # mount --bind /media /media
- 列表:将 /media 目录标记为共享: # mount --make-shared /media
- 列表:在 /mnt 中创建副本: # mount --bind /media /mnt
- 命令/配置摘录:
# mount --bind original-dir original-dir
# mount --make-shared original-dir18.4. 创建从挂载点副本
- 要点:将挂载点复制为 slave 挂载类型。您稍后挂载在原始挂载点下的文件系统将反映在副本中,而不是反过来。
- 要点:流程
- 列表:从原始挂载点创建虚拟文件系统(VFS)节点: # mount --bind original-dir original-dir
- 列表:将原始挂载点标记为共享: # mount --make-shared original-dir 或者,要更改所选挂载点和其下的所有挂载点的挂载类型,请使用 --make-rshared 选项,而不是 --make-shared。
- 列表:创建副本,并将其标记为 slave 类型: # mount --bind original-dir duplicate-dir # mount --make-slave duplicate-dir
- 列表:从 /media 目录创建 VFS 节点: # mount --bind /media /media
- 列表:将 /media 目录标记为共享: # mount --make-shared /media
- 列表:在 /mnt 中创建副本,并将其标记为 slave : # mount --bind /media /mnt # mount --make-slave /mnt
- 命令/配置摘录:
# mount --bind original-dir original-dir
# mount --make-shared original-dir18.5. 防止挂载点重复
- 要点:将挂载点标记为 unbindable,这样便无法在另一个挂载点中复制它。
- 要点:流程
- 列表:要将挂载点的类型改为 unbindable 挂载,请使用: # mount --bind mount-point mount-point # mount --make-unbindable mount-point 或者,要更改所选挂载点和其下的所有挂载点的挂载类型,请使用 --make-runbindable 选项,而不是 --make-unbindable 选项。 重复此挂载的任何后续尝试都会失败,并显示以下错误: # mount --bind mount-point duplicate-dir mount: wrong fs type, bad option, bad superblock on mount-point, mi…
- 列表:要防止 /media 目录被共享,请使用: # mount --bind /media /media # mount --make-unbindable /media
- 命令/配置摘录:
# mount --bind mount-point mount-point
# mount --make-unbindable mount-point第 19 章 永久挂载文件系统
- 要点:作为系统管理员,您可以永久地挂载文件系统以配置不可移动的存储。
19.1. /etc/fstab 文件
- 要点:使用 /etc/fstab 配置文件控制文件系统的永久挂载点。/etc/fstab 文件中的每一行定义了文件系统的挂载点。
- 要点:它包括以下用空格分开的字段:
- 列表:由持久属性标识的块设备或 /dev 目录中的路径。
- 列表:挂载该设备的目录。
- 列表:该设备的文件系统。
- 列表:文件系统的挂载选项,其包括在引导时使用默认选项挂载分区的 defaults 选项。挂载选项字段也识别 x-systemd.option 格式的 systemd 挂载单元选项。
- 列表:dump 工具的备份选项。
- 列表:fsck 工具的检查顺序。
- 注意:注意 systemd-fstab-generator 会动态将 /etc/fstab 文件中的条目转换为 systemd-mount 单元。systemd 在手动激活过程中自动挂载 /etc/fstab 中的 LVM 卷,除非 systemd-mount 单元已屏蔽。
- 表格样本(共 2 行):
- 块设备 | 挂载点 | File system | 选项 | Backup | 检查
- UUID=ea74bbec-536d-490c-b8d9-5b40bbd7545b | /boot | xfs | defaults | 0 | 0
19.2. 在 /etc/fstab 中添加文件系统
- 要点:在 /etc/fstab 配置文件中为文件系统配置持久挂载点。
- 要点:流程
- 列表:查找文件系统的通用唯一标识符(UUID)属性: $ lsblk --fs storage-device 例如,查看分区的 UUID: $ lsblk --fs /dev/sda1 NAME FSTYPE LABEL UUID MOUNTPOINT sda1 xfs Boot ea74bbec-536d-490c-b8d9-5b40bbd7545b /boot
- 列表:如果挂载点目录不存在,请创建它: # mkdir --parents mount-point
- 列表:以 root 用户身份,编辑 /etc/fstab 文件,并为文件系统添加一行,由 UUID 标识。 例如,下面显示了 /etc/fstab 中的 /boot 挂载点: UUID=ea74bbec-536d-490c-b8d9-5b40bbd7545b /boot xfs defaults 0 0
- 列表:重新生成挂载单元以便您的系统注册新配置: # systemctl daemon-reload
- 列表:尝试挂载文件系统来验证配置是否正常工作: # mount mount-point
- 列表:持久性命名属性概述
- 命令/配置摘录:
$ lsblk --fs storage-device
$ lsblk --fs /dev/sda1第 20 章 根据需要挂载文件系统
- 要点:作为系统管理员,您可以将 NFS 等文件系统配置为按需自动挂载。
20.1. autofs 服务
- 要点:autofs 服务可以自动挂载和卸载文件系统(按需),从而节省了系统资源。它挂载文件系统,如网络文件系统(NFS)、Andrew 文件系统(AFS)、服务器消息块文件系统(SMBFS)和 CIFS。
- 要点:使用 /etc/fstab 的永久挂载的一个缺点是,系统必须专用资源才能保持挂载的文件系统。无论用户访问它的频率都发生了这种情况。例如,当系统同时维护多个系统的 NFS 挂载时,这可能会影响系统性能。
- 列表:实施文件系统的内核模块。
- 列表:执行所有其他功能的用户空间服务。
20.2. autofs 配置文件
- 要点:本节描述了 autofs 服务所使用的配置文件的用法和语法。
- 要点:主映射文件
- 命令/配置摘录:
mount-point map-name options
/mnt/data /etc/auto.data20.3. 配置 autofs 挂载点
- 要点:使用 autofs 服务配置按需挂载点。
- 要点:先决条件
- 列表:安装 autofs 软件包: # dnf install autofs
- 列表:启动并启用 autofs 服务: # systemctl enable --now autofs
- 列表:为位于 /etc/auto.identifier 的按需挂载点创建一个映射文件。使用标识挂载点的名称替换 identifier。
- 列表:在映射文件中,输入挂载点、选项和位置字段,如 autofs 配置文件部分中所述。
- 列表:注册主映射文件中的映射文件,如 autofs 配置文件 部分中所述。
- 列表:允许服务重新读取配置,以便它可以管理新配置的 autofs 挂载: # systemctl reload autofs.service
- 命令/配置摘录:
# dnf install autofs
# systemctl enable --now autofs20.4. 将 autofs 配置为使用 ldap 存储和检索自动挂载映射
- 要点:您可以配置 autofs 服务,来检索存储在 LDAP 目录中的自动挂载映射。
- 要点:先决条件
- 列表:autofs 和 openldap 软件包已安装。
- 列表:为安全身份验证运行支持 Kerberos 的服务。
- 列表:要配置 LDAP 访问,请修改 /etc/openldap/ldap.conf 文件。确保设置了 BASE 和 URI 选项,以反映合适的服务器和定位自动挂载条目的基础。
- 列表:在 /etc/autofs.conf 文件中,为自动挂载映射配置 LDAP 模式。默认情况下,autofs 将按配置文件中指定的顺序检查常用的模式: # # Define the LDAP schema to used for lookups # # If no schema is set autofs checks each of the schemas # below in the order given to try and locate an appropriate # basdn for lookups. If you want to minimize the number of # queries to the ser…
- 列表:rfc2307bis 草案中描述了最近建立的用于在 LDAP 中存储自动映射的模式。要使用此模式,请通过取消 ldap_schema 选项的注释,并为其设置合适的值,来在 /etc/autofs.conf 文件中配置它。例如,如果您使用非标准模式,或需要覆盖默认行为,您可以在 /etc/autofs.conf 文件中指定相关的模式属性。以下值与常用的模式设置相对应,如 rfc2307bis 草案中的设置: default_map_object_class = automountMap default_entry_object_class = automount default_map_attribute = automountMa…
- 列表:如果您选择在配置中指定自定义模式,请确保只有一组与模式相关的条目处于活动状态。注释掉任何其他内容以避免冲突。在 rfc2307bis 模式中,automountKey 属性代替了旧的 rfc2307 模式中使用的 cn 属性。以下是相应的 LDAP 数据交换格式(LDIF)配置的一个示例: # auto.master, example.com dn: automountMapName=auto.master,dc=example,dc=com objectClass: top objectClass: automountMap automountMapName: auto.master # /home, auto.master, …
- 命令/配置摘录:
# # Define the LDAP schema to used for lookups # # If no schema is set autofs checks each of the schemas # below in the order given to try and locate an appropriate # basdn for lookups. If you want to minimize the number of # queries to the server set the values here. # #map_object_class = nisMap #entry_object_class = nisObject #map_attribute = nisMapName #entry_attribute = cn #value_attribute = nisMapEntry # # Other common LDAP naming # #map_object_class = automountMap #entry_object_class = automount #map_attribute = ou #entry_attribute = cn #value_attribute = automountInformation # #map_object_class = automountMap #entry_object_class = aut…
default_map_object_class = automountMap default_entry_object_class = automount default_map_attribute = automountMapName default_entry_attribute = automountKey default_value_atrribute = automountInformation- 注意:注意 您还可以明确设置这些值,来略微减少 LDAP 查询。您可以在 /etc/autofs.conf 文件中以小写和大写形式写属性。
20.5. 使用 autofs 服务自动挂载 NFS 服务器用户主目录
- 要点:配置 autofs 服务,来自动挂载用户主目录。
- 要点:先决条件
- 列表:autofs 软件包已安装。
- 列表:autofs 服务已启用并正在运行。
- 列表:通过编辑要在其上挂载用户主目录的服务器上的 /etc/auto.master 文件来定义挂载点和本地自动挂载映射,并添加: /home /etc/auto.home
- 列表:在需要在其上挂载用户主目录的服务器上创建本地自动挂载映射文件 /etc/auto.home,并添加: * -fstype=nfs,rw,sync host.example.com:/home/& 您可以跳过 fstype 参数,因为它默认为 nfs。如需更多信息,请参阅您系统上的 autofs (5) 手册页。
- 列表:重新载入 autofs 服务: # systemctl reload autofs
- 命令/配置摘录:
/home /etc/auto.home
* -fstype=nfs,rw,sync host.example.com:/home/&20.6. 覆盖或添加 autofs 站点配置文件
- 要点:有时覆盖客户端系统上特定挂载点的站点默认值会很有用。
- 要点:初始条件:
- 列表:nsswitch 告知 autofs 要为映射检查哪些服务。
- 列表:要扩充或添加的映射名为 auto.home。
- 列表:auto.home 映射存储在 ldap 中,/etc/nsswitch.conf 有以下指令: automount: files ldap
- 列表:/etc/auto.master 映射文件包含: /home /etc/auto.home
- 列表:映射 /etc/auto.home' 文件包含: * fileserver.example.com:/export/home/&
- 命令/配置摘录:
automount: files ldap
/home /etc/auto.home- 注意:注意 + 映射包含只能用于本地映射。当 autofs 通过 + 映射包含遇到 files 源时,如果包含的映射名称与当前正在读的映射名称相同,则将跳过它。在这种情况下,由于两者都是 auto.home,因此 autofs 继续执行到 nsswitch.conf 中定义的下一个源,即 ldap。如果映射中存在通配符映射条目,则它不会影响目录列表,即使启用了浏览模式。这是因为在完成查询时,autofs 不知道通配符可能与什么匹配。因此,它无法预先创建挂载点目录。
- 注意:注意 要在列出 /home 时显示本地条目(如 mydir),请通过在 /etc/autofs.conf 中设置 browse_mode = yes 来启用浏览模式。除非可访问,否则通配符条目(如 *)不会出现在目录列表中。
20.7. 使用 systemd.automount ,通过 /etc/fstab 按需挂载文件系统
- 要点:当在 /etc/fstab 中定义挂载点时,使用自动挂载 systemd 单元来按需挂载文件系统。您必须为每个挂载添加自动挂载单元并启用它。
- 要点:流程
- 列表:添加所需的 fstab 条目,如 永久挂载文件系统 中所述。例如: /dev/disk/by-id/da875760-edb9-4b82-99dc-5f4b1ff2e5f4 /mount/point xfs defaults 0 0
- 列表:将 x-systemd.automount 添加到上一步中创建的条目的 options 字段中。
- 列表:加载新创建的单元,以便您的系统注册新配置: # systemctl daemon-reload
- 列表:启动自动挂载单元: # systemctl start mount-point.automount
- 列表:检查 mount-point.automount 是否正在运行: # systemctl status mount-point.automount
- 列表:检查自动挂载的目录是否有所需内容: # ls /mount/point
- 命令/配置摘录:
/dev/disk/by-id/da875760-edb9-4b82-99dc-5f4b1ff2e5f4 /mount/point xfs defaults 0 0
# systemctl daemon-reload20.8. 使用 systemd.automount ,通过挂载单元根据需要挂载文件系统
- 要点:在由挂载单元定义挂载点时,使用 automount systemd 单元来按需挂载文件系统。您必须为每个挂载添加自动挂载单元并启用它。
- 要点:流程
- 列表:创建挂载单元。例如: mount-point.mount [Mount] What=/dev/disk/by-uuid/f5755511-a714-44c1-a123-cfde0e4ac688 Where=/mount/point Type=xfs
- 列表:创建一个名称与挂载单元相同的单元文件,但带有 .automount 扩展。
- 列表:打开文件并创建 [Automount] 部分。将 Where= 选项设置为挂载路径: [Automount] Where=/mount/point [Install] WantedBy=multi-user.target
- 列表:加载新创建的单元,以便您的系统注册新配置: # systemctl daemon-reload
- 列表:启用并启动自动挂载单元: # systemctl enable --now mount-point.automount
- 列表:检查 mount-point.automount 是否正在运行: # systemctl status mount-point.automount
- 命令/配置摘录:
mount-point.mount [Mount] What=/dev/disk/by-uuid/f5755511-a714-44c1-a123-cfde0e4ac688 Where=/mount/point Type=xfs
[Automount] Where=/mount/point [Install] WantedBy=multi-user.target第 21 章 使用 IdM 中的 SSSD 组件来缓存 autofs 映射
- 要点:系统安全服务守护进程(SSSD)是一种系统服务,来访问远程服务目录和身份验证机制。当网络连接缓慢时,数据缓存很有用。您可以配置 SSSD 服务来缓存 autofs 映射。
21.1. 配置 SSSD 来缓存 autofs 映射
- 要点:系统安全服务守护进程(SSSD)服务可以缓存存储在身份管理(IdM)服务器上的 autofs 映射。它可避免配置 autofs 来直接使用 IdM 服务器。
- 要点:先决条件
- 列表:sssd 软件包已安装。
- 列表:打开 SSSD 配置文件: # vim /etc/sssd/sssd.conf
- 列表:将 autofs 服务添加到由 SSSD 处理的服务列表中。 [sssd] domains = ldap services = nss,pam,autofs
- 列表:创建一个新的 [autofs] 部分。您可以将此留空,因为 autofs 服务的默认设置适用于大多数基础架构。 [nss] [pam] [sudo] [autofs] [ssh] [pac] 如需更多信息,请参阅您系统上的 sssd.conf 手册页。
- 列表:可选:为 autofs 条目设置搜索基础。默认情况下,这是轻量级目录访问协议(LDAP)搜索基础。可以在 ldap_autofs_search_base 参数中指定子树。 [domain/EXAMPLE] ldap_search_base = "dc=example,dc=com" ldap_autofs_search_base = "ou=automount,dc=example,dc=com"
- 列表:重启 SSSD 服务: # systemctl restart sssd.service
- 命令/配置摘录:
# vim /etc/sssd/sssd.conf
[sssd] domains = ldap services = nss,pam,autofs第 22 章 为 root 文件系统设置只读权限
- 要点:有时,您需要使用只读权限挂载 root 文件系统(/)。例如,为了增强安全性,或在系统意外关闭后确保数据完整性。
22.1. 始终保留写入权限的文件和目录
- 要点:要使系统正常工作,一些文件和目录需要保留写权限。当 root 文件系统以只读模式挂载时,这些文件将使用 tmpfs 临时文件系统挂载到 RAM 中。
- 要点:这些文件和目录的默认集合是从 /etc/rwtab 文件中读取的。请注意,readonly-root 需要在系统中存在这个文件。
- 列表:用指定如何将文件或者目录复制到 tmpfs 的关键字之一替换 copy-method。
- 列表:使用到文件或目录的路径替换 path。
- 命令/配置摘录:
dirs /var/cache/man dirs /var/gdm <content truncated> empty /tmp empty /var/cache/foomatic <content truncated> files /etc/adjtime files /etc/ntp.conf <content truncated>
copy-method path22.2. 将 root 文件系统配置为在引导时使用只读权限挂载
- 要点:通过修改内核选项、fstab 和只读 root 设置,将 root 文件系统配置为在启动时只读挂载。
- 要点:流程
- 列表:在 /etc/sysconfig/readonly-root 文件中,将 READONLY 选项设置为 yes,来将文件系统挂载为只读: READONLY=yes
- 列表:在 / etc/fstab 文件中的 root 条目(/ )中添加 ro 选项: /dev/mapper/luks-c376919e... / xfs x-systemd.device-timeout=0,ro 1 1
- 列表:启用 ro 内核选项: # grubby --update-kernel=ALL --args="ro"
- 列表:确定 rw 内核选项已禁用: # grubby --update-kernel=ALL --remove-args="rw"
- 列表:如果您需要在 tmpfs 文件系统中添加需要挂载具有写权限的文件和目录,请在 /etc/rwtab.d/ 目录中创建一个文本文件,并将配置放在其中。 例如:要将 /etc/example/file 文件挂载为具有写权限,请将此行添加到 /etc/rwtab.d/example 文件中: files /etc/example/file 重要 对 tmpfs 中的文件和目录所做的更改不会在启动后保留。
- 列表:重启系统以应用更改。
- 命令/配置摘录:
READONLY=yes
/dev/mapper/luks-c376919e... / xfs x-systemd.device-timeout=0,ro 1 1- 注意:重要 对 tmpfs 中的文件和目录所做的更改不会在启动后保留。
第 23 章 对带有配额的 XFS 限制存储空间的使用
- 要点:实施磁盘配额以限制用户或组的存储并设置警告级别。XFS 配额在用户、组、目录或项目级别上管理磁盘空间(块)和 inode。按项目配额控制目录层次结构磁盘使用情况。
23.1. 磁盘配额
- 要点:磁盘配额是控制用户和组可在文件系统上消耗的磁盘空间量的限制。它们有助于防止任何单个用户使用所有可用的存储空间,并为多个用户提供公平的资源分配。
- 要点:在大多数计算环境中,磁盘空间不会是无限的。quota 子系统提供控制磁盘空间使用的机制。
- 列表:消耗的磁盘块数量。
- 列表:内节点数,这是在 UNIX 文件系统中包含文件信息的数据结构。由于 inode 存储与文件相关的信息,因此这允许控制可创建的文件数。
23.2. xfs_quota 工具
- 要点:您可以使用 xfs_quota 工具来管理 XFS 文件系统上的配额。另外,您可以使用关闭了限制强制的 XFS 文件系统作为有效的磁盘用量记帐系统。
- 要点:XFS 配额系统在许多方面与其他文件系统不同。最重要的是,XFS 将配额信息视为文件系统元数据,并使用日志记录来提供更高级别的一致性保证。
23.3. XFS 中的文件系统配额管理
- 要点:XFS 配额子系统管理对磁盘空间(块)和文件(inode)使用情况的限制。XFS 配额控制或报告在用户、组群、目录或项目级别使用这些项目的使用情况。组和项目配额只适用于旧的非默认 XFS 磁盘格式。
- 要点:在按目录或按项目管理时,XFS 管理与特定项目相关联的目录层次结构的磁盘使用情况。
23.4. 为 XFS 启用磁盘配额
- 要点:在 XFS 文件系统上为用户、组和项目启用磁盘配额。启用配额后,xfs_quota 工具可用来设置限制并报告磁盘使用情况。
- 要点:流程
- 列表:为用户启用配额: # mount -o uquota /dev/xvdb1 /xfs 使用 uqnoenforce 替换 uquota ,以允许在不强制实施任何限制的情况下报告使用情况。
- 列表:为组群启用配额: # mount -o gquota /dev/xvdb1 /xfs 使用 gqnoenforce 替换 gquota,以允许在不强制实施任何限制的情况下报告使用情况。
- 列表:为项目启用配额: # mount -o pquota /dev/xvdb1 /xfs 将 pquota 替换为 pqnoenforce,以允许在不强制实施任何限制的情况下报告使用情况。
- 列表:或者,也可以在 /etc/fstab 文件中包含配额挂载选项。以下示例显示了 /etc/fstab 文件中用来分别在 XFS 文件系统上为用户、组和项目启用配额的条目。这些示例还使用读写权限挂载文件系统: # vim /etc/fstab /dev/xvdb1 /xfs xfs rw,quota 0 0 /dev/xvdb1 /xfs xfs rw,gquota 0 0 /dev/xvdb1 /xfs xfs rw,prjquota 0 0 如需更多信息,请参阅您系统上的 xfs (5) 和 xfs_quota (8) 手册页。
- 命令/配置摘录:
# mount -o uquota /dev/xvdb1 /xfs
# mount -o gquota /dev/xvdb1 /xfs23.5. 报告 XFS 使用量
- 要点:使用 xfs_quota 工具设置限制并报告磁盘使用情况。默认情况下,xfs_quota 以交互方式运行,并处于基本模式。基本模式子命令报告使用情况,并且可供所有用户使用。
- 要点:先决条件
- 列表:为 XFS 文件系统启用配额。请参阅为 XFS 启用磁盘配额。
- 列表:启动 xfs_quota shell: # xfs_quota
- 列表:显示给定用户的使用情况和限制: xfs_quota> quota username
- 列表:显示块和内节点的空闲和已使用的数量: xfs_quota> df
- 列表:运行 help 命令来显示 xfs_quota 可使用的基本命令。 xfs_quota> help
- 列表:指定 q 来退出 xfs_quota。 xfs_quota> q 如需更多信息,请参阅您系统上的 xfs_quota (8) 手册页。
- 命令/配置摘录:
# xfs_quota
xfs_quota> quota username23.6. 修改 XFS 配额限制
- 要点:使用 -x 选项启动 xfs_quota 工具,以启用专家模式,并运行管理员命令修改配额系统。此模式的子命令允许实际限制的配置,并且仅可提供给具有升级特权的用户使用。
- 要点:先决条件
- 列表:为 XFS 文件系统启用配额。请参阅为 XFS 启用磁盘配额。
- 列表:启动带有 -x 选项的 xfs_quota shell ,来启用专家模式: # xfs_quota -x /path
- 列表:报告具体文件系统的配额信息: xfs_quota> report /path 例如,若要显示 /home 的配额报告示例(在 /dev/blockdevice 上),请使用命令 report -h /home。此时会显示类似如下的输出: User quota on /home (/dev/blockdevice) Blocks User ID Used Soft Hard Warn/Grace ---------- --------------------------------- root 0 0 0 00 [------] testuser 103.4G 0 0 00 [------]
- 列表:修改配额限制: xfs_quota> limit isoft=500m ihard=700m user 例如,要为用户 john (其主目录为 /home/john )软和硬 inode 数限制分别设置为 500 和 700,请使用以下命令: # xfs_quota -x -c 'limit isoft=500 ihard=700 john' /home/ 在这种情况下,传递 mount_point,这是挂载的 xfs 文件系统。
- 列表:使用 xfs_quota -x 显示可用的专家命令: xfs_quota> help
- 列表:验证配额限制是否已修改: xfs_quota> report -i -u User quota on /home (/dev/loop0) Inodes User ID Used Soft Hard Warn/ Grace ---------- -------------------------------------------------- root 3 0 0 00 [------] testuser 2 500 700 00 [------] 如需更多信息,请参阅您系统上的 xfs_quota (8)手册页。
- 命令/配置摘录:
# xfs_quota -x /path
xfs_quota> report /path23.7. 为 XFS 设置项目限制
- 要点:为项目控制的目录配置限制。
- 要点:流程
- 列表:将项目控制的目录添加到 /etc/projects。例如,以下命令将唯一 ID 为 11 的 /var/log 路径添加到 /etc/projects :您的项目 ID 可以是任何映射到项目的数字值。 # echo 11:/var/log >> /etc/projects
- 列表:将项目名称添加到 /etc/projid,来将项目 ID 映射到项目名称。例如,以下命令将名为 logfiles 的项目与上一步中定义的项目 ID 11 关联: # echo logfiles:11 >> /etc/projid
- 列表:初始化项目目录。例如,以下命令初始化项目目录 /var: # xfs_quota -x -c 'project -s logfiles' /var
- 列表:为使用初始化目录的项目配置配额: # xfs_quota -x -c 'limit -p bhard=1g logfiles' /var 如需更多信息,请参阅您系统上的 xfs_quota (8)、projid (5) 和 projects (5) 手册页。
- 命令/配置摘录:
# echo 11:/var/log >> /etc/projects
# echo logfiles:11 >> /etc/projid第 24 章 对带有配额的 ext4 限制存储空间使用
- 要点:在分配前,您必须在系统中启用磁盘配额。您可以为每个用户、每个组或每个项目分配磁盘配额。但是,如果设置了软限制,您可以在一个可配置的期间内(称为宽限期)超过这些配额。
24.1. 安装配额工具
- 要点:您必须安装 quota RPM 软件包才能实现磁盘配额。
- 要点:流程
- 列表:安装 quota 软件包: # dnf install quota
- 命令/配置摘录:
# dnf install quota24.2. 对文件系统创建启用配额功能
- 要点:您可以在创建 ext4 文件系统时启用磁盘配额功能。这可让您为用户、组或项目强制实施存储限制。
- 要点:流程
- 列表:对文件系统创建启用配额: # mkfs.ext4 -O quota /dev/sda 注意 默认仅启用和初始化用户和组配额。
- 列表:更改创建文件系统时的默认设置: # mkfs.ext4 -O quota -E quotatype=usrquota:grpquota:prjquota /dev/sda
- 列表:挂载文件系统: # mount /dev/sda
- 命令/配置摘录:
# mkfs.ext4 -O quota /dev/sda
# mkfs.ext4 -O quota -E quotatype=usrquota:grpquota:prjquota /dev/sda- 注意:注意 默认仅启用和初始化用户和组配额。
24.3. 对现有文件系统启用配额功能
- 要点:使用 tune2fs 命令对现有文件系统启用配额功能。
- 要点:流程
- 列表:卸载文件系统: # umount /dev/sda
- 列表:在现有文件系统中启用配额: # tune2fs -O quota /dev/sda 注意 默认只初始化用户和组群配额。
- 列表:更改默认值: # tune2fs -Q usrquota,grpquota,prjquota /dev/sda
- 列表:挂载文件系统: # mount /dev/sda
- 命令/配置摘录:
# umount /dev/sda
# tune2fs -O quota /dev/sda- 注意:注意 默认只初始化用户和组群配额。
24.4. 启用配额强制执行
- 要点:在不使用任何额外选项挂载文件系统后,默认启用配额记帐,但不启用配额强制执行。
- 要点:先决条件
- 列表:启用配额功能,并初始化默认配额。
- 列表:通过 quotaon 为用户配额启用配额强制执行: # mount /dev/sda /mnt # quotaon /mnt 注意 可以使用 usrquota、grpquota 或 prjquota 挂载选项在挂载时启用配额强制。 # mount -o usrquota,grpquota,prjquota /dev/sda /mnt
- 列表:在所有文件系统中启用用户、组群和项目配额: # quotaon -vaugP 如果未指定 -u、-g 或 -P 选项,则仅启用用户配额。 如果只指定 -g 选项,则只启用组配额。 如果只指定 -P 选项,则只启用项目配额。
- 列表:如果未指定 -u、-g 或 -P 选项,则仅启用用户配额。
- 列表:如果只指定 -g 选项,则只启用组配额。
- 列表:如果只指定 -P 选项,则只启用项目配额。
- 命令/配置摘录:
# mount /dev/sda /mnt
# quotaon /mnt- 注意:注意 可以使用 usrquota、grpquota 或 prjquota 挂载选项在挂载时启用配额强制。 # mount -o usrquota,grpquota,prjquota /dev/sda /mnt
24.5. 为每个用户分配配额
- 要点:磁盘配额通过 edquota 命令分配给用户。
- 要点:先决条件
- 列表:用户必须在设置用户配额前存在。
- 列表:为用户分配配额: # edquota username 使用您要为其分配配额的用户替换 username。 例如,如果您为 /dev/sda 分区启用配额,并运行命令 edquota testuser,则默认编辑器显示以下内容: Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/sda 44043 0 0 37418 0 0
- 列表:更改所需的限制。 如果值为 0,则代表没有设定限制。在文本编辑器中更改它们。 例如,下面显示了 testuser 的软和硬限制,它们分别被设置为 50000 和 55000。 Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/sda 44043 50000 55000 37418 0 0 第一列是启用了配额的文件系统的名称。 第二列显示目前该用户使用的块数。 下面的两列是为该用户在文件系统中设定软限制和硬限制。 inodes 列显示用户当前使用的 inodes 数。 最后两列是为该用户在文件系统中设定…
- 列表:第一列是启用了配额的文件系统的名称。
- 列表:第二列显示目前该用户使用的块数。
- 列表:下面的两列是为该用户在文件系统中设定软限制和硬限制。
- 命令/配置摘录:
# edquota username
Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/sda 44043 0 0 37418 0 0- 注意:注意 edquota 使用由 EDITOR 环境变量定义的文本编辑器。要更改编辑器,请将 ~/.bash_profile 文件中的 EDITOR 环境变量设置为所需编辑器的完整路径。
24.6. 为每个组群分配配额
- 要点:您可以为每个组分配磁盘配额,以限制存储空间和特定组可用的内节点数量。
- 要点:先决条件
- 列表:组群在设定组群配额前必须已经存在。
- 列表:设置组群配额: # edquota -g groupname 例如,要为 devel 组设置组配额: # edquota -g devel 这个命令在文本编辑器中显示该组群的现有配额: Disk quotas for group devel (gid 505): Filesystem blocks soft hard inodes soft hard /dev/sda 440400 0 0 37418 0 0
- 列表:修改限制并保存文件。
- 列表:验证是否设定了组群配额: # quota -vg groupname
- 命令/配置摘录:
# edquota -g groupname
# edquota -g devel24.7. 为每个项目分配配额
- 要点:您可以为每个项目分配磁盘配额,以控制特定项目目录在文件系统中消耗的存储空间。
- 要点:先决条件
- 列表:在您的文件系统中启用了项目配额。
- 列表:将项目控制的目录添加到 /etc/projects。例如,以下命令将唯一 ID 为 11 的 /var/log 路径添加到 /etc/projects :您的项目 ID 可以是任何映射到项目的数字值。 # echo 11:/var/log >> /etc/projects
- 列表:将项目名称添加到 /etc/projid,来将项目 ID 映射到项目名称。例如,以下命令将名为 Logs 的项目与上一步中定义的 ID 为 11 的项目相关联: # echo Logs:11 >> /etc/projid
- 列表:设置所需的限制: # edquota -P 11 注意 您可以通过其项目 ID(本例中为 11)或其名称(本例中为 Logs)来选择项目。
- 列表:使用 quotaon,启用配额强制执行: 请参阅 启用配额强制。
- 列表:验证是否设置了项目配额: # quota -vP 11 注意 您可以使用项目 ID 或项目名称验证。 如需更多信息,请参阅您系统上的 edquota (8)、projid (5) 和 projects (5) 手册页。
- 命令/配置摘录:
# echo 11:/var/log >> /etc/projects
# echo Logs:11 >> /etc/projid- 注意:注意 您可以通过其项目 ID(本例中为 11)或其名称(本例中为 Logs)来选择项目。
- 注意:注意 您可以使用项目 ID 或项目名称验证。
24.8. 为软限制设置宽限期
- 要点:如果给定配额有软限制,您可以编辑宽限期。宽限期是可以超过软限制的时间。
- 要点:您可以为用户、组或项目设置宽限期。
- 列表:编辑宽限期: # edquota -t 重要 其他 edquota 命令针对特定用户、组或项目的配额进行操作。但是,-t 选项对启用了配额的每个文件系统执行操作。
- 命令/配置摘录:
# edquota -t- 注意:重要 其他 edquota 命令针对特定用户、组或项目的配额进行操作。但是,-t 选项对启用了配额的每个文件系统执行操作。
24.9. 关闭文件系统配额
- 要点:使用 quotaoff 来在指定的文件系统上关闭磁盘配额强制执行。运行此命令后,配额核算将保持启用。
- 要点:流程
- 列表:关闭所有用户和组群配额: # quotaoff -vaugP 如果未指定 -u、-g 或 -P 选项,则仅禁用用户配额。 如果只指定 -g 选项,则只禁用组配额。 如果只指定 -P 选项,则只禁用项目配额。 -v 开关会在命令执行时显示详细状态信息。 如需更多信息,请参阅您系统上的 quotaoff (8) 手册页。
- 列表:如果未指定 -u、-g 或 -P 选项,则仅禁用用户配额。
- 列表:如果只指定 -g 选项,则只禁用组配额。
- 列表:如果只指定 -P 选项,则只禁用项目配额。
- 列表:-v 开关会在命令执行时显示详细状态信息。 如需更多信息,请参阅您系统上的 quotaoff (8) 手册页。
- 命令/配置摘录:
# quotaoff -vaugP24.10. 报告磁盘配额
- 要点:使用 repquota 工具创建磁盘配额报告。
- 要点:流程
- 列表:运行 repquota 命令: # repquota 例如,命令 repquota /dev/sda 产生此输出: *** Report for user quotas on device /dev/sda Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 36 0 0 4 0 0 k…
- 列表:查看所有启用了配额的文件系统的磁盘用量报告: # repquota -augP 每个用户后显示的 -- 符号确定是否超过了块或 inode 限制。如果超过了任何一个软限制,则 + 字符会出现在相应的 - 字符的位置。第一个 - 字符表示块限制,第二个表示 inode 限制。 grace 列通常为空。如果超过了软限制,则该列包含的时间规格等同于宽限期中剩余的时间量。如果宽限期过期了,则 none 会出现在其位置上。 如需更多信息,请参阅 repquota (8) 手册页。
- 命令/配置摘录:
# repquota
*** Report for user quotas on device /dev/sda Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 36 0 0 4 0 0 kristin -- 540 0 0 125 0 0 testuser -- 440400 500000 550000 37418 0 0第 25 章 丢弃未使用块
- 要点:discard 操作通过通知存储设备不再使用哪个块来提高存储性能和生命周期。它允许 SSD 优化资源水平,并启用精简配置存储来回收空间。
- 要点:先决条件
- 列表:基本文件系统的块设备必须支持物理的丢弃(discard)操作。 如果 /sys/block/<device>/queue/discard_max_bytes 文件中的值不为零,则支持物理丢弃操作。
25.1. 块丢弃操作的类型
- 要点:可以使用批处理、在线或定期方法执行块丢弃操作,每个操作都有特定的用例和性能建议。
- 要点:以下列表描述了各种丢弃操作:
- 列表:系统负载不允许使用批量丢弃,或者
- 列表:为了保持性能,需要在线丢弃操作。
25.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 --all25.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-point25.4. 启用定期块丢弃
- 要点:您可以启用 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.第 26 章 影响 I/O 和文件系统性能的因素
- 要点:存储和文件系统性能的适当设置高度依赖于存储目的。I/O 和文件系统性能可能会受到各种因素的影响。
- 要点:以下是可能会影响 I/O 和文件系统性能的因素列表:
- 列表:数据写入或读取特征
- 列表:顺序或随机
- 列表:buffered 或 Direct IO
- 列表:数据与底层 geometry 保持一致
- 列表:块大小
- 列表:文件系统大小
26.1. 监控和诊断 I/O 和文件系统问题的工具
- 要点:使用跟踪性能指标、分析设备负载、延迟和追踪操作的工具,高效地监控和诊断 I/O 和文件系统问题。这些工具有助于解决 Red Hat Enterprise Linux 10 环境中的瓶颈并优化系统性能。
- 要点:以下工具包括在 Red Hat Enterprise Linux 10 中用于监控系统性能并诊断与 I/O 和文件系统相关的性能问题:
- 列表:vmstat 工具报告整个系统的进程、内存、分页、块 I/O、中断和 CPU 活动。它可帮助管理员确定 I/O 子系统是否负责任何性能问题。如果 vmstat 分析显示 I/O 子系统导致了性能降低,管理员可以使用 iostat 来识别负责的 I/O 设备。
- 列表:iostat 报告您系统中的 I/O 设备负载。它由 sysstat 软件包提供。
- 列表:blktrace 提供有关 I/O 子系统花费时间的详细信息。companion 实用程序 blkparse 读取来自 blktrace 的原始输出,并生成记录的输入和输出操作的人类可读摘要。
- 列表:btt 分析 blktrace 输出并显示 I/O 堆栈各个区域所花费的时间。这样可以更轻松地发现 I/O 子系统中的瓶颈。该实用程序作为 blktrace 软件包的一部分提供。由 blktrace 机制跟踪并由 btt 分析的一些重要事件有: I/O 事件队列 (Q) I/O 的发送至驱动程序事件 (D) 完成 I/O 事件 (C)
- 列表:I/O 事件队列 (Q)
- 列表:I/O 的发送至驱动程序事件 (D)
26.2. 用于格式化文件系统的可用调整选项
- 要点:在格式化设备后,无法更改某些文件系统配置决策。这包括大小、块大小、geometry 和外部日志。
- 要点:以下是在格式化存储设备前可用的选项详情:
- 注意:注意 最好不使用外部日志选项。
- 注意:警告 确保外部日志可靠。丢失外部日志设备会导致文件系统崩溃。外部日志必须在格式化时创建,日志设备在挂载时指定。
26.3. 可用于挂载文件系统的选项
- 要点:您可以探索挂载文件系统的关键调整选项,包括 atime、noatime 和 read-ahead 设置,以选择平衡不同工作负载的性能和功能的挂载选项。
- 要点:以下是大多数文件系统可用的选项,并可以指定为挂载该设备:
- 注意:注意 使用 noatime mount 选项禁用 atime 更新可能会破坏依赖于它们的应用程序,例如备份程序。
26.4. 丢弃未使用的块
- 要点:定期丢弃文件系统没有使用的块是固态磁盘和精简置备存储的良好做法。
- 要点:其他资源
- 列表:块丢弃操作的类型
26.5. 固态磁盘调优注意事项
- 要点:固态磁盘 (SSD) 使用 NAND 闪存芯片而不是轮转磁盘来存储持久数据。SSD 为它们的完整逻辑块范围提供数据的持续访问时间。它没有发生可测量的查找成本,比如它们的轮转对应部分。
- 要点:它们每 GB 存储空间的成本要高,存储密度较低。但是,它们比硬盘硬盘(HDD)降低延迟和更高的吞吐量。
- 列表:块丢弃操作的类型
26.6. 通用块设备性能优化参数
- 要点:此处列出的通用调优参数可在 /sys/block/sdX/queue/ 目录中找到。
- 要点:以下列表的调优参数与 I/O 调度程序调整不同,适用于所有 I/O 调度程序:
第 27 章 配置 Stratis 文件系统
- 要点:Stratis 是 Red Hat Enterprise Linux 的一种本地存储管理解决方案。它注重简单性、易用性,并可让您访问高级存储功能。
- 要点:Stratis 作为服务运行,以管理物理存储设备池,简化本地存储管理,易于使用。它可帮助您配置和管理复杂存储配置。
- 列表:存储的初始配置
- 列表:稍后进行修改
- 列表:使用高级存储功能
- 列表:文件系统快照
- 列表:精简置备
- 列表:缓存
27.1. Stratis 文件系统的组件
- 要点:Stratis 包括三个主要组件,它们协同工作以提供高级存储管理。这些组件是块设备、存储池和文件系统。它们提供精简配置、快照和自动空间管理。
- 要点:对外来说,Stratis 在命令行上并通过 API 呈现以下文件系统组件:
- 注意:注意 Stratis 卷在其它文档中被称为 "Stratis filesystem"。这是为了保持与命令行界面保持一致。
- 注意:重要 Stratis 跟踪它所创建的文件系统的信息。XFS 不知道此信息。使用 XFS 所做的更改不会自动更新 Stratis。
27.2. 与 Stratis 兼容的块设备
- 要点:Stratis 支持各种块设备,包括物理驱动器、逻辑卷和网络存储。您可以从不同的存储类型构建 Stratis 池,同时保持精简配置和快照等高级功能。
- 要点:可与 Stratis 一起使用的存储设备。
- 列表:Linux Unified Key Setup (LUKS)
- 列表:逻辑卷管理器(LVM)逻辑卷
- 列表:多个设备(MD)独立磁盘的冗余阵列(RAID)
- 列表:设备映射器(DM)多路径
- 列表:Internet Small Computer System Interface (iSCSI)
- 列表:硬盘(HDD)和 Solid-State 磁盘(SSD)
27.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 stratisd27.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 池,之后不行。
27.5. 使用 Web 控制台创建未加密的 Stratis 池
- 要点:您可以使用 Web 控制台从一个或多个块设备创建一个未加密的 Stratis 池。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体步骤请参阅安装并启用 Web 控制台。
- 列表:Stratis 已安装,stratisd 服务正在运行。如需更多信息,请参阅 安装 Stratis。
- 列表:您在其上创建 Stratis 池的块设备没有被使用、卸载,且至少有 1 GB 空间。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage。
- 列表:在 Storage 表中,点菜单按钮并选择 Create Stratis pool。
- 注意:注意 您不能在其创建后加密一个未加密的 Stratis 池。
27.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-description27.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 指定要使用 Clevis 机…
- 列表:确认创建了新的 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 机制创建加密的池。
27.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 加密。
27.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 服务正在运行。
27.10. 使用 Web 控制台重命名 Stratis 池
- 要点:您可以使用 Web 控制台重命名现有的 Stratis 池。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体步骤请参阅安装并启用 Web 控制台。
- 列表:Stratis 已安装,stratisd 服务正在运行。 默认情况下,web 控制台会检测并安装 Stratis。但是,要手动安装 Stratis,请参阅 安装 Stratis。
- 列表:一个 Stratis 池已创建。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage。
- 列表:在 Storage 表中,点您要重命名的 Stratis 池。
27.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>- 注意:注意 如果文件系统耗尽空间,用户可能会丢失数据。对于数据丢失的风险超过过度置备的好处的应用程序,可以禁用此功能。
27.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 加密机制不会删除主内核密钥环加密。
27.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-pool27.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 list27.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-pool27.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 启动池。
27.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 开始提供这个选项。
27.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- 注意:注意 在停止池之前,卸载属于池的所有文件系统。如果仍然挂载了任何文件系统,则池不会停止。
27.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 池会自动解锁。如果没有解锁,用户可能需要在控制台中输入密码来解锁文件系统的池。
27.20. 使用 Web 控制台创建和配置 Stratis 文件系统
- 要点:您可以使用 Web 控制台在现有 Stratis 池中创建一个文件系统。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体步骤请参阅安装并启用 Web 控制台。
- 列表:stratisd 服务在运行。
- 列表:一个 Stratis 池已创建。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage。
- 列表:点击您要在其上创建文件系统的 Stratis 池。
第 28 章 使用额外的块设备扩展 Stratis 池
- 要点:您可以在 Stratis 池中添加附加块设备以便为 Stratis 文件系统提供更多存储容量。您可以手动或使用 Web 控制台进行此操作。
28.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-n28.2. 使用 Web 控制台向 Stratis 池中添加块设备
- 要点:您可以使用 Web 控制台向现有 Stratis 池中添加块设备。您还可以将缓存添加为块设备。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体步骤请参阅安装并启用 Web 控制台。
- 列表:stratisd 服务在运行。
- 列表:一个 Stratis 池已创建。
- 列表:您在其上创建 Stratis 池的块设备没有被使用、卸载,且至少有 1 GB 空间。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage。
第 29 章 监控 Stratis 文件系统
- 要点:作为 Stratis 用户,您可以查看系统上关于 Stratis 文件系统的信息,以监控其状态和可用空间。
29.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-9bc…
- 命令/配置摘录:
# 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 文件系统的应用程序中数据丢失的风险。
29.2. 使用 Web 控制台查看 Stratis 池
- 要点:您可以使用 Web 控制台查看现有的 Stratis 池,以及其包含的文件系统。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体步骤请参阅安装并启用 Web 控制台。
- 列表:stratisd 服务在运行。
- 列表:您有一个现有的 Stratis 池。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage。
- 列表:在 Storage 表中,点您要查看的 Stratis 池。 Stratis 池页面显示有关池以及您在池中创建的文件系统的所有信息。
第 30 章 在 Stratis 文件系统中使用快照
- 要点:您可以使用 Stratis 文件系统的快照任意时间捕获文件系统状态,并在以后恢复它。
30.1. Stratis 快照的特性
- 要点:Stratis 快照是作为其他 Stratis 文件系统的时点副本创建的常规文件系统。它们独立于源文件系统运行,可用于备份、测试或数据恢复目的。
- 要点:Stratis 中的当前快照实现的特征如下:
- 列表:文件系统快照是另一个文件系统。
- 列表:快照及其原始卷在生命周期中不会被链接。快照的文件系统可以比它从中创建的文件系统更长。
- 列表:文件系统不一定被挂载来生成快照。
- 列表:每个快照使用大约一半的实际后备存储,这是 XFS 日志所需要的。
30.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-snapshot30.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-point30.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 …
- 列表:列出属于池的文件系统: # stratis filesystem list my-pool
- 命令/配置摘录:
# stratis filesystem snapshot my-pool my-fs my-fs-backup
# stratis filesystem schedule-revert my-pool my-fs-snapshot- 注意:注意 无法将多个恢复操作调度到同一原始文件系统。另外,如果您尝试销毁原始文件系统,或者调度恢复的快照,则操作会失败。
30.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第 31 章 删除 Stratis 文件系统
- 要点:您可以删除现有的 Stratis 文件系统或池。删除 Stratis 文件系统或池后,无法恢复它。
31.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-fs31.2. 使用 Web 控制台从 Stratis 池中删除文件系统
- 要点:您可以使用 Web 控制台从现有 Stratis 池中删除一个文件系统。删除 Stratis 池文件系统会删除其包含的所有数据。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体步骤请参阅安装并启用 Web 控制台。
- 列表:Stratis 已安装,stratisd 服务正在运行。 默认情况下,web 控制台会检测并安装 Stratis。但是,要手动安装 Stratis,请参阅 安装 Stratis。
- 列表:您有一个现有的 Stratis 池,并在 Stratis 池上创建了一个文件系统。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage。
- 列表:在 Storage 表中,点击您要从中删除文件系统的 Stratis 池。
31.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-n31.4. 使用 Web 控制台删除 Stratis 池
- 要点:您可以使用 Web 控制台删除现有的 Stratis 池。删除 Stratis 池会删除其包含的所有数据。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体步骤请参阅安装并启用 Web 控制台。
- 列表:stratisd 服务在运行。
- 列表:您有一个现有的 Stratis 池。
- 列表:登录到 RHEL 10 web 控制台。
- 列表:点 Storage。
- 列表:在 Storage 表中,点您要删除的 Stratis 池的菜单按钮 ⋮ 。
第 32 章 ext4 文件系统入门
- 要点:作为系统管理员,您可以创建、挂载、调整大小、备份和恢复 ext4 文件系统。ext4 文件系统是 ext3 的可扩展扩展。在 Red Hat Enterprise Linux 10 中,它支持最多 16 TB 和文件系统的独立文件,最多 50 TB。
32.1. ext4 文件系统的特性
- 要点:探索关键 ext4 文件系统功能,包括高效的大型文件处理、改进的文件系统检查时间、高级分配技术、元数据完整性、扩展属性、配额日志和次秒时间戳。
- 要点:以下是 ext4 文件系统的功能详情:
- 列表:使用数据块:ext4 文件系统使用数据块,这可在使用大型文件时提高性能,并减少大型文件的元数据开销。
- 列表:Ext4 标签未分配的块组和 inode 表部分,以便在文件系统检查过程中跳过它们。它可快速进行文件系统检查,随着文件系统大小的增加,该检查将变得更加有益。
- 列表:元数据校验和 :默认情况下,这个功能在 Red Hat Enterprise Linux 10 中被启用。
- 列表:ext4 文件系统的分配特性: 持久性预分配 延迟分配 多块分配 条状化分配
- 列表:持久性预分配
- 列表:延迟分配
- 注意:注意 ext4 中唯一支持的日志模式是 data=ordered (默认)。
32.2. 创建 ext4 文件系统
- 要点:作为系统管理员,您可以使用 mkfs.ext4 命令在块设备上创建 ext4 文件系统。
- 要点:先决条件
- 列表:您磁盘中的一个分区。有关创建主引导记录(MBR)或 GUID 分区表(GPT)分区的详情,请参考使用 parted 在磁盘中创建分区表。
- 列表:或者,使用逻辑卷管理器(LVM)或多设备(MD)卷。
- 列表:要创建 ext4 文件系统: 对于常规分区设备、LVM 卷、MD 卷或者类似的设备,使用以下命令: # mkfs.ext4 /dev/block_device 使用到块设备的路径替换 /dev/block_device。 例如:/dev/sdb1、/dev/disk/by-uuid/05e99ec8-def1-4a5e-8a9d-5945339ceb2a 或 /dev/my-volgroup/my-lv。一般说来,默认选项适用于大多数使用场景。 对于条带块设备(如 RAID5 阵列),可以在创建文件系统时指定条带几何结构。使用正确的条带几何结构可提高 ext4 文件系统的性能。例如,要在 4k-块文件系统上创建跨距为 64k(即 …
- 列表:对于常规分区设备、LVM 卷、MD 卷或者类似的设备,使用以下命令: # mkfs.ext4 /dev/block_device 使用到块设备的路径替换 /dev/block_device。 例如:/dev/sdb1、/dev/disk/by-uuid/05e99ec8-def1-4a5e-8a9d-5945339ceb2a 或 /dev/my-volgroup/my-lv。一般说来,默认选项适用于大多数使用场景。
- 列表:对于条带块设备(如 RAID5 阵列),可以在创建文件系统时指定条带几何结构。使用正确的条带几何结构可提高 ext4 文件系统的性能。例如,要在 4k-块文件系统上创建跨距为 64k(即 16 x 4096)的文件系统,请使用以下命令: # mkfs.ext4 -E stride=16,stripe-width=64 /dev/block_device 在给定示例中: stride=value:指定 RAID 块大小 stripe-width=value:指定 RAID 设备中数据磁盘的数量,或者条带中的条带单元的数量。
- 列表:stride=value:指定 RAID 块大小
- 命令/配置摘录:
# mkfs.ext4 /dev/block_device
# mkfs.ext4 -E stride=16,stripe-width=64 /dev/block_device- 注意:注意 在创建文件系统时指定 UUID: # mkfs.ext4 -U UUID /dev/block_device 使用您要设置的 UUID 替换 UUID:例如,7cd65de3-e0be-41d9-b66d-96d749c02da7。 使用 ext4 文件系统的路径替换 /dev/block_device,来将 UUID 添加给它:例如 /dev/sda8。 在创建文件系统时指定标签: # mkfs.ext4 -L label-name /dev/block_device
32.3. 挂载 ext4 文件系统
- 要点:作为系统管理员,您可以使用 mount 工具挂载 ext4 文件系统。
- 要点:先决条件
- 列表:ext4 文件系统。有关创建 ext4 文件系统的详情,请参考 创建 ext4 文件系统。
- 列表:要创建一个挂载点来挂载文件系统: # mkdir /mount/point 使用创建分区挂载点的目录名替换 /mount/point。
- 列表:挂载 ext4 文件系统: 要挂载一个没有额外选项的 ext4 文件系统: # mount /dev/block_device /mount/point 要永久挂载文件系统,请参阅 永久挂载文件系统。
- 列表:要挂载一个没有额外选项的 ext4 文件系统: # mount /dev/block_device /mount/point
- 列表:要永久挂载文件系统,请参阅 永久挂载文件系统。
- 列表:查看挂载的文件系统: # df -h
- 命令/配置摘录:
# mkdir /mount/point
# mount /dev/block_device /mount/point32.4. 重新定义 ext4 文件系统大小
- 要点:作为系统管理员,您可以使用 resize2fs 工具调整 ext4 文件系统的大小。resize2fs 工具以文件系统块大小为单位读取大小,除非使用后缀表示特定的单位。
- 要点:以下后缀代表特定的单元:
- 列表:s(扇区)- 512 字节扇区
- 列表:K(KB)- 1,024 字节
- 列表:M(兆字节)- 1,048,576 字节
- 列表:G(GB)- 1,073,741,824 字节
- 列表:T(TB)- 1,099,511,627,776 字节
- 列表:ext4 文件系统。有关创建 ext4 文件系统的详情,请参考 创建 ext4 文件系统。
- 命令/配置摘录:
# umount /dev/block_device
# e2fsck -f /dev/block_device- 注意:注意 扩展时 size 参数是可选的(通常是多余的)。resize2fs 会自动扩展来填充容器的可用空间,通常是逻辑卷或分区。
32.5. 和 ext4 和 XFS 一起使用的工具比较
- 要点:不同的工具和命令可完成 ext4 和 XFS 上的常见文件系统任务,包括创建、检查、调整大小和备份操作。
- 要点:这部分比较用于完成 ext4 和 XFS 文件系统中常用任务的工具。
- 注意:注意 如果您需要一个通过网络的备份的完整客户端-服务器解决方案,您可以使用 RHEL 9 中提供的 bacula 备份工具。有关 Bacula 的更多信息,请参阅 Bacula 备份解决方案。
- 表格样本(共 9 行):
- 任务 | ext4 | XFS
- 创建文件系统 | mkfs.ext4 | mkfs.xfs
- 文件系统检查 | e2fsck | xfs_repair
- 重新定义文件系统大小 | resize2fs | xfs_growfs
完整目录
- 创建、修改和管理文件系统
- 第 1 章 可用文件系统概述
- 1.1. 文件系统类型
- 1.2. 本地文件系统
- 1.3. XFS 文件系统
- 1.4. ext4 文件系统
- 1.5. XFS 和 ext4 的比较
- 1.6. 选择本地文件系统
- 1.7. 网络文件系统
- 1.8. 共享存储文件系统
- 1.9. 在网络和共享存储文件系统间进行选择
- 1.10. 卷管理文件系统
- 第 2 章 使用 RHEL 系统角色管理本地存储
- 2.1. 使用 storage RHEL 系统角色在块设备上创建 XFS 文件系统
- 2.2. 使用 storage RHEL 系统角色永久挂载文件系统
- 2.3. 使用 storage RHEL 系统角色创建或者调整逻辑卷大小
- 2.4. 使用 storage RHEL 系统角色启用在线块丢弃
- 2.5. 使用 storage RHEL 系统角色创建并挂载文件系统
- 2.6. 使用 storage RHEL 系统角色配置 RAID 卷
- 2.7. 使用 storage RHEL 系统角色在 RAID 上配置 LVM 卷组
- 2.8. 使用 storage RHEL 系统角色为 RAID LVM 卷配置条带大小
- 2.9. 使用 storage RHEL 系统角色配置 LVM-VDO 卷
- 2.10. 使用 storage RHEL 系统角色创建 LUKS2 加密的卷
- 2.11. 使用 storage RHEL 系统角色创建共享 LVM 设备
- 2.12. 使用 storage RHEL 系统角色调整物理卷大小
- 2.13. 其他资源
- 第 3 章 使用 Web 控制台管理分区
- 3.1. 在 web 控制台中显示使用文件系统格式化的分区
- 3.2. 在 web 控制台中创建分区
- 3.3. 在 web 控制台中删除分区
- 第 4 章 挂载 NFS 共享
- 4.1. NFS 客户端上所需的服务
- 4.2. 准备一个在防火墙后面运行的 NFSv3 客户端
- 4.3. 准备一个 NFSv4 客户端来在防火墙后面运行
- 4.4. 手动挂载 NFS 共享
- 4.5. 系统引导时自动挂载 NFS 共享
- 4.6. 在 web 控制台中连接 NFS 挂载
- 4.7. 在 web 控制台中自定义 NFS 挂载选项
- 4.8. 在 IdM 域中设置带有 Kerberos 的 NFS 客户端
- 4.9. 配置 GNOME 以将用户设置存储在 NFS 共享上托管的主目录中
- 4.10. 配置一个带有 TLS 支持的 NFS 服务器
- 4.11. 配置带有 TLS 支持的 NFS 客户端
- 4.12. 配置带有双向 TLS 支持的 NFS 客户端
- 4.13. 常用的 NFS 挂载选项
- 4.14. 启用 NFS 内容的客户端缓存
- 4.14.1. NFS 缓存如何工作
- 4.14.2. 安装和配置 cachefilesd 服务
- 4.14.3. 共享 NFS 缓存
- 4.14.4. NFS 缓存限制
- 4.14.5. 缓存剔除是如何工作的
- 第 5 章 挂载 SMB 共享
- 5.1. 支持的 SMB 协议版本
- 5.2. UNIX 扩展支持
- 5.3. 手动挂载 SMB 共享
- 5.4. 系统启动时自动挂载 SMB 共享
- 5.5. 创建一个凭据文件来向 SMB 共享进行身份验证
- 5.6. 执行多用户 SMB 挂载
- 5.6.1. 使用 multiuser 选项挂载共享
- 5.6.2. 验证是否使用 multiuser 选项挂载 SMB 共享
- 5.6.3. 以用户身份访问共享
- 5.7. 常用的 SMB 挂载选项
- 第 6 章 持久性命名属性概述
- 6.1. 非持久性命名属性的缺陷
- 6.2. 文件系统和设备识别符
- 6.3. 使用 /dev/disk/ 中的 udev 机制管理的设备名称
- 6.3.1. 文件系统识别符
- 6.3.2. 设备识别符
- 6.4. 使用 DM 多路径的通用识别符
- 6.5. udev 设备命名规则的限制
- 6.6. 列出持久性命名属性
- 6.7. 修改持久性命名属性
- 第 7 章 使用 parted 的分区操作
- 7.1. 查看使用 parted 的分区表
- 7.2. 使用 parted 在磁盘中创建分区表
- 7.3. 使用 parted 创建分区
- 7.4. 使用 parted 删除分区
- 7.5. 使用 parted 重新定义分区大小
- 第 8 章 重新分区磁盘策略
- 8.1. 使用未分区的空闲空间
- 8.2. 使用未使用分区中的空间
- 8.3. 使用活跃分区中的空闲空间
- 8.3.1. 破坏性重新分区
- 8.3.2. 非破坏性重新分区
- 第 9 章 XFS 入门
- 9.1. XFS 文件系统
- 9.2. 和 ext4 和 XFS 一起使用的工具比较
- 第 10 章 创建 XFS 文件系统
- 10.1. 使用 mkfs.xfs 创建 XFS 文件系统
- 第 11 章 备份 XFS 文件系统
- 11.1. XFS 备份特性
- 11.2. 使用 xfsdump 备份 XFS 文件系统
- 第 12 章 从备份中恢复 XFS 文件系统
- 12.1. 从备份中恢复 XFS 的特性
- 12.2. 使用 xfsrestore 从备份中恢复 XFS 文件系统
- 12.3. 从磁带恢复 XFS 备份时的说明性消息
- 第 13 章 增加 XFS 文件系统的大小
- 13.1. 使用 xfs_growfs 增加 XFS 文件系统的大小
- 第 14 章 配置 XFS 错误行为
- 14.1. XFS 中的可配置错误处理
- 14.2. 特定和未定义的 XFS 错误条件的配置文件
- 14.3. 为特定条件设置 XFS 行为
- 14.4. 为未定义条件设置 XFS 行为
- 14.5. 设置 XFS 卸载行为
- 第 15 章 使用 PCP 对 XFS 的性能分析
- 15.1. 手动安装 XFS PMDA
- 15.2. 使用 pminfo 检查 XFS 性能指标
- 15.3. 使用 pmstore 重置 XFS 性能指标
- 15.4. XFS 的 PCP 指标组
- 15.5. 每个设备 PCP 指标组用于 XFS
- 第 16 章 检查和修复文件系统
- 16.1. 需要文件系统检查的场景
- 16.2. 运行 fsck 的潜在副作用
- 16.3. XFS 中的错误处理机制
- 16.4. 使用 xfs_repair 检查 XFS 文件系统
- 16.5. 使用 xfs_repair 修复 XFS 文件系统
- 16.6. ext2、ext3 和 ext4 中的处理机制出错
- 16.7. 使用 e2fsck 检查 ext2、ext3 或者 ext4 文件系统
- 16.8. 使用 e2fsck 修复 ext2、ext3 或者 ext4 文件系统
- 第 17 章 挂载文件系统
- 17.1. Linux 挂载机制
- 17.2. 列出当前挂载的文件系统
- 17.3. 使用 mount 挂载文件系统
- 17.4. 移动挂载点
- 17.5. 使用 umount 卸载文件系统
- 17.6. 在 web 控制台中挂载和卸载文件系统
- 17.7. 常用挂载选项
- 第 18 章 在多个挂载点共享挂载
- 18.1. 共享挂载的类型
- 18.2. 创建私有挂载点副本
- 18.3. 创建共享挂载点副本
- 18.4. 创建从挂载点副本
- 18.5. 防止挂载点重复
- 第 19 章 永久挂载文件系统
- 19.1. /etc/fstab 文件
- 19.2. 在 /etc/fstab 中添加文件系统
- 第 20 章 根据需要挂载文件系统
- 20.1. autofs 服务
- 20.2. autofs 配置文件
- 20.3. 配置 autofs 挂载点
- 20.4. 将 autofs 配置为使用 ldap 存储和检索自动挂载映射
- 20.5. 使用 autofs 服务自动挂载 NFS 服务器用户主目录
- 20.6. 覆盖或添加 autofs 站点配置文件
- 20.7. 使用 systemd.automount ,通过 /etc/fstab 按需挂载文件系统
- 20.8. 使用 systemd.automount ,通过挂载单元根据需要挂载文件系统
- 第 21 章 使用 IdM 中的 SSSD 组件来缓存 autofs 映射
- 21.1. 配置 SSSD 来缓存 autofs 映射
- 第 22 章 为 root 文件系统设置只读权限
- 22.1. 始终保留写入权限的文件和目录
- 22.2. 将 root 文件系统配置为在引导时使用只读权限挂载
- 第 23 章 对带有配额的 XFS 限制存储空间的使用
- 23.1. 磁盘配额
- 23.2. xfs_quota 工具
- 23.3. XFS 中的文件系统配额管理
- 23.4. 为 XFS 启用磁盘配额
- 23.5. 报告 XFS 使用量
- 23.6. 修改 XFS 配额限制
- 23.7. 为 XFS 设置项目限制
- 第 24 章 对带有配额的 ext4 限制存储空间使用
- 24.1. 安装配额工具
- 24.2. 对文件系统创建启用配额功能
- 24.3. 对现有文件系统启用配额功能
- 24.4. 启用配额强制执行
- 24.5. 为每个用户分配配额
- 24.6. 为每个组群分配配额
- 24.7. 为每个项目分配配额
- 24.8. 为软限制设置宽限期
- 24.9. 关闭文件系统配额
- 24.10. 报告磁盘配额
- 第 25 章 丢弃未使用块
- 25.1. 块丢弃操作的类型
- 25.2. 执行批块丢弃
- 25.3. 启用在线块丢弃
- 25.4. 启用定期块丢弃
- 第 26 章 影响 I/O 和文件系统性能的因素
- 26.1. 监控和诊断 I/O 和文件系统问题的工具
- 26.2. 用于格式化文件系统的可用调整选项
- 26.3. 可用于挂载文件系统的选项
- 26.4. 丢弃未使用的块
- 26.5. 固态磁盘调优注意事项
- 26.6. 通用块设备性能优化参数
- 第 27 章 配置 Stratis 文件系统
- 27.1. Stratis 文件系统的组件
- 27.2. 与 Stratis 兼容的块设备
- 27.3. 安装 Stratis
- 27.4. 创建未加密的 Stratis 池
- 27.5. 使用 Web 控制台创建未加密的 Stratis 池
- 27.6. 使用内核密钥环中的密钥创建加密的 Stratis 池
- 27.7. 使用 Clevis 创建加密的 Stratis 池
- 27.8. 使用 storage RHEL 系统角色创建加密的 Stratis 池
- 27.9. 使用 Web 控制台创建加密的 Stratis 池
- 27.10. 使用 Web 控制台重命名 Stratis 池
- 27.11. 在 Stratis 文件系统中配置过度置备模式
- 27.12. 将 Stratis 池绑定到 NBDE
- 27.13. 将 Stratis 池绑定到 TPM
- 27.14. 使用内核密钥环解加密的 Stratis 池
- 27.15. 解除 Stratis 池与补充加密的绑定
- 27.16. 启动和停止 Stratis 池
- 27.17. 创建 Stratis 文件系统
- 27.18. 挂载 Stratis 文件系统
- 27.19. 在引导时配置挂载一个 Stratis 文件系统
- 27.20. 使用 Web 控制台创建和配置 Stratis 文件系统
- 第 28 章 使用额外的块设备扩展 Stratis 池
- 28.1. 在 Stratis 池中添加块设备
- 28.2. 使用 Web 控制台向 Stratis 池中添加块设备
- 第 29 章 监控 Stratis 文件系统
- 29.1. 显示关于 Stratis 文件系统的信息
- 29.2. 使用 Web 控制台查看 Stratis 池
- 第 30 章 在 Stratis 文件系统中使用快照
- 30.1. Stratis 快照的特性
- 30.2. 创建 Stratis 快照
- 30.3. 访问 Stratis 快照的内容
- 30.4. 将 Stratis 文件系统恢复到以前的快照
- 30.5. 删除 Stratis 快照
- 第 31 章 删除 Stratis 文件系统
- 31.1. 删除 Stratis 文件系统
- 31.2. 使用 Web 控制台从 Stratis 池中删除文件系统
- 31.3. 删除 Stratis 池
- 31.4. 使用 Web 控制台删除 Stratis 池
- 第 32 章 ext4 文件系统入门
- 32.1. ext4 文件系统的特性
- 32.2. 创建 ext4 文件系统
- 32.3. 挂载 ext4 文件系统
- 32.4. 重新定义 ext4 文件系统大小
- 32.5. 和 ext4 和 XFS 一起使用的工具比较
