4.9. 文件系统和存储

RHEL 安装现在支持创建大小为 16 TiB 的交换分区

在以前的版本中,当安装 RHEL 时,安装程序会创建一个最多 128 GB 的 swap 分区来进行自动和手动分区。

在这个版本中,对于自动分区,安装程序会继续创建一个最多 128 GB 的 swap 分区,但当手动分区时,您可以创建一个 16 TiB 的 swap 分区。

(BZ#1656485)

意外删除(Surprise removal)NVMe 设备

在这个版本中,您可以在不预先通知操作系统的情况下从 Linux 操作系统中意外删除 NVMe 设备。这可提高 NVMe 设备的可用性,因为不需要额外的步骤来准备设备以按顺序删除,从而可以避免服务器停机时间以确保服务器可用。

注意以下几点:

  • 意外删除 NVMe 设备需要 kernel-4.18.0-193.13.2.el8_2.x86_64 或更高版本。
  • 要成功意外删除 NVMe 设备,可能需要硬件平台或软件的额外要求。
  • 不支持意外删除对系统操作很重要的 NVMe 设备。例如:您无法意外删除包含操作系统或者 swap 分区的 NVMe 设备。

(BZ#1634655)

Stratis 文件系统符号链接路径已更改

在这个版本中,Stratis 文件系统符号链接路径已从 /stratis/<stratis-pool>/<filesystem-name> 改为 /dev/stratis/<stratis-pool>/<filesystem-name>。因此,必须迁移所有现有的 Stratis 符号链接,才能使用新的符号链接路径。

使用包含的 stratis_migrate_symlinks.sh 迁移脚本,或重启您的系统来更新符号链接路径。如果您手动更改 systemd 单元文件或 /etc/fstab 文件来自动挂载 Stratis 文件系统,那么你必须使用新的符号链接路径来更新它们。

注意

如果您没有使用新的 Stratis 符号链接路径更新配置,或者临时禁用自动挂载,引导过程可能无法在下次重启或启动系统时完成。

(BZ#1798244)

Stratis 现在支持绑定加密池到附加 Clevis 加密策略

在这个版本中,您可以使用 Tang 服务器将加密的 Stratis 池绑定到 Network Bound Disk Encryption(NBDE),或绑定到信任的平台模块(TPM)2.0。将加密的 Stratis 池绑定到 NBDE 或 TPM 2.0 可方便自动解锁池。因此,您可以在每次系统重启后访问 Stratis 池,而无需在每次系统重启后提供内核密钥环描述。请注意,将 Stratis 池绑定到附加 Clevis 加密策略不会删除主内核密钥环加密。

(BZ#1868100)

新的挂载选项来控制在 XFS 和 ext4 文件系统中启用 DAX 的时间

此更新引进了新的挂载选项,这些选项与 FS_XFLAG_DAX inode 标志结合使用,为 XFS 和 ext4 文件系统上的文件提供更精细的直接访问 (DAX) 模式控制。在以前的版本中,使用 dax 挂载选项为整个文件系统启用 DAX。现在,可以根据每个文件启用直接访问模式。

磁盘上的标志 FS_XFLAG_DAX 用于有选择地为特定文件或目录启用或禁用 DAX。dax 挂载选项指定是否使用该标志:

  • -o dax=inode - 跟随 FS_XFLAG_DAX。如果没有指定 dax 选项,则这是默认设置。
  • -o dax=never - 永不启用 DAX,忽略 FS_XFLAG_DAX
  • -o dax=always - 永远启用 DAX,忽略 FS_XFLAG_DAX
  • -o dax - 一个传统选项,是 "dax=always" 的别名。这可能会在以后被删除,因此首选使用 "-o dax=always"。

您可以使用 xfs_io 实用程序的 chatter 命令设置 FS_XFLAG_DAX 标志:

# xfs_io -c "chattr +x" filename

(BZ#1838876、BZ#1838344)

现在支持 SMB Direct

在这个版本中,SMB 客户端支持 SMB Direct。

(BZ#1887940)

添加了用于挂载文件系统的新 API

在这个版本中,RHEL 8.4 中添加了一个基于名为文件系统上下文(struct fs_context)的内部内核结构挂载文件系统的新 API,从而在用户空间、VFS 和文件系统间传输挂载参数方面提供了更大的灵活性。另外,在文件系统上下文中还有以下系统调用进行操作:

  • fsopen() - 在内核中为 fsname 参数中指定的文件系统创建一个空的文件系统配置上下文,将其添加到创建模式,并将其附加到文件描述符,然后返回。
  • fsmount() - 采用 fsopen() 返回的文件描述符,并为在其中指定的文件系统 root 创建挂载对象。
  • fsconfig() - 向由 fsopen(2)或 fspick(2) 系统调用所设置的文件系统配置上下文提供参数并发布命令。
  • fspick() - 在内核中创建一个新的文件系统配置上下文,并为其附加一个预先存在的超级块,以便可以重新配置它。
  • move_mount() - 将挂载从一个位置移到另一个位置;它也可用于通过 OPEN_TREE_CLONE 系统调用附加由 fsmount()open_ tree() 创建的未附加的挂载。
  • open_tree() - 选择由pathname所指定的挂载对象,并将其附加到新文件描述符或克隆它,并将克隆附加到文件描述符。

请注意,基于 mount() 系统调用的旧 API 仍然受到支持。

如需更多信息,请参阅内核源树中的 Documentation/filesystems/mount_api.txt 文件。

(BZ#1622041)

vfat 文件系统 mtime 不再出现差异

在这个版本中,vfat 文件系统 mtime 在内存中和磁盘上写入时间间的差异不再存在。这种差异是由内存中和磁盘上 mtime 元数据之间的区别造成的,这不再发生。

(BZ#1533270)

RHEL 8.4 现在支持 close_range() 系统调用

在这个版本中,close_range() 系统调用被向后移植到 RHEL 8.4。这个系统调用可以有效地关闭给定范围内的所有文件描述符,防止在应用程序配置非常大的限制时按顺序关闭多种文件描述符时出现的时间问题。

(BZ#1900674)

添加了通过 NFSv4.2 协议支持用户扩展属性

在这个版本中增加了对用户扩展属性(RFC 8276)的 NFSV4.2 客户端和服务器端的支持,新增了了以下协议扩展:

新操作:

  • - GETXATTR - 获取文件的扩展属性
  • - SETXATTR - 为文件设置扩展属性
  • - LISTXATTR - 列出文件的扩展属性
  • - REMOVEXATTR - 删除文件的扩展属性

新的错误代码:

  • - NFS4ERR-NOXATTR - xattr 不存在
  • - NFS4ERR_XATTR2BIG - xattr 值太大

新属性:

  • - xattr_support - per-fs 只读属性决定是否支持 xattrs。当设置为 True 时,对象的文件系统支持扩展属性。

(BZ#1888214)