管理文件系统


Red Hat Enterprise Linux 8

在 Red Hat Enterprise Linux 8 中创建、修改和管理文件系统

Red Hat Customer Content Services

摘要

Red Hat Enterprise Linux 支持各种文件系统。每种类型的文件系统解决不同的问题,它们的用法是特定于应用程序的。使用有关关键差异和注意事项的信息,来根据特定应用程序要求部署合适的文件系统。
支持的文件系统包括本地磁盘文件系统 XFS 和 ext4,以及网络和客户端-和-服务器文件系统 NFS 和 SMB。您可以使用文件系统执行多个操作,如创建、挂载、备份、恢复、检查和修复,以及使用配额限制存储空间。

对红帽文档提供反馈

我们感谢您对我们文档的反馈。让我们了解如何改进它。

通过 Jira 提交反馈(需要帐户)

  1. 登录到 Jira 网站。
  2. 单击顶部导航栏中的 Create
  3. Summary 字段中输入描述性标题。
  4. Description 字段中输入您对改进的建议。包括文档相关部分的链接。
  5. 点对话框底部的 Create

第 1 章 可用文件系统概述

由于大量的可用选项以及所涉及的权衡,因此选择适合您应用程序的文件系统是一个重要的决定。

以下章节描述了 Red Hat Enterprise Linux 8 默认包括的文件系统,以及对最合适您应用程序的文件系统的建议。

1.1. 文件系统类型

Red Hat Enterprise Linux 8 支持各种文件系统(FS)。不同类型的文件系统可以解决不同类型的问题,它们的使用会根据特定应用程序而有所不同。在最一般的级别上,可用的文件系统可以分为以下主要类型:

Expand
表 1.1. 文件系统类型及其用例
类型文件系统属性和使用案例

磁盘或本地 FS

XFS

XFS 是 RHEL 中的默认文件系统。红帽建议将 XFS 部署为本地文件系统,除非有特定原因部署为其它:例如,兼容性或涉及性能方面的情况。

ext4

ext4 在 Linux 中有相似性的好处,其从较旧的 ext2 和 ext3 文件系统演变而来。在很多情况下,它在性能上可以与 XFS 相媲美。对 ext4 文件系统和文件大小的支持限制比 XFS 上的要低。

网络或客户端-和-服务器 FS

NFS

使用 NFS 在同一个网络中的多个系统间共享文件。

SMB

使用 SMB 进行与微软 Windows 系统的文件共享。

共享存储或共享磁盘 FS

GFS2

GFS2 为计算集群成员提供共享写入访问。其重点在于稳定性和可靠性,获得与本地文件系统类似的体验。SAS Grid、Tibco MQ、IBM Websphere MQ 和 Red Hat Active MQ 已被成功部署在 GFS2 上。

卷管理 FS

Stratis(技术预览)

Stratis 是基于 XFS 和 LVM 的组合构建的卷管理器。Stratis 的目的是模拟卷管理文件系统(如 Btrfs 和 ZFS)所提供的功能。可以手动构建此堆栈,但 Stratis 可减少配置的复杂度、实施最佳实践并整合错误信息。

1.2. 本地文件系统

本地文件系统是在单一本地服务器中运行并直接附加到存储中的文件系统。

例如,本地文件系统是内部 SATA 或 SAS 磁盘的唯一选择,可在当您的服务器具有带有本地驱动器的内部硬件 RAID 控制器时使用。当 SAN 上导出的设备未共享时,本地文件系统也是 SAN 连接的存储上最常用的文件系统。

所有本地文件系统都与 POSIX 兼容,且与所有支持的 Red Hat Enterprise Linux 版本完全兼容。与 POSIX 兼容的文件系统为一组定义良好的系统调用提供支持,如 read()write()seek()

在考虑文件系统选择时,根据文件系统需要多大、它必须具有哪些唯一功能,以及如何在工作负载下执行文件系统。

可用的本地文件系统
  • XFS
  • ext4

1.3. XFS 文件系统

XFS 是一个高度可扩展、高性能、健壮且成熟的 64 位日志文件系统,其支持单个主机上非常大的文件和文件系统。它是 Red Hat Enterprise Linux 8 中的默认文件系统。XFS 最初于 1990 年代由 SGI 早期开发,并在非常大型的服务器和存储阵列中运行有很长的历史记录。

XFS 的功能包括:

可靠性
  • 元数据日志,其确保系统崩溃后文件系统的完整性,方法是保留系统重启和重新挂载文件系统时可以重新执行的文件系统操作的记录,
  • 广泛的运行时元数据一致性检查
  • 可扩展且快速修复工具
  • 配额日志。这可避免在崩溃后进行冗长的配额一致性检查。
可伸缩性和性能
  • 支持最多 1024 TiB 的文件系统大小
  • 支持大量并发操作的能力
  • B-tree 索引,用于空闲空间的可扩展性管理
  • 复杂的元数据读头算法
  • 优化流视频工作负载
分配方案
  • 基于扩展数据块的分配
  • 条带化分配策略
  • 延迟分配
  • 空间预分配
  • 动态分配的 inode
其他功能
  • 基于 Reflink 的文件副本
  • 严格集成备份和恢复工具
  • 在线清理
  • 在线文件系统增大
  • 全面的诊断功能
  • 扩展属性(xattr)。这允许系统能够按文件关联多个额外的名称/值对。
  • 项目或目录配额。这允许对目录树的配额限制。
  • 小于秒的时间戳

性能特性

XFS 在具有企业工作负载的大型系统上具有高性能。大型系统是一个有相对较多的 CPU 、多个 HBA 和连接外部磁盘阵列的系统。XFS 在具有多线程、并行 I/O 工作负载的较小系统上也表现良好。

对于单线程、元数据密集型工作负载,XFS 的性能相对较低:例如,在单个线程中创建或删除大量小文件的工作负载。

1.4. ext4 文件系统

ext4 文件系统是 ext 文件系统系列的第四代。它是 Red Hat Enterprise Linux 6 中的默认文件系统。

ext4 驱动程序可以对 ext2 和 ext3 文件系统进行读写,但 ext4 文件系统格式与 ext2 和 ext3 驱动程序不兼容。

ext4 添加了几个新的改进的功能,例如:

  • 支持的文件系统大小高达 50 TiB
  • 基于扩展的元数据
  • 延迟分配
  • 日志的 checksum
  • 大型存储支持

基于扩展数据块的元数据和延迟分配功能提供了一种更加紧凑和高效的方法来跟踪文件系统中的已用空间。这些功能提高了文件系统性能,并减少了元数据所占用的空间。延迟分配允许文件系统延迟选择新写入用户数据的永久位置,直到数据刷新到磁盘。这可实现更高的性能,因为它允许更大的、连续的分配,允许文件系统根据更佳的信息做出决策。

ext4 中使用 fsck 工具的文件系统修复时间比 在 ext2 和 ext3 中要快得多。一些文件系统修复的性能会增加最多 6 倍。

1.5. XFS 和 ext4 的比较

XFS 是 RHEL 中的默认文件系统。本节比较 XFS 和 ext4 的用法和功能。

元数据错误行为
在 ext4 中,当文件系统遇到元数据错误时您可以配置行为。默认的行为是继续操作。当 XFS 遇到不可恢复的元数据错误时,它会关闭文件系统,并返回 EFSCORRUPTED 错误。
配额

在 ext4 中,您可以在创建文件系统时启用配额,或稍后在现有文件系统上启用配额。然后您可以使用挂载选项配置配额强制执行。

XFS 配额不是一个可重新挂载的选项。您必须在初始挂载中激活配额。

在 XFS 文件系统上运行 quotacheck 命令没有效果。当您第一次打开配额记帐时,XFS 会自动检查配额。

文件系统重新定义大小
XFS 没有工具来缩小文件系统的大小。您只能增大 XFS 文件系统的大小。而 ext4 支持扩展和缩小文件系统大小。
内节点(inode)号

ext4 文件系统不支持超过 232 内节点。

XFS 支持动态内节点分配。XFS 文件系统上空间索引节点的大小计算为总文件系统空间的百分比。要防止系统耗尽 inode,管理员可以在文件系统创建后调整这个百分比,假设文件系统上剩余的可用空间。

某些应用程序无法正确处理 XFS 文件系统上大于232 的 inode 数。这些应用程序可能会导致 32 位 stat 调用失败,返回值为 EOVERFLOW 。在以下情况下,inode 数超过 232:

  • 文件系统大于 1 TiB,其 inode 为 256 字节。
  • 文件系统大于 2 TiB,其 inode 为 512 字节。

如果您的应用程序由于 inode 数太大而失败,请使用 -o inode32 选项挂载 XFS 文件系统,来强制inode 数低于 232。请注意,使用 inode32 不会影响已分配了 64 位数的 inode。

重要

除非特定环境需要,否则 请勿 使用 inode32 选项。inode32 选项可改变分配行为。因此,如果没有可用空间在较低磁盘块中分配 inode ,则可能会出现 ENOSPC 错误。

1.6. 选择本地文件系统

要选择一个满足应用程序要求的文件系统,您必须了解要在其上部署文件系统的目标系统。一般情况下,请使用 XFS,除非您有 ext4 的特定用例。

XFS
对于大规模部署,请使用 XFS,特别是在处理大型文件(几百兆字节)和高 I/O 并发时。XFS 在具有高带宽(超过 200MB/s)和 1000 IOPS 的环境中执行最佳执行。但是,与 ext4 相比,它会消耗更多 CPU 资源用于元数据操作,且不支持文件系统缩小。
ext4
对于 I/O 带宽有限的较小的系统或环境,ext4 可能更加适合。它在单线程、较低 I/O 工作负载和具有较低吞吐量要求的环境中表现更好。ext4 也支持离线缩减,这在调整文件系统大小时需要时很有用。

在目标服务器和存储系统上基准测试您的应用程序的性能,以确保所选的文件系统满足您的性能和可扩展性要求。

Expand
表 1.2. 本地文件系统建议概述
场景推荐的文件系统

没有特殊用例

XFS

大服务器

XFS

大存储设备

XFS

大文件

XFS

多线程 I/O

XFS

单线程 I/O

ext4

有限 I/O 功能(在 1000 IOPS 下)

ext4

有限带宽(在 200MB/s 下)

ext4

CPU 绑定工作负载

ext4

支持离线缩小

ext4

1.7. 网络文件系统

网络文件系统也称为客户端/服务器文件系统,使客户端系统能够访问存储在共享服务器上的文件。这使得多个系统上的多个用户可以共享文件和存储资源。

此类文件系统构建自一个或多个服务器,它们将一组文件系统导出到一个或多个客户端。客户端节点无法访问底层的块存储,而是使用允许更好的访问控制的协议来与存储进行交互。

可用网络文件系统
  • RHEL 客户最常用的客户端/服务器文件系统是 NFS 文件系统。RHEL 提供了一个 NFS 服务器组件,来通过网络导出本地文件系统,并提供 NFS 客户端来导入这些文件系统。
  • RHEL 还包括 CIFS 客户端,其支持流行的 Microsoft SMB 文件服务器来实现 Windows 互操作性。用户空间 Samba 服务器为 Windows 客户端提供 RHEL 服务器的 Microsoft SMB 服务。

1.8. 共享存储文件系统

共享存储文件系统有时称为集群文件系统,允许集群中的每台服务器通过本地存储区域网络(SAN)直接访问共享块设备。

和网络文件系统的比较
与客户端/服务器文件系统一样,共享存储文件系统在一组服务器上工作,这些服务器都是群集的成员。但与 NFS 不同,没有一个服务器向其他成员提供对数据或元数据的访问:群集的每个成员都可以直接访问同一存储设备( 共享存储),并且所有群集节点都可以访问同一组文件。
并发

缓存一致性是集群文件系统中确保数据一致性和完整性的关键。集群中所有文件的单个版本都必须对群集内的所有节点可见。文件系统必须阻止群集成员同时更新同一存储块,以防止数据损坏。为此,共享存储文件系统使用集群范围的锁机制作为并发控制机制来仲裁对存储的访问。例如,在创建新文件或写入在多个服务器上打开的文件之前,服务器上的文件系统组件必须获得正确的锁。

群集文件系统的要求是提供一种像 Apache Web 服务器那样高可用的服务。群集的任何成员都将看到存储在共享磁盘文件系统中的数据的完全一致的视图,并且所有更新都会通过锁机制正确仲裁。

性能特性

由于锁开销的计算成本,共享磁盘文件系统并不总像运行在同一系统上的本地文件系统那样表现良好。如果每个节点几乎以独占方式写入一组不与其他节点共享的特定文件,或者一组文件在一组节点上以几乎独占的只读方式被共享,那么共享磁盘文件系统可以很好地执行这种工作负载。这将导致最小的跨节点缓存失效,并可最大限度地提高性能。

设置共享磁盘文件系统非常复杂,调优应用以在共享磁盘文件系统上表现良好非常有挑战性。

可用的共享存储文件系统
  • Red Hat Enterprise Linux 提供 GFS2 文件系统。GFS2 与 Red Hat Enterprise Linux High Availability Add-On 和 Resilient Storage 附加组件紧密整合。

Red Hat Enterprise Linux 支持集群中大小为 2 到 16 个节点的 GFS2。

1.9. 在网络和共享存储文件系统间进行选择

在网络和共享存储文件系统间选择时,请考虑以下几点:

  • 对于提供 NFS 服务器的环境,基于 NFS 的网络文件系统是非常常见和流行的选择。
  • 网络文件系统可以使用非常高性能的网络技术(如 Infiniband 或 10 GB 以太网卡)进行部署。这意味着您不应该仅仅为了获得存储的原始带宽而转向共享存储文件系统。如果访问速度至关重要,则使用 NFS 导出类似 XFS 的本地文件系统。
  • 共享存储文件系统的设置或维护并非易事,因此您应仅在无法用本地或网络文件系统提供所需的可用性时才部署它们。
  • 集群环境中的共享存储文件系统通过消除在涉及重新分配高可用性服务的典型故障切换情景中需要执行的卸载和挂载所需的步骤,来帮助减少停机时间。

红帽建议您使用网络文件系统,除非您有共享存储文件系统的特定用例。共享存储文件系统主要用于需要以最少的停机时间提供高可用性服务且具有严格的服务等级要求的部署。

1.10. 卷管理文件系统

卷管理文件系统集成整个存储堆栈,以实现简洁和堆栈内优化。

可用卷管理文件系统
  • Red Hat Enterprise Linux 8 作为技术预览提供 Stratis 卷管理器。Stratis 对文件系统层使用 XFS,并将其与 LVM、设备映射器和其他组件集成。

Stratis 首次在 Red Hat Enterprise Linux 8.0 中发布。它被设计为填补红帽弃用 Btrfs 时出现的空白。Stratis 1.0 是一个直观的、基于命令行的卷管理器,可以在隐藏用户复杂性的同时执行重要的存储管理操作:

  • 卷管理
  • 创建池
  • 精简存储池
  • 快照
  • 自动读取缓存

Stratis 提供强大的功能,但目前缺乏其他产品(如 Btrfs 或 ZFS)的某些功能。最值得注意的是,它不支持带自我修复的 CRC。

第 2 章 使用 RHEL 系统角色管理本地存储

要使用 Ansible 管理 LVM 和本地文件系统(FS),您可以使用 存储 角色,这是 RHEL 8 中可用的 RHEL 系统角色之一。

使用 存储 角色可让您自动管理多台机器上的磁盘和逻辑卷上的文件系统,以及从 RHEL 7.7 开始的所有 RHEL 版本。

有关 RHEL 系统角色以及如何应用它们的更多信息,请参阅 RHEL 系统角色简介

示例 Ansible playbook 使用 storage 角色,使用默认参数在块设备上创建一个 XFS 文件系统。如果 /dev/sdb 设备上的文件系统或者挂载点目录不存在,playbook 会创建它们。

注意

存储 角色只能在未分区、整个磁盘或逻辑卷(LV)上创建文件系统。它不能在分区中创建文件系统。

先决条件

流程

  1. 创建一个包含以下内容的 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
    Copy to Clipboard Toggle word wrap

    示例 playbook 中指定的设置包括以下内容:

    name: barefs
    卷名称(示例中为 barefs )目前是任意的。storage 角色根据 disks 属性下列出的磁盘设备来识别卷。
    fs_type: &lt ;file_system>
    如果要使用默认的文件系统 XFS,您可以省略 fs_type 参数。
    disks: <list_of_disks_and_volumes>

    磁盘和 LV 名称的 YAML 列表。要在 LV 上创建文件系统,请在 disks 属性下提供 LVM 设置,包括括起来的卷组。详情请参阅 使用 storage RHEL 系统角色创建或者调整逻辑卷大小

    不要提供到 LV 设备的路径。

    有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 文件。

  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    请注意,这个命令只验证语法,不能防止错误的、但有效的配置。

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

示例 Ansible playbook 使用 storage 角色来永久挂载现有的文件系统。它通过向 /etc/fstab 文件中添加合适的条目来确保文件系统立即可用并永久挂载。这允许文件系统在重启后保持挂载。如果 /dev/sdb 设备上的文件系统或者挂载点目录不存在,playbook 会创建它们。

先决条件

流程

  1. 创建一个包含以下内容的 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_volumes:
              - name: barefs
                type: disk
                disks:
                  - sdb
                fs_type: xfs
                mount_point: /mnt/data
                mount_user: somebody
                mount_group: somegroup
                mount_mode: 0755
    Copy to Clipboard Toggle word wrap

    有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 文件。

  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    请注意,这个命令只验证语法,不能防止错误的、但有效的配置。

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

使用 storage 角色执行以下任务:

  • 在由多个磁盘组成的卷组中创建 LVM 逻辑卷
  • 调整 LVM 上现有文件系统的大小
  • 以池总大小的百分比表示 LVM 卷大小

如果卷组不存在,角色会创建它。如果逻辑卷在卷组中存在,如果大小与 playbook 中指定的内容不匹配,则会调整大小。

如果您要缩小逻辑卷,为了避免数据丢失,您必须确保该逻辑卷上的文件系统没有使用正在缩小的逻辑卷中的空间。

先决条件

流程

  1. 创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml

    ---
    - 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_pools:
              - name: myvg
                disks:
                  - sda
                  - sdb
                  - sdc
                volumes:
                  - name: mylv
                    size: 2G
                    fs_type: ext4
                    mount_point: /mnt/data
    Copy to Clipboard Toggle word wrap

    示例 playbook 中指定的设置包括如下:

    size: <size>
    您必须使用单位(如 GiB)或百分比(例如 60%)来指定大小。

    有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 文件。

  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    请注意,这个命令只验证语法,不能防止错误的、但有效的配置。

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

验证

  • 验证指定的卷是否已创建或调整到请求的大小:

    # ansible managed-node-01.example.com -m command -a 'lvs myvg'
    Copy to Clipboard Toggle word wrap

2.4. 使用 storage RHEL 系统角色启用在线块丢弃

您可以使用在线块丢弃选项挂载 XFS 文件系统,来自动丢弃未使用的块。

先决条件

流程

  1. 创建一个包含以下内容的 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:
                  - sdb
                fs_type: xfs
                mount_point: /mnt/data
                mount_options: discard
    Copy to Clipboard Toggle word wrap

    有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 文件。

  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    请注意,这个命令只验证语法,不能防止错误的、但有效的配置。

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

验证

  • 验证在线块丢弃选项是否已启用:

    # ansible managed-node-01.example.com -m command -a 'findmnt /mnt/data'
    Copy to Clipboard Toggle word wrap

示例 Ansible playbook 使用 storage 角色创建和挂载文件系统。它通过向 /etc/fstab 文件中添加合适的条目来确保文件系统立即可用并永久挂载。这允许文件系统在重启后保持挂载。如果 /dev/sdb 设备上的文件系统或者挂载点目录不存在,playbook 会创建它们。

先决条件

流程

  1. 创建一个包含以下内容的 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_volumes:
            - name: barefs
              type: disk
              disks:
                - sdb
              fs_type: ext4
              fs_label: label-name
              mount_point: /mnt/data
    Copy to Clipboard Toggle word wrap

    示例 playbook 中指定的设置包括以下内容:

    disks: <list_of_devices>
    角色在创建卷时使用的设备名称的 YAML 列表。
    fs_type: &lt ;file_system>
    指定角色应在卷上设置的文件系统。您可以选择 xfsext3ext4swapunformatted
    label-name: &lt ;file_system_label>
    可选:设置文件系统的标签。
    mount_point: < directory>
    可选:如果卷应自动挂载,请将 mount_point 变量设置为应挂载卷的目录。

    有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 文件。

  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    请注意,这个命令只验证语法,不能防止错误的、但有效的配置。

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

2.6. 使用 storage RHEL 系统角色配置 RAID 卷

使用 storage 系统角色,您可以使用 Red Hat Ansible Automation Platform 和 Ansible-Core 在 RHEL 上配置一个 RAID 卷。使用参数创建一个 Ansible playbook,以配置 RAID 卷以满足您的要求。

警告

设备名称在某些情况下可能会改变,例如:当您在系统中添加新磁盘时。因此,为了避免数据丢失,请在 playbook 中使用持久性命名属性。有关持久性命名属性的更多信息,请参阅 持久性命名属性概述

先决条件

流程

  1. 创建一个包含以下内容的 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
    Copy to Clipboard Toggle word wrap

    有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 文件。

  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    请注意,这个命令只验证语法,不能防止错误的、但有效的配置。

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

验证

  • 验证阵列是否被正确创建:

    # ansible managed-node-01.example.com -m command -a 'mdadm --detail /dev/md/data'
    Copy to Clipboard Toggle word wrap

使用 storage 系统角色,您可以使用 Red Hat Ansible Automation Platform 在 RHEL 上配置一个带有 RAID 的 LVM 池。您可以使用可用参数建立一个 Ansible playbook,来配置带有 RAID 的 LVM 池。

先决条件

流程

  1. 创建一个包含以下内容的 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
    Copy to Clipboard Toggle word wrap

    有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 文件。

  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    请注意,这个命令只验证语法,不能防止错误的、但有效的配置。

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

验证

  • 验证您的池是否在 RAID 上:

    # ansible managed-node-01.example.com -m command -a 'lsblk'
    Copy to Clipboard Toggle word wrap

使用 storage 系统角色,您可以使用 Red Hat Ansible Automation Platform 在 RHEL 上为 RAID LVM 卷配置条带大小。您可以使用可用参数建立一个 Ansible playbook,来配置带有 RAID 的 LVM 池。

先决条件

流程

  1. 创建一个包含以下内容的 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
    Copy to Clipboard Toggle word wrap

    有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/rhel-system-roles.storage/README.md 文件。

  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    请注意,这个命令只验证语法,不能防止错误的、但有效的配置。

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

验证

  • 验证条带大小是否被设置为所需的大小:

    # ansible managed-node-01.example.com -m command -a 'lvs -o+stripesize /dev/my_pool/my_volume'
    Copy to Clipboard Toggle word wrap

2.9. 使用 storage RHEL 系统角色配置 LVM-VDO 卷

您可以使用 storage RHEL 系统角色在 LVM (LVM-VDO)上创建一个启用了压缩和去重的 VDO 卷。

注意

由于 storage 系统角色使用 LVM-VDO,因此每个池只能创建一个卷。

先决条件

流程

  1. 创建一个包含以下内容的 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
    Copy to Clipboard Toggle word wrap

    示例 playbook 中指定的设置包括如下:

    vdo_pool_size: <size>
    卷在设备上的实际大小。您可以以人类可读的格式指定大小,如 10 GiB。如果没有指定单位,默认为字节。
    size: <size>
    VDO 卷的虚拟大小。

  2. $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

  3. $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

  • $ ansible managed-node-01.example.com -m command -a 'lvs -o+vdo_compression,vdo_compression_state,vdo_deduplication,vdo_index_state'
      LV       VG      Attr       LSize   Pool   Origin Data%  Meta%  Move Log Cpy%Sync Convert VDOCompression VDOCompressionState VDODeduplication VDOIndexState
      mylv1   myvg   vwi-a-v---   3.00t vpool0                                                         enabled              online          enabled        online
    Copy to Clipboard Toggle word wrap

2.10. 

    1. $ ansible-vault create ~/vault.yml
      New Vault password: <vault_password>
      Confirm New Vault password: <vault_password>
      Copy to Clipboard Toggle word wrap
    2. luks_password: <password>
      Copy to Clipboard Toggle word wrap
  1. ---
    - name: Manage local storage
      hosts: managed-node-01.example.com
      vars_files:
        - ~/vault.yml
      tasks:
        - name: Create and configure a volume encrypted with LUKS
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.storage
          vars:
            storage_volumes:
              - name: barefs
                type: disk
                disks:
                  - sdb
                fs_type: xfs
                fs_label: <label>
                mount_point: /mnt/data
                encryption: true
                encryption_password: "{{ luks_password }}"
    Copy to Clipboard Toggle word wrap

  2. $ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

  3. $ ansible-playbook --ask-vault-pass ~/playbook.yml
    Copy to Clipboard Toggle word wrap

  1. # ansible managed-node-01.example.com -m command -a 'cryptsetup luksUUID /dev/sdb'
    
    4e4e7970-1822-470e-b55a-e91efe5d0f5c
    Copy to Clipboard Toggle word wrap
  2. # ansible managed-node-01.example.com -m command -a 'cryptsetup status luks-4e4e7970-1822-470e-b55a-e91efe5d0f5c'
    
    /dev/mapper/luks-4e4e7970-1822-470e-b55a-e91efe5d0f5c is active and is in use.
      type:    LUKS2
      cipher:  aes-xts-plain64
      keysize: 512 bits
      key location: keyring
      device:  /dev/sdb
    ...
    Copy to Clipboard Toggle word wrap
  3. # ansible managed-node-01.example.com -m command -a 'cryptsetup luksDump /dev/sdb'
    
    LUKS header information
    Version:        2
    Epoch:          3
    Metadata area:  16384 [bytes]
    Keyslots area:  16744448 [bytes]
    UUID:           4e4e7970-1822-470e-b55a-e91efe5d0f5c
    Label:          (no label)
    Subsystem:      (no subsystem)
    Flags:          (no flags)
    
    Data segments:
      0: crypt
            offset: 16777216 [bytes]
            length: (whole device)
            cipher: aes-xts-plain64
            sector: 512 [bytes]
    ...
    Copy to Clipboard Toggle word wrap

2.11. 

  1. ---
    - 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
            storage_safe_mode: false
            storage_use_partitions: true
    Copy to Clipboard Toggle word wrap

  2. $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

  3. $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

第 3 章 

3.1. 

3.2. 

3.3. 

第 4 章 

4.1. 

Expand
表 4.1. 
   

4.2. 

    1. port=5555
      Copy to Clipboard Toggle word wrap

    2. port=6666
      Copy to Clipboard Toggle word wrap

  1. # firewall-cmd --permanent --add-service=rpc-bind
    # firewall-cmd --permanent --add-port={5555/tcp,5555/udp,6666/tcp,6666/udp}
    # firewall-cmd --reload
    Copy to Clipboard Toggle word wrap
  2. # systemctl restart rpc-statd nfs-server
    Copy to Clipboard Toggle word wrap

4.3. 

注意

  • # firewall-cmd --permanent --add-port=<callback_port>/tcp
    # firewall-cmd --reload
    Copy to Clipboard Toggle word wrap

4.4. 

警告

  • # mount <nfs_server_ip_or_hostname>:/<exported_share> <mount point>
    Copy to Clipboard Toggle word wrap

    # mount server.example.com:/nfs/projects/ /mnt/
    Copy to Clipboard Toggle word wrap

  • $ ls -l /mnt/
    Copy to Clipboard Toggle word wrap

4.5. 

  1. <nfs_server_ip_or_hostname>:/<exported_share>     <mount point>    nfs    default   0 0
    Copy to Clipboard Toggle word wrap

    server.example.com:/nfs/projects    	/home        nfs 	defaults    	0 0
    Copy to Clipboard Toggle word wrap
  2. # mount /home
    Copy to Clipboard Toggle word wrap

  • $ ls -l /mnt/
    Copy to Clipboard Toggle word wrap

4.6. 

4.7. 

4.8. 

  1. # kinit admin
    Copy to Clipboard Toggle word wrap
  2. # ipa-getkeytab -s idm_server.idm.example.com -p host/nfs_client.idm.example.com -k /etc/krb5.keytab
    Copy to Clipboard Toggle word wrap

  3. # 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.example.com@IDM.EXAMPLE.COM
       6 host/nfs_client.idm.example.com@IDM.EXAMPLE.COM
    Copy to Clipboard Toggle word wrap
  4. # ipa-client-automount
    Searching for IPA server...
    IPA server: DNS discovery
    Location: default
    Continue to configure the system with these values? [no]: yes
    Configured /etc/idmapd.conf
    Restarting sssd, waiting for it to become available.
    Started autofs
    Copy to Clipboard Toggle word wrap
  5. # mount -o sec=krb5i server.idm.example.com:/nfs/projects/ /mnt/
    Copy to Clipboard Toggle word wrap

  1. $ kinit
    Copy to Clipboard Toggle word wrap
  2. $ touch /mnt/test.txt
    Copy to Clipboard Toggle word wrap
  3. $ ls -l /mnt/test.txt
    -rw-r--r--. 1 admin users 0 Feb 15 11:54 /mnt/test.txt
    Copy to Clipboard Toggle word wrap

4.9. 

  • # yum install glib2-fam
    Copy to Clipboard Toggle word wrap

  1. service-db:keyfile/user
    Copy to Clipboard Toggle word wrap

4.10. 

4.11. 

4.11.1. 

4.11.2. 

  1. # dnf install cachefilesd
    Copy to Clipboard Toggle word wrap
  2. # systemctl enable --now cachefilesd
    Copy to Clipboard Toggle word wrap

    1. # mount -o fsc server.example.com:/nfs/projects/ /mnt/
      Copy to Clipboard Toggle word wrap
    2. <nfs_server_ip_or_hostname>:/<exported_share>     <mount point>    nfs fsc 0 0
      Copy to Clipboard Toggle word wrap
  1. # cat /proc/fs/fscache/stats
    Copy to Clipboard Toggle word wrap

4.11.3. 

例 4.1. 

# mount -o fsc home0:/nfs/projects /projects
# mount -o fsc home0:/nfs/home /home/
Copy to Clipboard Toggle word wrap

# mount -o fsc,rsize=8192 home0:/nfs/projects /projects
# mount -o fsc,rsize=65536 home0:/nfs/home /home/
Copy to Clipboard Toggle word wrap
注意

4.11.4. 

4.11.5. 

重要

第 5 章 

注意

5.1. 

  • 警告

注意

5.2. 

  1. # mount -t cifs -o vers=1.0,username=<user_name> //<server_name>/<share_name> /mnt/
    Copy to Clipboard Toggle word wrap

  • # mount
    ...
    //<server_name>/<share_name> on /mnt type cifs (...,unix,...)
    Copy to Clipboard Toggle word wrap

5.3. 

注意

  • # mount -t cifs -o username=<user_name> //<server_name>/<share_name> /mnt/
    Password for <user_name>@//<server_name>/<share_name>:  password
    Copy to Clipboard Toggle word wrap

    例 5.1. 

    # mount -t cifs -o username=DOMAIN\Administrator,seal,vers=3.0 //server/example /mnt/
    Password for DOMAIN\Administrator@//server_name/share_name:  password
    Copy to Clipboard Toggle word wrap

  • # 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
    Copy to Clipboard Toggle word wrap

5.4. 

  1. //<server_name>/<share_name>  /mnt  cifs  credentials=/root/smb.cred  0 0
    Copy to Clipboard Toggle word wrap
    重要

  • # mount /mnt/
    Copy to Clipboard Toggle word wrap

5.5. 

  1. username=user_name
    password=password
    domain=domain_name
    Copy to Clipboard Toggle word wrap
  2. # chown user_name /root/smb.cred
    # chmod 600 /root/smb.cred
    Copy to Clipboard Toggle word wrap

5.6. 

重要

5.6.1. 

  1. //server_name/share_name  /mnt  cifs  multiuser,sec=ntlmssp,credentials=/root/smb.cred  0 0
    Copy to Clipboard Toggle word wrap
  2. # mount /mnt/
    Copy to Clipboard Toggle word wrap

5.6.2. 

# mount
...
//server_name/share_name on /mnt type cifs (sec=ntlmssp,multiuser,...)
Copy to Clipboard Toggle word wrap

5.6.3. 

# cifscreds add -u SMB_user_name server_name
Password: password
Copy to Clipboard Toggle word wrap

注意

5.7. 

Expand
  

第 6 章 

6.1. 

6.2. 

6.3. 

6.3.1. 

/dev/disk/by-uuid/3e6be9de-8139-11d1-9106-a43f08d823a6
Copy to Clipboard Toggle word wrap

UUID=3e6be9de-8139-11d1-9106-a43f08d823a6
Copy to Clipboard Toggle word wrap

/dev/disk/by-label/Boot
Copy to Clipboard Toggle word wrap

LABEL=Boot
Copy to Clipboard Toggle word wrap

6.3.2. 

例 6.1. 

Expand
   

例 6.2. 

Expand
  

6.4. 

例 6.3. 

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]
Copy to Clipboard Toggle word wrap

重要

6.5. 

6.6. 

  • $ lsblk --fs storage-device
    Copy to Clipboard Toggle word wrap

    例 6.4. 

    $ lsblk --fs /dev/sda1
    
    NAME FSTYPE LABEL UUID                                 MOUNTPOINT
    sda1 xfs    Boot  afa5d5e3-9050-48c3-acc1-bb30095f3dc4 /boot
    Copy to Clipboard Toggle word wrap
  • $ lsblk --output +PARTUUID
    Copy to Clipboard Toggle word wrap

    例 6.5. 

    $ lsblk --output +PARTUUID /dev/sda1
    
    NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT PARTUUID
    sda1   8:1    0  512M  0 part /boot      4cd1448a-01
    Copy to Clipboard Toggle word wrap
  • 例 6.6. 

    $ 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 link to ../../sda2
    /dev/disk/by-id/dm-name-rhel_rhel8-root
    symbolic link to ../../dm-0
    /dev/disk/by-id/dm-name-rhel_rhel8-swap
    symbolic link to ../../dm-1
    /dev/disk/by-id/dm-uuid-LVM-QIWtEHtXGobe5bewlIUDivKOz5ofkgFhP0RMFsNyySVihqEl2cWWbR7MjXJolD6g
    symbolic link to ../../dm-1
    /dev/disk/by-id/dm-uuid-LVM-QIWtEHtXGobe5bewlIUDivKOz5ofkgFhXqH2M45hD2H9nAf2qfWSrlRLhzfMyOKd
    symbolic link to ../../dm-0
    /dev/disk/by-id/lvm-pv-uuid-atlr2Y-vuMo-ueoH-CpMG-4JuH-AhEF-wu4QQm
    symbolic link to ../../sda2
    Copy to Clipboard Toggle word wrap

6.7. 

注意

  • # xfs_admin -U new-uuid -L new-label storage-device
    # udevadm settle
    Copy to Clipboard Toggle word wrap
  • # tune2fs -U new-uuid -L new-label storage-device
    # udevadm settle
    Copy to Clipboard Toggle word wrap
  • # swaplabel --uuid new-uuid --label new-label swap-device
    # udevadm settle
    Copy to Clipboard Toggle word wrap

第 7 章 

7.1. 

  1. # parted /dev/sda
    Copy to Clipboard Toggle word wrap
  2. (parted) print
    
    Model: ATA SAMSUNG MZNLN256 (scsi)
    Disk /dev/sda: 256GB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags:
    
    Number  Start   End     Size    Type      File system  Flags
     1      1049kB  269MB   268MB   primary   xfs          boot
     2      269MB   34.6GB  34.4GB  primary
     3      34.6GB  45.4GB  10.7GB  primary
     4      45.4GB  256GB   211GB   extended
     5      45.4GB  256GB   211GB   logical
    Copy to Clipboard Toggle word wrap
  3. (parted) select block-device
    Copy to Clipboard Toggle word wrap

7.2. 

警告

  1. # parted block-device
    Copy to Clipboard Toggle word wrap
  2. (parted) print
    Copy to Clipboard Toggle word wrap

  3. (parted) mklabel table-type
    Copy to Clipboard Toggle word wrap

    例 7.1. 

    (parted) mklabel gpt
    Copy to Clipboard Toggle word wrap

  4. (parted) print
    Copy to Clipboard Toggle word wrap
  5. (parted) quit
    Copy to Clipboard Toggle word wrap

7.3. 

注意

  1. # parted block-device
    Copy to Clipboard Toggle word wrap
  2. (parted) print
    Copy to Clipboard Toggle word wrap
  3. (parted) mkpart part-type name fs-type start end
    Copy to Clipboard Toggle word wrap

    例 7.2. 

    (parted) mkpart primary 1024MiB 2048MiB
    Copy to Clipboard Toggle word wrap

  4. (parted) print
    Copy to Clipboard Toggle word wrap
  5. (parted) quit
    Copy to Clipboard Toggle word wrap
  6. # udevadm settle
    Copy to Clipboard Toggle word wrap
  7. # cat /proc/partitions
    Copy to Clipboard Toggle word wrap

7.4. 

  1. # parted block-device
    Copy to Clipboard Toggle word wrap
  2. (parted) print
    Copy to Clipboard Toggle word wrap
  3. (parted) rm minor-number
    Copy to Clipboard Toggle word wrap

  4. (parted) print
    Copy to Clipboard Toggle word wrap
  5. (parted) quit
    Copy to Clipboard Toggle word wrap
  6. # cat /proc/partitions
    Copy to Clipboard Toggle word wrap
  7. # systemctl daemon-reload
    Copy to Clipboard Toggle word wrap
    1. # grubby --info=ALL
      Copy to Clipboard Toggle word wrap
    2. # grubby --update-kernel=ALL --remove-args="option"
      Copy to Clipboard Toggle word wrap
  8. # dracut --force --verbose
    Copy to Clipboard Toggle word wrap

7.5. 

注意

  1. # parted block-device
    Copy to Clipboard Toggle word wrap
  2. (parted) print
    Copy to Clipboard Toggle word wrap

  3. (parted) resizepart 1 2GiB
    Copy to Clipboard Toggle word wrap
  4. (parted) print
    Copy to Clipboard Toggle word wrap
  5. (parted) quit
    Copy to Clipboard Toggle word wrap
  6. # cat /proc/partitions
    Copy to Clipboard Toggle word wrap

第 8 章 

注意

8.1. 

图 8.1. 

8.2. 

图 8.2. 

8.3. 

警告

8.3.1. 

图 8.3. 

警告

8.3.2. 

图 8.4. 

图 8.5. 

图 8.6. 

第 9 章 

9.1. 

9.2. 

Expand
   

第 10 章 

10.1. 

    • # mkfs.xfs block-device
      Copy to Clipboard Toggle word wrap
      • # mkfs.xfs block-device
        Copy to Clipboard Toggle word wrap
      • # mkfs.xfs -d su=64k,sw=4 /dev/sda3
        Copy to Clipboard Toggle word wrap
  1. # udevadm settle
    Copy to Clipboard Toggle word wrap

第 11 章 

11.1. 

11.2. 

  • # xfsdump -l level [-L label] \ -f backup-destination path-to-xfs-filesystem
    Copy to Clipboard Toggle word wrap

例 11.1. 

  • # xfsdump -l 0 -f /backup-files/boot.xfsdump /boot
    # xfsdump -l 0 -f /backup-files/data.xfsdump /data
    Copy to Clipboard Toggle word wrap
  • # xfsdump -l 0 -L "backup_boot" -f /dev/st0 /boot
    # xfsdump -l 0 -L "backup_data" -f /dev/st0 /data
    Copy to Clipboard Toggle word wrap

第 12 章 

12.1. 

12.2. 

  • # xfsrestore [-r] [-S session-id] [-L session-label] [-i] -f backup-location restoration-path
    Copy to Clipboard Toggle word wrap

例 12.1. 

  • # xfsrestore -f /backup-files/boot.xfsdump /mnt/boot/
    # xfsrestore -f /backup-files/data.xfsdump /mnt/data/
    Copy to Clipboard Toggle word wrap
  • # xfsrestore -L "backup_boot" -f /dev/st0 /mnt/boot/
    # xfsrestore -S "45e9af35-efd2-4244-87bc-4762e476cbab" \ -f /dev/st0 /mnt/data/
    Copy to Clipboard Toggle word wrap

12.3. 

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)
[...]
Copy to Clipboard Toggle word wrap

第 13 章 

重要

13.1. 

  • # xfs_growfs file-system -D new-size
    Copy to Clipboard Toggle word wrap
    • # xfs_info block-device
      
      ...
      data     =              bsize=4096
      ...
      Copy to Clipboard Toggle word wrap

第 14 章 

14.1. 

14.2. 

14.3. 

    • # echo value > /sys/fs/xfs/device/error/metadata/condition/max_retries
      Copy to Clipboard Toggle word wrap
    • # echo value > /sys/fs/xfs/device/error/metadata/condition/retry_timeout_second
      Copy to Clipboard Toggle word wrap

14.4. 

    • # echo value > /sys/fs/xfs/device/error/metadata/default/max_retries
      Copy to Clipboard Toggle word wrap
    • # echo value > /sys/fs/xfs/device/error/metadata/default/retry_timeout_seconds
      Copy to Clipboard Toggle word wrap

14.5. 

警告

    • # echo 1 > /sys/fs/xfs/device/error/fail_at_unmount
      Copy to Clipboard Toggle word wrap
    • # echo 0 > /sys/fs/xfs/device/error/fail_at_unmount
      Copy to Clipboard Toggle word wrap

第 15 章 

重要

15.1. 

重要

重要

15.2. 

15.3. 

例 15.1. 

# 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  ................
000000006a40df69: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000000000b272907: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000000e484aac5: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
XFS (loop0): metadata I/O error in "xfs_trans_read_buf_map" at daddr 0x2 len 1 error 74
XFS (loop0): xfs_imap_lookup: xfs_ialloc_read_agi() returned error -117, agno 0
XFS (loop0): Failed to read root inode 0x80, error 11
Copy to Clipboard Toggle word wrap

mount: /mount-point: mount(2) system call failed: Structure needs cleaning.
Copy to Clipboard Toggle word wrap

15.4. 

注意

  1. # mount file-system
    # umount file-system
    Copy to Clipboard Toggle word wrap
    注意

  2. # xfs_repair -n block-device
    Copy to Clipboard Toggle word wrap
  3. # mount file-system
    Copy to Clipboard Toggle word wrap

15.5. 

    • # xfs_metadump block-device metadump-file
      Copy to Clipboard Toggle word wrap
  1. # mount file-system
    # umount file-system
    Copy to Clipboard Toggle word wrap
    • # xfs_repair block-device
      Copy to Clipboard Toggle word wrap
    • 警告

      # xfs_repair -L block-device
      Copy to Clipboard Toggle word wrap
  2. # mount file-system
    Copy to Clipboard Toggle word wrap

15.6. 

15.7. 

  1. # mount file-system
    # umount file-system
    Copy to Clipboard Toggle word wrap
  2. # e2fsck -n block-device
    Copy to Clipboard Toggle word wrap
    注意

15.8. 

  1. 注意

    • # e2image -r block-device image-file
      Copy to Clipboard Toggle word wrap
    • # e2image -Q block-device image-file
      Copy to Clipboard Toggle word wrap
  2. # mount file-system
    # umount file-system
    Copy to Clipboard Toggle word wrap
  3. # e2fsck -p block-device
    Copy to Clipboard Toggle word wrap

第 16 章 

16.1. 

  • # mount directory
    Copy to Clipboard Toggle word wrap
  • # mount device
    Copy to Clipboard Toggle word wrap

16.2. 

  • $ findmnt
    Copy to Clipboard Toggle word wrap
  • $ findmnt --types fs-type
    Copy to Clipboard Toggle word wrap

    例 16.1. 

    $ 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
    Copy to Clipboard Toggle word wrap

16.3. 

  • $ findmnt mount-point
    Copy to Clipboard Toggle word wrap

  1. # mount device mount-point
    Copy to Clipboard Toggle word wrap

    例 16.2. 

    # mount UUID=ea74bbec-536d-490c-b8d9-5b40bbd7545b /mnt/data
    Copy to Clipboard Toggle word wrap
  2. # mount --types type device mount-point
    Copy to Clipboard Toggle word wrap

    例 16.3. 

    # mount --types nfs4 host:/remote-export /mnt/nfs
    Copy to Clipboard Toggle word wrap

16.4. 

  1. # mount --move old-directory new-directory
    Copy to Clipboard Toggle word wrap

    例 16.4. 

    # mount --move /mnt/userdirs /home
    Copy to Clipboard Toggle word wrap
  2. $ findmnt
    $ ls old-directory
    $ ls new-directory
    Copy to Clipboard Toggle word wrap

16.5. 

    • # umount mount-point
      Copy to Clipboard Toggle word wrap
    • # umount device
      Copy to Clipboard Toggle word wrap

    umount: /run/media/user/FlashDrive: target is busy.
    Copy to Clipboard Toggle word wrap
  1. $ fuser --mount /run/media/user/FlashDrive /run/media/user/FlashDrive: 18351
    Copy to Clipboard Toggle word wrap

16.6. 

注意

16.7. 

# mount --options option1,option2,option3 device mount-point
Copy to Clipboard Toggle word wrap
Expand
表 16.1. 
  

第 17 章 

17.1. 

17.2. 

  1. # mount --bind original-dir original-dir
    Copy to Clipboard Toggle word wrap
  2. # mount --make-private original-dir
    Copy to Clipboard Toggle word wrap

  3. # mount --bind original-dir duplicate-dir
    Copy to Clipboard Toggle word wrap

例 17.1. 

  1. # mount --bind /media /media
    Copy to Clipboard Toggle word wrap
  2. # mount --make-private /media
    Copy to Clipboard Toggle word wrap
  3. # mount --bind /media /mnt
    Copy to Clipboard Toggle word wrap
  4. # mount /dev/cdrom /media/cdrom
    # ls /media/cdrom
    EFI  GPL  isolinux  LiveOS
    # ls /mnt/cdrom
    #
    Copy to Clipboard Toggle word wrap
  5. # mount /dev/sdc1 /mnt/flashdisk
    # ls /media/flashdisk
    # ls /mnt/flashdisk
    en-US  publican.cfg
    Copy to Clipboard Toggle word wrap

17.3. 

  1. # mount --bind original-dir original-dir
    Copy to Clipboard Toggle word wrap
  2. # mount --make-shared original-dir
    Copy to Clipboard Toggle word wrap

  3. # mount --bind original-dir duplicate-dir
    Copy to Clipboard Toggle word wrap

例 17.2. 

  1. # mount --bind /media /media
    Copy to Clipboard Toggle word wrap
  2. # mount --make-shared /media
    Copy to Clipboard Toggle word wrap
  3. # mount --bind /media /mnt
    Copy to Clipboard Toggle word wrap
  4. # mount /dev/cdrom /media/cdrom
    # ls /media/cdrom
    EFI  GPL  isolinux  LiveOS
    # ls /mnt/cdrom
    EFI  GPL  isolinux  LiveOS
    Copy to Clipboard Toggle word wrap
  5. # mount /dev/sdc1 /mnt/flashdisk
    # ls /media/flashdisk
    en-US  publican.cfg
    # ls /mnt/flashdisk
    en-US  publican.cfg
    Copy to Clipboard Toggle word wrap

17.4. 

  1. # mount --bind original-dir original-dir
    Copy to Clipboard Toggle word wrap
  2. # mount --make-shared original-dir
    Copy to Clipboard Toggle word wrap

  3. # mount --bind original-dir duplicate-dir
    # mount --make-slave duplicate-dir
    Copy to Clipboard Toggle word wrap

例 17.3. 

  1. # mount --bind /media /media
    Copy to Clipboard Toggle word wrap
  2. # mount --make-shared /media
    Copy to Clipboard Toggle word wrap
  3. # mount --bind /media /mnt
    # mount --make-slave /mnt
    Copy to Clipboard Toggle word wrap
  4. # mount /dev/cdrom /media/cdrom
    # ls /media/cdrom
    EFI  GPL  isolinux  LiveOS
    # ls /mnt/cdrom
    EFI  GPL  isolinux  LiveOS
    Copy to Clipboard Toggle word wrap
  5. # mount /dev/sdc1 /mnt/flashdisk
    # ls /media/flashdisk
    # ls /mnt/flashdisk
    en-US  publican.cfg
    Copy to Clipboard Toggle word wrap

17.5. 

  • # mount --bind mount-point mount-point
    # mount --make-unbindable mount-point
    Copy to Clipboard Toggle word wrap

    # mount --bind mount-point duplicate-dir
    
    mount: wrong fs type, bad option, bad superblock on mount-point,
    missing codepage or helper program, or other error
    In some cases useful info is found in syslog - try
    dmesg | tail  or so
    Copy to Clipboard Toggle word wrap

例 17.4. 

  • # mount --bind /media /media
    # mount --make-unbindable /media
    Copy to Clipboard Toggle word wrap

第 18 章 

18.1. 

注意

例 18.1. 

Expand
      

18.2. 

  1. $ lsblk --fs storage-device
    Copy to Clipboard Toggle word wrap

    例 18.2. 

    $ lsblk --fs /dev/sda1
    
    NAME FSTYPE LABEL UUID                                 MOUNTPOINT
    sda1 xfs    Boot  ea74bbec-536d-490c-b8d9-5b40bbd7545b /boot
    Copy to Clipboard Toggle word wrap
  2. # mkdir --parents mount-point
    Copy to Clipboard Toggle word wrap
  3. 例 18.3. 

    UUID=ea74bbec-536d-490c-b8d9-5b40bbd7545b /boot xfs defaults 0 0
    Copy to Clipboard Toggle word wrap
  4. # systemctl daemon-reload
    Copy to Clipboard Toggle word wrap
  5. # mount mount-point
    Copy to Clipboard Toggle word wrap

第 19 章 

19.1. 

19.2. 

mount-point  map-name  options
Copy to Clipboard Toggle word wrap

例 19.1. 

/mnt/data  /etc/auto.data
Copy to Clipboard Toggle word wrap

mount-point  options  location
Copy to Clipboard Toggle word wrap

例 19.2. 

payroll  -fstype=nfs4  personnel:/exports/payroll
sales    -fstype=xfs   :/dev/hda4
Copy to Clipboard Toggle word wrap

19.3. 

  • # yum install autofs
    Copy to Clipboard Toggle word wrap
  • # systemctl enable --now autofs
    Copy to Clipboard Toggle word wrap

  1. # systemctl reload autofs.service
    Copy to Clipboard Toggle word wrap
  2. # ls automounted-directory
    Copy to Clipboard Toggle word wrap

19.4. 

  1. /home /etc/auto.home
    Copy to Clipboard Toggle word wrap
  2. * -fstype=nfs,rw,sync host.example.com:/home/&
    Copy to Clipboard Toggle word wrap

  3. # systemctl reload autofs
    Copy to Clipboard Toggle word wrap

19.5. 

例 19.3. 

  • automount:    files nis
    Copy to Clipboard Toggle word wrap
  • +auto.master
    Copy to Clipboard Toggle word wrap
  • /home auto.home
    Copy to Clipboard Toggle word wrap
  • beth    fileserver.example.com:/export/home/beth
    joe     fileserver.example.com:/export/home/joe
    *       fileserver.example.com:/export/home/&
    Copy to Clipboard Toggle word wrap
  • BROWSE_MODE="yes"
    Copy to Clipboard Toggle word wrap

例 19.4. 

  • /home ­/etc/auto.home
    +auto.master
    Copy to Clipboard Toggle word wrap
  • *    host.example.com:/export/home/&
    Copy to Clipboard Toggle word wrap

例 19.5. 

  1. mydir someserver:/export/mydir
    +auto.home
    Copy to Clipboard Toggle word wrap
  2. $ ls /home
    
    beth joe mydir
    Copy to Clipboard Toggle word wrap

19.6. 

  1. 例 19.6. 

    DEFAULT_MAP_OBJECT_CLASS="automountMap"
    DEFAULT_ENTRY_OBJECT_CLASS="automount"
    DEFAULT_MAP_ATTRIBUTE="automountMapName"
    DEFAULT_ENTRY_ATTRIBUTE="automountKey"
    DEFAULT_VALUE_ATTRIBUTE="automountInformation"
    Copy to Clipboard Toggle word wrap
  2. 例 19.7. 

    # auto.master, example.com
    dn: automountMapName=auto.master,dc=example,dc=com
    objectClass: top
    objectClass: automountMap
    automountMapName: auto.master
    
    # /home, auto.master, example.com
    dn: automountMapName=auto.master,dc=example,dc=com
    objectClass: automount
    automountKey: /home
    automountInformation: auto.home
    
    # auto.home, example.com
    dn: automountMapName=auto.home,dc=example,dc=com
    objectClass: automountMap
    automountMapName: auto.home
    
    # foo, auto.home, example.com
    dn: automountKey=foo,automountMapName=auto.home,dc=example,dc=com
    objectClass: automount
    automountKey: foo
    automountInformation: filer.example.com:/export/foo
    
    # /, auto.home, example.com
    dn: automountKey=/,automountMapName=auto.home,dc=example,dc=com
    objectClass: automount
    automountKey: /
    automountInformation: filer.example.com:/export/&
    Copy to Clipboard Toggle word wrap

19.7. 

  1. /dev/disk/by-id/da875760-edb9-4b82-99dc-5f4b1ff2e5f4  /mount/point  xfs  defaults  0 0
    Copy to Clipboard Toggle word wrap
  2. # systemctl daemon-reload
    Copy to Clipboard Toggle word wrap
  3. # systemctl start mount-point.automount
    Copy to Clipboard Toggle word wrap

  1. # systemctl status mount-point.automount
    Copy to Clipboard Toggle word wrap
  2. # ls /mount/point
    Copy to Clipboard Toggle word wrap

19.8. 

  1. mount-point.mount
    [Mount]
    What=/dev/disk/by-uuid/f5755511-a714-44c1-a123-cfde0e4ac688
    Where=/mount/point
    Type=xfs
    Copy to Clipboard Toggle word wrap
  2. [Automount]
    Where=/mount/point
    [Install]
    WantedBy=multi-user.target
    Copy to Clipboard Toggle word wrap
  3. # systemctl daemon-reload
    Copy to Clipboard Toggle word wrap
  4. # systemctl enable --now mount-point.automount
    Copy to Clipboard Toggle word wrap

  1. # systemctl status mount-point.automount
    Copy to Clipboard Toggle word wrap
  2. # ls /mount/point
    Copy to Clipboard Toggle word wrap

第 20 章 

20.1. 

  1. #
    # Other common LDAP naming
    #
    map_object_class = "automountMap"
    entry_object_class = "automount"
    map_attribute = "automountMapName"
    entry_attribute = "automountKey"
    value_attribute = "automountInformation"
    Copy to Clipboard Toggle word wrap
    注意

  2. ldap_uri = "ldap:///dc=example,dc=com"
    Copy to Clipboard Toggle word wrap

    ldap_uri = "ldap://ipa.example.com"
    search_base = "cn=location,cn=automount,dc=example,dc=com"
    Copy to Clipboard Toggle word wrap
    • <autofs_ldap_sasl_conf
           usetls="no"
           tlsrequired="no"
           authrequired="yes"
           authtype="GSSAPI"
           clientprinc="host/server.example.com@EXAMPLE.COM"
           />
      Copy to Clipboard Toggle word wrap

20.2. 

  1. # vim /etc/sssd/sssd.conf
    Copy to Clipboard Toggle word wrap
  2. [sssd]
    domains = ldap
    services = nss,pam,autofs
    Copy to Clipboard Toggle word wrap
  3. [nss]
    
    [pam]
    
    [sudo]
    
    [autofs]
    
    [ssh]
    
    [pac]
    Copy to Clipboard Toggle word wrap

  4. [domain/EXAMPLE]
    
    ldap_search_base = "dc=example,dc=com"
    ldap_autofs_search_base = "ou=automount,dc=example,dc=com"
    Copy to Clipboard Toggle word wrap
  5. # systemctl restart sssd.service
    Copy to Clipboard Toggle word wrap
  6. automount: sss files
    Copy to Clipboard Toggle word wrap
  7. # systemctl restart autofs.service
    Copy to Clipboard Toggle word wrap
  8. # ls /home/userName
    Copy to Clipboard Toggle word wrap

第 21 章 

21.1. 

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 to Clipboard Toggle word wrap

copy-method    path
Copy to Clipboard Toggle word wrap

empty /tmp
Copy to Clipboard Toggle word wrap

dirs /var/run
Copy to Clipboard Toggle word wrap

files /etc/resolv.conf
Copy to Clipboard Toggle word wrap

21.2. 

  1. READONLY=yes
    Copy to Clipboard Toggle word wrap
  2. /dev/mapper/luks-c376919e...  /  xfs  x-systemd.device-timeout=0,ro  1  1
    Copy to Clipboard Toggle word wrap
  3. # grubby --update-kernel=ALL --args="ro"
    Copy to Clipboard Toggle word wrap
  4. # grubby --update-kernel=ALL --remove-args="rw"
    Copy to Clipboard Toggle word wrap
  5. files /etc/example/file
    Copy to Clipboard Toggle word wrap
    重要

  • # mount -o remount,rw /
    Copy to Clipboard Toggle word wrap

第 22 章 

22.1. 

22.2. 

22.3. 

22.4. 

  1. # mount -o uquota /dev/xvdb1 /xfs
    Copy to Clipboard Toggle word wrap

  2. # mount -o gquota /dev/xvdb1 /xfs
    Copy to Clipboard Toggle word wrap

  3. # mount -o pquota /dev/xvdb1 /xfs
    Copy to Clipboard Toggle word wrap

  4. # 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
    Copy to Clipboard Toggle word wrap

22.5. 

  1. # xfs_quota
    Copy to Clipboard Toggle word wrap
  2. xfs_quota> quota username
    Copy to Clipboard Toggle word wrap
  3. xfs_quota> df
    Copy to Clipboard Toggle word wrap
  4. xfs_quota> help
    Copy to Clipboard Toggle word wrap
  5. xfs_quota> q
    Copy to Clipboard Toggle word wrap

22.6. 

  1. # xfs_quota -x /path
    Copy to Clipboard Toggle word wrap
  2. xfs_quota> report /path
    Copy to Clipboard Toggle word wrap

    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 [------]
    Copy to Clipboard Toggle word wrap
  3. xfs_quota> limit isoft=500m ihard=700m user
    Copy to Clipboard Toggle word wrap

    # xfs_quota -x -c 'limit isoft=500 ihard=700 john' /home/
    Copy to Clipboard Toggle word wrap

  4. xfs_quota> help
    Copy to Clipboard Toggle word wrap

  • 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 [------]
    Copy to Clipboard Toggle word wrap

22.7. 

  1. # echo 11:/var/log >> /etc/projects
    Copy to Clipboard Toggle word wrap
  2. # echo logfiles:11 >> /etc/projid
    Copy to Clipboard Toggle word wrap
  3. # xfs_quota -x -c 'project -s logfiles' /var
    Copy to Clipboard Toggle word wrap
  4. # xfs_quota -x -c 'limit -p bhard=1g logfiles' /var
    Copy to Clipboard Toggle word wrap

第 23 章 

23.1. 

  • # yum install quota
    Copy to Clipboard Toggle word wrap

23.2. 

  1. # mkfs.ext4 -O quota /dev/sda
    Copy to Clipboard Toggle word wrap
    注意

  2. # mkfs.ext4 -O quota -E quotatype=usrquota:grpquota:prjquota /dev/sda
    Copy to Clipboard Toggle word wrap
  3. # mount /dev/sda
    Copy to Clipboard Toggle word wrap

23.3. 

  1. # umount /dev/sda
    Copy to Clipboard Toggle word wrap
  2. # tune2fs -O quota /dev/sda
    Copy to Clipboard Toggle word wrap
    注意

  3. # tune2fs -Q usrquota,grpquota,prjquota /dev/sda
    Copy to Clipboard Toggle word wrap
  4. # mount /dev/sda
    Copy to Clipboard Toggle word wrap

23.4. 

  • # mount /dev/sda /mnt
    Copy to Clipboard Toggle word wrap
    # quotaon /mnt
    Copy to Clipboard Toggle word wrap
    注意

    # mount -o usrquota,grpquota,prjquota /dev/sda /mnt
    Copy to Clipboard Toggle word wrap
  • # quotaon -vaugP
    Copy to Clipboard Toggle word wrap
  • # quotaon -vugP /home
    Copy to Clipboard Toggle word wrap

23.5. 

注意

  1. # edquota username
    Copy to Clipboard Toggle word wrap

    Disk quotas for user testuser (uid 501):
    Filesystem   blocks   soft   hard   inodes   soft   hard
    /dev/sda      44043      0      0    37418      0      0
    Copy to Clipboard Toggle word wrap
  2. Disk quotas for user testuser (uid 501):
    Filesystem   blocks   soft   hard   inodes   soft   hard
    /dev/sda      44043  50000  55000    37418      0      0
    Copy to Clipboard Toggle word wrap

  • # quota -v testuser
    Disk quotas for user testuser:
    Filesystem  blocks  quota  limit  grace  files  quota  limit  grace
    /dev/sda      1000*  1000   1000             0      0      0
    Copy to Clipboard Toggle word wrap

23.6. 

  1. # edquota -g groupname
    Copy to Clipboard Toggle word wrap

    # edquota -g devel
    Copy to Clipboard Toggle word wrap

    Disk quotas for group devel (gid 505):
    Filesystem   blocks  soft  hard  inodes  soft  hard
    /dev/sda     440400     0     0   37418     0     0
    Copy to Clipboard Toggle word wrap

  • # quota -vg groupname
    Copy to Clipboard Toggle word wrap

23.7. 

  1. # echo 11:/var/log >> /etc/projects
    Copy to Clipboard Toggle word wrap
  2. # echo Logs:11 >> /etc/projid
    Copy to Clipboard Toggle word wrap
  3. # edquota -P 11
    Copy to Clipboard Toggle word wrap
    注意

  • # quota -vP 11
    Copy to Clipboard Toggle word wrap
    注意

23.8. 

  • # edquota -t
    Copy to Clipboard Toggle word wrap
重要

23.9. 

  • # quotaoff -vaugP
    Copy to Clipboard Toggle word wrap

23.10. 

  1. # repquota
    Copy to Clipboard Toggle word wrap

    *** 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
    Copy to Clipboard Toggle word wrap
  2. # repquota -augP
    Copy to Clipboard Toggle word wrap

第 24 章 

24.1. 

24.2. 

    • # fstrim mount-point
      Copy to Clipboard Toggle word wrap
    • # fstrim --all
      Copy to Clipboard Toggle word wrap

# fstrim /mnt/non_discard

fstrim: /mnt/non_discard: the discard operation is not supported
Copy to Clipboard Toggle word wrap

24.3. 

    • # mount -o discard device mount-point
      Copy to Clipboard Toggle word wrap

24.4. 

  1. ---
    - 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:
                  - sdb
                fs_type: xfs
                mount_point: /mnt/data
                mount_options: discard
    Copy to Clipboard Toggle word wrap

  2. $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

  3. $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

  • # ansible managed-node-01.example.com -m command -a 'findmnt /mnt/data'
    Copy to Clipboard Toggle word wrap

24.5. 

  • # systemctl enable --now fstrim.timer
    Created symlink /etc/systemd/system/timers.target.wants/fstrim.timer → /usr/lib/systemd/system/fstrim.timer.
    Copy to Clipboard Toggle word wrap

  • # 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:fstrim
    
    May 17 13:24:41 localhost.localdomain systemd[1]: Started Discard unused blocks once a week.
    Copy to Clipboard Toggle word wrap

第 25 章 

重要

25.1. 

重要

25.2. 

25.3. 

  1. # dnf install stratisd stratis-cli
    Copy to Clipboard Toggle word wrap
  2. # systemctl enable --now stratisd
    Copy to Clipboard Toggle word wrap

  • # 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.4M
    CPU: 1.436s
    CGroup: /system.slice/stratisd.service
    └─24141 /usr/libexec/stratisd --log-level debug
    Copy to Clipboard Toggle word wrap

25.4. 

注意

  1. # wipefs --all block-device
    Copy to Clipboard Toggle word wrap

  2. # stratis pool create my-pool block-device
    Copy to Clipboard Toggle word wrap

    # stratis pool create my-pool block-device-1 block-device-2
    Copy to Clipboard Toggle word wrap

  • # stratis pool list
    Copy to Clipboard Toggle word wrap

25.5. 

注意

25.6. 

  1. # wipefs --all block-device
    Copy to Clipboard Toggle word wrap

  2. # stratis key set --capture-key key-description
    Copy to Clipboard Toggle word wrap

  3. # stratis pool create --key-desc key-description my-pool block-device
    Copy to Clipboard Toggle word wrap

    # stratis pool create --key-desc key-description my-pool block-device-1 block-device-2
    Copy to Clipboard Toggle word wrap

  • # stratis pool list
    Copy to Clipboard Toggle word wrap

25.7. 

25.8. 

25.9. 

注意

  1. # stratis pool create pool-name /dev/sdb
    Copy to Clipboard Toggle word wrap
  2. # stratis pool overprovision pool-name <yes|no>
    Copy to Clipboard Toggle word wrap

  1. # 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
    Copy to Clipboard Toggle word wrap
  2. # stratis pool overprovision pool-name yes
    
    # 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
    Copy to Clipboard Toggle word wrap

25.10. 

注意

  • # stratis pool bind nbde --trust-url my-pool tang-server
    Copy to Clipboard Toggle word wrap

25.11. 

  • # stratis pool bind tpm my-pool
    Copy to Clipboard Toggle word wrap

25.12. 

  1. # stratis key set --capture-key key-description
    Copy to Clipboard Toggle word wrap

  2. # stratis pool list
    Copy to Clipboard Toggle word wrap

25.13. 

  • # stratis pool unbind clevis my-pool
    Copy to Clipboard Toggle word wrap

25.14. 

  • # stratis pool stop --name pool-name
    Copy to Clipboard Toggle word wrap
  • # stratis pool start --unlock-method <keyring|clevis> --name pool-name
    Copy to Clipboard Toggle word wrap
    注意

  • # stratis pool list
    Copy to Clipboard Toggle word wrap
  • # stratis pool list --stopped
    Copy to Clipboard Toggle word wrap
  • # stratis pool list --stopped --uuid UUID
    Copy to Clipboard Toggle word wrap

25.15. 

  1. # stratis filesystem create --size number-and-unit my-pool my-fs
    Copy to Clipboard Toggle word wrap

    例 25.1. 

    # stratis filesystem create --size 10GiB pool1 filesystem1
    Copy to Clipboard Toggle word wrap

  • # stratis fs list my-pool
    Copy to Clipboard Toggle word wrap

25.16. 

25.17. 

  • # mount /dev/stratis/my-pool/my-fs mount-point
    Copy to Clipboard Toggle word wrap

注意

25.18. 

  • /dev/stratis/my-pool/my-fs mount-point xfs defaults,x-systemd.requires=stratis-fstab-setup@pool-uuid.service,x-systemd.after=stratis-fstab-setup@pool-uuid.service dump-value fsck_value
    Copy to Clipboard Toggle word wrap
重要

第 26 章 

重要

26.1. 

  • # stratis pool add-data my-pool device-1 device-2 device-n
    Copy to Clipboard Toggle word wrap

26.2. 

第 27 章 

重要

27.1. 

重要

  • # stratis blockdev
    
    Pool Name   Device Node  Physical Size  State   Tier
    my-pool     /dev/sdb     9.10 TiB       In-use  Data
    Copy to Clipboard Toggle word wrap
  • # stratis pool
    
    Name    Total Physical Size  Total Physical Used
    my-pool            9.10 TiB              598 MiB
    Copy to Clipboard Toggle word wrap
  • # stratis filesystem
    
    Pool Name  Name  Used     Created            Device
    my-pool    my-fs 546 MiB  Nov 08 2018 08:03  /dev/stratis/my-pool/my-fs
    Copy to Clipboard Toggle word wrap

27.2. 

第 28 章 

重要

28.1. 

28.2. 

  • # stratis fs snapshot my-pool my-fs my-fs-snapshot
    Copy to Clipboard Toggle word wrap

28.3. 

  • # mount /dev/stratis/my-pool/my-fs-snapshot mount-point
    Copy to Clipboard Toggle word wrap

28.4. 

  1. # stratis filesystem snapshot my-pool my-fs my-fs-backup
    Copy to Clipboard Toggle word wrap
  2. # umount /dev/stratis/my-pool/my-fs
    # stratis filesystem destroy my-pool my-fs
    Copy to Clipboard Toggle word wrap
  3. # stratis filesystem snapshot my-pool my-fs-snapshot my-fs
    Copy to Clipboard Toggle word wrap
  4. # mount /dev/stratis/my-pool/my-fs mount-point
    Copy to Clipboard Toggle word wrap

28.5. 

  1. # umount /dev/stratis/my-pool/my-fs-snapshot
    Copy to Clipboard Toggle word wrap
  2. # stratis filesystem destroy my-pool my-fs-snapshot
    Copy to Clipboard Toggle word wrap

第 29 章 

重要

29.1. 

  1. # umount /dev/stratis/my-pool/my-fs
    Copy to Clipboard Toggle word wrap
  2. # stratis filesystem destroy my-pool my-fs
    Copy to Clipboard Toggle word wrap

  • # stratis filesystem list my-pool
    Copy to Clipboard Toggle word wrap

29.2. 

注意

29.3. 

  1. # stratis filesystem list my-pool
    Copy to Clipboard Toggle word wrap
  2. # umount /dev/stratis/my-pool/my-fs-1 \
             /dev/stratis/my-pool/my-fs-2 \
             /dev/stratis/my-pool/my-fs-n
    Copy to Clipboard Toggle word wrap
  3. # stratis filesystem destroy my-pool my-fs-1 my-fs-2
    Copy to Clipboard Toggle word wrap
  4. # stratis pool destroy my-pool
    Copy to Clipboard Toggle word wrap

  • # stratis pool list
    Copy to Clipboard Toggle word wrap

29.4. 

注意

第 30 章 

30.1. 

  • 注意

30.2. 

    • # mkfs.ext3 /dev/block_device
      Copy to Clipboard Toggle word wrap

    • # mkfs.ext3 -E stride=16,stripe-width=64 /dev/block_device
      Copy to Clipboard Toggle word wrap

    注意
    • # mkfs.ext3 -U UUID /dev/block_device
      Copy to Clipboard Toggle word wrap

    • # mkfs.ext3 -L label-name /dev/block_device
      Copy to Clipboard Toggle word wrap
  1. # blkid
    Copy to Clipboard Toggle word wrap

30.3. 

  1. # mkdir /mount/point
    Copy to Clipboard Toggle word wrap

    • # mount /dev/block_device /mount/point
      Copy to Clipboard Toggle word wrap
  2. # df -h
    Copy to Clipboard Toggle word wrap

30.4. 

    • # umount /dev/block_device
      # e2fsck -f /dev/block_device
      # resize2fs /dev/block_device size
      Copy to Clipboard Toggle word wrap

    • # resize2fs /mount/device size
      Copy to Clipboard Toggle word wrap
      注意

  1. # df -h
    Copy to Clipboard Toggle word wrap

第 31 章 

31.1. 

  • 注意

31.2. 

    • # mkfs.ext4 /dev/block_device
      Copy to Clipboard Toggle word wrap

    • # mkfs.ext4 -E stride=16,stripe-width=64 /dev/block_device
      Copy to Clipboard Toggle word wrap

    注意
    • # mkfs.ext4 -U UUID /dev/block_device
      Copy to Clipboard Toggle word wrap

    • # mkfs.ext4 -L label-name /dev/block_device
      Copy to Clipboard Toggle word wrap
  1. # blkid
    Copy to Clipboard Toggle word wrap

31.3. 

  1. # mkdir /mount/point
    Copy to Clipboard Toggle word wrap

    • # mount /dev/block_device /mount/point
      Copy to Clipboard Toggle word wrap
  2. # df -h
    Copy to Clipboard Toggle word wrap

31.4. 

    • # umount /dev/block_device
      # e2fsck -f /dev/block_device
      # resize2fs /dev/block_device size
      Copy to Clipboard Toggle word wrap

    • # resize2fs /mount/device size
      Copy to Clipboard Toggle word wrap
      注意

  1. # df -h
    Copy to Clipboard Toggle word wrap

31.5. 

Expand
   

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat