Red Hat Training

A Red Hat training course is available for RHEL 8

8.0 发行注记

Red Hat Enterprise Linux 8

Red Hat Enterprise Linux 8.0 发行注记

摘要

发行注记介绍了红帽企业 Linux 8.0 中实施的改进和附加功能,以及本版本中已知的问题,以及重要的程序错误修复、技术预览、已弃用的功能和其他详情。

对红帽文档提供反馈

我们感谢您对文档提供反馈信息。请让我们了解如何改进文档。要做到这一点:

  • 关于特定内容的简单评论,请确定您使用多页 HTML 格式查看文档。用鼠标指针高亮显示您想评论的文本部分。然后点击在高亮文本下面出现的 添加反馈,然后按照显示的步骤操作。
  • 要提交更复杂的反馈,请创建一个 Bugzilla ticket:

    1. 进入 Bugzilla 网站。
    2. 在 Component 中选择 Documentation
    3. Description 中输入您要提供的信息。包括文档相关部分的链接。
    4. Submit Bug

第 1 章 概述

基于 Fedora 28 和上游内核 4.18,红帽企业 Linux 8.0 为用户提供混合云部署的稳定、安全、一致的基础,以及支持传统和新兴工作负载所需的工具。该版本的主要内容包括:

distribution

  • 内容可以通过 BaseOS 和应用程序 流(AppStream)软件仓库获得。
  • AppStream 存储库支持传统 RPM 格式 - 模块 的新扩展。这允许一个组件的多个主要版本可用于安装。

如需更多信息,请参阅 第 3 章 RHEL 8 中的内容发布

软件管理

  • YUM 软件包管理器现在基于 DNF 技术,为模块化内容、更高的性能以及设计良好的稳定 API 与工具集成提供支持。

详情请查看 第 5.1.4 节 “软件管理”

Shell 和命令行工具

  • RHEL 8 提供以下 版本控制系统Git 2.18Mercurial 4.8Subversion 1.10

详情请查看 ???

动态编程语言、网页和数据库服务器

  • Python 3.6 是 RHEL 8 中的默认 Python 实现;对 Python 2.7 的支持有限。默认情况下不安装 Python 版本。
  • Node.js RHEL 中的新功能.从 RHEL 7 开始,其他 动态编程语言 已更新: PHP 7.2、Ruby 2.5Perl 5.26SWIG 3.0 现已可用。
  • 以下 数据库服务器 随 RHEL 8 一起发布: MariaDB 10.3MySQL 8.0PostgreSQL 10PostgreSQL 9.6Redis 5
  • RHEL 8 提供 Apache HTTP Server 2.4 并引进了新的 Web 服务器 nginx 1.14
  • Squid 已更新至版本 4.4,现在包括一个新的 代理缓存名称服务器Varnish Cache 6.0

如需更多信息,请参阅 第 5.1.7 节 “动态编程语言、网页和数据库服务器”

Desktop

  • GNOME Shell 已 rebase 到版本 3.28。
  • GNOME 会话和 GNOME 显示管理器将 Wayland 用作其默认显示服务器。X.Org 服务器( RHEL 7 中的默认显示服务器)也可用。

如需更多信息,请参阅 第 5.1.8 节 “Desktop”

安装程序和镜像创建

  • Anaconda 安装程序可以使用 LUKS2 磁盘加密,并在 NVDIMM 设备 中安装该系统。
  • Image Builder 工具允许用户以各种格式创建自定义系统镜像,包括准备在不同供应商的云中部署的镜像。
  • 在 RHEL 8 中,可以使用硬件管理控制台(HMC)和支持元素(SE)从 DVD 进行安装。

详情请查看 第 5.1.2 节 “安装程序和镜像创建”

内核

  • 扩展的 Berkeley Packet 过滤(eBPF) 功能使用户空间可以将自定义程序附加到各种点(套接字、追踪点、数据包接收)来接收和处理数据。此功能 作为技术预览提供
  • BPF 编译器集合(BCC)是用于创建高效内核跟踪和操作程序的工具,可作为 技术预览 使用。

如需更多信息,请参阅 第 5.3.1 节 “内核”

文件系统和存储

  • LUKS 版本 2(LUKS2)格式取代了传统的 LUKS(LUKS1)格式。dm-crypt 子系统和 cryptsetup 工具现在使用 LUKS2 作为加密卷的默认格式。

如需更多信息,请参阅 第 5.1.12 节 “文件系统和存储”

安全性

  • 系统范围的 加密策略 (包括 TLS、IPsec、SSH、DNSSEC 和 Kerberos 协议)会配置核心加密子系统。使用新的 update-crypto-policies 命令,管理员可以轻松在模式间切换:默认模式、传统模式、未来和 fips。
  • 现在,在系统中支持带有 PKCS #11智能卡 和硬件安全模块(HSM)。

如需更多信息,请参阅 第 5.1.15 节 “安全性”

网络

  • nftables 框架替换了默认网络数据包过滤功能中的 iptables
  • firewalld 守护进程现在使用 nftables 作为其默认后端。
  • 引入了对启用多个容器网络连接的 IPVLAN 虚拟网络驱动程序的支持。
  • eXpress Data Path(XDP)、用于流量控制的 XDPAddress Family eXpress Data Path(AF_XDP)作为扩展 Berkeley Packet Filtering(eBPF) 功能的一部分 作为技术预览提供。如需了解更多详细信息,请参阅 第 5.3.7 节 “网络”

有关其他功能,请参阅 第 5.1.14 节 “网络”

虚拟化

  • 现在,在 RHEL 8 中创建的虚拟机中支持并自动配置一个基于 PCI Express 的机器类型(Q35)。这在功能和虚拟设备的兼容性方面提供了各种改进。
  • 现在,可以使用 RHEL 8 web 控制台(也称为 Cockpit )创建和管理虚拟机。
  • QEMU 模拟器引入了 沙盒功能,为调用 QEMU 的系统提供可配置的限制,从而使虚拟机更安全。

如需更多信息,请参阅 第 5.1.16 节 “虚拟化”

编译器和开发工具

  • 基于版本 8.2 的 GCC 编译器支持更新的 C++ 标准版本、更好的优化、新的代码强化技术、改进的警告和新的硬件功能。
  • 现在,各种用于代码生成、操作和调试的工具可以通过实验方式处理 DWARF5 调试信息格式。
  • 有些工具(如 BCCPCPSystemTap )提供了对 eBPF 追踪的内核支持。
  • 基于版本 2.28 的 glibc 库添加了对 Unicode 11、较新的 Linux 系统调用、DNS 存根解析器的主要改进、额外的安全强化以及提高性能的支持。
  • RHEL 8 提供了 OpenJDK 11、OpenJDK 8、IcedTea-Web 和各种 Java 工具,如 AntMavenScala

详情请查看 第 5.1.11 节 “编译器和开发工具”

高可用性和集群

  • Pacemaker 集群资源管理器已升级到上游版本 2.0.0,它提供了一些程序错误修复和增强。
  • 在 RHEL 8 中,pcs 配置系统 完全支持 Corosync 3、knet 和节点名称。

如需更多信息,请参阅 第 5.1.13 节 “高可用性和集群”

其它资源

红帽客户门户网站 Labs

红帽客户门户网站 Labs 是客户门户网站的一个部分中的一组工具,地址为 https://access.redhat.com/labs/。红帽客户门户网站 Labs 中的应用程序可帮助您提高性能、快速解决问题、发现安全问题以及快速部署和配置复杂应用程序。一些最常用的应用程序有:

第 2 章 构架

Red Hat Enterprise Linux 8.0 带有内核版本 4.18.0-80,它支持以下构架:

  • AMD 和 Intel 64 位构架
  • 64 位 ARM 架构
  • IBM Power Systems, Little Endian
  • 64-bit IBM Z

请确定为每个构架购买正确的订阅。如需更多信息,请参阅 Red Hat Enterprise Linux 入门 - 附加构架。有关可用订阅列表,请查看客户门户网站中的 订阅使用

第 3 章 RHEL 8 中的内容发布

3.1. 安装

Red Hat Enterprise Linux 8 使用 ISO 镜像安装。AMD64、Intel 64 位、64 位 ARM、IBM Power Systems 和 IBM Z 架构有两种类型的 ISO 镜像:

  • 二进制 DVD ISO:包含 BaseOS 和 AppStream 软件仓库的完整安装镜像,并允许您在没有附加软件仓库的情况下完成安装。

    注意

    二进制 DVD ISO 镜像大于 4.7 GB,因此它可能不适用于单层 DVD。当使用二进制 DVD ISO 镜像创建可引导安装介质时,建议使用双层 DVD 或者 USB 设备。您还可以使用 Image Builder 工具创建自定义的 RHEL 镜像。有关镜像构建器的更多信息,请参阅 编写自定义的 RHEL 系统镜像文档。

  • 引导 ISO:用来引导到安装程序的最小引导 ISO 镜像。这个选项需要访问 BaseOS 和 AppStream 软件仓库来安装软件包。软件仓库是二进制 DVD ISO 镜像的一部分。

有关下载 ISO 镜像、创建安装介质和完成 RHEL 安装的说明,请参阅执行标准RHEL 安装文档。有关自动的 Kickstart 安装和其他高级主题,请参阅 执行高级 RHEL 安装文档。

3.2. 软件仓库

Red Hat Enterprise Linux 8 由两个主要软件仓库发布:

  • BaseOS
  • AppStream

两个软件仓库都需要一个基本的 RHEL 安装,所有 RHEL 订阅都包括它们。

BaseOS 仓库的内容旨在提供底层操作系统功能的核心组件,为所有安装提供基础操作系统的基础。这部分内容采用 RPM 格式,它的支持条款与之前的 RHEL 版本相似。有关通过 BaseOS 发布的软件包列表,请查看 软件包清单

Application Stream 仓库的内容包括额外的用户空间应用程序、运行时语言和数据库来支持各种工作负载和使用案例。Application Streams(应用程序流)以熟悉的 RPM 格式,作为RPM 格式的扩展,名为 模块(modules),或作为 Software Collections(软件集合)。有关 AppStream 中可用软件包列表,请查看 软件包清单

另外,所有 RHEL 订阅都可以使用 CodeReady Linux Builder 软件仓库。它为开发人员提供了额外的软件包。不支持包括在 CodeReady Linux Builder 存储库中的软件包。

有关 RHEL 8 软件仓库的详情,请查看 软件包清单

3.3. 应用程序流

Red Hat Enterprise Linux 8 引进了应用程序流(Application Streams)的概念。和操作系统软件包相比,现在为用户空间组件提供了多个版本且会更频繁地进行更新。这为自定义 Red Hat Enterprise Linux 提供了更大的灵活性,不会影响平台或特定部署的基本稳定性。

作为 Application Streams 提供的组件可打包为模块(module)或 RPM 软件包,并通过 RHEL 8 中的 AppStream 软件仓库提供。每个 Application Stream 组件都有其特定的生命周期,可能和 RHEL 8 的生命周期相同或更短。详情请查看 Red Hat Enterprise Linux 生命周期

模块是代表逻辑单元的软件包集合: 应用程序、语言堆栈、数据库或一组工具。这些软件包被一同构建、测试并发布。

模块流代表 Application Stream 组件的版本。例如,PostgreSQL 数据库服务器的几个流(版本)由 postgresql 模块提供,默认为 postgresql:10。在系统中只能安装 一 个模块流。不同的容器可以使用不同的版本。

详细的模块命令,请参考 安装、管理和删除用户空间组件文档。有关 AppStream 中可用模块列表,请查看 软件包清单

3.4. 使用 YUM/DNF 管理软件包

在 Red Hat Enterprise Linux 8 中,YUM 工具确保安装软件,该工具 基于 DNF 技术。我们有意坚持使用 yum 术语,以便与以前的 RHEL 主要版本保持一致。但是,如果您输入 dnf 而不是 yum,该命令可以正常工作,因为 yumdnf 的兼容性别名。

如需了解更多详细信息,请参阅以下文档:

第 4 章 RHEL 8.0.1 发行版本

4.1. 新特性

RHEL 系统角色已更新

为 RHEL 子系统提供配置接口的 rhel-system-roles 软件包已经更新。主要变更包括:

  • 改进了 network 角色中缺少配置集的处理。当通过将持久状态设置为 absent 来删除现有的 NetworkManager on-disk 配置集配置时,现在只删除配置集的持久配置,当前的运行时配置不会改变。因此,在上述情况下,对应的网络设备不再停机。
  • 修复了为 network 角色中的 VLAN 和 MACVLAN 接口指定最大传输单元(MTU)大小的问题。因此,使用 network 角色在 VLAN 和 MACVLAN 接口上设置 MTU 大小不再会失败,并显示以下错误消息:

    failure: created connection failed to normalize: nm-connection-error-quark:
    connection.type: property is missing (6)
  • selinuxtimesync 角色现在将所有记录的输入变量包含在其默认文件中(defaults/main.yml)。这样便可通过检查各自默认文件的内容来轻松确定角色支持哪些输入变量。
  • 修复了 kdumptimesync 角色,使其不会在检查模式中失败。

(BZ#1685902,BZ#1674004,BZ#1685904)

sos-collector rebase 到版本 1.7

在 RHEL 8.0.1 中,sos-collector 软件包已更新至 1.7 版本。主要变更包括:

  • sos-collector 现在,可以像从常规 RHEL 节点一样从 Red Hat Enterprise Linux CoreOS(RHCOS)节点收集 sosreport。用户不需要更改其运行 sos-collector 的方式。确定节点何时自动是 RHCOS 或 RHEL。
  • 从 RHCOS 节点收集时,sos-collector 将在节点上创建一个临时容器,并使用 support-tools 容器生成 sosreport。该容器将在完成后移除。
  • 使用 --cluster-type=none 选项允许用户跳过对节点上运行的 sosreport 命令的所有与集群相关的检查或修改,只需从通过 --nodes 参数传递的节点静态列表中收集。
  • Red Hat Satellite 现在是一个受支持的集群类型,允许从 Satellite 和任何胶囊收集 sosreport。

(BZ#1695764)

升级的编译器工具集

使用 RHEL 8.0.1 升级了以下编译器工具集,作为 Application Streams 分发:

  • Russt Toolset,向版本 1.35 提供 Rust 编程语言编译器 rustccargo 构建工具和依赖关系管理器以及所需的库。
  • Go Toolset,它为版本 1.11.6 提供 Go(golang)编程语言工具和库。

(BZ#1731500)

启用和禁用 SMT

RHEL 8 现在提供了并发多线程(SMT)配置。在 web 控制台中禁用 SMT 可让您缓解一系列 CPU 安全漏洞,例如:

(BZ#1713186)

4.2. 已知问题

IPSec 隧道中性能降低

使用 RHEL 8.0.1 中设置的 aes256_sha2 或者 aes-gcm256 IPSec 密码对 IPSec 隧道性能有负面影响。具有特定 VPN 设置的用户在 IPSec 隧道上的性能会下降 10%。这种回归并非由 Microarchitectural Data Sampling(MDS)缓解导致的,可以在缓解时看到缓解措施。

(BZ#1731362)

第 5 章 RHEL 8.0.0 发行版本

5.1. 新特性

这部分论述了 Red Hat Enterprise Linux 8 中引入的新功能和主要增强。

5.1.1. Web 控制台

注意

Web 控制台的订阅页面现在由新的 subscription-manager-cockpit 软件包提供。

在 web 控制台中添加了防火墙界面

RHEL 8 web 控制台中的 Networking 页面现在包含 Firewall 部分。在本节中,用户可以启用或禁用防火墙,以及添加、删除和修改防火墙规则。

(BZ#1647110)

Web 控制台现在默认可用

RHEL 8 web 控制台(也称为 Cockpit)的软件包现在是 Red Hat Enterprise Linux 默认软件仓库的一部分,因此可以立即在注册的 RHEL 8 系统中安装。

另外,在非最小安装 RHEL 8 中,会自动安装 web 控制台,控制台所需的防火墙端口会自动打开。登录前还添加了系统消息,提供有关如何启用或访问 Web 控制台的信息。

(JIRA:RHELPLAN-10355)

Web 控制台更好的 IdM 集成

如果您的系统在 Identity Management(IdM)域中注册,RHEL 8 web 控制台现在默认使用域的集中管理的 IdM 资源。这包括以下优点:

  • IdM 域的管理员可以使用 Web 控制台来管理本地计算机。
  • 控制台的 Web 服务器会自动切换到由 IdM 证书颁发机构(CA)发布并被浏览器接受的证书。
  • IdM 域中具有 Kerberos 票据的用户不需要提供登录凭据来访问 Web 控制台。
  • Web 控制台可以访问 IdM 域已知的 SSH 主机,而无需手动添加 SSH 连接。

请注意,要使 IdM 与 web 控制台集成正常工作,用户首先需要使用 IdM master 系统中的 enable-admins-sudo 选项运行 ipa-advise 工具。

(JIRA:RHELPLAN-3010)

Web 控制台现在与移动浏览器兼容

在这个版本中,Web 控制台菜单和页面可以在移动浏览器变体上导航。这样就可以从移动设备使用 RHEL 8 web 控制台管理系统。

(JIRA:RHELPLAN-10352)

Web 控制台前端页面现在显示缺少的更新和订阅

如果由 RHEL 8 web 控制台管理的系统有过时的软件包或 lapsed 订阅,现在会在系统的 web 控制台前页中显示警告信息。

(JIRA:RHELPLAN-10353)

Web 控制台现在支持 PBD 注册

在这个版本中,您可以使用 RHEL 8 web 控制台界面将基于策略的 Decryption(PBD)规则应用到受管系统上的磁盘。这使用 Clevis 解密客户端来协助 Web 控制台中的各种安全管理功能,例如自动解锁 LUKS 加密磁盘分区。

(JIRA:RHELPLAN-10354)

虚拟机现在可以使用 Web 控制台进行管理

Virtual Machines 页面现在可以添加到 RHEL 8 web 控制台界面中,用户可以创建和管理基于 libvirt 的虚拟机。

(JIRA:RHELPLAN-2896)

5.1.2. 安装程序和镜像创建

IBM Z 现在完全支持使用 SEHMC 从 DVD 安装 RHEL

现在,完全支持使用支持 元素(SE)和硬件 管理控制台(HMC)的 DVD 在 IBM Z 硬件 上安装 Red Hat Enterprise Linux 8。这个额外的功能简化了使用 SEHMC 的 IBM Z 上的安装过程。

使用二进制 DVD 引导时,安装程序会提示用户输入附加内核参数。要将 DVD 设置为安装源,请在内核参数中附加 inst.repo=hmc。然后安装程序启用了 SEHMC 文件访问,从 DVD 中获取 stage2 镜像,并提供对 DVD 中软件包的访问以供软件选择。

这个新功能消除了外部网络设置的要求,并扩展了安装选项。

(BZ#1500792)

安装程序现在支持 LUKS2 磁盘加密格式

Red Hat Enterprise Linux 8 安装程序现在默认使用 LUKS2 格式,但您可以从 Anaconda 的 Custom Partitioning 窗口中选择一个 LUKS 版本,或者使用 Kickstart 的 autopartlogvolpartRAID 命令中的新选项。

LUKS2 提供了许多改进和功能,例如,它扩展了磁盘上格式的功能,并提供灵活的元数据存储方式。

(BZ#1547908)

Anaconda 支持 RHEL 8 中的系统目的

在以前的版本中,Anaconda 不会为 Subscription Manager 提供系统目的信息。在 Red Hat Enterprise Linux 8.0 中,您可以使用 Anaconda 的 System Purpose 窗口或 Kickstart 的 syspurpose 命令,在安装过程中设置系统预期目的。安装完成后,Subscription Manager 在订阅系统时使用系统用途信息。

(BZ#1612060)

Pykickstart 支持 RHEL 8 中的系统目的

在以前的版本中,pykickstart 库无法为 Subscription Manager 提供系统目的信息。在 Red Hat Enterprise Linux 8.0 中,pykickstart 解析新的 syspurpose 命令,并记录系统在自动化和部分自动化安装过程中的预期目的。然后,信息将传递给 Anaconda,保存在新安装的系统上,并在 订阅系统时供订阅管理器 使用。

(BZ#1612061)

Anaconda 支持 RHEL 8 中的新内核引导参数

在以前的版本中,您只能从内核引导参数指定基本存储库。在 Red Hat Enterprise Linux 8 中,一个新的内核参数 inst.addrepo=<name>,<url> 允许您在安装过程中指定附加软件仓库。

这个参数有两个强制值:仓库名称和指向存储库的 URL。如需更多信息,请参阅 https://anaconda-installer.readthedocs.io/en/latest/boot-options.html#inst-addrepo

(BZ#1595415)

Anaconda 支持 RHEL 8 中的统一 ISO

在 Red Hat Enterprise Linux 8.0 中,统一的 ISO 会自动加载 BaseOS 和 AppStream 安装源存储库。

这个功能适用于安装时载入的第一个基本存储库。例如:如果您在没有配置软件仓库的情况下引导安装,且在 GUI 中将统一 ISO 作为基本软件仓库,或者使用指向统一 ISO 的 inst.repo= 选项引导安装。因此,AppStream 软件仓库会在 Installation Source GUI 窗口的 Additional Repositories 部分启用。您不能删除 AppStream 存储库或更改其设置,但您可以在 安装源中禁用它。如果您使用不同基础程序库引导安装,然后将其改为统一 ISO,则该功能将不起作用。如果这样做,基本软件仓库将被替换。但是 AppStream 软件仓库不会被替换并指向原始文件。

(BZ#1610806)

Anaconda 可以在 Kickstart 脚本中安装模块化软件包

Anaconda 安装程序已扩展,以处理与应用程序流相关的所有功能:模块、流和配置集。Kickstart 脚本现在可以启用模块和流组合、安装模块配置集以及安装模块化软件包。如需更多信息,请参阅 执行高级 RHEL 安装

(JIRA:RHELPLAN-1943)

nosmt 引导选项现在包括在 RHEL 8 安装选项中

nosmt 引导选项包括在传递给新安装的 RHEL 8 系统的安装选项中。

(BZ#1677411)

RHEL 8 支持从本地硬盘中的软件仓库安装

在以前的版本中,从硬盘安装 RHEL 需要 ISO 镜像作为安装源。但是,RHEL 8 ISO 镜像对于某些文件系统来说可能太大,例如: FAT32 文件系统无法存储大于 4 GiB 的文件。

在 RHEL 8 中,您可以使用本地硬盘中的软件仓库启用安装。您只需要指定目录而不是 ISO 镜像。例如:'inst.repo=hd:<device>:<path to the repository>'

(BZ#1502323)

RHEL 8 中提供了使用 Image Builder 进行自定义系统镜像创建

Image Builder 工具可让用户创建自定义的 RHEL 镜像。镜像构建器位于 AppStream 中 lorax-composer 包.

使用镜像构建器,用户可以创建包含其他软件包的自定义系统镜像。镜像构建器功能可以通过以下方式访问:

  • web 控制台中的图形用户界面
  • composer-cli 工具中的命令行界面。

镜像构建器输出格式包括:

  • 实时 ISO 磁盘镜像
  • 可以直接用于虚拟机或 OpenStack 的 qcow2 文件
  • 文件系统镜像文件
  • Azure、VMWare 和 AWS 的云镜像

如需了解更多有关镜像构建器的信息,请参阅文档标题 组成自定义的 RHEL 系统镜像

(JIRA:RHELPLAN-7291, BZ#1628645, BZ#1628646, BZ#1628647, BZ#1628648)

添加了新的 kickstart 命令: authselectmodules

在这个版本中,添加了以下 kickstart 命令:

  • authselect: 使用 authselect 命令在安装过程中设置系统验证选项。您可以使用 authselect 替代已弃用的 authauthconfig Kickstart 命令。如需更多信息,请参阅 执行高级安装 指南中的 authselect 部分。
  • module: 使用 module 命令在 kickstart 脚本中启用软件包模块流。如需更多信息,请参阅 执行高级安装指南中的 module 部分。

(BZ#1972210)

5.1.3. 内核

RHEL 8.0 中的内核版本

Red Hat Enterprise Linux 8.0 带有内核版本 4.18.0-80。

(BZ#1797671)

ARM 52 位物理寻址现已可用

在这个版本中,支持 64 位 ARM 架构的 52 位物理寻址(PA)。这比之前的 48 位 PA 提供更大的地址空间。

(BZ#1643522)

IOMMU 代码支持 RHEL 8 中的 5 级页表

Linux 内核中的 I/O 内存管理单元(IOMMU)代码已更新,以支持 Red Hat Enterprise Linux 8 中的 5 级页表。

(BZ#1485546)

支持 5 级分页

在 Linux 内核中添加了新的 P4d_t 软件页表类型,以便在 Red Hat Enterprise Linux 8 中支持 5 级分页。

(BZ#1485532)

内存管理支持 5 级页表

借助红帽企业 Linux 7,现有内存总线的虚拟/物理内存寻址容量为 48/46 位,Linux 内核实施了 4 级页表,以将这些虚拟地址管理到物理地址。物理总线寻址行会使物理内存上限限制为 64TB。

这些限制已扩展到 57/52 位的虚拟/物理内存寻址,其中包括 128 PiB 虚拟地址空间和 4 PB 物理内存容量。

通过扩展地址范围,Red Hat Enterprise Linux 8 中的内存管理增加了对 5 级页面表实现的支持,以便可以处理扩展的地址范围。

(BZ#1485525)

kernel-signing-ca.cer 移到 RHEL 8 中的 kernel-core

在所有 Red Hat Enterprise Linux 7 版本中,kernel-signing-ca.cer 公钥都位于 kernel-doc 软件包中。但是,在 Red Hat Enterprise Linux 8 中,kernel-signing-ca.cer 已为每个构架重新定位到 kernel-core 软件包中。

(BZ#1638465)

spectre V2 缓解默认从 IBRS 改为 Retpolines

Spectre V2 漏洞(CVE-2017-5715)的默认缓解方案,适用于有 6th Generation Intel Core Processors 及其接近衍生产品 [1] 的系统(CVE-2017-5715)已从 Indirect Branch RetpoedSpeculation(IBRS)改为 Red Hat Enterprise Linux 8 中的 Retpoline。由于 Intel 建议与 Linux 社区中使用的默认值保持一致,并恢复性能损失,红帽已实施这一更改。但请注意,在某些情况下使用 Retpolines 可能无法完全缓解 Spectre V2。Intel 的回复文档 [2] 描述了任何暴露情况。本文档还说明攻击的风险较低。

对于需要完全 Spectre V2 缓解的用例,用户可以通过内核引导行选择 IBRS,方法是添加 spectre_v2=ibrs 标志。

如果没有使用 Retpoline 支持构建一个或多个内核模块,/sys/devices/system/cpu/vulnerabilities/spectre_v2 文件将指示漏洞,/var/log/messages 文件会识别出错模块。如需更多信息 ,请参阅如何确定哪些模块负责 spectre_v2 返回"Vulnerable: Retpoline with insecure module(s)"?

[1] "6 代 Intel 核心处理器及其近乎衍生产品"是 Intel 的 Retpolines 文档所谓的"Skylake-generation"。

[2] Retpoline:一个分支目标入侵缓解 - 白皮书

(BZ#1651806)

Intel® Omni-Path Architecture (OPA) 主机软件

Red Hat Enterprise Linux 8 完全支持 Intel Omni-Path 架构(OPA)主机软件。

Intel OPA 为在集群环境中的计算和 I/O 节点之间的高性能数据传输(高带宽、高消息率、低延迟)提供主机 Fabric Interface(HFI)硬件初始化和设置。

有关安装 Intel Omni-Path 架构文档的说明,请参阅 :https://www.intel.com/content/dam/support/us/en/documents/network-and-i-o/fabric-products/Intel_OP_Software_RHEL_8_RN_K51383.pdf

(BZ#1683712)

NUMA 支持 RHEL 8 中的更多节点

在这个版本中,在具有 64 位 ARM 架构的系统中,非一致性内存访问(NUMA)节点数从 4 个 NUMA 节点增加到 Red Hat Enterprise Linux 8 中的 8 NUMA 节点。

(BZ#1550498)

现在,RHEL 8 中默认启用 IOMMU passthrough

默认情况下,启用了输入/输出内存管理单元(IOMMU)passthrough。这提高了 AMD 系统的性能,因为主机禁用 Direct Memory Access(DMA)重新映射。在这个版本中,Intel 系统也默认禁用了 DMA 重新映射的 Intel 系统的一致性。用户可以通过在内核命令行中指定 iommu.passthrough=offiommu=nopt 参数(包括虚拟机监控程序)来禁用此类行为(并启用 DMA 重新映射)。

(BZ#1658391)

RHEL8 内核现在支持 5 级页表

Red Hat Enterprise Linux 内核现在完全支持具有最多 5 级页表的未来 Intel 处理器。这可让处理器支持多达 4PB 的物理内存和 128PB 虚拟地址空间。使用大量内存的应用程序现在可以尽可能多地使用系统提供的内存,而不受 4 级页表的限制。

(BZ#1623590)

RHEL8 内核支持针对将来 Intel CPU 的增强 IBRS

Red Hat Enterprise Linux 内核现在支持使用增强的 Indirect Branch Restricted Speculation(IBRS)功能来缓解 Spectre V2 漏洞。启用后,IBRS 的性能将优于 Retpolines(默认)来缓解 Spectre V2,并且不会影响 Intel Control-flow Enforcement 技术。因此,在未来 Intel CPU 上启用 Spectre V2 的性能损失会较小。

(BZ#1614144)

bpftool 用于检查和操作基于 eBPF 的程序和映射

Linux 内核中添加了 bpftool 工具,用于根据扩展的 Berkeley Packet 过滤(eBPF)对程序和映射进行检查和简单操作。bpftool 是内核源树的一部分,由 bpftool 软件包提供,该软件包作为 kernel 软件包的子软件包包含在内。

(BZ#1559607)

kernel-rt 源已更新

kernel-rt 源已更新为使用最新的 RHEL 内核源树。最新的内核源树现在使用上游 v4.18 实时补丁集,与之前的版本相比,它提供了很多程序错误修复和增强。

(BZ#1592977)

5.1.4. 软件管理

YUM 性能改进和支持模块化内容

在 Red Hat Enterprise Linux 8 中,新版本的 YUM 工具保证安装软件,该工具基于 DNF 技术(YUMv4)。

yum v4 比 RHEL 7 上之前使用的 YUM v3 有以下优点:

  • 提高了性能
  • 支持模块化内容
  • 设计良好的稳定 API,用于与工具集成

有关新 YUM v4 工具和 RHEL 7 中之前版本的 YUM v3 之间的差异的详细信息,请参阅 DNF CLI 与 YUM 相比的更改

yum v4 在使用命令行、编辑或者创建配置文件时与 YUM v3 兼容。

要安装软件,您可以使用 yum 命令及其具体选项,方式与在 RHEL 7 中相同。

所选的一些 yum 插件和工具已被移植到新的 DNF 后端,可使用与 RHEL 7 中相同的名称进行安装。它们也提供兼容性符号链接,因此可在通常的位置找到 二进制文件、配置文件和目录。

请注意,YUM v3 提供的旧版本的 Python API 不再可用。我们建议用户将插件和脚本迁移到 YUM v4(DNF Python API)提供的新 API 中,它是稳定的且被完全支持。DNF Python API 请参见 DNF API 参考

Libdnf 和 Hawkey API(C 和 Python)不稳定,在 Red Hat Enterprise Linux 8 生命周期中可能会改变。

有关 YUM 软件包和工具可用性更改的详情,请参阅使用 RHEL 8 的注意事项

YUM v3 的一些功能在 YUM v4 中的行为可能不同。如果此类更改对您的工作流有影响,请向红帽支持创建一个问题单,请参阅 如何打开和管理客户门户网站中的支持问题单所述?

(BZ#1581198)

RHEL 8 中的主要 RPM 功能

Red Hat Enterprise Linux 8 使用 RPM 4.14。这个版本比 RPM 4.11 提供了很多改进,具体信息包括在 RHEL 7 中。最显著的功能包括:

  • debuginfo 软件包可以并行安装
  • 支持弱依赖项
  • 支持富或布尔值依赖项
  • 支持大小超过 4 GB 的打包文件
  • 支持文件触发器

另外,最显著的变化包括:

  • 更严格的 spec-parser
  • 简化对非详细模式输出的签名检查
  • 在宏中添加和弃用

(BZ#1581990)

RPM 现在会在开始安装前验证整个软件包内容

在 Red Hat Enterprise Linux 7 中,RPM 实用程序在解压缩时验证了单个文件的内容。然而,由于多个原因,这是不够的:

  • 如果有效负载损坏,则只有在执行脚本操作后才会注意到它,而这些脚本操作是不可避免的。
  • 如果有效负载损坏,则软件包升级会在替换之前版本的某些文件后中止,这会破坏正常安装。
  • 单个文件的哈希在解压缩的数据上执行,这使得 RPM 易受解压缩器漏洞的影响。

在 Red Hat Enterprise Linux 8 中,使用可用的最佳哈希在单独步骤安装前验证整个软件包。

在 Red Hat Enterprise Linux 8 中构建的软件包使用压缩有效负载中的新的 SHA-256 哈希。在经过签名的包中,有效负载哈希还受到签名的保护,因此在不破坏包头上的签名和其他哈希的情况下无法更改载荷哈希。旧软件包使用标头和有效负载的 MD5 哈希,除非配置禁用。

%_pkgverify_level 宏可用于在安装前额外启用强制签名验证,或完全禁用有效负载验证。另外,%_pkgverify_flags 宏可用于限制允许哪些哈希和签名。例如,可以禁用弱 MD5 哈希的使用,但会牺牲与旧软件包的兼容性。

(JIRA:RHELPLAN-10596)

5.1.5. 基础架构服务

RHEL 8 中推荐的 Tuned 配置集的显著变化

在这个版本中,根据以下规则选择推荐的 Tuned 配置集(由 tuned-adm recommend 命令报告) - 第一个匹配规则生效:

  • 如果 syspurpose 角色(由 syspurpose show 命令报告)包含 atomic,同时:

    • 如果 Tuned 在裸机中运行,则会选择 atomic-host 配置集
    • 如果 Tuned 在虚拟机中运行,则会选择 atomic-guest 配置集
  • 如果 Tuned 在虚拟机中运行,则会选择 virtual-guest 配置集
  • 如果 syspurpose 角色包含 desktopworkstation,且机箱类型(由 dmidecode报告)是 NotebookLaptopPortable,则会选择 balanced 配置集
  • 如果以上规则都不匹配,则会选择 throughput-performance 配置集

(BZ#1565598)

named 生成的 文件可以在工作目录中写入

在以前的版本中,指定 守护进程将一些数据存储在工作目录中,在 Red Hat Enterprise Linux 中是只读的。在这个版本中,所选文件的路径已被更改到子目录中,允许写入。现在,默认目录 Unix 和 SELinux 权限允许写入目录。目录中分发的文件对 named 仍为只读。

(BZ#1588592)

Geolite Databases 已被 Geolite2 Databases 替代

Red Hat Enterprise Linux 7 中存在的 Geolite Databases 被 Red Hat Enterprise Linux 8 中的 Geolite2 Databases 替代。

Geolite 数据库由 GeoIP 软件包提供。上游不再支持此软件包与传统数据库。

Geolite2 数据库由多个软件包提供。libmaxminddb 软件包包括库和 mmdblookup 命令行工具,可启用手动搜索地址。旧的 GeoIP 软件包中的 geoipupdate 二进制文件现在由 geoipupdate 软件包提供,它可以下载旧的数据库和新的 Geolite2 数据库。

(JIRA:RHELPLAN-6746)

CUPS 日志由 journald 处理

在 RHEL 8 中,CUPS 日志不再存储在 /var/log/cups 目录中的特定文件中,这在 RHEL 7 中使用。在 RHEL 8 中,所有类型的 CUPS 日志都与其他程序的日志一起集中记录在 systemd journald 守护进程中。要访问 CUPS 日志,请使用 journalctl -u cups 命令。如需更多信息,请参阅使用 CUPS 日志

(JIRA:RHELPLAN-12764)

RHEL 8 中的主要 BIND 功能

RHEL 8 在包含 BIND(Berkeley Internet Name Domain)版本 9.11。与版本 9.10 相比,这个版本的 DNS 服务器引入了多个新功能和功能变化。

新特性:

  • 添加了一个新的置备二级服务器的方法,称为 Catalog Zones
  • Domain Name System Cookies 现在由 named 服务和 dig 工具程序发送。
  • 现在,Response Rate Limiting 功能可以帮助缓解 DNS 扩展攻击。
  • 提高了响应策略区域(RPZ)的性能。
  • 添加了名为 map 的新区文件格式。使用此格式存储的区域数据可以直接映射到内存中,这样区域加载就能大大加快。
  • 添加了一个名为 delv 的新工具(域实体查找和验证),它具有类似于 dig 的语义,用于查找 DNS 数据并执行内部 DNS 安全扩展(DNSSEC)验证。
  • 现在提供了一个新的 mdig 命令。此命令是 'dig' 命令的一个版本,它发送多个管道查询并等待响应,而不是发送一个查询并等待响应,然后再发送下一个查询。
  • 添加了一个新的 prefetch 选项来提高递归解析器性能。
  • 添加了一个新的 in-view 区选项,它允许在视图间共享区数据。当使用这个选项时,多个视图可以在不需要在内存中存储多个副本的情况下为相同的区域服务。
  • 添加了一个新的 max-zone-ttl 选项,它强制执行区的最大 TTL。当加载包含更高 TTL 的区域时,加载会失败。带有更高 TTL 的动态 DNS(DDNS)更新会被接受,但 TTL 会被截断。
  • 添加了新的配额,将递归解析器发送的查询限制到遇到拒绝服务攻击的权威服务器。
  • nslookup 工具现在默认查找 IPv6 和 IPv4 地址。
  • named 服务现在在启动前检查其他名称服务器进程是否正在运行。
  • 当载入签名区时,named 现在会检查资源记录签名(RSIG)的开始时间是否在将来,如果是,它会立即重新生成 RRSIG。
  • 区域传送现在使用较小的消息大小来改进消息压缩,这降低了网络使用量。

功能更改:

  • HTTP 接口提供了统计频道的版本 3 XML 模式,其中包括新统计数据和用于更快解析的 XML 树。旧版本 2 XML 模式不再被支持。
  • named 服务现在默认侦听 IPv6 和 IPv4 接口。
  • named 服务不再支持 GeoIP。由查询发送方假定位置定义的访问控制列表(ACL)不可用。

(JIRA:RHELPLAN-1820)

5.1.6. Shell 和命令行工具

nobody 用户替换 nfsnobody

在 Red Hat Enterprise Linux 7 中,有:

  • ID 为 99 的 nobody 用户和组对,以及
  • ID 为 65534 的 nfsnobody 用户和组对,这是默认的内核溢出 ID。

它们都已合并到 nobody 用户和组对中,使用 Red Hat Enterprise Linux 8 中的 65534 ID。新安装不再创建 nfsnobody 对。

这个更改减少了对 nobody 拥有但与 NFS 无关的文件的混淆。

(BZ#1591969)

RHEL 8 中的版本控制系统

RHEL 8 提供以下版本控制系统:

  • Git 2.18 是一个分布式修订控制系统,它带有一个分散的构架。
  • Mercurial 4.8 是一个轻量级分布式版本控制系统,用于高效处理大型项目。
  • Subversion 1.10 是一个集中版本控制系统。

请注意,RHEL 7 提供的 Concurrent Versions System(CVS)和修订控制系统(RCS)没有与 RHEL 8 一起发布。

(BZ#1693775)

Subversion 1.10 中的显著变化

Subversion 1.10 自 RHEL 7 中发布 1.7 版以来引进了许多新功能,以及以下兼容性更改:

  • 由于用于支持语言绑定的 Subversion 库中不兼容,Subversion 1.10Python 3 绑定不可用。因此,不支持为 Subversion 需要 Python 绑定的应用程序。
  • 基于 Berkeley DB 的软件仓库不再被支持。在迁移前,使用 svnadmin dump 命令备份使用 Subversion 1.7 创建的软件仓库。安装 RHEL 8 后,使用 svnadmin load 命令恢复软件仓库。
  • RHEL 7 中 Subversion 1.7 客户端签出的现有工作副本必须升级到新格式,然后才能从 Subversion 1.10 使用。安装 RHEL 8 后,请在每个工作副本中运行 svn upgrade 命令。
  • 不再支持通过 https:// 访问软件仓库的智能卡验证。

(BZ#1571415)

显著变化 dstat

RHEL 8 提供了 dstat 工具的新版本。这个工具现在是 Performance Co-Pilot(PCP)工具包的一部分。/usr/bin/dstat 文件和 dstat 软件包现在由 pcp-system-tools 软件包提供。

新版本的 dstat 与 RHEL 7 中的 dstat 相比包括以下改进:

  • python3 支持
  • 历史分析
  • 远程主机分析
  • 配置文件插件
  • 新的性能指标

(BZ#1684947)

5.1.7. 动态编程语言、网页和数据库服务器

RHEL 8 中,Python 3 是默认的 Python 实现

Red Hat Enterprise Linux 8 带有 Python 3.6。但默认情况下可能不会安装该软件包。要安装 Python 3.6,使用 yum install python3 命令。

Python 2.7 包括在 python2 软件包中。但是,Python 2 的生命周期会更短,其目的在于让客户更顺利地过渡到 Python 3

默认 python 软件包和未指定版本的 /usr/bin/python 可执行文件都不是在 RHEL 8 中发布。我们建议用户直接使用 python3 或者 python2。另外,管理员也可以使用 alternatives 命令配置未指定版本的 python 命令。

详情请查看 在 Red Hat Enterprise Linux 8 中使用 Python

(BZ#1580387)

Python 脚本必须在 RPM 构建时以 hashbangs 指定主要版本

在 RHEL 8 中,可执行 Python 脚本应该使用 hashbangs(shebangs)来明确指定至少主要 Python 版本。

构建任何 RPM 软件包时,/usr/lib/rpm/redhat/brp-mangle-shebangs buildroot 策略(BRP)脚本会自动运行。这个脚本尝试更正所有可执行文件中的 hashbang。当脚本遇到没有指定 Python 主要版本的 Python hashbangs 时,它会生成错误,RPM 构建会失败。这种模糊的 hashbangs 示例包括:

  • #! /usr/bin/python
  • #! /usr/bin/env python

要在 Python 脚本中修改 hashbangs 会导致 RPM 构建时出现这些构建错误,请使用 platform-python-devel 软件包中的 pathfix.py 脚本:

pathfix.py -pn -i %{__python3} PATH ...

可以指定多个 PATH。如果 PATH 是一个目录,pathfix.py 将以递归方式扫描与模式 ^[a-zA-Z0-9_]+\.py$ 匹配的任何 Python 脚本,而不仅仅是具有模糊哈希bang 的 Python 脚本。将运行 pathfix.py 的命令添加到 %prep 部分,或者在 %install 部分的末尾。

如需更多信息,请参阅 Python 脚本中处理 hashbangs

(BZ#1583620)

PHP 中的显著变化

Red Hat Enterprise Linux 8 带有 PHP 7.2。这个版本在 RHEL 7 中包括以下主要更改,它包括在 PHP 5.4 中:

  • PHP 默认使用 FastCGI Process Manager(FPM)(与线程 httpd一起使用的安全)
  • php_valuephp-flag 变量不应该在 httpd 配置文件中使用;它们应在池配置中设置: /etc/php-fpm.d/*.conf
  • PHP 脚本错误和警告记录到 /var/log/php-fpm/www-error.log 文件,而不是记录到 /var/log/httpd/error.log
  • 当更改 PHP max_execution_time 配置变量时,应增加 httpd ProxyTimeout 设置以匹配
  • 运行 PHP 脚本的用户现在在 FPM 池配置中配置( /etc/php-fpm.d/www.conf 文件,apache 用户是默认设置)
  • php-fpm 服务需要在配置更改或安装新扩展后重启
  • zip 扩展已经从 php-common 软件包移动到单独的软件包中, php-pecl-zip

删除了以下扩展:

  • aspell
  • mysql (注意 mysqlipdo_mysql 扩展仍可用,由 php-mysqlnd 软件包提供)
  • memcache

(BZ#1580430, BZ#1691688)

Ruby 中的显著变化

RHEL 8 提供 Ruby 2.5,它比 RHEL 7 中的 Ruby 2.0.0 提供了多个新功能和增强。主要变更包括:

  • 添加了增量垃圾收集器。
  • 添加了 Refinements 语法。
  • 现在会对符号进行垃圾收集。
  • $SAFE=2$SAFE=3 安全级别现已过时。
  • FixnumBignum 类已统一为 Integer 类。
  • 通过优化 Hash 类提供了性能,改进了对实例变量的访问,Mutex 类更小、更快。
  • 某些旧的 API 已被弃用。
  • 捆绑的库,如 RubyGemsRakeRDocPsychMinitesttest-unit 已更新。
  • 以前,通过 Ruby 发布的其它库,如 mathnDLext/tkXMLRPC 已被弃用或不再包含。
  • SemVer 版本方案现在用于 Ruby 版本。

(BZ#1648843)

Perl 中的显著变化

RHEL 8 中的 Perl 5.26 与 RHEL 7 中的版本相比有以下变化:

  • Unicode 9.0 现在被支持。
  • 提供了新的 op-entryloading-fileloaded-file SystemTap 探测。
  • 在分配 scalar 时,使用写时复制机制来提高性能。
  • 添加了用于透明处理 IPv4 和 IPv6 套接字的 IO::Socket::IP 模块。
  • 添加了以结构方式访问 perl -V 数据的 Config::Perl::V 模块。
  • 添加了一个新的 perl-App-cpanminus 软件包,其中包含从 Perl Archive Network(CPAN)仓库获取、提取、构建和安装模块的 cpanm 工具。
  • 出于安全考虑,当前目录 . 已从 @INC 模块搜索路径中删除。
  • 现在,当因为上述行为更改而加载文件时,do 语句会返回弃用警告。
  • do subroutine(LIST) 调用不再被支持,并导致语法错误。
  • 现在,默认随机化哈希。每个 perl 运行的哈希更改返回键和值的顺序。要禁用随机化,将 PERL_PERTURB_KEYS 环境变量设置为 0
  • 不再允许在正则表达式中使用未转义的 { 字符。
  • 删除了对 $_ 变量的样式范围支持。
  • 在阵列或散列中使用 defined 运算符会导致严重错误。
  • UNIVERSAL 模块导入函数会导致致命错误。
  • find2perls2pa2p c2phpstruct 工具已被删除。
  • ${^ENCODING} 工具已被删除。encoding sragma 的默认模式不再被支持。要在 UTF-8 以外的其它编码中写入源代码,请使用编码的 Filter 选项。
  • perl 打包现在与上游社区一致。perl 软件包也会安装核心模块,而 /usr/bin/perl 解释程序由 perl-interpreter 软件包提供。在以前的版本中,perl 软件包只包含一个最小解析程序,而 perl-core 软件包包括解释器和核心模块。
  • IO::Socket::SSL Perl 模块不再从 ./certs/my-ca.pem 文件或 ./ca 目录加载证书颁发机构证书、来自 ./certs/server-key.pem 文件的服务器私钥、来自 ./certs/server-cert.pem 文件的服务器证书、来自 ./certs/client-key.pem 文件的客户端私钥,以及来自 ./certs/client-cert.pem 文件的客户端证书。明确指定文件的路径。

(BZ#1511131)

Node.js RHEL 提供了新功能

Node.js 是一个软件开发平台,用于使用 JavaScript 编程语言开发快速、可扩展的网络应用程序。它首次在 RHEL 中提供。之前,它只通过 Software Collection 提供。RHEL 8 提供 Node.js 10

(BZ#1622118)

SWIG 中的显著变化

RHEL 8 包含简化的 wrapper 和 Interface Generator(SWIG)版本 3.0,它比 RHEL 7 中发布的版本 2.0 提供了大量新功能、增强和程序错误修复。最值得注意的是,实现了对 C++11 标准的支持。SWIG 现在还支持 Go 1.6PHP 7Octave 4.2Python 3.5

(BZ#1660051)

Apache 中的显著变化 httpd

RHEL 8 随 Apache HTTP 服务器 2.4.37 一起发布。这个版本比 RHEL 7 中的 httpd 版本包括以下更改:

  • HTTP/2 支持现在由 mod_http2 软件包提供,它是 httpd 模块的一部分。
  • 现在 mod_md 软件包支持使用自动证书管理环境(ACME)协议进行自动 TLS 证书置备和续订(用于证书供应商,如 Let’s Encrypt
  • Apache HTTP 服务器现在支持直接从 PKCS#11 模块的硬件安全令牌加载 TLS 证书和私钥。因此,mod_ssl 配置现在可以使用 PKCS#11 URL 识别 TLS 私钥,以及可选的 SSLCertificateKeyFileSSLCertificateFile 指令中的 TLS 证书。
  • 使用 Apache HTTP 服务器配置的多处理模块(MPM)已从多进程(称为 prefork)的派生模型更改为高性能多线程模型 event。任何不是线程的第三方模块都需要被替换或删除。要更改配置的 MPM,编辑 /etc/httpd/conf.modules.d/00-mpm.conf 文件。如需更多信息,请参阅 httpd.conf(5) man page。

有关 httpd 及其用法中更改的更多信息,请参阅 设置 Apache HTTP Web 服务器

(BZ#1632754, BZ#1527084, BZ#1581178)

nginx web 服务器包括在 RHEL 中

RHEL 8 引入了 nginx 1.14,支持 HTTP 和其他协议的 web 和代理服务器,侧重于高并发性、性能和低内存用量。nginx 以前仅作为 Software Collection 提供。

nginx web 服务器现在支持直接从 PKCS#11 模块的硬件安全令牌加载 TLS 私钥。因此,nginx 配置可以使用 PKCS#11 URL 来标识 ssl_certificate_key 指令中的 TLS 私钥。

(BZ#1545526)

RHEL 8 中的数据库服务器

RHEL 8 提供以下数据库服务器:

  • MySQL 8.0 是一个多用户、多线程的 SQL 数据库服务器。它由 MySQL 服务器守护进程 mysqld 和很多客户端程序组成。
  • MariaDB 10.3是一个多用户、多线程的 SQL 数据库服务器。就所有实际目的来说,MariaDBMySQL 二进制兼容。
  • PostgreSQL 10PostgreSQL 9.6 是高级对象相关数据库管理系统(DBMS)。
  • Redis 5 是一个高级的键值存储。它通常被称为数据结构服务器,因为键可以包含字符串、散列、列表、集合和排序的集合。RHEL 中第一次提供 Redis

请注意,NoSQL MongoDB 数据库服务器没有包括在 RHEL 8.0 中,因为它使用服务器幻灯片公共许可证(SSPL)。

(BZ#1647908)

MySQL 8.0 中的显著变化

RHEL 8 提供了 MySQL 8.0,它包括以下改进:

  • MySQL 现在集成了一个事务性数据字典,它存储了数据库对象的信息。
  • MySQL 现在支持角色(权限的集合)。
  • 默认字符集已从 latin1 改为 utf8mb4
  • 添加了对通用表表达式(非递归和递归)的支持。
  • MySQL 现在支持窗口功能,该功能使用相关的行为每个行执行计算。
  • InnoDB 现在支持带锁定读声明的 NOWAITSKIP LOCKED 选项。
  • 改进了与 GIS 相关的功能。
  • JSON 功能已被改进。
  • 新的 mariadb-connector-c 软件包为 MySQLMariaDB 提供通用客户端库。这个程序库可用于 MySQLMariaDB 数据库服务器的任何版本。因此,用户可以将应用程序的一个构建连接到 RHEL 8 提供的 MySQLMariaDB 服务器。

另外,RHEL 8 中包括的 MySQL 8.0 服务器被配置为使用 mysql_native_password 作为默认身份验证插件,因为 RHEL 8 中的客户端工具和库与 caching_sha2_password 方法不兼容,上游 MySQL 8.0 版本默认使用它。

要将默认身份验证插件更改为 caching_sha2_password,请按如下方式编辑 /etc/my.cnf.d/mysql-default-authentication-plugin.cnf 文件:

[mysqld]
default_authentication_plugin=caching_sha2_password

(BZ#1649891, BZ#15¼0, BZ#1631400)

MariaDB 10.3 中的显著变化

MariaDB 10.3 与 RHEL 7 提供的版本 5.5 相比,提供了多个新功能,例如:

  • 常见表表达式
  • system-versioned 表
  • FOR 循环
  • 不可见的栏
  • 序列
  • 即时 ADD COLUMN 适用于 InnoDB
  • 独立于存储引擎的栏压缩
  • 并行复制
  • 多源复制

另外,新的 mariadb-connector-c 软件包为 MySQLMariaDB 提供了一个通用的客户端库。这个程序库可用于 MySQLMariaDB 数据库服务器的任何版本。因此,用户可以将应用程序的一个构建连接到 RHEL 8 提供的 MySQLMariaDB 服务器。

其他显著变化包括:

  • MariaDB Galera Cluster(一个同步的多 master 集群)现在是 MariaDB 的标准部分。
  • InnoDB 现在为默认存储引擎,而不是 XtraDB
  • 已删除 mariadb-bench 子包。
  • 默认允许插件成熟度等级已改为比服务器成熟度低 一 个等级。因此,在之前使用的,但成熟度较低的插件将不再加载。

另请参阅 在 Red Hat Enterprise Linux 8 中使用 MariaDB

(BZ#1637034, BZ#15¼0, BZ#1688374)

PostgreSQL 中的显著变化

RHEL 8.0 提供了 PostgreSQL 数据库服务器的两个版本版本,它们由 postgresql 模块的两个流提供: PostgreSQL 10 (默认流)和 PostgreSQL 9.6。RHEL 7 包括 PostgreSQL 版本 9.2。

PostgreSQL 9.6 中的显著变化包括:

  • 对顺序操作并性执行: scanjoinaggregate
  • 同步复制的改进
  • 改进了全文本搜索功能用于使用短语进行搜索
  • postgres_fdw 数据联合驱动程序现在支持远程 joinsortUPDATEDELETE 操作
  • 显著提高性能,特别是在多 CPU 套接字服务器上的可扩展性方面

PostgreSQL 10 的主要改进包括:

  • 使用 publishsubscribe 关键字进行逻辑复制
  • 根据 SCRAM-SHA-256 机制进行更强大的密码验证
  • 声明性表分区
  • 改进了查询并行性
  • 显著的常规性能改进
  • 改进了监控和控制

另请参阅在 Red Hat Enterprise Linux 8 中使用 PostgreSQL

(BZ#1660041)

Squid 中的显著变化

RHEL 8.0 提供了 Squid 4.4,它是一个用于 Web 客户端的高性能代理缓存服务器,支持 FTP、Gopher 和 HTTP 数据对象。与 RHEL 7 提供的版本 3.5 相比,这个版本包括的新功能、改进和程序错误修复。

主要变更包括:

  • 可配置的 helper 队列大小
  • 对 helper 并发频道的更改
  • 更改 helper 二 进制文件
  • 安全互联网内容适配器协议(ICAP)
  • 改进了对 Symmetric Multi Processing(SMP)的支持
  • 改进的进程管理
  • 删除了对 SSL 的支持
  • 删除了 Edge Side Inudes(ESI)自定义解析程序
  • 多配置更改

(BZ#1656871)

RHEL 中新提供了 Varnish Cache 功能

Varnish Cache 首次在 RHEL 中提供,它是一个高性能 HTTP 反向代理。之前,它只通过 Software Collection 提供。Varnish Cache 将文件或文件片段存储在内存中,这些文件用于减少未来对等请求的响应时间和网络带宽消耗。RHEL 8.0 提供了 Varnish Cache 6.0

(BZ#1633338)

5.1.8. Desktop

GNOME Shell,RHEL 8 中的 3.28 版本

GNOME Shell 在 Red Hat Enterprise Linux(RHEL)8 中提供 3.28 版本。主要改进包括:

  • 新的 GNOME Boxes 功能
  • 新屏幕键盘
  • 扩展设备支持,最重要的是 Thunderbolt 3 接口的集成
  • GNOME 软件、dconf-editor 和 GNOME Terminal 的改进

(BZ#1649404)

Wayland 是默认的显示服务器

在 Red Hat Enterprise Linux 8 中,GNOME 会话和 GNOME 显示管理器(GDM)使用 Wayland 作为其默认显示服务器,而不是 X.org 服务器,这些服务器与之前的 RHEL 主版本一起使用。

Wayland 与 X .org 相比,提供多种优势和改进。最值得注意的是:

  • 更强大的安全模式
  • 改进了多显示器处理
  • 改进了用户界面(UI)扩展
  • 桌面可以直接控制窗口处理。

请注意,以下功能目前不可用,或者无法按预期工作:

  • Wayland 不支持多GPU设置。
  • NVIDIA 二进制驱动程序在 Wayland 下无法正常工作。
  • xrandr 实用程序无法在 Wayland 下工作,因为它处理、解决方案、轮转和布局的方法不同。请注意,操控屏幕的其他 X.org 实用程序在 Wayland 下也无法工作。
  • 屏幕记录、远程桌面和可访问性在 Wayland 下并不总是能正常工作。
  • 没有可用的剪贴板管理器。
  • Wayland 忽略 X11 应用发布的键盘 grab,如虚拟机查看器。
  • 客户机虚拟机(VM)中的 Wayland 具有稳定性和性能问题,因此建议在虚拟环境中使用 X11 会话。

如果您从使用 X.org GNOME 会话的 RHEL 7 系统升级到 RHEL 8,则您的系统将继续使用 X.org。使用以下图形驱动程序时,系统还会自动回退到 X.org

  • NVIDIA 二进制驱动程序
  • cirrus 驱动程序
  • mga 驱动程序
  • aspeed 驱动程序

您可以手动禁用 Wayland 的使用:

  • 要在 GDM 中禁用 Wayland,请在 /etc/gdm/custom.conf 文件中设置 WaylandEnable=false 选项。
  • 要在 GNOME 会话中禁用 Wayland,请在输入登录名称后使用登录屏幕上的 cogwheel 菜单来选择旧的 X11 选项。

有关 Wayland 的详情,请参考 https://wayland.freedesktop.org/

(BZ#1589678)

查找默认未启用的软件仓库中的 RPM 软件包

默认情况下不启用桌面的其他存储库。禁用通过相应 .repo 文件中的 enabled=0 行来指示。如果您尝试使用 PackageKit 从此类存储库安装软件包,PackageKit 会显示错误消息,指出该应用不可用。要使软件包可用,请将之前在相应 .repo 文件中使用的 enabled=0 行替换为 enabled=1

(JIRA:RHELPLAN-2878)

GNOME Sofware 用于软件包管理

在 Red Hat Enterprise Linux 7 的图形环境中为软件包管理提供一组工具的 gnome-packagekit 软件包不再可用。在 Red Hat Enterprise Linux 8 中,GNOME Software 工具程序提供了类似的功能,它可让您安装和更新应用程序及 gnome-shell 扩展。GNOME 软件gnome-software 软件包中分发。

(JIRA:RHELPLAN-3001)

Wayland 上的 GNOME Shell 提供部分扩展

Wayland 会话上的 GNOME Shell 中,部分扩展功能可用。该功能使得按部分扩展 GUI 成为可能,这可以提高特定显示器上扩展的 GUI 的外观。

请注意,这个功能当前被视为实验性功能,因此在默认情况下是禁用的。

要启用分数扩展,请运行以下命令:

# gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"

(BZ#1668883)

5.1.9. 硬件启用

使用 fwupd 进行固件更新可用

RHEL 8 支持固件更新,如 UEFI 胶囊、设备固件升级(DFU)等,使用 fwupd 守护进程。守护进程允许会话软件自动更新本地计算机上的设备固件。

要查看和应用更新,您可以使用:

  • GUI 软件管理器,如 GNOME 软件
  • fwupdmgr 命令行工具

元数据文件从 Linux 供应商固件服务(LVFS)安全门户自动下载,并通过 D-Bus 提交到 fwupd。需要应用的更新将下载,显示用户通知和更新详细信息。用户必须在执行更新前明确同意固件更新操作。

请注意,默认禁用对 LVFS 的访问。

要启用对 LVFS 的访问,请点击 GNOME 软件的 sources 对话框中的滑块,或者运行 fwupdmgr enable-remote lvfs 命令。如果您使用 fwupdmgr 获取更新列表,系统会询问您是否要启用 LVFS。

通过 LVFS 的访问权限,您将直接从硬件供应商获得固件更新。请注意,这些更新尚未由红帽 QA 验证。

(BZ#1504934)

完全支持 Optane DC Persistent Memory 技术的内存模式

Intel Optane DC 持久内存存储设备提供数据中心级别的持久内存技术,这可以显著提高事务吞吐量。

要使用内存模式技术,您的系统不需要任何特殊驱动程序或特定认证。内存模式对操作系统是透明的。

(BZ#1718422)

5.1.10. Identity Management

目录服务器中的新密码语法检查

此增强为目录服务器添加新密码语法检查。例如,管理员可以启用字典检查,允许或拒绝使用字符序列和像素组。因此,如果启用,Directory 服务器中的密码策略语法检查会强制执行更安全的密码。

(BZ#1334254)

目录服务器现在提供改进的内部操作日志记录支持

目录服务器中的几个操作由服务器和客户端发起,在后台执行其他操作。在以前的版本中,服务器只记录用于 Internal 连接关键字的内部操作,操作 ID 始终设置为 -1。在这个版本中,Directory 服务器会记录真正的连接和操作 ID。现在,您可以将内部操作跟踪到导致此操作的服务器或客户端操作。

(BZ#1358706)

tomcatjss 库支持使用 AIA 扩展中的响应程序进行 OCSP 检查

在这个版本中,tomcatjss 库支持使用证书的授权信息访问(AIA)扩展中的响应者检查在线证书状态协议(OCSP)。因此,红帽认证系统的管理员可以配置使用 AIA 扩展中的 URL 的 OCSP 检查。

(BZ#1636564)

pki subsystem-cert-findpki subsystem-cert-show 命令现在显示证书的序列号

在这个版本中,证书系统中的 pki subsystem-cert-findpki subsystem-cert-show 命令显示证书的序列号。序列号是重要的信息,通常由多个其他命令要求。因此,现在更容易识别证书的序列号。

(BZ#1566360)

在证书系统中已弃用 pki userpki group 命令

在这个版本中,新的 pki <subsystem>-userpki <subsystem>-group 命令替换证书系统中的 pki userpki group 命令。替换的命令仍有效,但它们显示命令已弃用并引用新命令的消息。

(BZ#1394069)

证书系统现在支持系统证书离线续订

在这个版本中,管理员可以使用脱机续订功能续订证书系统中配置的系统证书。当系统证书过期时,证书系统无法启动。因为这个改进,管理员不再需要临时解决方案来替换过期的系统证书。

(BZ#1669257)

证书系统现在可以为外部 CA 签名使用 SKI 扩展创建 CSR

在这个版本中,证书系统支持为外部证书颁发机构(CA)签名使用对象密钥标识符(SKI)扩展创建证书签名请求(CSR)。某些 CA 需要使用特定值或派生自 CA 公钥的扩展。现在,管理员可以使用传递给 pkispawn 工具的配置文件中的 pki_req_ski 参数来创建带有 SKI 扩展名的 CSR。

(BZ#1656856)

SSSD 不再使用 [nss] 部分中的 fallback_homedir 值作为 AD 域的回退

在 RHEL 7.7 之前,Active Directory(AD)供应商中的 SSSD fallback_homedir 参数没有默认值。如果没有设置 fallback_homedir,SSSD 会改用来自 /etc/sssd/sssd.conf 文件的 [nss] 部分的同一参数的值。为提高安全性,SSSD 在 RHEL 7.7 中引入了 fallback_homedir 的默认值。因此,SSSD 不再回退到 [nss] 部分中设置的值。如果要使用与 AD 域中 fallback_homedir 参数的默认值不同的值,您必须在域部分手动设置它。

(BZ#1652719)

SSSD 现在允许您选择多个智能卡验证设备之一

默认情况下,系统安全服务后台程序(SSSD)会尝试自动检测智能卡身份验证的设备。如果连接了多个设备,SSSD 会选择它检测到的第一个设备。因此,您无法选择特定的设备,有时会导致失败。

在这个版本中,您可以为 sssd.conf 配置文件的 [pam] 部分配置新的 p11_uri 选项。这个选项允许您定义用于智能卡验证的设备。

例如,要选择 OpenSC PKCS#11 模块检测到插槽 ID 2 的读取程序,请添加:

p11_uri = library-description=OpenSC%20smartcard%20framework;slot-id=2

sssd.conf[pam] 部分。

详情请查看 man sssd.conf 页面。

(BZ#1620123)

本地用户由 SSSD 缓存并通过 nss_sss 模块提供

在 RHEL 8 中,系统安全服务守护进程(SSSD)默认从 /etc/passwd/etc/groups 文件中为用户和组提供服务。sss nsswitch 模块先于 /etc/nsswitch.conf 文件中的文件。

通过 SSSD 为本地用户提供服务的好处在于,nss_sss 模块具有快速的 memory-mapped cache,与访问磁盘并在每个 NSS 请求中打开文件相比,可加快名称服务切换(NSS)查找的速度。在以前的版本中,Name 服务缓存守护进程(nscd)有助于加快访问磁盘的过程。但是,与 SSSD 并行使用 nscd 非常繁琐,因为 SSSD 和 nscd 都使用自己的独立缓存。因此,在设置中使用 nscd,SSSD 还从远程域(如 LDAP 或 Active Directory)为用户提供服务,可能会导致无法预计的行为。

因此,在 RHEL 8 中,本地用户和组的解析速度更快。请注意,root 用户永远不会被 SSSD 处理,因此 root 解析不会受到 SSSD 中潜在的错误的影响。另请注意,如果 SSSD 没有运行,nss_sss 模块通过回退到 nss_files 来避免问题。您不必以任何方式配置 SSSD,文件域会被自动添加。

(JIRA:RHELPLAN-10439)

KCM 替换 KEYRING 作为默认的凭证缓存存储

在 RHEL 8 中,默认凭证缓存存储是 Kerberos 凭证管理器(KCM),它由 sssd-kcm deamon 支持。KCM 克服了之前使用的 KEYRING 的限制,例如难以在容器化环境中使用,因为它没有命名空间,也无法查看和管理配额。

在这个版本中,RHEL 8 包含一个更适合容器化环境的凭证缓存,它为在以后的版本中构建更多功能提供了基础。

(JIRA:RHELPLAN-10440)

Active Directory 用户现在可以管理身份管理

在这个版本中,RHEL 8 允许作为 Identity Management(IdM)组的成员为 Active Directory(AD)用户添加用户 ID 覆盖。ID 覆盖是指描述特定 AD 用户或组属性在特定 ID 视图中应如下所示的记录,本例中为默认信任视图。更新后,IdM LDAP 服务器可以为 AD 用户应用 IdM 组的访问控制规则。

AD 用户现在可以使用 IdM UI 的自助服务功能,例如上传其 SSH 密钥或更改其个人数据。AD 管理员可以在没有两个不同的帐户和密码的情况下完全管理 IdM。请注意,当前 IdM 中选定的功能可能仍对 AD 用户不可用。

(JIRA:RHELPLAN-10442)

sssctl 为 IdM 域打印 HBAC 规则报告

在这个版本中,System Security Services Daemon(SSSD)的 sssctl 工具可以打印 Identity Management(IdM)域的访问控制报告。此功能满足特定环境的需求,出于法规原因,查看可访问特定客户端计算机的用户和组列表。在 IdM 客户端中运行 sssctl access-report domain_name 会在应用到客户端机器的 IdM 域中输出基于主机的访问控制(HBAC)规则的解析子集。

请注意,除了 IdM 外,其它供应商都不支持这个特性。

(JIRA:RHELPLAN-10443)

身份管理软件包作为模块提供

在 RHEL 8 中,安装 Identity Management(IdM)服务器和客户端所需的软件包作为一个模块提供。client 流是 idm 模块的默认流,您可以在不启用流的情况下下载安装客户端所需的软件包。

IdM 服务器模块流称为 DL1 流。流包含多个与不同类型的 IdM 服务器对应的配置集:server、dns、adtrust、client 和 default。要在 DL1 流的特定配置集中下载软件包:

  1. 启用流。
  2. 切换到通过流提供的 RPM。
  3. 运行 yum module install idm:DL1/profile_name 命令。

在启用了特定流并从中下载软件包后,要切换到新的模块流:

  1. 删除所有相关安装内容,并禁用当前的模块流。
  2. 启用新模块流。

(JIRA:RHELPLAN-10438)

为 RHEL 8 添加了会话记录解决方案

在 Red Hat Enterprise Linux 8(RHEL 8)添加了记录会话记录解决方案。新的 tlog 软件包及其关联的 Web 控制台会话播放器启用来记录和回放用户终端会话。可以通过 System Security Services Daemon(SSSD)服务针对每个用户或用户组配置记录。所有终端输入和输出都会捕获并存储在系统日志中基于文本的格式。出于安全原因,输入默认为不活动,因为安全原因不会截获原始密码和其他敏感信息。

该解决方案可用于审核安全敏感系统上的用户会话。如果出现安全问题,可以检查记录的会话作为分析的 一 部分。系统管理员现在可以在本地配置会话记录,并使用 tlog-play 工具从 RHEL 8 web 控制台界面或者从命令行界面中查看结果。

(JIRA:RHELPLAN-1473)

authselect 简化用户身份验证的配置

在这个版本中引进了 authselect 工具来简化在 RHEL 8 主机上用户身份验证的配置,替换 authconfig 工具程序。authselect 随附更为安全的 PAM 堆栈管理方法,使系统管理员 PAM 配置更改更简单。authselect 可用于配置身份验证方法,如密码、证书、智能卡和指纹。请注意,authselect 不配置加入远程域所需的服务。此任务由特殊工具执行,如 realmdipa-client-install

(JIRA:RHELPLAN-10445)

SSSD 现在默认强制使用 AD GPOs

SSSD 选项 ad_gpo_access_control 的默认设置现在是 enforcing。在 RHEL 8 中,SSSD 默认根据 Active Directory Group 策略对象(GPO)强制实施访问控制规则。

红帽建议确保在从 RHEL 7 升级到 RHEL 8 前,在 Active Directory 中正确配置 GPO。如果您不想强制 GPO,将 /etc/sssd/sssd.conf 文件中的 ad_gpo_access_control 选项的值改为 permissive

(JIRA:RHELPLAN-51289)

5.1.11. 编译器和开发工具

将更新至版本 1.66

Boost C++ 库已更新至上游版本 1.66。红帽企业 Linux 7 中包含的 Boost 版本为 1.53。详情请查看上游 changelogs: https://www.boost.org/users/history/

在这个版本中引进了与以前版本的兼容性更改:

  • bs_set_hook() 功能、splay 容器中的 splay_set_hook() 功能以及 Intrusive 库中的 splaytree_algorithms() 功能中的 bool splay = true 额外参数已被删除。
  • 解析者不再支持 JSON 文件中的注释或字符串串联
  • Math 库中的一些发行版和特殊功能已被修复,可以像记录一样运作,并引发 overflow_error,而不是返回最大有限值。
  • Math 库中的一些标头已移到 目录中。libs/math/include_private
  • Regex 库中的 basic_regex<>::mark_count()basic_regex<>::subexpression(n) 功能的行为已改为与其文档匹配。
  • 变体 库中使用变量模板可能会破坏元编程函数。
  • boost::python::numeric API 已被删除。用户可以改用 boost::python::numpy
  • Atomic 库中不再提供指向非对象类型的指针的算术运算。

(BZ#1494495)

Unicode 11.0.0 支持

红帽企业 Linux 核心 C 库 glibc 已更新,以支持 Unicode 标准版本 11.0.0。因此,所有宽度字符和多字节字符 API 包括字符集之间的转换和转换提供符合此标准的准确和正确的信息。

(BZ#1512004)

boost 软件包现在独立于 Python

在这个版本中,安装 boost 软件包不再安装 Boost.Python 库作为依赖项。要使用 Boost.Python,您需要显式安装 boost-python3boost-python3-devel 软件包。

(BZ#1616244)

提供了一个新的 compat-libgfortran-48 软件包

为了与使用 Fortran 库的 Red Hat Enterprise Linux 6 和 7 应用程序兼容,现在提供了一个新的 compat-libgfortran-48 兼容性软件包,它提供了 libgfortran.so.3 库。

(BZ#1607227)

GCC 中的 Retpoline 支持

在这个版本中,增加了对 GCC 的 retpoline 的支持。反转线是内核所使用的软件结构,用于减少减少 CVE-2017-5715 中描述的 Spectre Variant 2 攻击的开销。

(BZ#1535774)

增强了对工具链组件中的 64 位 ARM 架构的支持

工具链组件 GCCbinutils 现在为 64 位 ARM 架构提供扩展支持。例如:

  • GCC binutils 现在支持可扩展向量扩展(SVE)。
  • GCC 添加了对 ARM v8.2 提供的 FP16 数据类型的支持。FP16 数据类型提高了特定算法的性能。
  • binutils 中的工具现在支持 ARM v8.3 架构定义,包括 Pointer Authentication。Pointer Authentication 功能可通过设计自己的功能指针防止恶意代码破坏程序或内核的正常执行。因此,仅在分支到代码中的不同位置时使用可信地址,这样可以提高安全性。

(BZ#1504980, BZ#1550501, BZ#1504995, BZ#1504993, BZ#1504994)

IBM POWER 系统的 glibc 优化

这个版本提供了一个新版本的 glibc,它针对 IBM POWER 8 和 IBM POWER 9 架构进行了优化。因此,IBM POWER 8 和 IBM POWER 9 系统现在会在运行时自动切换到适当的、优化的 glibc 变体。

(BZ#1376834)

GNU C 库更新至 2.28 版本

Red Hat Enterprise Linux 8 包含 GNU C 库(glibc)的版本 2.28。主要改进包括:

  • 安全强化功能:

    • 使用 AT_SECURE 标志标记的安全二进制文件会忽略 LD_LIBRARY_PATH 环境变量。
    • 检查故障的堆栈不再打印回溯追踪,从而加快关机并避免在受到影响的环境中运行更多代码。
  • 性能改进:

    • 使用线程本地缓存改进了 malloc() 功能的性能。
    • 添加 GLIBC_TUNABLES 环境变量来改变库性能特性。
    • 线程信号的实现已被改进,并添加了新的可扩展 pthread_rwlock_xxx() 功能。
    • 数学库的性能有所改进。
  • 添加了对 Unicode 11.0.0 的支持。
  • 改进了对由 ISO/IEC/IEEE 60559:2011、IEEE 754-2008 和 ISO/IEC TS 18661-3:2015 标准定义的 128 位浮动点数的支持。
  • /etc/resolv.conf 配置文件相关的域名服务(DNS)存根解析器改进:

    • 更改文件时将自动重新加载配置。
    • 添加了对任意数量的搜索域的支持。
    • rotate 选项添加了正确的随机选择。
  • 添加了新的开发功能,包括:

    • 用于 preadv2pwritev2 内核调用的 Linux 打包程序功能
    • 新功能包括 reallocarray()explicit_bzero()
    • posix_spawnattr_setflags() 功能的新标记,如 POSIX_SPAWN_SETSID

(BZ#1512010, BZ#1504125, BZ#506398)

RHEL 中可用的 CMake

在 Red Hat Enterprise Linux 8 中提供了 CMake 构建系统版本 3.11 作为 cmake 软件包。

(BZ#1590139, BZ#1502802)

make 版本 4.2.1

Red Hat Enterprise Linux 8 带有 make 构建工具版本 4.2.1。主要变更包括:

  • 当方法失败时,会显示方法的 makefile 的名称和行号。
  • 添加了 --trace 选项来启用目标追踪。当使用此选项时,会先打印每个方法,即使这个方法的文件名和行号被禁止,以及该方法所在的行号,以及导致调用它的前提条件。
  • 混合显式和隐式规则不再导致 make 终止执行。相反,会输出警告信息。请注意,此语法已被弃用,未来可能会完全删除。
  • $(file …​) 功能被添加到文件中写入文本。如果不使用文本参数调用,则仅打开并立即关闭文件。
  • 新选项 --output-sync-O 可使每个作业对多个作业的输出进行分组,并可更轻松地调试并行构建。
  • --debug 选项现在接受 n (无)标记来禁用所有当前启用的调试设置。
  • != shell 分配运算符已被添加为 $(shell …​) 功能的替代选择,以提高与 BSD makefile 的兼容性。有关运算符和函数之间的更多详细信息和不同之处,请参阅 GNU make manual。

    请注意,名称以感叹号结尾并立即分配的变量(如 variable!=value )现在被解释为新语法。要恢复之前的行为,请在声明标记后添加一个空格,如 variable! =value

  • 添加了 POSIX 标准定义的 ::= 分配操作器。
  • 当指定 .POSIX 变量时,make 会观察处理反斜杠和新行的 POSIX 标准要求。在此模式下,保留反斜杠之前的任何尾随空格,每个反斜杠加上新行并将空格字符转换为单个空格字符。
  • 现在,MAKEFLAGSMFLAGS 变量的行为被更精确地定义。
  • 为与 MAKEFLAGS 相同的 make 标记解析新变量 GNUMAKEFLAGS。因此,GNU make特定的标记可以存储在 MAKEFLAGS 外部,makefile 的可移植性也会增加。
  • 添加了包含主机架构的新变量 MAKE_HOST
  • 新变量 MAKE_TERMOUTMAKE_TERMERR 指示 make 是否在写入标准输出和错误到终端。
  • 在 makefile 中的 MAKEFLAGS 变量中设置 -r-R 选项现在可以正常工作,并分别删除所有内置规则和变量。
  • 现在,.RECIPEPREFIX 设置会记住每个配方。此外,在该方法中扩展的变量也使用该方法前缀设置。
  • .RECIPEPREFIX 设置和所有特定于目标的变量在 -p 选项的输出中显示,就像在 makefile 中一样,而不是作为注释显示。

(BZ#1641015)

SystemTap 版本 4.0

Red Hat Enterprise Linux 8 使用 SystemTap 工具工具版本 4.0 进行发布。主要改进包括:

  • 扩展的 Berkeley Packet 过滤器(eBPF)后端已被改进,特别是字符串和功能。要使用此后端,请使用 --runtime=bpf 选项启动 SystemTap
  • 添加了一个新的导出网络服务,用于 Prometheus 监控系统。
  • 系统调用探测实施已被改进,必要时可使用内核追踪点。

(BZ#1641032)

binutils 版本 2.30 的改进

Red Hat Enterprise Linux 8 包含 binutils 软件包的版本 2.30。主要改进包括:

  • 改进了对新的 IBM Z 架构扩展的支持。

链接器:

  • 默认情况下,链接器将代码和只读数据放在单独的片段中。因此,创建的可执行文件更大且更易于运行,因为动态加载器可以禁用任何包含只读数据的内存页面的执行。
  • 添加了对 GNU 属性说明的支持,该注释为动态加载器提供有关二进制文件的提示。
  • 在以前的版本中,链接程序为 Intel Indirect Branch Tracking(IBT)技术生成无效的可执行代码。因此,生成的可执行文件无法启动。这个程序错误已被解决。
  • 在以前的版本中,gold 链接程序会错误地合并属性备注。因此,生成的代码中可能会启用错误的硬件功能,代码可能会意外终止。这个程序错误已被解决。
  • 在以前的版本中,gold 链路器使用末尾的 padding 字节创建了备注部分,以便根据构架实现一致性。由于动态加载器没有期望 padding,所以coud 会意外终止它正在加载的程序。这个程序错误已被解决。

其他工具:

  • readelfobjdump 工具现在也有选项来跟踪到单独的调试信息文件中的链接,并在其中显示信息。
  • 新的 --inlines 选项扩展了 objdump 工具的现有 --line-numbers 选项,以显示内嵌功能的信息。
  • nm 工具获得了一个新选项 --with-version-strings,用于在符号的名称后面显示符号的版本信息(如果存在)。
  • 在 assembler 中添加了对 ARMv8-R52、Cortex-M23 和 Cortex-M33 处理器的支持。

(BZ#1641004, BZ#1637072, BZ#1501420, BZ#1504114, BZ#1614908, BZ#1614920)

Performance Co-Pilot 版本 4.3.0

Red Hat Enterprise Linux 8 提供了 Performance Co-Pilot (PCP)版本 4.3.0。主要改进包括:

  • pcp-dstat 工具现在包括历史分析和以逗号分隔的值(CSV)格式输出。
  • 日志实用程序可以使用指标标签并帮助文本记录。
  • pmdaperfevent 工具现在在较低 Simultaneous Multi Threading(SMT)级别报告正确的 CPU 号。
  • pmdapostgresql 工具现在支持 Postgres series 10.x。
  • pmdaredis 工具现在支持 Redis series 5.x。
  • 通过动态进程过滤和每个进程的 syscalls、ucalls 和 ustat 增强了 pmdabcc 工具。
  • pmdammv 工具现在导出指标标签,格式版本增加到 3。
  • pmdagfs2 工具支持额外的 glock 和 glock 拥有者指标。
  • 对 SELinux 策略进行了几个修复。

(BZ#1641034)

内存保护密钥

在这个版本中,启用了允许每个线程页面保护标志更改的硬件功能。为 pkey_alloc()pkey_free()pkey_mprotect() 功能添加了新的 glibc 系统调用打包程序。另外,添加了 pkey_set()pkey_get() 功能,允许访问每个线程保护标记。

(BZ#1304448)

GCC 现在默认为 IBM Z 中的 z13

在这个版本中,IBM Z 架构代码中的默认 GCC 为 z13 处理器构建代码,并为 z14 处理器调整代码。这等同于使用 -march=z13-mtune=z14 选项。用户可以通过使用目标架构和调整选项来显式覆盖此默认设置。

(BZ#1571124)

elfutils 更新至版本 0.174

在 Red Hat Enterprise Linux 8 中,selfutils 软件包包括在 0.174 版中。主要变更包括:

  • 在以前的版本中,eu-readelf 工具可能会显示一个带有负值的变量,就像它有一个大的未签名值,或者以负值的形式显示一个较大的未签名值。这已被修正,eu-readelf 现在会查找恒定值类型的大小和签名状态来正确显示它们。
  • libdw 库中添加了新的功能 dwarf_next_lines() 用于读取缺少 CU 的 .debug_line 数据。这个功能可以替代 dwarf_getsrclines()dwarf_getsrcfiles() 功能。
  • 在以前的版本中,带有超过 65280 部分的文件可能会导致 libelflibdw 库 以及所有使用它们的工具出现错误。这个程序错误已被解决。因此,ELF 文件标头中的扩展 shnumshstrndx 值会被正确处理。

(BZ#1641007)

Valgrind 更新至 3.14 版本

Red Hat Enterprise Linux 8 使用 Valgrind 可执行代码分析工具 3.14。主要变更包括:

  • 添加了一个新的 --keep-debuginfo 选项,为卸载的代码保留 debug info。因此,保存的堆栈跟踪可以包含内存中不再存在的代码的文件和行信息。
  • 添加了基于源文件名和行号的压缩。
  • Helgrind 工具使用 --delta-stacktrace 选项进行扩展,以指定计算完整历史记录堆栈追踪的计算。值得注意的是,将这个选项与 --history-level=full 一起使用可以将 Helgrind 性能提高达 25%。
  • Memcheck 工具中的错误正速率在 Intel 和 AMD 64 位 arcitects 中优化了代码,并降低了 ARM 64 位构架。请注意,您可以使用 --expensive-definedness-checks 控制对定义的检查处理,并在牺牲性能的情况下提高速率。
  • Valgrind 现在可以识别 IBM Power Systems 的 little-endian 变体的更多指令。
  • Valgrind 现在可以处理 IBM Z 架构 z13 处理器的大部分整数和字符串向量指令。

有关新选项及其已知限制的详情,请查看 valgrind(1) 手册页。

(BZ#1641029, BZ#1501419)

GDB 版本 8.2

Red Hat Enterprise Linux 8 带有 GDB debugger 版本 8.2 Notable 更改,其中包括:

  • 使用 GDB 和 gdbserver 远程调试支持 IPv6 协议。
  • 改进了在没有调试信息的情况下进行调试。
  • GDB 用户界面中的符号补全已被改进,通过使用更多语法结构(如 ABI 标签或命名空间)来提供更好的建议。
  • 现在可以在后台执行命令。
  • 现在,可以使用 Rust 编程语言创建的调试程序。
  • 通过解析器支持 _Alignofalignof 运算符、C++ rvalue 引用和 C99 变量长度自动数组,改进了调试 C 和 C++ 语言。
  • GDB 扩展脚本现在可以使用 Guile 脚本语言。
  • 新的 API 功能、帧解码器、过滤器和解压器改进了扩展的 Python 脚本语言接口。另外,GDB 配置的 .debug_gdb_scripts 部分中的脚本会自动载入。
  • GDB 现在使用 Python 版本 3 运行其脚本,包括友善打印机、帧解码器、过滤器和解压器。
  • 通过流程执行记录和重播(包括 Thumb 32 位和系统调用说明)改进了 ARM 和 64 位 ARM 架构。
  • GDB 现在支持 64 位 ARM 架构上的可扩展 Vector 扩展(SVE)。
  • 添加了对 Intel PKU 寄存器和 Intel Processor Trace 的支持。
  • 记录和重播功能已扩展为包括在基于 Intel 的系统中的 rdrandrdseed 指令。
  • IBM Z 架构中的 GDB 功能增加了,支持追踪点、快速追踪点、向量寄存器和 ABI 以及 Catch 系统调用。另外,GDB 现在支持更最新的架构指令。
  • GDB 现在可以使用 64 位 ARM 架构中的 SystemTap 静态用户空间探测(SDT)。

(BZ#1641022, BZ#1497096, BZ#1505346, BZ#1592332, BZ#1550502)

glibc RHEL 的本地化分布在多个软件包中

在 RHEL 8 中,glibc 本地化和翻译不再由单个 glibc-common 软件包提供。相反,每个本地化内容和语言都位于 glibc-langpack-CODE 软件包中。另外,在大多数情形中,默认情况下不安装所有区域,仅安装安装程序中选择的区域。用户必须单独安装所需的所有更多区域设置软件包,或者如果用户希望安装 glibc-all-langpacks 以获得包含之前安装的所有 glibc 区域的区域归档。

如需更多信息,请参阅 使用 langpacks

(BZ#1512009)

GCC 版本 8.2

在 Red Hat Enterprise Linux 8 中,GCC 工具链基于 GCC 8.2 版本系列。主要变更包括:

  • 添加了大量常规优化,如别名分析、向量器改进、相同的代码折叠、流程间分析、存储合并优化通过等。
  • 改进了 Address Sanitizer。添加了 Leak Sanitizer 和 Undefined Behavior Sanitizer。
  • 现在可使用 DWARF5 格式生成调试信息。这个功能是实验性的。
  • 源代码覆盖分析工具 GCOV 已进行了各种改进。
  • 为静态检测更多编程错误,添加了新的警告并改进了诊断。
  • GCC 已被扩展,提供一些工具以确保增加生成的代码的强化。与安全性相关的改进包括内置的溢出检查、对堆栈冲突的额外保护、控制流指令的目标地址、有界字符串操作功能的警告,以及检测边界外数组索引的警告。

架构和处理器支持的改进包括:

  • 添加了多个适用于 Intel AVX-512 架构、微架构和 Intel Software Guard 扩展(SGX)的新架构特定选项。
  • 现在,代码生成可以针对 64 位 ARM 架构 LSE 扩展、ARMv8.2-A 16 位 Floating-Point 扩展(FPE)和 ARMv8.2-A、ARMv8.3-A 和 ARMv8.4-A 架构版本。
  • 添加了对 IBM Z 架构的 z13 和 z14 处理器的支持。

与语言和标准有关的显著变化包括:

  • C 语言编译代码时使用的默认标准已改为使用 GNU 扩展的 C17。
  • C++ 语言编译代码时使用的默认标准已改为使用 GNU 扩展的 C++14。
  • C++ 运行时程序库现在支持 C++11 和 C++14 标准。
  • C++ 编译器现在实施 C++14 标准。
  • 改进了对 C 语言标准 C11 的支持。
  • 新的 __auto_type GNU C 扩展提供了 C++11 auto 关键字功能的子集。
  • ISO/IEC TS 18661-3:2015 标准指定的 _FloatN_FloatNx 类型名称现在由 C 前端识别。
  • 现在,传递空类作为参数不包括在 Intel 64 和 AMD64 构架中,如平台 ABI 要求。
  • C++11 alignof 运算符返回的值已被修正,以匹配 C _Alignof 运算符并返回最小对齐。要查找首选的协调,请使用 GNU 扩展 __alignof__
  • 用于 Fortran 语言代码的 libgfortran 库的主要版本已改为 5。
  • 对 Ada(GNAT)、GCC Go 和 Objective C/C++ 语言的支持已被删除。使用 Go Toolset 进行 Go 代码开发。

(JIRA:RHELPLAN-7437, BZ#1512593, BZ#1512378)

Go 加密库 FIPS 模式现在遵循系统设置

在以前的版本中,Go 标准加密库总是使用其 FIPS 模式,除非在使用库构建应用程序时明确禁用它。因此,基于 Go 的应用程序的用户无法控制是否使用 FIPS 模式。在这个版本中,当系统没有以 FIPS 模式配置时,库不会被默认为 FIPS 模式。因此,RHEL 系统中基于 Go 的应用程序的用户对 Go 加密库的 FIPS 模式的使用具有更多控制。

(BZ#1633351)

strace 更新至 4.24 版本

Red Hat Enterprise Linux 8 使用 strace 工具版本 4.24。主要变更包括:

  • 系统调用修改功能已使用 -e inject= 选项添加。这包括注入错误、返回值、延迟和信号。
  • 改进了系统调用资格语法:

    • -e trace=/regex 选项被添加来过滤使用正则表达式的系统调用。
    • -e trace= 选项中为系统调用资格前添加问号可让 strace 继续,即使该资格与任何系统调用不匹配。
    • -e trace 选项中为系统调用资格中添加了个性化名称。
  • 添加了 kvm vcpu 退出原因的解码。要做到这一点,使用 -e kvm=vcpu 选项。
  • 现在,在使用 -k 选项时,elfutils 中的 libdw 库用于取消绑定。此外,符号解码通过 libiberty 库来执行。
  • 在以前的版本中,-r 选项会导致 strace 忽略 -t 选项。这个问题已被解决,两个选项现在都独立。
  • 在以附加模式打开输出文件时添加了 -A 选项。
  • 添加了 -X 选项来配置 xlat 输出格式。
  • 改进了使用 -yy 选项解码套接字地址。另外,在 -yy 模式中添加了块和字符设备号码打印。
  • 现在,可以使用 IBM Z 架构中的单个 strace 工具跟踪 64 位和 32 位二进制文件。因此,RHEL 8 中不再存在独立的 strace32 软件包。

另外,还添加了、改进或更新以下项目的解码:

  • netlink 协议、消息和属性
  • arch_prctl, bpf, getsockopt, io_pgetevent, keyctl, prctl, pkey_alloc, pkey_free, pkey_mprotect, ptrace, rseq, setsockopt, socket, statx, 及其他系统调用
  • ioctl 系统调用的多个命令
  • 各种类型的常量
  • 使用间接参数的 execveatinotify_add_watchinotify_initselectsymlinksymlinkat 系统调用和 mmap 系统调用的路径跟踪
  • 信号代码列表

(BZ#1641014)

RHEL 8 中的编译器工具集

RHEL 8.0 提供了以下编译器工具集作为 Application Streams:

  • clang 和 LLVM Toolset 7.0.1,提供 LLVM 编译器基础架构框架、Clang 编译器和 C++ 语言的 Clang 编译器、LLDB 调试器以及用于代码分析的相关工具。请参阅 使用 Clang 和 LLVM Toolset 文档。
  • Russt Toolset 1.31,它提供 Rust 编程语言编译器 rustccargo 构建工具和依赖关系管理器、cargo-vendor 插件以及所需的库。请参阅 使用 Rust Toolset 文档。
  • Go Toolset 1.11.5,它提供 Go 编程语言工具和库。Go 也称为 golang。请参阅 使用 Go Toolset 文档。

(BZ#1695698, BZ#1613515, BZ#1613516, BZ#1613518)

RHEL 8 中的 Java 实现和 Java 工具

RHEL 8 AppStream 软件仓库包括:

  • java-11-openjdk 软件包,它提供 OpenJDK 11 Java 运行时环境和 OpenJDK 11 Java 软件开发套件。
  • java-1.8.0-openjdk 软件包,它提供 OpenJDK 8 Java 运行时环境和 OpenJDK 8 Java 软件开发套件。
  • icedtea-web 软件包,它提供 Java Web Start 的实现。
  • ant 模块,为编译、汇编、测试和运行 Java 应用程序提供 Java 库和命令行工具。Ant 已更新至 1.10 版本。
  • maven 模块,提供软件项目管理和理解工具。Maven 以前仅作为 Software Collection 或不支持的可选频道提供。
  • scala 模块,为 Java 平台提供通用编程语言。Scala 以前仅作为 Software Collection 提供。

另外,java-1.8.0-ibm 软件包通过 Supplementary 软件仓库发布。请注意,红帽不支持这个存储库中的软件包。

(BZ#1699535)

std::string 和 中的 C++ ABI 更改 std::list

libstdc++ 库中的 std::stringstd::list 类的应用程序二进制接口(ABI)在 RHEL 7(GCC 4.8)和 RHEL 8(GCC 8)之间有所改变,以符合 C++11 标准。libstdc++ 库支持旧的和新 ABI,但其他一些 C++ 系统库不支持。因此,需要重建针对这些库动态链接的应用程序。这会影响所有 C++ 标准模式,包括 C++98。它还影响了使用红帽开发人员工具集编译器构建的适用于 RHEL 7 的应用程序,该编译器保留旧 ABI,以保持与系统库的兼容性。

(BZ#1704867)

5.1.12. 文件系统和存储

支持 Data Integrity Field/Data Integrity Extension(DIF/DIX)

只有在硬件厂商已验证,并完全支持在 RHEL 中的特定主机总线适配器(HBA)和存储阵列,则支持 DIF/DIX。

在以下配置中不支持 DIF/DIX:

  • 不支持在引导设备中使用。
  • 在虚拟客户机中不支持。
  • 当启用了 DIF/DIX 时,红帽不支持使用 Automatic Storage Management 库(ASMLib)。

在涉及应用程序之前(包括应用程序)的不同层的存储设备上启用或禁用 DIF/DIX。在存储设备中激活 DIF 的方法取决于设备。

有关 DIF/DIX 功能的详情,请参考 什么是 DIF/DIX

(BZ#1649493)

XFS 现在支持共享的 copy-on-write 数据扩展

XFS 支持共享的 copy-on-write 数据扩展功能这个功能可让两个或者多个文件共享一组通用的数据块。当任何一个共享通用块更改的文件时, XFS 会破坏到通用块的链接并创建新文件。这与其他文件系统中找到的 copy-on-write(COW)功能类似。

共享复制时写入数据扩展:

速度快
创建共享副本不会利用磁盘 I/O。
空间效率
共享块不消耗额外的磁盘空间。
透明
共享常见块操作的文件,类似常规文件。

用户空间工具可以使用共享的复制时写入数据扩展:

  • 高效文件克隆,比如使用 cp --reflink 命令
  • 针对文件的快照

内核子系统(如 Overlayfs 和 NFS)也使用这个功能来更有效地操作。

xfsprogs 软件包版本 4.17.0-2.el8 开始,在创建 XFS 文件系统时默认启用共享复制时的数据扩展。

请注意,直接访问(DAX)设备目前不支持带有共享写时复制数据扩展的 XFS。要创建没有这个功能的 XFS 文件系统,请使用以下命令:

# mkfs.xfs -m reflink=0 block-device

Red Hat Enterprise Linux 7 可以使用共享复制时写入数据扩展以只读模式挂载 XFS 文件系统。

(BZ#1494028)

最大 XFS 文件系统大小为 1024 TiB

XFS 文件系统最多支持的大小从 500 TiB 增加到 1024 TiB。

大于 500 TiB 的文件系统需要:

  • 元数据 CRC 功能和空闲内节点 btree 功能都以文件系统格式启用,以及
  • 分配组大小至少为 512 GiB。

在 RHEL 8 中,mkfs.xfs 工具默认创建满足这些要求的文件系统。

不支持增大一个小于 500 TiB 的新文件系统,它无法满足这些要求。

(BZ#1563617)

ext4 文件系统现在支持 metadata checksum

在这个版本中,ext4 元数据受 checksums 保护。这可让文件系统识别损坏的元数据,从而避免损坏并增加文件系统的弹性。

(BZ#1695584)

VDO 现在支持所有构架

Virtual Data Optimizer(VDO)现在包括在 RHEL 8 支持的所有构架中。

有关支持的构架列表,请参阅 ???

(BZ#1534087)

BOOM 引导管理器简化了创建引导条目的过程

BOOM 是 Linux 系统的引导管理器,使用引导装载程序支持 BootLoader 规范用于引导条目配置。它启用了灵活的引导配置,并简化了新引导条目或修改的引导条目的创建:例如,为使用 LVM 创建的系统引导快照映像。

BOOM 不会修改现有的引导装载程序配置,仅插入附加条目。保持现有配置,并且所有发行版集成(如内核安装和更新脚本)都可以象以前一样继续运行。

BOOM 具有简化的命令行界面(CLI)和 API,可简化创建引导条目的任务。

(BZ#1649582)

LUKS2 现在是加密卷的默认格式

在 RHEL 8 中,LUKS2 格式替换了传统的 LUKS(LUKS1)格式。dm-crypt 子系统和 cryptsetup 工具现在使用 LUKS2 作为加密卷的默认格式。LUKS2 在出现部分元数据崩溃事件时,为加密卷提供元数据冗余和自动恢复功能。

由于内部布局,LUKS2 也是将来功能的启用器。它支持通过 libcryptsetup 中构建的通用内核密钥令牌自动解锁,允许用户使用存储在内核密钥环保留服务的密码短语解锁 LUKS2 卷。

其他显著改进包括:

  • 使用嵌套密钥加密方案进行保护的密钥设置。
  • 更轻松地与基于策略的加密(Clevis)集成。
  • 最多 32 个密钥插槽 - LUKS1 只提供 8 个密钥插槽。

详情请查看 cryptsetup(8)cryptsetup-reencrypt(8) man page。

(BZ#1564540)

Broadcom Emulex 和 Marvell Qlogic Fibre Channel 适配器完全支持 NVMe/FC

现在,当与 Broadcom Emulex 和 Marvell Qlogic Fibre Channel 32Gbit 适配器支持时,Initiator 模式中完全支持 NVMe over Fibre Channel 32Gbit 传输类型。

NVMe over Fibre Channel 是之前在 Red Hat Enterprise Linux 中引入的 Nonvolatile Memory Express(NVMe)协议之外的额外光纤传输类型。

启用 NVMe/FC:

  • 要在 lpfc 驱动程序中启用 NVMe/FC,编辑 /etc/modprobe.d/lpfc.conf 文件并添加以下选项:

    lpfc_enable_fc4_type=3
  • 要在 qla2xxx 驱动程序中启用 NVMe/FC,编辑 /etc/modprobe.d/qla2xxx.conf 文件并添加以下选项:

    qla2xxx.ql2xnvmeenable=1

其他限制:

  • NVMe/FC 不支持多路径。
  • NVMe/FC 不支持 NVMe 集群。
  • kdump 不支持 NVMe/FC。
  • 不支持从 Storage Area Network (SAN) NVMe/FC 引导。

(BZ#1649497)

新的 scan_lvs 配置设置

添加了一个新的 lvm.conf 配置文件设置 scan_lvs,并默认设置为 0。新的默认行为阻止 LVM 查找 LV 上可能存在的 PV;也就是说,它不会扫描活动 LV 以获得更多 PV。默认设置还可阻止 LVM 在 LV 之上创建 PV。

LV 上方的 PV 可以通过放置在 LV 上的虚拟机镜像来进行,在这种情况下,主机无法安全地访问 PV。避免这种不安全的访问是新默认行为的主要原因。另外,在具有许多活动 LV 的环境中,LVM 可以显著减少设备扫描量。

通过将此设置更改为 1,可以恢复之前的行为。

(BZ#1676598)

DM 多路径配置文件的新 overrides 部分

/etc/multipath.conf 文件现在包含一个 overrides 部分,它允许您为所有设备设置配置值。这些属性可由 DM 多路径为所有设备使用,除非被文件 /etc/multipath.confmultipaths 部分中指定的属性覆盖。这个功能替换了配置文件的 devices 部分中的 all_devs 参数,这个参数不再被支持。

(BZ#1643294)

现在支持使用 NVDIMM 设备安装和引导

在更新之前,安装程序会忽略任何模式中的 Nonvolatile Dual Inline Memory Module(NVDIMM)设备。

在这个版本中,内核的改进支持 NVDIMM 设备提供更好的系统性能功能,并增强了对写密集型应用程序(如数据库或分析工作负载)的文件系统访问,并减少了 CPU 开销。

这个版本引进了对以下支持:

  • 使用 nvdimm Kickstart 命令和 GUI 安装 NVDIMM 设备,以便在安装过程中从 NVDIMM 设备安装和引导,并将 NVDIMM 设备重新配置为扇区模式。
  • 使用命令处理 NVDIMM 设备的 AnacondaKickstart 脚本的扩展。
  • grub2efibootmgrefivar 系统组件处理和从 NVDIMM 设备引导的功能。

(BZ#1499442)

改进了在 DM 多路径中发现的边缘路径

multipathd 服务现在支持改进的路径检测。这有助于多路径设备避免可能重复失败的路径,并提高性能。边缘路径(Marginal paths)是带有持久性但可能会出现 I/O 错误的路径。

/etc/multipath.conf 文件中的以下选项控制边缘路径行为:

  • marginal_path_double_failed_time,
  • marginal_path_err_sample_time,
  • marginal_path_err_rate_threshold、和
  • marginal_path_err_recheck_gap_time.

DM 多路径在配置的示例时间中禁用路径并使用重复 I/O 进行测试,如果:

  • 设定了列出的 multipath.conf 选项,
  • 路径在配置的时间里失败两次,同时
  • 其它路径可用。

如果在本次测试中路径超过配置的 err 速率,DM 多路径会在配置的空白时间忽略它,然后重新测试以查看它是否足够正常工作。

详情请查看 multipath.conf man page。

(BZ#1643550)

块设备的多队列调度

块设备现在在 Red Hat Enterprise Linux 8 中使用多队列调度。这可让块层性能针对使用快速固态驱动器(SSD)和多核系统进行正常扩展。

RHEL 7 及更早的版本中提供的传统调度程序已被删除。RHEL 8 只支持多队列调度程序。

(BZ#1647612)

5.1.13. 高可用性和集群

新的 pcs 命令,列出可用的 watchdog 设备并测试 watchdog 设备

要使用 Pacemaker 配置 SBD,需要一个正常工作的 watchdog 设备。此发行版本支持 pcs stonith sbd watchdog list 命令列出本地节点上可用的 watchdog 设备,以及用于测试监视设备的 pcs stonith sbd watchdog test 命令。有关 sbd 命令行工具的详情请参考 sbd(8)man page。

(BZ#1578891)

pcs 命令现在支持按操作及其间隔过滤资源失败

Pacemaker 现在会根据资源名称和节点的每个资源操作跟踪资源故障。pcs resource failcount show 命令现在允许根据资源、节点、操作和间隔过滤失败。它提供了一个选项,可以显示每个资源和节点聚合的故障,或按资源、节点、操作及其间隔详细显示。另外,pcs resource cleanup 命令现在允许根据资源、节点、操作和间隔过滤失败。

(BZ#1591308)

corosync 日志中启用时间戳

corosync 日志以前不包含时间戳,因此很难将它与其他节点和守护进程的日志关联。在这个版本中,corosync 日志中存在时间戳。

(BZ#1615420)

pcs cluster setuppcs cluster node addpcs cluster node remove 命令的新格式

在 Red Hat Enterprise Linux 8 中,pcs 完全支持 Corosync 3、knet 和节点名称。现在,节点名称是必需的,并替换节点标识符角色中的节点地址。节点地址现在是可选的。

  • pcs host auth 命令中,节点地址默认为节点名称。
  • pcs cluster setuppcs cluster node add 命令中,节点地址默认为 pcs host auth 命令中指定的节点地址。

随着这些更改,设置集群的命令格式、在集群中添加节点以及从集群中删除节点已更改。有关这些新命令格式的详情,请查看 pcs cluster setuppcs cluster node addpcs cluster node remove 命令的帮助信息。

(BZ#1158816)

新的 pcs 命令

Red Hat Enterprise Linux 8 包括以下新命令。

  • RHEL 8 引入了一个新命令 pcs cluster node add-guest | remove-guest,它替换了 RHEL 7 中的 pcs cluster remote-node add | remove 命令。
  • RHEL 8 引入了一个新命令 pcs quorum unblock,它替换了 RHEL 7 中的 pcs cluster quorum unblock 命令。
  • pcs resource failcount reset 命令已被删除,因为它与 pcs resource cleanup 命令的功能重复。
  • RHEL 8 引入了新的命令来替换 RHEL 7 中的 pcs resource [show] 命令:

    • RHEL 8 中的 pcs resource [status] 命令替换了 RHEL 7 中的 pcs resource [show] 命令。
    • RHEL 8 中的 pcs resource config 命令替换了 RHEL 7 中的 pcs resource [show] --full 命令。
    • RHEL 8 中的 pcs resource config resource id 命令替换了 RHEL 7 中的 pcs resource show resource id 命令。
  • RHEL 8 引入了新的命令来替换 RHEL 7 中的 pcs stonith [show] 命令:

    • RHEL 8 中的 pcs stonith [status] 命令替换了 RHEL 7 中的 pcs stonith [show] 命令。
    • RHEL 8 中的 pcs stonith config 命令替换了 RHEL 7 中的 pcs stonith [show] --full 命令。
    • RHEL 8 中的 pcs stonith config resource id 命令替换了 RHEL 7 中的 pcs stonith show resource id 命令。

(BZ#1654280)

RHEL 8 中的 Pacemaker 2.0.0

pacemaker 软件包已升级到 Pacemaker 2.0.0 的上游版本,它提供很多程序错误修复和增强:

  • 现在,Pacemaker 详情日志默认是 /var/log/pacemaker/pacemaker.log (不直接在 /var/log 中,或与 /var/log/cluster下的 corosync 日志组合)。
  • Pacemaker 守护进程进程已被重命名为更直观地读取日志。例如,pengine 已重命名为 pacemaker-schedulerd
  • 对已弃用的 default-resource-stickinessis-managed-default 集群属性的支持已被丢弃。resource-stickinessis-managed 属性应在资源默认值中设置。语法已弃用的现有配置(但不是新创建的配置)将自动更新,以使用支持的语法。
  • 如需更完整的更改列表,请参阅 Red Hat Enterprise Linux 8 中的 Pacemaker 2.0 升级

建议要使用 Red Hat Enterprise Linux 7 或更早版本升级现有集群的用户,在所有集群节点上升级 RHEL 之前和之后在任意集群节点中运行 pcs cluster cib-upgrade

(BZ#1543494)

重命名为可升级克隆资源的 master 资源

Red Hat Enterprise Linux (RHEL) 8 支持 Pacemaker 2.0,其中的 master/slave 资源不再是一个独立的资源类型,而是带有 promotable meta-attribute 设置为 true 的标准克隆资源。实施以下更改后,支持此次更新:

  • 无法再使用 pcs 命令创建 master 资源。相反,可以创建 promotable 克隆资源。相关关键字和命令已从 master 改为 promotable
  • 所有现有的 master 资源都显示为 promotable 克隆资源。
  • 在 Web UI 中管理 RHEL7 集群时,master 资源仍被称为 master,因为 RHEL7 集群不支持可升级克隆。

(BZ#1542288)

用于验证集群中的节点的新命令

Red Hat Enterprise Linux(RHEL)8 对用来验证集群中节点的命令进行了以下更改。

  • 新命令为 pcs host auth。此命令允许用户指定主机名、地址和 pcsd 端口。
  • pcs cluster auth 命令只验证本地集群中的节点,不接受节点列表
  • 现在可以为每个节点指定地址。pcs/pcsd 随后将使用指定地址与每个节点通信。这些地址可以与 corosync 内部使用的地址不同。
  • pcs pcsd clear-auth 命令已被 pcs pcsd deauthpcs host deauth 命令替代。新命令允许用户验证单个主机以及所有主机。
  • 在以前的版本中,节点身份验证是双向的,运行 pcs cluster auth 命令会导致所有指定节点相互身份验证。但是,pcs host auth 命令只使本地主机能够针对指定节点进行身份验证。这样,在运行此命令时,可以更好地控制针对其他节点进行身份验证的节点。在集群设置本身中,以及添加节点时,pcs 会自动同步集群中的令牌,因此集群中的所有节点仍会自动进行身份验证,且集群节点可以相互通信。

请注意,这些更改不是后向兼容的。在 RHEL 7 系统中验证的节点需要再次进行身份验证。

(BZ#1549535)

pcs 命令现在支持隔离历史记录的显示、清理和同步

Pacemaker 的隔离守护进程跟踪所有执行的隔离操作(待处理、成功和失败)。在这个版本中,pcs 命令允许用户通过以下方式访问隔离历史记录:

  • pcs status 命令显示失败和待处理的隔离操作
  • pcs status --full 命令显示整个隔离历史记录
  • pcs stonith history 命令提供显示和清理隔离历史记录的选项
  • 虽然隔离历史记录是自动同步的,但 pcs stonith history 命令现在支持 update 选项,允许用户根据需要手动同步隔离历史记录

(BZ#1620190, BZ#1615891)

5.1.14. 网络

nftables 替换 iptables 作为默认网络数据包过滤框架

nftables 框架提供数据包分类工具,它是 iptablesip6tablesarptablesebtables 工具的指定后继设备。与之前的数据包过滤工具相比,它在方便、特性和性能方面提供了大量改进,最重要的是:

  • 查找表而不是线性处理
  • IPv4IPv6 协议都使用同一个框架
  • 规则会以原子方式应用,而不是提取、更新和存储完整的规则集
  • 支持在规则集(nftrace)中调试和追踪,并监控追踪事件(在 nft 工具中)
  • 更加一致和压缩的语法,没有特定协议的扩展
  • 用于第三方应用程序的 Netlink API

iptables类似, nftables 使用表来存储链。链包含执行动作的独立规则。nft 工具替换了之前数据包过滤框架中的所有工具。libnftables 库可用于通过 libmnl 库与 nftables Netlink API 进行底层交互。

iptablesip6tablesebtablesarptables 工具由基于 nftables 的具有相同名称的程序替换。虽然其外部行为与其旧的程序相同,但在内部会通过兼容性接口使用 nftables 和旧的 netfilter 内核模块。

可以使用 nft list ruleset 命令查看模块对 nftables 规则集的影响。因为这些工具在 nftables 规则集中添加表、链和规则,请注意 nftables 规则集操作(如 nft flush ruleset 命令)可能会影响使用以前独立的旧命令安装的规则集。

为了帮助快速识存在该工具的哪个变体,版本信息已被更新,其中包含了后端名称。在 RHEL 8 中,基于 nftables 的 iptables 工具打印以下版本字符串:

$ iptables --version
iptables v1.8.0 (nf_tables)

如果存在旧的 iptables 工具,则会打印以下版本信息:

$ iptables --version
iptables v1.8.0 (legacy)

(BZ#1644030)

RHEL 8 中的主要 TCP 特性

Red Hat Enterprise Linux 8 提供了 TCP 网络堆栈版本 4.18,它提供更高的性能、更好的可伸缩性和稳定性。性能会提高,特别是对于入站连接率高的忙碌的 TCP 服务器的性能。

另外,提供了两个新的 TCP 阻塞算法 BBRNV,它们在大多数情况下都会提供较低延迟和更好的吞吐量。

(BZ#1562998)

firewalld 默认使用 nftables

在这个版本中,nftables 过滤子系统是 firewalld 守护进程的默认防火墙后端。要更改后端,使用 /etc/firewalld/firewalld.conf 文件中的 FirewallBackend 选项。

当使用 nftables 时,这个更改的行为会包括以下不同:

  1. iptables 规则执行总是在 firewalld 规则前发生

    • DROPiptables 中,意味着永远不会看到数据包 firewalld
    • ACCEPTiptables 中,意味着数据包仍然受到 firewalld 规则的约束
  2. firewalld 直接规则仍然通过 iptables 实施,而其他 firewalld 功能使用 nftables
  3. 直接规则执行在 firewalld 通用接受已建立的连接前执行

(BZ#1509026)

RHEL 8 中的 wpa_supplicant 中的显著变化

在 Red Hat Enterprise Linux(RHEL)8 中,wpa_supplicant 软件包在启用CONFIG_DEBUG_SYSLOG 的情况下被构建。这允许使用 journalctl 实用程序读取 wpa_supplicant 日志,而不是检查 /var/log/wpa_supplicant.log 文件的内容。

(BZ#1582538)

NetworkManager 现在支持 SR-IOV 虚拟功能

在 Red Hat Enterprise Linux 8.0 中,NetworkManager 允许为支持单根 I/O 虚拟化(SR-IOV)的接口配置虚拟功能(VF)的数量。另外,NetworkManager 允许配置 VF 的一些属性,如 MAC 地址、VLAN、spoof checking 设置和允许的位速率。请注意,与 SR-IOV 相关的所有属性都包括在 sriov 连接设置中。详情请查看 nm-settings(5) man page。

(BZ#1555013)

IPVLAN 虚拟网络驱动程序现在被支持

在 Red Hat Enterprise Linux 8.0 中,内核包含对 IPVLAN 虚拟网络驱动程序的支持。在这个版本中,IPVLAN 虚拟网络接口卡(NIC)为本地网络公开单个 MAC 地址的多个容器启用网络连接。这使得单个主机可以克服对同级网络设备支持的 MAC 地址数量可能存在的限制。

(BZ#1261167)

NetworkManager 支持连接的通配符接口名称匹配

在以前的版本中,只能使用接口名的完全匹配来限制到给定接口的连接。在这个版本中,连接具有支持通配符的新 match.interface-name 属性。在这个版本中,用户可以使用通配符模式以更灵活的方式选择连接的接口。

(BZ#1555012)

网络堆栈 4.18 的改进

Red Hat Enterprise Linux 8.0 包括了升级到上游版本 4.18 的网络堆栈,它提供了几个程序错误修复和增强。主要变更包括:

  • 引入了新的卸载功能,如 UDP_GSO,以及一些设备驱动程序 GRO_HW
  • 改进了用户数据报协议(UDP)的显著可扩展性。
  • 改进了通用忙碌轮询代码。
  • 改进了 IPv6 协议的可扩展性。
  • 路由代码的可扩展性得到改进。
  • 添加了一个新的默认传输队列调度算法fq_codel,它改进了传输延迟。
  • 提高了部分传输队列调度算法的可扩展性.例如: pfifo_fast 现在被锁定。
  • 通过移除垃圾回收内核线程和 ip 片段只在超时后过期,改进了 IP 重新装配单元的可扩展性。因此,DoS 下的 CPU 使用率要低得多,且最大可持续发展片段率会受到为 IP 回配单元配置的内存量的限制。

(BZ#1562987)

iptables 转换为 nftables 的新工具

在这个版本中,添加了 iptables-translateip6tables-translate 工具,将现有 iptablesip6tables 规则转换为 nftables 的对等规则。请注意,一些扩展可能缺少响应的转换支持。如果存在这种扩展,该工具会输出以 # 符号为前缀的未转换的规则。例如:

| % iptables-translate -A INPUT -j CHECKSUM --checksum-fill
| nft # -A INPUT -j CHECKSUM --checksum-fill

另外,用户还可以使用 iptables-restore-translateip6tables-restore-translate 工具来翻译规则转储。请注意,在此之前,用户可以使用 iptables-save 或者 ip6tables-save 命令打印当前规则的转储。例如:

| % sudo iptables-save >/tmp/iptables.dump
| % iptables-restore-translate -f /tmp/iptables.dump
| # Translated by iptables-restore-translate v1.8.0 on Wed Oct 17 17:00:13 2018
| add table ip nat
| ...

(BZ#1564596)

使用 NetworkManager添加到 VPN 的新功能

在 Red Hat Enterprise Linux 8.0 中,NetworkManager 为 VPN 提供以下新功能:

  • 支持互联网密钥交换版本 2(IKEv2)协议。
  • 添加了一些更多 Libreswan 选项,如 rightidleftcertnarrowingrekeyfragmentation 选项。有关支持选项的详情,请查看 nm-settings-libreswan man page。
  • 更新了默认密码。这意味着,当用户没有指定密码时,NetworkManager-libreswan 插件允许 Libreswan 应用程序选择系统默认密码。唯一的例外是在用户选择 IKEv1 主动模式配置时。在这种情况下,ike = aes256-sha1;modp1536eps = aes256-sha1 值会被传递给 Libreswan

(BZ#1557035)

向 SCTP 中添加的新数据块类型 I-DATA

在这个版本中,在流控制传输协议(SCTP)中添加一个新的数据块类型 I-DATA 和流调度程序。在以前的版本中,SCTP 会按照用户发送的顺序发送用户消息。因此,一个大型 SCTP 用户消息会阻止任何流中的所有其他信息,直到完全发送为止。当使用 I-DATA 块时,传输序列号(TSN)字段不会被过载。因此,SCTP 现在可以以不同的方式调度流,I-DATA 允许用户信息交集(RFC 8260)。请注意,两个 peer 都必须支持 I-DATA 块类型。

(BZ#1273139)

NetworkManager 支持配置 ethtool 卸载功能

在这个版本中,NetworkManager 支持配置 ethtool 卸载功能,用户不再需要使用 init 脚本或 NetworkManager 分配程序脚本。现在,用户可以使用以下方法之一将下载功能配置为连接配置集的一部分:

  • 使用 nmcli 工具
  • 通过编辑 /etc/NetworkManager/system-connections/ 目录中的密钥文件
  • 编辑 /etc/sysconfig/network-scripts/ifcfg-* 文件

请注意,图形界面和 nmtui 实用程序目前不支持这个功能。

(BZ#1335409)

RHEL 8 中的 TCP BBR 支持

现在,Red Hat Enterprise Linux(RHEL)8 支持一个新的 TCP 拥塞控制算法,即 Bottleneck Bandwidth 和 round-trip 时间(BBR)。BBR 尝试确定电压链路的带宽和往返用时(RTT)。大多数拥塞算法基于数据包丢失(包括 CUBIC,默认的 Linux TCP 拥塞控制算法),它们在高吞吐量链路上有问题。BBR 不直接响应丢失事件,它会调整 TCP 架构率使其与可用带宽匹配。TCP BBR 的用户应该在所有相关接口上切换到 fq 队列设置。

请注意,用户应明确使用 fq,而不是使用 fq_codel

详情请查看 tc-fq man page。

(BZ#1515987)

lksctp-tools,RHEL 8 版本 1.0.18

lksctp-tools 软件包版本 3.28 包括在 Red Hat Enterprise Linux(RHEL)8 中。主要改进和程序错误修复包括:

  • 与 Travis CI 和覆盖范围扫描集成
  • 支持 sctp_peeloff_flags 功能
  • 指明哪些内核功能可用
  • 覆盖范围扫描问题修复

(BZ#1568622)

在 RHEL 8 中默认将 SCTP 模块列入黑名单

为了提高安全性,已将一组内核模块移到 kernel-modules-extra 软件包中。默认情况下不安装它们。因此,非 root 用户无法加载这些组件,因为它们会被默认列入黑名单。要使用其中一个内核模块,系统管理员必须安装 kernel-modules-extra 并明确删除模块黑名单。因此,非 root 用户将自动加载软件组件。

(BZ#1642795)

driverctl 0.101 中的显著变化

Red Hat Enterprise Linux 8.0 提供了 driverctl 0.101。此版本包括以下程序错误修复:

  • 已修复 shellcheck 警告。
  • bash-completion 作为 driverctl 而不是 driverctl-bash-completion.sh 安装。
  • 非 PCI 总线的 load_override 功能已被修复。
  • driverctl 服务在达到 basic.target systemd 目标前加载所有覆盖。

(BZ#1648411)

为 firewalld 添加了富规则优先级

priority 选项已添加到富规则中。这使得用户可以在规则执行期间定义所需的优先级顺序,并提供对富规则的更多高级控制。

(BZ#1648497)

RHEL 8 支持 NVMe over RDMA

在 Red Hat Enterprise Linux(RHEL)8 中,通过远程直接内存访问(RDMA)的 Nonvolatile Memory Express(NVMe)只支持 Infiniband、RoCEv2 和 iWARP(发起端模式)。

请注意,只有故障切换模式支持多路径。

其他限制:

  • kdump 不支持 NVMe/RDMA。
  • 不支持通过 RDMA 从 NVMe 设备引导。

(BZ#1680177)

nf_tables 后端不支持使用调试 dmesg

Red Hat Enterprise Linux 8.0 使用 nf_tables 后端用于防火墙,这些防火墙不支持使用 dmesg 工具输出来调试防火墙。要调试防火墙规则,使用 xtables-monitor -tnft monitor trace 命令解码规则评估事件。

(BZ#1645744)

Red Hat Enterprise Linux 支持 VRF

RHEL 8.0 中的内核支持虚拟路由和转发(VRF)。VRF 设备以及使用 ip 实用程序设置的规则可让管理员在 Linux 网络堆栈中创建 VRF 域。这些域隔离第 3 层的流量,因此管理员可以创建不同的路由表,并在一个主机上的不同 VRF 域内重复使用相同的 IP 地址。

(BZ#1440031)

iproute在 RHEL 8 中,版本 4.18

iproute 软件包包括在 Red Hat Enterprise Linux(RHEL)8 中版本 4.18。最显著的变化是标记为 ethX:Y 的接口别名不再被支持,如 eth0:1。要临时解决这个问题,用户应该在输入 ip link show 前删除别名后缀,即冒号 以及以下数字。

(BZ#1589317)

5.1.15. 安全性

RHEL 8.0 发行版本的 SWID 标签

要启用使用 ISO/IEC 19770-2:2015 机制的 RHEL 8.0 安装,软件标识(SWID)标签会安装在 /usr/lib/swidtag/redhat.com/com.redhat.RHEL-8-<architecture>.swidtag/usr/lib/swidtag/redhat.com/com.redhat.RHEL-8.0-<architecture>.swidtag 文件中。这些标签的父目录也可以在 /etc/swid/swidtags.d/redhat.com 符号链接下找到。

可以使用 xmlsec1 verify 命令验证 SWID 标签文件的 XML 签名,例如:

xmlsec1 verify --trusted-pem /etc/pki/swid/CA/redhat.com/redhatcodesignca.cert /usr/share/redhat.com/com.redhat.RHEL-8-x86_64.swidtag

代码签名认证机构的证书也可以从客户门户网站上 的产品签名密钥 页面获取。

(BZ#1636338)

默认应用系统范围的加密策略

crypto-policies 是 Red Hat Enterprise Linux 8 中的一个组件,它配置核心加密子系统,包括 TLS、IPsec、DNSSEC、Kerberos 和 SSH 协议。它提供一组策略,管理员可以使用 update-crypto-policies 命令进行选择。

DEFAULT 系统范围的加密策略为当前的威胁模型提供安全设置。它允许 TLS 1.2 和 1.3 协议,以及 IKEv2 和 SSH2 协议。如果 2047 位大于 2047,则接受 RSA 密钥和 Diffie-Hellman 参数。

如需更多信息,请参阅 Red Hat 博客和 update-crypto-policies(8) man page 中的 Red Hat Enterprise Linux 8 中的通过加密策略一致的安全性

(BZ#1591620)

OpenSSH rebase 到版本 7.8p1

openssh 软件包已升级到上游版本 7.8p1。主要变更包括:

  • 删除了对 SSH version 1 协议的支持。
  • 删除了对 hmac-ripemd160 消息验证代码的支持。
  • 删除了对 RC4(arcfour)加密的支持。
  • 删除了对 Blowfish 加密的支持。
  • 删除了对 CAST 加密的支持。
  • UseDNS 选项的默认值改为 no
  • 默认禁用 DSA 公钥算法。
  • Diffie-Hellman 参数的最小 modulus 大小改为 2048 字节。
  • 更改 ExposeAuthInfo 配置选项的语义。
  • UsePrivilegeSeparation=sandbox 选项现在是必须的且无法禁用。
  • 最小接受的 RSA 密钥大小为 1024 字节。

(BZ#1622511)

自动 OpenSSH 服务器密钥生成现在由 sshd-keygen@.service

OpenSSH 如果缺少 RSA、ECDSA 和 ED25519 服务器主机密钥,则会自动创建它们。要在 RHEL 8 中配置主机密钥创建,请使用 sshd-keygen@.service 实例化服务。

例如,禁用自动创建 RSA 密钥类型:

# systemctl mask sshd-keygen@rsa.service

如需更多信息,请参阅 /etc/sysconfig/sshd 文件。

(BZ#1228088)

ECDSA 密钥支持 SSH 身份验证

这个 OpenSSH 套件发行版本引进了对保存在 PKCS #11 智能卡中的 ECDSA 密钥的支持。现在,用户可以同时使用 RSA 和 ECDSA 密钥进行 SSH 身份验证。

(BZ#1645038)

libssh 实现 SSH 作为核心加密组件

在 Red Hat Enterprise Linux 8 中引进了 libssh 作为核心加密组件。libssh 库实现 Secure Shell(SSH)协议。

请注意,libssh 的客户端通过系统范围的加密策略遵循 OpenSSH 的配置设置,但无法通过系统范围的加密策略更改服务器端的配置。

(BZ#1485241)

加密库中的 TLS 1.3 支持

在这个版本中,在所有主要后端加密库中默认启用传输层安全(TLS)1.3。这通过利用新的算法(如 RSA-PSS 或 X25519)实现了跨操作系统通信层的低延迟并增强应用程序的隐私和安全。

(BZ#1516728)

NSS 现在默认使用 SQL

网络安全服务(NSS)库现在默认使用 SQL 文件格式作为信任数据库。DBM 文件格式用作之前版本中的默认数据库格式,它不支持多个进程同时访问同一数据库,它在上游中已被弃用。因此,使用 NSS 信任数据库存储密钥、证书和撤销信息的应用程序现在默认使用 SQL 格式创建数据库。尝试使用旧的 DBM 格式创建数据库会失败。现有 DBM 数据库以只读模式打开,它们会自动转换为 SQL 格式。请注意,自 Red Hat Enterprise Linux 6 之后,NSS 支持 SQL 文件格式。

(BZ#1489094)

PKCS #11 对智能卡和 HSM 的支持在系统中一致

在这个版本中,使用智能卡和带有 PKCS #11 加密令牌接口的硬件安全模块(HSM)会变得一致。这意味着用户和管理员可以对系统中所有相关工具使用相同的语法。主要改进包括:

  • 支持 PKCS #11 Uniform Resource Identifier(URI)方案,用于确保为管理员和应用程序作者在 RHEL 服务器中启用令牌。
  • 使用 pkcs11.conf 的智能卡和 HSM 系统范围的注册方法。
  • NSS、GnuTLS 和 OpenSSL(通过 openssl-pkcs11 引擎)应用程序中提供了对 HSM 和智能卡的一致支持。
  • Apache HTTP 服务器(httpd)现在无缝支持 HSM。

如需更多信息,请参阅 pkcs11.conf(5) man page。

(BZ#1516741)

Firefox 现在可用于系统范围内注册的 PKCS #11 驱动程序

Firefox Web 浏览器会自动载入 p11-kit-proxy 模块,并通过 pkcs11.conf 文件自动检测在 p11-kit 中注册的每个智能卡。要使用 TLS 客户端身份验证,不需要额外的设置,当服务器请求智能卡时,会自动使用这些密钥。

(BZ#1595638)

RSA-PSS 现在被支持 OpenSC

在这个版本中,在 OpenSC 智能卡驱动程序中添加了对 RSA-PSS 加密签名方案的支持。新方案启用客户端软件中支持 TLS 1.3 所需的安全加密算法。

(BZ#1595626)

RHEL 8 中的 Libreswan 中的显著变化

libreswan 软件包已升级到上游版本 3.27,它提供很多程序错误修复和增强。最显著的变化包括:

  • 通过 authby=rsa-sha2、ECDSA(RFC 7427)到 authby=ecdsa-sha2、CURVE25519(使用 dh31 关键字)和 CHACHA20-POLY1305 对 IKE 和 ESP 添加了对 IKE 和 ESP 的 CHACHA20-POLY1305,为 IKEv2 协议添加了对 IKE 和 ESP 的 CHACHA20-POLY1305。chacha20_poly1305
  • 已从 Libreswan 中删除了对替代 KLIPS 内核模块的支持,因为上游社区已完全弃用了 KLIPS。
  • Diffie-Hellman 组不再支持 DH22、DH23 和 DH24(与 RFC 8247 不同)。

请注意,authby=rsasig 已改为总是使用 RSA v1.5 方法,authby=rsa-sha2 选项使用 RSASSA-PSS 方法。该 authby=rsa-sha1 选项根据 RFC 8247 无效。这就是 Libreswan 不再支持带有数字签名的 SHA-1 的原因。

(BZ#1566574)

系统范围的加密策略将 Libreswan 中的默认 IKE 版本改为 IKEv2

Libreswan IPsec 实现中的默认 IKE 版本已从 IKEv1(RFC 2409)改为 IKEv2(RFC 7296)。用于 IPsec 的默认 IKE 和 ESP/AH 算法已更新,以符合系统范围的加密策略、RFC 8221 和 RFC 8247。现在,加密密钥大小为 256 位,优先于 128 位的密钥大小。

默认 IKE 和 ESP/AH 密码现在包括 AES-GCM、CHACHA20POLY1305 和 AES-CBC 用于加密。为了进行完整性检查,它们提供了 AEAD 和 SHA-2。Diffie-Hellman 组现在包含 DH19、DH20、DH21、DH14、DH15、DH16 和 DH18。

以下算法已从默认的 IKE 和 ESP/AH 策略中删除:AES_CTR、3DES、SHA1、DH2、DH5、DH22、DH23 和 DH24。除了 DH22、DH23 和 DH24 外,IPsec 配置文件中的 ike=phase2alg=/esp=/ah= 选项可启用这些算法。

要配置仍然需要 IKEv1 协议的 IPsec VPN 连接,请在连接配置文件中添加 ikev2=no 选项。如需更多信息,请参阅 ipsec.conf(5) man page。

(BZ#1645606)

Libreswan 中的 IKE 版本相关更改

在这个版本中,Libreswan 以不同的方式处理互联网密钥交换(IKE)设置:

  • 默认互联网密钥交换(IKE)版本已从 1 改为 2。
  • 连接现在可以使用 IKEv1 或 IKEv2 协议,但不能同时使用两者。
  • ikev2 选项的解释已更改:

    • insist 的值解释为 IKEv2-only。
    • nonever 值被解释为 IKEv1-only。
    • proposeyespermit 值不再有效并导致错误,因为不知道这些值导致哪个 IKE 版本

(BZ#1648776)

RHEL 8 中的 OpenSCAP 中的新功能

OpenSCAP 套件已升级到上游版本 1.3.0,它引进了许多与之前版本相比的改进。最显著的功能包括:

  • API 和 ABI 已合并 - 已删除更新、弃用和/或未使用的符号。
  • 探测不是作为独立进程运行,而是作为 oscap 进程中的线程运行。
  • 命令行界面已被更新。
  • Python 2 绑定已被 Python 3 绑定替代。

(BZ#1614273)

SCAP Security Guide 现在支持系统范围的加密策略

scap-security-guide 软件包已更新,使用预定义的系统范围的加密策略来配置核心加密子系统。与系统范围的加密策略冲突或覆盖的安全内容已被删除。

请注意,这个更改只适用于 scap-security-guide 中的安全内容,您不需要更新 OpenSCAP 扫描程序或其他 SCAP 组件。

(BZ#1618505)

改进了 OpenSCAP 命令行界面

现在,所有 oscap 模块和子模块都提供了详细模式。工具输出改进了格式。

已删除已弃用的选项,以提高命令行界面的可用性。

以下选项不再可用:

  • --showoscap xccdf generate report 中已完全删除。
  • --probe-rootoscap oval eval 中已被删除。它可以通过设置 环境变量 OSCAP_PROBE_ROOT 来替换。
  • --sce-resultsoscap xccdf eval 中被替换 --check-engine-results
  • validate-xml 子模块已从 CPE、OVAL 和 XCCDF 模块中删除。validate 子模块可以改为用于根据 XML 模式和 XSD 架构验证 SCAP 内容。
  • oscap oval list-probes 已删除命令,可使用 oscap --version 显示可用探测列表。

OpenSCAP 允许使用 --profile '(all)' 评估给定 XCCDF 基准中的所有规则,无论配置集是什么。

(BZ#1618484)

SCAP 安全指南 PCI-DSS 配置集与版本 3.2.1 一致

scap-security-guide 软件包为 Red Hat Enterprise Linux 8 提供 PCI-DSS(Payment Card 行业数据安全标准)配置集,这个配置集已更新,与最新的 PCI-DSS 版本 - 3.2.1 一致。

(BZ#1618528)

SCAP 安全指南支持 OSPP 4.2

scap-security-guide 软件包提供 Red Hat Enterprise Linux 8 的 OSPP(常规目的操作系统)配置集版本 4.2 的文稿。这个配置集反映了在 NIAP 配置中识别到 General Purpose Operating Systems(Protection Profile 版本 4.2)的保护配置集中指定的强制配置控制。SCAP 安全指南提供自动检查和脚本,帮助用户满足 OSPP 中定义的要求。

(BZ#1618518)

RHEL 8 中的 rsyslog 中的显著变化

rsyslog 软件包已升级到上游版本 8.37.0,它提供很多程序错误修复和增强。最显著的变化包括:

  • rsyslog 内部消息的增强处理;速率限制的可能性;修复可能的死锁.
  • 一般的速率限制增强;现在记录了实际 垃圾邮件源
  • 改进了对超大小消息的处理 - 用户现在可以设置如何在核心模块和具有独立操作的某些模块中处理它们。
  • mmnormalize 现在,规则基础可以嵌入到 config 文件中,而不是为它们创建单独的文件。
  • 现在,所有 config 变量(包括 JSON 中的变量)都不区分大小写。
  • PostgreSQL 输出的各种改进。
  • 添加了使用 shell 变量控制 config 处理的可能性,如附加配置文件的条件加载、执行声明,或者在 config 中包含文本。请注意,过度使用此功能可能会导致 rsyslog 调试问题非常困难。
  • 现在可以在 config 中指定 4 位文件创建模式。
  • 现在,可靠的事件日志记录协议(RELP)输入只能在指定地址上绑定。
  • 邮件输出的 enable.body 选项的默认值现在与文档一致
  • 用户现在可以指定在 MongoDB 输出中应该忽略的插入错误代码。
  • 并行 TCP(pTCP)输入现已是可配置的积压,以更好地负载平衡。
  • 为了避免当 journald 轮转其文件时可能会出现的重复记录,添加了 imjournal 选项。请注意,使用这个选项可能会影响性能。

请注意,可以配置 rsyslog 系统以提供更佳的性能,如在没有 journald 的情况下配置系统日志或最小 journald 用法知识库中所述

(BZ#1613880)

新的 rsyslog 模块: omkafka

要启用 kafka 集中式数据存储场景,现在您可以使用新的 omkafka 模块将日志转发到 kafka 基础架构。

(BZ#1542497)

rsyslog imfile 现在支持符号链接

在这个版本中,rsyslog imfile 模块提供了更好的性能和更多配置选项。这可让您将模块用于更复杂的文件监控用例。例如,您现在可以在配置的路径的任何位置使用带有 glob 模式的文件监视器,并使用提高数据吞吐量来轮转符号链接目标。

(BZ#1614179)

现在,默认的 rsyslog 配置文件格式为 non-legacy

rsyslog 软件包中的配置文件现在默认使用 non-legacy 格式。旧格式仍可使用,但混合当前和旧版配置语句具有多个限制。需要检查来自以前的 RHEL 版本的配置。详情请查看 rsyslog.conf(5) man page。

(BZ#1619645)

Audit 3.0 将 audispd 替换为 auditd

在这个版本中,audispd 的功能被移到 auditd。因此,audispd 配置选项现在是 auditd.conf 的一部分。另外,plugins.d 目录已移到 /etc/audit 下。现在可以通过运行 service auditd state 命令检查 auditd 及其插件的当前状态。

(BZ#1616428)

tangd_port_t 允许更改 Tang 的默认端口

在这个版本中引进了 tangd_port_t SELinux 类型,允许 tangd 服务作为 SELinux enforcing 模式限制运行。这一更改有助于简化将 Tang 服务器配置为侦听用户定义的端口,同时还会将 SELinux 提供的安全级别保持在 enforcing 模式。

如需更多信息,请参阅使用 基于策略的解密配置加密卷的自动解锁 部分。

(BZ#1664345)

新 SELinux 布尔值

这个 SELinux 系统策略更新引进了以下布尔值:

  • colord_use_nfs
  • mysql_connect_http
  • pdns_can_network_connect_db
  • ssh_use_tcpd
  • sslh_can_bind_any_port
  • sslh_can_connect_any_port
  • virt_use_pcscd

要获得包括布尔值列表,并找出它们是否启用或禁用,请安装 selinux-policy-devel 软件包并使用:

# semanage boolean -l

(JIRA:RHELPLAN-10347)

SELinux 现在支持 systemd No New Privileges

在这个版本中引进了 nnp_nosuid_transition 策略功能,如果允许在旧的上下文和新上下文间使用 nnp_nosuid_transition,则在 No New Privileges (NNP)或 nosuid 下启用 SELinux 域转换。selinux-policy 软件包现在包含使用 NNP 安全功能的 systemd 服务的策略。

以下规则描述了允许该服务此功能:

   allow source_domain  target_type:process2 { nnp_transition nosuid_transition };

例如:

   allow init_t fprintd_t:process2 { nnp_transition nosuid_transition };

分发策略现在还包含一个 m4 宏接口,可在使用 init_nnp_daemon_domain() 功能的服务的 SELinux 安全策略中使用。

(BZ#1594111)

支持 mmap 系统调用中的新映射权限检查

添加了 SELinux map 权限来控制对文件、目录和套接字等映射的访问。这允许 SELinux 策略阻止直接访问各种文件系统对象,并确保每个此类访问都已重新验证。

(BZ#1592244)

SELinux 现在支持 process 类中的 getrlimit 权限

在这个版本中引进了新的 SELinux 访问控制检查 process:getrlimit,它为 prlimit() 功能添加。这可让 SELinux 策略开发人员控制一个进程尝试读取,然后使用 process:setrlimit 权限修改另一个进程的资源限制。请注意,SELinux 不会限制进程通过 prlimit() 操作自己的资源限制。如需更多信息,请参阅 prlimit(2)getrlimit(2) man page。

(BZ#1549772)

selinux-policy 现在支持 VxFS 标签

这个版本引进了对 Veritas 文件系统(VxFS)安全扩展属性(xattrs)的支持。这允许在文件系统中为对象存储正确的 SELinux 标签,而不是通用 vxfs_t 类型。因此,完全支持 SELinux 的 VxFS 系统更安全。

(BZ#1483904)

编译时安全强化标志会以更一致的方式应用

在 RHEL 8 发行版本中的 RPM 软件包中,编译时间安全强化标记会更加一致,redhat-rpm-config 软件包现在会自动提供安全强化标记。应用编译时间标志还有助于满足通用标准(CC)要求。应用以下安全强化标记:

  • 用于检测 buffer-overflow 错误: D_FORTIFY_SOURCE=2
  • 检查 C++ 阵列、向量和字符串的标准库强化: D_GLIBCXX_ASSERTIONS
  • 用于堆叠保护器(SSP): fstack-protector-strong
  • 强化除外: fexceptions
  • 对于 Control-Flow Integrity(CFI): fcf-protection=full (仅在 AMD 和 Intel 64 位构架中)
  • 对于地址空间布局随机(ASLR): fPIE (针对可执行文件)或 fPIC (用于库)
  • 保护 Stack Clash 漏洞: fstack-clash-protection ( ARM 除外)
  • 在启动时解析所有符号的链接标记: -Wl, -z,now

如需更多信息,请参阅 gcc(1) man page。

(JIRA:RHELPLAN-2306)

5.1.16. 虚拟化

qemu-kvm 2.12 在 RHEL 8 中

Red Hat Enterprise Linux 8 带有 qemu-kvm 2.12。这个版本修复了多个程序错误,并在 Red Hat Enterprise Linux 7 中提供 1.5.3 版本中添加了许多改进。

值得注意的是,引入了以下功能:

  • Q35 客户机机器类型
  • UEFI 客户机引导
  • guest 中的 NUMA 调整和固定
  • vCPU 热插拔和热拔下
  • 客户机 I/O 线程

请注意,Red Hat Enterprise Linux 8 不支持 qemu-kvm 2.12 中的一些功能。详情请查看红帽客户门户网站中的"RHEL 8 虚拟化功能支持和限制"。

(BZ#1559240)

虚拟化现在支持 Q35 机器类型

红帽企业 Linux 8 引入了对 Q35 的支持,这是一种更加现代化的基于 PCI Express 的机器类型。这在虚拟设备的特性和性能方面提供了各种改进,并确保更广泛的现代设备与虚拟化兼容。另外,Red Hat Enterprise Linux 8 中创建的虚拟机被设置为默认使用 Q35

另请注意,以前的默认 PC 机器类型已被弃用,只有在虚拟化不支持 Q35 的旧操作系统时使用。

(BZ#1599777)

KVM 在 RHEL 8 中支持 UMIP

KVM 虚拟化现在支持用户模型讲师(UMIP)功能,这有助于防止用户空间应用程序访问系统范围设置。这减少了权限升级攻击的潜在向量,因此 KVM 管理程序及其客户机机器更安全。

(BZ#1494651)

KVM 客户机崩溃报告中的其他信息

如果客户机意外终止或变得无响应,则 KVM 管理程序生成的崩溃信息已扩展。这使得诊断和修复 KVM 虚拟化部署中的问题变得更加简单。

(BZ#1508139)

NVIDIA vGPU 现在与 VNC 控制台兼容

使用 NVIDIA 虚拟 GPU(vGPU)功能时,现在可以使用 VNC 控制台来显示客户机的视觉输出。

(BZ#1497911)

Ceph 由虚拟化支持

在这个版本中,Red Hat 支持的所有 CPU 架构上的 KVM 虚拟化均支持 Ceph 存储。

(BZ#1578855)

IBM Z 中 KVM 虚拟机的交互式引导装载程序

在 IBM Z 主机上引导 KVM 虚拟机时,QEMU 引导装载程序固件现在可以显示客户机操作系统的互动控制台界面。这样便可在不访问主机环境的情况下对 guest OS 引导问题进行故障排除。

(BZ#1508137)

虚拟机支持 IBM z14 ZR1

KVM 系统管理程序现在支持 IBM z14 ZR1 服务器的 CPU 模型。这可在 IBM Z 系统上运行的 KVM 虚拟机中使用此 CPU 的功能。

(BZ#1592337)

KVM 支持 IBM Z 上的 Telnet 3270

当将 RHEL 8 用作 IBM Z 系统中的主机时,现在可以使用 Telnet 3270 客户端连接到主机上的虚拟机。

(BZ#1570029)

添加了 QEMU 沙盒

在 Red Hat Enterprise Linux 8 中,QEMU 模拟器引入了沙盒功能。QEMU 沙盒为调用 QEMU 可以执行的系统提供可配置的限制,从而使虚拟机更安全。请注意,这个功能会被默认启用和配置。

(JIRA:RHELPLAN-10628)

IBM POWER 中 KVM 虚拟机的新机器类型

为 IBM POWER 8 和 IBM POWER 9 系统上运行的 KVM 系统管理程序启用了多个新的 rhel-pseries 机器类型。这使得在 IBM POWER 系统的 RHEL 8 中托管的虚拟机(VM)可以正确使用这些机器类型的 CPU 功能。此外,这还允许将 IBM POWER 上的虚拟机迁移到最新版本的 KVM 系统管理程序。

(BZ#1585651, BZ#1595501)

ARM 64 系统现在支持最多 384 个 vCPU 的虚拟机

在 ARM 64 系统上使用 KVM 管理程序时,现在可以将多达 384 个虚拟 CPU(vCPU)分配给单个虚拟机(VM)。

请注意,主机上的物理 CPU 数量必须等于或大于附加到它的 vCPU 数量,因为 RHEL 8 不支持 vCPU 过量使用。

(BZ#1422268)

为 Intel Xeon SnowRidge 启用 GFNI 和 CLDEMOT 指令集

在 Intel Xeon SnowRidge 系统上的 RHEL 8 主机上运行的虚拟机(VM)现在可以使用 GFNI 和 CLDEMOT 指令集。在某些情况下,这可能会显著提高此类虚拟机的性能。

(BZ#1494705)

为 OVMF 启用 IPv6

现在,Open Virtual Machine Firmware(OVMF)上启用了 IPv6 协议。这使得使用 OVMF 的虚拟机可以利用 IPv6 提供的各种网络引导改进。

(BZ#1536627)

添加了 NVMe 设备的基于 VFIO 的块驱动程序

QEMU 模拟器为 Non-volatile Memory Express(NVMe)设备引入了基于虚拟功能 I/O(VFIO)的驱动程序。驱动程序直接与附加到虚拟机(VM)的 NVMe 设备通信,并避免使用内核系统层及其 NVMe 驱动程序。因此,这会提高虚拟机中 NVMe 设备的性能。

(BZ#1519004)

支持 Hyper-V Generic UIO 驱动程序

RHEL 8 现在支持 Hyper-V Generic 用户空间 I/O(UIO)驱动程序的多频道功能。这使得在 Hyper-V 管理程序上运行的 RHEL 8 虚拟机可以使用 Data Plane Development Kit(DPDK)Netvsc Poll Mode 驱动程序(PMD),它可增强这些虚拟机的网络功能。

但请注意,Netvsc 接口状态当前显示为 Down,即使它正在运行并且可以使用。

(BZ#1650149)

改进了巨页支持

当使用 RHEL 8 作为虚拟化主机时,用户可以将虚拟机(VM)的内存页大小修改为 CPU 支持的任何大小。这可以显著提高虚拟机的性能。

要配置虚拟机内存页面的大小,请编辑虚拟机的 XML 配置,并将 <hugepages> 元素添加到 <memoryBacking> 部分。

(JIRA:RHELPLAN-14607)

5.1.17. 支持性

sosreport 可以报告基于 eBPF 的程序和映射

sosreport 工具已被改进来报告 Red Hat Enterprise Linux 8 载入的扩展 Berkeley Packet Filtering(eBPF)程序和映射。

(BZ#1559836)

5.2. 程序错误修复

这部分论述了 Red Hat Enterprise Linux 8.0 中修复的错误,它们对用户有严重影响。

5.2.1. Desktop

PackageKit 现在可在 rpm 软件包上运行

在这个版本中,在 PackageKit 中添加了对 rpm 软件包操作的支持。

(BZ#1559414)

5.2.2. 图形基础结构

QEMU 无法正确处理 8 字节 ggtt 条目

QEMU 有时会分割 8 字节 ggtt 条目写入两次连续 4 字节写入操作。这些部分写入都可以触发单独的主机 ggtt 写入。有时,两次 ggtt 写入操作会被错误地合并。因此,转换到机器地址会失败,并会出现错误日志。

(BZ#1598776)

5.2.3. Identity Management

Enterprise 安全客户端使用 opensc 库进行令牌检测

Red Hat Enterprise Linux 8.0 仅支持智能卡的 opensc 库。在这个版本中,企业安全客户端(ESC)使用 opensc 进行令牌检测,而不是删除的 coolkey 库。因此,应用程序可以正确地检测到支持的令牌。

(BZ#1538645)

证书系统现在支持轮转调试日志

在以前的版本中,证书系统使用自定义日志记录框架,它不支持日志轮转。因此,调试日志(如 /var/log/pki/instance_name/ca/debug )会无限期地增加。在这个版本中,证书系统使用 java.logging.util 框架来支持日志轮转。因此,您可以在 /var/lib/pki/instance_name/conf/logging.properties 文件中配置日志轮转。

有关日志轮转的详情,请查看 java.util.logging 软件包的文档。

(BZ#1565073)

证书系统在服务启动时不再记录 SetAllPropertiesRule 操作警告

在以前的版本中,当服务启动时,证书系统会在 /var/log/messages 日志文件中记录 SetAllPropertiesRule 操作的警告信息。这个问题已被解决,上面提到的警告不再被记录。

(BZ#1424966)

证书系统 KRA 客户端正确解析 Key Request 响应

在以前的版本中,证书系统切换到新的 JSON 库。因此,某些对象的序列化会有所不同,Python 密钥恢复授权(KRA)客户端无法解析 Key Request 响应。客户端已被修改,以支持使用旧和新的 JSON 库的响应。因此,Python KRA 客户端会正确解析 Key Request 响应。

(BZ#1623444)

5.2.4. 编译器和开发工具

GCC 不再针对出站访问产生假的正警告

在以前的版本中,当使用 -O3 优化级别选项编译时,GNU Compiler Collection(GCC)偶尔会返回有关出站访问的假警告,即使编译的代码没有包含它。这个优化已被修复,GCC 不再显示假的正警告。

(BZ#1246444)

ltrace 正确显示大型结构

在以前的版本中,ltrace 工具无法正确打印从功能返回的大型结构。ltrace 中的大型结构的处理已被改进,它们现在可以正确打印。

(BZ#1584322)

GCC 内置功能 __builtin_clz 在 IBM Z 中返回正确的值

在以前的版本中,GCC 编译器会错误地折叠 IBM Z 架构的 FLOGR 指令。因此,当使用 -funroll-loops GCC 选项编译代码时,使用这个指令的 __builtin_clz 功能可能会返回错误的结果。这个程序错误已被解决,这个功能现在提供了正确的结果。

(BZ#1652016)

GDB 在批处理模式中的最后一个命令失败时提供非零退出状态

在以前的版本中,当以批处理模式运行时,GDB 始终以状态 0 退出,无论命令中出现什么错误。因此,无法确定命令是否成功。这个行为已被更改,GDB 现在会在最后一条命令中出现错误时以状态 1 退出。这样可保持与之前执行所有命令的行为的兼容性。因此,现在可以确定 GDB 批处理模式是否成功执行。

(BZ#1491128)

5.2.5. 文件系统和存储

更高的打印级别不再导致 iscsiadm 意外终止

在以前的版本中,当用户使用 --print-P 选项指定大于 0 的打印级别时,iscsiadm 工具会意外终止。这个问题已被解决,所有打印级别现在都可以正常工作。

(BZ#1582099)

multipathd 当它无法获取路径的 WWID 时不再禁用路径

在以前的版本中,multipathd 服务会把一个路径的 WWID 视为获得空 WWID 的失败尝试。如果 multipathd 无法获取路径的 WWID,它有时会禁用该路径。

在这个版本中,multipathd 在检查是否改变时,如果无法获取 WWID,则继续使用旧的 WWID。

因此,当 multipathd 检查 WWID 是否已改变时,不再禁用其获取 WWID 的路径。

(BZ#1673167)

5.2.6. 高可用性和集群

新的 /etc/sysconfig/pcsd 选项拒绝客户端启动的 SSL/TLS 重新协商

当在服务器上启用 TLS 重新协商时,客户端可以发送重新协商请求,该请求将启动新的握手。握手的计算要求在服务器上高于客户端。这使得服务器易受 DoS 攻击。在这个版本中,/etc/sysconfig/pcsd 配置文件中的 PCSD_SSL_OPTIONS 设置接受 OP_NO_RENEGOTIATION 选项拒绝重新协商。请注意,客户端仍然可以打开多个与在所有服务器中执行握手的服务器的连接。

(BZ#1566430)

删除的集群节点不再显示在集群状态中

在以前的版本中,当使用 pcs cluster node remove 命令删除节点时,删除的节点在 pcs status 显示的输出中会显示。在这个版本中,删除的节点不再显示在集群状态中。

(BZ#1595829)

现在可以使用更新的首选参数名称或已弃用的参数名称来配置隔离代理

大量隔离代理参数已被重命名,而旧参数名称仍被支持为已弃用。在以前的版本中,pcs 无法设置新参数,除非与 --force 选项一起使用。在这个版本中,pcs 支持重命名的隔离代理参数,同时保持对已弃用参数的支持。

(BZ#1436217)

pcs 命令现在可以正确地读取集群的 XML 状态。

pcs 命令运行 crm_mon 实用程序以 XML 格式获取集群的状态。crm_mon 工具将 XML 输出输出到标准输出,并警告标准错误输出。之前 pcs 将 XML 和警告混合为一个流,然后无法将其解析为 XML。在这个版本中,标准输出和错误输出在 pcs 中分离,读取集群的 XML 状态可以正常工作。

(BZ#1578955)

在从现有集群创建新集群时,用户不再建议销毁集群

在以前的版本中,当运行 pcs cluster setup 命令或者使用 pcsd Web UI 创建集群时,pcs 会从现有集群指定的节点,pcs 会报告这个节点是一个错误,并建议用户销毁节点上的集群。因此,用户会销毁节点上的集群,破坏节点所属的集群节点,因为剩余的节点仍会将销毁的节点视为集群的一部分。在这个版本中,建议用户从其集群中删除节点,从而更好地通知他们如何在不中断集群的情况下解决问题。

(BZ#1596050)

pcs 命令不再以交互方式要求提供凭据

当非 root 用户运行需要 root 权限的 pcs 命令时,pcs 连接到本地运行的 pcsd 守护进程并向它传递命令,因为 pcsd 守护进程使用 root 权限运行并能够运行该命令。在以前的版本中,如果用户没有经过本地 pcsd 守护进程的身份验证,pcs 会以互动方式要求提供用户名和密码。这给用户造成混淆,要求在运行 pcs 的脚本中进行特殊处理。在这个版本中,如果用户没有通过身份验证,pcs 会退出并给出一个错误建议: 可以 root 用户身份运行 pcs 或使用新的 pcs client local-auth 命令进行身份验证。因此,pcs 命令不会以互动方式要求提供凭证,从而改进了用户体验。

(BZ#1554310)

pcsd 守护进程现在从默认自生成的 SSL 证书开始,crypto-policies 设置为 FUTURE

crypto-policiesFUTURE 设置要求 SSL 证书中的 RSA 密钥至少为 3072b 长。在以前的版本中,pcsd 守护进程不会在设置此策略时启动,因为它使用 2048b 密钥生成 SSL 证书。在这个版本中,pcsd 自生成的 SSL 证书的密钥大小增加到 3072b,pcsd 现在以其默认自生成的 SSL 证书开始。

(BZ#1638852)

pcsd 服务现在在网络就绪时启动

在以前的版本中,当用户将 pcsd 配置为绑定到特定 IP 地址且 pcsd 引导过程中该地址没有就绪时,则 pcsd 无法启动,并且需要手动干预来启动 pcsd。在这个版本中,pcsd.service 依赖于 network-online.target。因此,pcsd 当网络就绪并可以绑定到 IP 地址时启动。

(BZ#1640477)

5.2.7. 网络

不再允许弱 TLS 算法 glib-networking

在以前的版本中,glib-networking 软件包与 RHEL 8 系统范围的 Crypto 策略不兼容。因此,使用 glib 库进行网络的应用程序可能会允许使用较弱算法的传输层安全(TLS)连接。在这个版本中,应用系统范围的加密策略,现在使用 glib 的应用程序只允许根据策略接受的 TLS 连接。

(BZ#1640534)

5.2.8. 安全性

SELinux 策略现在允许 iscsiuio 进程连接到发现门户

在以前的版本中,SELinux 策略对 iscsiuio 进程的限制太强,这些进程无法使用 mmap 系统调用访问 /dev/uio* 设备。因此,到发现门户的连接会失败。在这个版本中,在 SELinux 策略中添加缺少的规则,iscsiuio 进程可以正常工作。

(BZ#1626446)

5.2.9. 订阅管理

dnf 现在,无论 subscription-manager 值是什么,yum 都可以访问存储库

在以前的版本中,dnfyum 命令从 subscription-manager 服务添加的 URL 中忽略 https:// 前缀。更新的 dnfyum 命令不会忽略无效的 https:// URL。因此,dnfyum 无法访问存储库。要解决这个问题,一个新的配置变量 proxy_scheme 已添加到 /etc/rhsm/rhsm.conf 文件中,该值可设置为 httphttps。如果没有指定值,subscription -manager 会默认设置 http,这是更常用的。

请注意,如果代理使用 http,大多数用户不应该更改 /etc/rhsm/rhsm.conf 中的配置中的任何内容。如果代理使用 https,用户应将 proxy_scheme 的值更新为 https。然后,在这两种情况下,用户都需要运行 subscription-manager repos --list 命令或等待 rhsmcertd 守护进程进程正确重新生成 /etc/yum.repos.d/redhat.repo

(BZ#1654531)

5.2.10. 虚拟化

在 Azure 上挂载临时磁盘现在可以更可靠

在以前的版本中,如果虚拟机"停止(取消分配)",然后启动,在 Microsoft Azure 平台上运行的虚拟机(VM)中挂载临时磁盘会失败。在这个版本中,在上述情况下可以正确处理磁盘重新连接,这可防止问题的发生。

(BZ#1615599)

5.3. 技术预览

这部分提供了 Red Hat Enterprise Linux 8.0 中所有可用的技术预览列表。

如需有关红帽对技术预览功能支持范围的信息,请参阅 技术预览功能支持范围

5.3.1. 内核

eBPF 作为技术预览

扩展的 Berkeley Packet 过滤(eBPF)功能可作为用于网络和追踪的技术预览使用eBPF 可让用户空间将自定义程序附加到多个点(套接字、追踪点、数据包接收)上,从而接收和处理数据。这个功能包括一个新的系统调用 bpf(),它支持创建各种映射类型,并在内核中插入各种类型的程序。请注意,只有具有 CAP_SYS_ADMIN 能力的用户(如 root 用户)才可以成功使用 bpf() syscall。详情请查看 bpf(2) 手册页。

(BZ#1559616)

BCC 作为技术预览提供

BPF Compiler Collection (BCC) 是一个用户空间工具工具包,可用于创建高效的内核跟踪和操作程序,在 Red Hat Enterprise Linux 8 中作为技术预览提供。BCC 使用 extended Berkeley Packet Filtering (eBPF) 提供用于 I/O 分析、联网和监控 Linux 操作系统的工具。

(BZ#1548302)

Control Group v2 在 RHEL 8 中作为技术预览提供

控制组 v2 机制是统一的层次结构控制组。控制组 v2 以分层方式组织进程,并以受控和可配置的方式在层次结构中分发系统资源。

与之前的版本不同,控制组 v2 只有一个层次结构。这个单一层次结构使 Linux 内核能够:

  • 根据拥有者的角色对进程进行分类。
  • 解决多个分级冲突策略的问题。

控制组 v2 支持大量控制器:

  • CPU 控制器规定了 CPU 周期的分布。这个控制器实现:

    • 常规调度策略的权重和绝对带宽限制模型。
    • 实时调度策略的绝对带宽分配模型。
  • 内存控制器规定了内存分布。目前,会追踪以下类型的内存用量:

    • Userland memory - 页面缓存和匿名内存。
    • 内核数据结构,如密度和内节点。
    • TCP 套接字缓冲。
  • I/O 控制器规定了 I/O 资源的分配。
  • 回写控制器与 Memory 和 I/O 控制器交互,并且特定于 Control Group v2

以上信息基于链接 :https://www.kernel.org/doc/Documentation/cgroup-v2.txt您可以参照同一链接来获取有关特定控制组 v2 控制器的更多信息。

(BZ#1401552)

early kdump 在 Red Hat Enterprise Linux 8 中作为技术预览提供

early kdump 功能允许崩溃内核和 initramfs 加载足够早的负载,以便在早期崩溃时捕获 vmcore 信息。有关 early kdump 的详情,请查看 /usr/share/doc/kexec-tools/early-kdump-howto.txt 文件。

(BZ#1520209)

ibmvnic 设备驱动程序作为技术预览

在 Red Hat Enterprise Linux 8.0 中,IBM POWER 架构的 IBM Virtual Network Interface Controller(vNIC)驱动程序作为技术预览提供。vNIC 是一种 PowerVM 虚拟网络技术,可提供企业功能并简化网络管理。ibmvnic这是一个高性能、高效的技术,在与 SR-IOV NIC 结合使用时,可在虚拟 NIC 级别提供带宽控制服务质量(QoS)功能。vNIC 显著降低了虚拟化开销,从而减少了网络虚拟化所需的延迟和服务器资源(包括 CPU 和内存)。

(BZ#1524683)

5.3.2. 图形基础结构

VNC 远程控制台作为 64 位 ARM 架构的一个技术预览提供

在 64 位 ARM 架构中,虚拟网络计算(VNC)远程控制台可作为技术预览使用。请注意,在 64 位 ARM 架构中,目前图形堆栈的其它部分没有被验证。

(BZ#1698565)

5.3.3. 硬件启用

集群感知的 MD RAID1 作为技术预览提供。

默认情况下,在内核空间中不启用 RAID1 集群。如果要尝试使用 RAID1 集群,首先需要构建将 RAID1 集群作为模块的内核,使用以下步骤:

  1. 输入 make menuconfig 命令。
  2. 输入 make && make modules && make modules_install && make install 命令。
  3. 输入 reboot 命令。

(BZ#1654482)

5.3.4. Identity Management

DNSSEC 在 IdM 中作为技术预览提供

带有集成 DNS 的身份管理(IdM)服务器现在支持 DNS 安全扩展(DNSSEC),这是一组增强 DNS 协议安全性的 DNS 扩展。托管在 IdM 服务器上的 DNS 区可以使用 DNSSEC 自动签名。加密密钥是自动生成和轮转的。

建议那些决定使用 DNSSEC 保护 DNS 区的用户读取并遵循这些文档:

请注意,集成了 DNSSEC 的 IdM 服务器验证从其他 DNS 服务器获取的 DNS 答案。这可能会影响未按照推荐的命名方法配置的 DNS 区域可用性。

(BZ#1664718)

身份管理 JSON-RPC API 作为技术预览

一个 API 可用于 Identity Management(IdM)。要查看 API,IdM 还提供了一个 API 浏览器作为技术预览。

在 Red Hat Enterprise Linux 7.3 中,IdM API 被改进来启用多个 API 命令版本。在以前的版本中,增强功能可能会以不兼容的方式改变命令的行为。用户现在可以继续使用已有的工具和脚本,即使 IdM API 发生了变化。这可启用:

  • 管理员要在服务器中使用之前或更高版本的 IdM,而不是在管理客户端中使用。
  • 开发人员使用 IdM 调用的特定版本,即使 IdM 版本在服务器上发生了变化。

在所有情况下,与服务器进行通信是可能的,无论是否一方使用,例如,一个新的版本会为这个功能引进新的选项。

有关使用 API 的详细信息,请参阅使用身份管理 API 与 IdM 服务器通信(TECHNOLOGY PREVIEW)

(BZ#1664719)

5.3.5. 文件系统和存储

Aero 适配器作为技术预览提供

以下 Aero 适配器作为技术预览提供:

  • PCI ID 0x1000:0x00e2 和 0x1000:0x00e6,由 mpt3sas 驱动程序控制
  • PCI ID 0x1000:Ox10e5 和 0x1000:0x10e6,由 megaraid_sas 驱动程序控制

(BZ#1663281)

Stratis 现在可用

Stratis 是一个新的本地存储管理器。它在存储池的上面为用户提供额外的功能。

Stratis 可让您更轻松地执行存储任务,比如:

  • 管理快照和精简配置
  • 根据需要自动增大文件系统大小
  • 维护文件系统

要管理 Stratis 存储,使用 stratis 工具与 stratisd 后台服务通信。

Stratis 作为技术预览提供。

如需更多信息,请参阅 Stratis 文档:使用 Stratis 管理分层本地存储

(JIRA:RHELPLAN-1212)

OverlayFS

OverlayFS 是一种联合文件系统。它允许您在另一个文件系统上覆盖一个文件系统。更改记录在上面的文件系统中,而较小的文件系统则未修改。这允许多个用户共享文件系统镜像,如容器或 DVD-ROM,基础镜像使用只读介质。详情请查看 Linux 内核文档:https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt

在大多数情况下,OverlayFS 仍是一个技术预览。因此,当这个技术被激活时,内核会记录警告信息。

与支持的容器引擎(podmancri-obuildah)一同使用时,对 OverlayFS 提供的全面支持包括以下限制:

  • OverlayFS 仅支持作为容器引擎图形驱动程序使用。它只针对容器 COW 内容支持,而不适用于持久性存储。您必须将任何持久性存储放在非OverlayFS 卷中。只有默认容器引擎配置才能使用;即,同一文件系统中有一个覆盖级别、一个较低级别和上级。
  • 目前只支持 XFS 作为较低层文件系统使用。

另外,以下规则和限制适用于使用 OverlayFS:

  • OverlayFS 内核 ABI 和用户空间行为被视为不稳定,将来的更新可能会看到变化。
  • OverlayFS 提供一组受限的 POSIX 标准。在使用 OverlayFS 部署前,先测试您的应用程序。以下情况与 POSIX 不兼容:

    • 使用 O_RDONLY 打开的较低文件在读取文件时不会接收 st_atime 更新。
    • 使用 O_RDONLY 打开的较低文件,然后与 MAP_SHARED 映射与后续修改不一致。
    • RHEL 8 中不默认启用完全兼容 st_inod_ino 值,但您可以使用模块选项或挂载选项为它们启用完整的 POSIX 合规性。

      要获得一致的内节点编号,使用 xino=on 挂载选项。

      您还可以使用 redirect_dir=onindex=on 选项提高 POSIX 合规性。这两个选项使上层的格式与没有这些选项的 overlay 不兼容。也就是说,如果您使用 redirect_dir=onindex=on 创建覆盖结果或错误,卸载覆盖,然后在没有这些选项的情况下挂载覆盖。

  • 与 XFS 一起使用的命令:

    • XFS 文件系统必须使用启用 -n ftype=1 选项来创建,以用作覆盖。
    • 使用 rootfs 以及系统安装中创建的任何文件系统,在 Anaconda kickstart 中设置 --mkfsoptions=-n ftype=1 参数。
    • 当在安装后创建新文件系统时,运行 # mkfs -t xfs -n ftype=1 /PATH/TO/DEVICE 命令。
    • 要确定现有文件系统是否有资格用作 overlay,请运行 # xfs_info /PATH/TO/DEVICE | grep ftype 命令查看是否启用了 ftype=1 选项。
  • 使用 OverlayFS 在所有支持的容器引擎中默认启用 SELinux 安全标签。
  • 本发行版本中有几个与 OverlayFS 相关的已知问题。详情请查看 Linux 内核文档中的 非标准行为: https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt

(BZ#1690207)

现在 ext4 和 XFS 作为技术预览提供文件系统 DAX

在 Red Hat Enterprise Linux 8.0 中,文件系统 DAX 作为技术预览提供。DAX 提供了将持久内存直接映射到其地址空间的方法。要使用 DAX,系统必须有某种可用的持久内存,通常使用一个或多个非线内存模块(NVDIMM),且必须在 NVDIMM 上创建支持 DAX 的文件系统。另外,该文件系统必须使用 dax 挂载选项挂载。然后,在 dax 挂载的文件系统中的一个文件 mmap 会把存储直接映射到应用程序的地址空间中。

(BZ#1627455)

5.3.6. 高可用性和集群

pacemaker podman 捆绑包作为技术预览

pacemaker 容器捆绑包现在在 podman 容器平台上运行,容器捆绑包功能可作为技术预览使用。其中一个功能例外于技术预览:红帽完全支持在 Red Hat Openstack 中使用 Pacemaker 捆绑包。

(BZ#1619620)

5.3.7. 网络

XDP 作为技术预览提供

eXpress Data Path(XDP)功能作为技术预览提供。它提供了在内核入口数据路径早期为高性能数据包处理附加扩展 Berkeley Packet Filter(eBPF)程序的方法,从而可以进行高效的可编程数据包分析、过滤和操作。

(BZ#1503672)

用于 tc 的 eBPF 作为技术预览

作为技术预览,流量控制(tc)内核子系统和 tc 工具附加扩展 Berkeley Packet 过滤(eBPF)程序作为数据包分类器,以及用于入口和出站队列规则的操作。这可实现内核网络数据路径内的可编程数据包处理。

(BZ#1699825)

AF_XDP 作为技术预览提供

Address Family eXpress Data PathAF_XDP)套接字是为处理高性能数据包而设计的。它附带 XDP,并可将编程所选数据包的有效重定向到用户空间应用程序,以便进一步处理。

(BZ#1633143)

KTLS 作为技术预览提供

在 Red Hat Enterprise Linux 8 中,KTLS 是作为技术预览提供的。KTLS 使用内核中的对称加密或者解密算法为 AES-GCM 密码处理 TLS 记录。KTLS 还提供将 TLS 记录加密卸载到支持此功能的网络接口控制器(NIC)的接口。

(BZ#1570255)

TIPC 作为技术预览提供

透明间进程通信(TIPC)是专门为在松散耦合节点群集内进行有效通信的协议。它作为一个内核模块工作,在 iproute2 软件包中提供了一个 tipc 工具,允许设计人员创建可以快速可靠地与其他应用程序通信的应用程序,而不考虑它们在集群中的位置。此功能作为技术预览提供。

(BZ#1581898)

systemd-resolved 服务现在作为技术预览提供

systemd-resolved 服务为本地应用程序提供名称解析。该服务实现了缓存和验证 DNS stub 解析器、链接本地多播名称解析(LLMNR)以及多播 DNS 解析器和响应程序。

请注意,即使 systemd 软件包提供了 systemd-resolved,这个服务仍是一个不受支持的技术预览。

(BZ#1906489)

5.3.8. Red Hat Enterprise Linux 系统角色

RHEL 系统角色的 postfix 角色作为技术预览提供

Red Hat Enterprise Linux 系统角色为 Red Hat Enterprise Linux 子系统提供了一个配置界面,这有助于通过包含 Ansible 角色来简化系统配置。这个界面支持在多个 Red Hat Enterprise Linux 版本间管理系统配置,并使用新的主发行版本。

rhel-system-roles 软件包通过 AppStream 软件仓库发布。

postfix 角色作为技术预览提供。

以下角色被完全支持:

  • kdump
  • network
  • selinux
  • timesync

如需更多信息,请参阅有关 RHEL 系统角色的知识库文章

(BZ#1812552)

5.3.9. 虚拟化

用于 KVM 虚拟机的 AMD SEV

作为技术预览,RHEL 8 为使用 KVM 管理程序的 AMD EPYC 主机引入了安全加密虚拟化(SEV)功能。如果在虚拟机(VM)上启用,SEV 会加密虚拟机内存,因此主机不能访问虚拟机上的数据。如果主机被恶意软件成功损坏,这可以提高虚拟机的安全性。

请注意,在单一主机上同时可以使用此功能的虚拟机数量是由主机硬件决定的。当前的 AMD EPYC 处理器支持使用 SEV 运行最多 15 个正在运行的虚拟机。

也请注意,对于将 SEV 配置为可以引导的虚拟机,还必须使用硬内存限制配置虚拟机。要做到这一点,请在虚拟机 XML 配置中添加以下内容:

<memtune>
  <hard_limit unit='KiB'>N</hard_limit>
</memtune>

建议 N 的值等于或大于客户机 RAM + 256 MiB。例如:如果为客户端分配 2 GiB RAM,则 N 应该为 2359296 或更高。

(BZ#1501618, BZ#1501607)

Intel vGPU

作为技术预览,现在可以将物理 Intel GPU 设备划分为多个虚拟设备,称为 mediated devices。然后可将这些 mediated devices 分配给多个虚拟机(VM)作为虚拟 GPU。因此,这些虚拟机共享单个物理 Intel GPU 的性能。

请注意,只有所选 Intel GPU 与 vGPU 功能兼容。另外,为虚拟机分配物理 GPU 使得主机无法使用 GPU,并可能阻止主机的图形显示输出工作。

(BZ#1528684)

IBM POWER 9 上现在可用的嵌套虚拟化

作为技术预览,现在可以使用在 IBM POWER 9 系统上运行的 RHEL 8 主机机器上的嵌套虚拟化功能。嵌套虚拟化使得 KVM 虚拟机(VM)充当虚拟机监控程序,允许在虚拟机内运行虚拟机。

请注意,嵌套虚拟化在 AMD64 和 Intel 64 系统中也是一个技术预览。

另请注意,要使嵌套虚拟化在 IBM POWER 9、主机、客户机和嵌套客户机上工作,目前都需要运行以下操作系统之一:

  • RHEL 8
  • 用于 POWER 9 的 RHEL 7

(BZ#1505999, BZ#1518937)

KVM 虚拟化可用于 RHEL 8 Hyper-V 虚拟机

作为技术预览,现在可将嵌套的 KVM 虚拟化用于 Microsoft Hyper-V hypervisor。因此,您可以在运行在 Hyper-V 主机的 RHEL 8 虚拟机中创建虚拟机。

请注意目前,这个功能仅适用于 Intel 系统。另外,在一些情况下,Hyper-V 中不默认启用嵌套虚拟化。要启用它,请参阅以下文档:

https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/nested-virtualization

(BZ#1519039)

5.4. 过时的功能

这部分提供了在 Red Hat Enterprise Linux 8.0 中弃用 的功能概述。

弃用的功能在 Red Hat Enterprise Linux 8 生命周期结束前一直被支持。弃用的功能可能在以后的主要发行本中不被支持,因此不建议在新的部署中使用。有关特定主要发行本中已弃用功能的最新列表,请参考最新版本的发行文档。

对于当前或将来的主发行版本中的新部署,我们不推荐使用已弃用的硬件组件。硬件驱动程序更新仅限于安全和关键修复。红帽建议尽快替换这个硬件。

一个软件包可以被弃用,我们不推荐在以后使用。在某些情况下,软件包可从产品中删除。然后,产品文档可识别提供类似、完全相同或者更高级功能的最新软件包,并提供进一步建议。

有关 RHEL 7 中存在但已在 RHEL 8 中删除 的功能信息,请参阅使用 RHEL 8 的注意事项。

5.4.1. 安装程序和镜像创建

ignoredisk Kickstart 命令的 --interactive 选项已弃用

在以后的 Red Hat Enterprise Linux 版本中使用 --interactive option 会导致严重安装错误。建议您修改 Kickstart 文件删除该选项。

(BZ#1637872)

弃用了一些 Kickstart 命令和选项

使用 RHEL 8 Kickstart 文件中的以下命令和选项会在日志中显示警告信息。

  • authauthconfig
  • device
  • deviceprobe
  • dmraid
  • install
  • lilo
  • lilocheck
  • mouse
  • multipath
  • bootloader --upgrade
  • ignoredisk --interactive
  • partition --active
  • reboot --kexec

如果只列出具体选项,则基础命令及其它选项仍可用且没有弃用。

有关 Kickstart 中的详情和相关更改,请参阅使用 RHEL 8 的参考事项文档中的 Kickstart 更改部分。

(BZ#1642765)

5.4.2. 文件系统和存储

禁用了 NFSv3 over UDP

默认情况下,NFS 服务器不再默认在 User Datagram Protocol(UDP)套接字上打开或监听。这个变化只影响 NFS 版本 3,因为版本 4 需要传输控制协议(TCP)。

RHEL 8 不再支持通过 UDP 的 NFS。

(BZ#1592011)

elevator 内核命令行参数已弃用

在以前的 RHEL 版本中使用 elevator 内核命令行参数为所有设备设置磁盘调度程序。在 RHEL 8 中,该参数已弃用。

上游 Linux 内核删除了对 elevator 参数的支持,但出于兼容性的原因,在 RHEL 8 中仍提供此支持。

请注意,内核会根据设备类型选择默认磁盘调度程序。这通常是最佳设置。如果您需要不同的调度程序,红帽建议您使用 udev 规则或 Tuned 服务来配置它。匹配所选设备并只为那些设备切换调度程序。

如需更多信息,请参阅以下文章: 为什么 'elevator=' 参数在 RHEL8 中不再起作用

(BZ#1665295)

VDO 软件包中的 VDO Ansible 模块

VDO Ansible 模块目前由 vdo RPM 软件包提供。在以后的发行版本中,VDO Ansible 模块将移到 Ansible RPM 软件包中。

(BZ#1669537)

5.4.3. 网络

在 RHEL 8 中已弃用网络脚本

网络脚本在 Red Hat Enterprise Linux 8 中已弃用,且不再默认提供。基本安装提供了 ifupifdown 脚本的新版本,它们通过 nmcli 工具调用 NetworkManager 服务。在 Red Hat Enterprise Linux 8 中,要运行 ifupifdown 脚本,NetworkManager 必须正在运行。

请注意,/sbin/ifup-localifdown-pre-localifdown-local 脚本中的自定义命令没有被执行。

如果需要这些脚本,您仍可以使用以下命令在系统中安装已弃用的网络脚本:

~]# yum install network-scripts

ifupifdown 脚本链接到已安装的旧网络脚本。

调用旧的网络脚本会显示一个关于它们已过时的警告。

(BZ#1647725)

5.4.4. 安全性

在 RHEL 8 中弃用 DSA

数字签名算法(DSA)在 Red Hat Enterprise Linux 8 中被视为已弃用。依赖于 DSA 密钥的身份验证机制在默认配置中不起作用。请注意,即使 LEGACY 系统范围的加密策略级别中,OpenSSH 客户端都不接受 DSA 主机密钥。

(BZ#1646541)

SSL2 Client Hello 已在 NSS 中弃用

传输层安全(TLS)协议版本 1.2 及更早版本允许与 Client Hello 消息进行协商,其格式与安全套接字层(SSL)协议版本 2 后兼容。网络安全服务(NSS)库中对这个功能的支持已被弃用,默认是禁用的。

需要这个功能支持的应用程序需要使用新的 SSL_ENABLE_V2_COMPATIBLE_HELLO API 启用它。以后的 Red Hat Enterprise Linux 8 版本中可以完全删除对这个功能的支持。

(BZ#1645153)

TLS 1.0 和 TLS 1.1 已弃用

TLS 1.0 和 TLS 1.1 协议在 DEFAULT 系统范围的加密策略级别被禁用。如果需要使用启用的协议,如 Firefox 网页浏览器中的视频检查程序,把系统范围的加密策略切换到 LEGACY 级别:

# update-crypto-policies --set LEGACY

如需更多信息,请参阅红帽客户门户网站中的 RHEL 8 中的强加密默认设置以及弃用的弱加密算法,以及 update-crypto-policies(8) man page。

(BZ#1660839)

5.4.5. 虚拟化

RHEL 8 不支持虚拟机快照

当前创建虚拟机(VM)快照的机制已经被弃用,因为它无法可靠工作。因此,建议在 RHEL 8 中使用虚拟机快照。

请注意,一个新的 VM 快照机制正在开发中,并将在以后的 RHEL 8 次要发行本中完全实现。

(BZ#1686057)

Cirrus VGA 虚拟 GPU 类型已弃用

随着 Red Hat Enterprise Linux 的主要更新,Cirrus VGA GPU 设备将在 KVM 虚拟机中不再被支持。因此,,红帽建议您使用 stdvgavirtio-vga 或者 qxl 设备而不是 Cirrus VGA。

(BZ#1651994)

virt-manager 已被弃用

虚拟机管理器(也称 virt-manager) 已弃用。RHEL 8 web 控制台(也称 Cockpit )旨在在以后的版本中成为它替换。因此,建议您使用 web 控制台使用 GUI 管理虚拟化。但是,在 Red Hat Enterprise Linux 8.0 中,一些功能只能从 virt-manager 或命令行访问。

(JIRA:RHELPLAN-10304)

5.4.6. 已弃用的软件包

下列软件包已弃用,可能不会包括在 Red Hat Enterprise Linux 未来的主发行版本中:

  • 389-ds-base-legacy-tools
  • authd
  • custodia
  • hostname
  • libidn
  • net-tools
  • network-scripts
  • nss-pam-ldapd
  • sendmail
  • yp-tools
  • ypbind
  • ypserv

5.5. 已知问题

这部分论述了 Red Hat Enterprise Linux 8 中已知的问题。

5.5.1. Web 控制台

无法使用 session_recording shell 登录到 RHEL web 控制台

目前,对于启用了 tlog 记录的用户,RHEL web 控制台登录会失败。RHEL web 控制台要求用户的 shell 存在于 /etc/shells 目录中,以便成功登录。但是,如果 tlog-rec-session 添加到 /etc/shells 中,记录的用户可以通过使用 "chsh" 工具将 shell 从 tlog-rec-session 改为另一个 shell 来禁用记录。/etc/shells红帽不推荐将 tlog-rec-session 添加到 /etc/shells

(BZ#1631905)

5.5.2. 安装程序和镜像创建

authauthconfig Kickstart 命令需要 AppStream 软件仓库

安装过程中 authauthconfig Kickstart 命令需要 authselect-compat 软件包。如果没有这个软件包,如果使用了 authauthconfig,则安装会失败。但根据设计, authselect-compat 软件包只包括在 AppStream 软件仓库中。

要临时解决这个问题,请确定安装程序可使用 BaseOS 和 AppStream 软件仓库,或者在安装过程中使用 authselect Kickstart 命令。

(BZ#1640697)

默认情况下不安装 xorg-x11-drv-fbdevxorg-x11-drv-vesaxorg-x11-drv-vmware 视频驱动程序

带有特定类型 NVIDIA 图形卡和带有特定 AMD 加速处理单元的工作站不会在 RHEL 8.0 服务器安装后显示图形登录窗口。

要临时解决这个问题,在 workstation 机器上执行 RHEL 8.0 Workstation 安装。如果工作站上需要安装 RHEL 8.0 Server,请在安装后通过运行 yum -y groupinstall base-x 命令手动安装 base-x 软件包组。

此外,依赖 EFI 图形支持(如 Hyper-V)的虚拟机也受到影响。如果您在 Hyper-V 中选择了 Server with GUI 基础环境,则可能无法登录,因为重启时会显示一个黑色屏幕。要在 Hyper-v 中临时解决这个问题,请按照以下步骤启用多或单用户模式:

  1. 重启虚拟机。
  2. 在启动过程中,使用键盘上的上下箭头键选择所需的内核。
  3. 按下键盘中的 e 键编辑内核命令行。
  4. 在 GRUB 中的内核命令行中添加 systemd.unit=multi-user.target
  5. Ctrl-X 以启动虚拟机。
  6. 登录后,运行 yum -y groupinstall base-x 命令。
  7. 重新引导虚拟机以访问图形模式。

(BZ#1687489)

使用 reboot --kexec 命令安装失败

当使用包含 reboot --kexec 命令的 Kickstart 文件时,RHEL 8 安装会失败。要避免这个问题,请在 Kickstart 文件中使用 reboot 命令而不是 reboot --kexec

(BZ#1672405)

Binary DVD.iso 文件的内容复制到分区中会省略 .treeinfo.discinfo 文件

在本地安装过程中,当将 RHEL 8 Binary DVD.iso 镜像文件复制到分区中时,cp <path>/\* <mounted partition>/dir 命令中的 * 无法复制 .treeinfo.discinfo 文件。成功安装时需要这些文件。因此,BaseOS 和 AppStream 软件仓库不会被加载,anaconda.log 文件中与 debug 相关的日志消息是问题的唯一记录。

要临时解决这个问题,将缺少的 .treeinfo.discinfo 文件复制到分区中。

(BZ#1692746)

Anaconda 安装包括最小资源设置要求的低限制

Anaconda 以最少的资源设置在系统中启动安装,并且不要提供有关成功执行安装所需的资源的先前消息警告。因此,安装可能会失败,输出错误不会为可能的调试和恢复提供清晰的信息。要临时解决这个问题,请确保系统具有安装所需的最少资源设置:2GB 内存在 PPC64(LE)和 1GB on x86_64 上。因此,应该可以成功执行安装。

(BZ#1696609)

reboot --kexecinst.kexec 命令不提供可预测的系统状态

使用 reboot --kexec Kickstart 命令或 inst.kexec 内核引导参数执行 RHEL 安装不会提供与完全重启相同的可预测系统状态。因此,在不重启的情况下切换安装的系统可能会导致无法预计的结果。

请注意,kexec 功能已弃用,并将在以后的 Red Hat Enterprise Linux 版本中删除。

(BZ#1697896)

5.5.3. 内核

i40iw 模块不会在引导时自动载入

由于许多 i40e NIC 不支持 iWarp,并且 i40iw 模块没有全面支持 suspend/resume,因此此模块默认不会自动加载,以确保暂停/恢复正常工作。要临时解决这个问题,请手动编辑 /lib/udev/rules.d/90-rdma-hw-modules.rules 文件以启用 i40iw 的自动负载。

另请注意,如果同一机器上安装了另一个 RDMA 设备,非i40e RDMA 设备会触发 rdma 服务,它会加载所有已启用的 RDMA 堆栈模块,包括 i40iw 模块。

(BZ#1623712)

当很多设备被连接时,系统有时会变得无响应

当 Red Hat Enterprise Linux 8 配置大量设备时,系统控制台中会出现大量控制台信息。例如,当存在大量逻辑单元号(LUN)时,每个 LUN 都有多个路径。除了内核正在执行的其他工作外,控制台消息的激增可能会导致内核监视功能强制出现内核 panic,因为内核似乎处于挂起状态。

因为扫描在引导周期早期发生,所以连接很多设备时系统会变得无响应。这通常在系统启动时发生。

如果在引导后在设备扫描事件中启用了 kdump,硬锁定会导致捕获 vmcore 镜像。

要临时解决这个问题,增大 watchdog 锁定计时器。为此,在内核命令行中添加 watchdog_thresh=N 选项。将 N 替换为秒数:

  • 如果您没有一千台设备,请使用 30
  • 如果您有超过一千台设备,请使用 60

对于存储,设备数量是到所有 LUN 的路径数:通常,/dev/sd* 设备的数量。

应用临时解决方案后,系统在配置大量设备时不再响应。

(BZ#1598448)

KSM 有时会忽略 NUMA 内存策略

当使用 merge_across_nodes=1 参数启用内核共享内存(KSM)功能时,KSM 会忽略 mbind()功能设置的内存策略,并可能会将某些内存区域的页面合并到 Non-Uniform Memory Access(NUMA)节点,它们与策略不匹配。

要临时解决这个问题,如果通过 QEMU 使用 NUMA 内存绑定,请禁用 KSM,或将 merge_across_nodes 参数设置为 0。因此,为 KVM 虚拟机配置的 NUMA 内存策略可以正常工作。

(BZ#1153521)

qede 驱动程序挂起 NIC 并使其不可用

由于一个程序错误,41000 和 45000 QLogic 系列 NIC 的 qede 驱动程序可能会导致 Firmware 升级和调试数据收集操作失败,并导致 NIC 不可用或处于挂起状态,直到重启(PCI 重置)使 NIC 再次正常运行。

在以下情况下都检测到了这个问题:

  • 当使用 inbox 驱动程序升级 NIC 的固件时
  • 在收集调试数据时,运行 ethtool -d ethx 命令
  • 运行 sosreport 命令,其中包含 ethtool -d ethx.
  • 当 inbox 驱动程序启动自动调试数据收集,如 IO 超时、Mail Box 命令超时和硬件属性。

红帽的未来勘误将通过红帽漏洞公告(RHBA)发布来解决这个问题。要临时解决这个问题,请在 https://access.redhat.com/support 中创建一个问题单来请求受支持的修复程序,直到 RHBA 发布为止。

(BZ#1697310)

radix 树符号被添加到 kernel-abi-whitelists

在 Red Hat Enterprise Linux 8 的 kernel-abi-whitelists 软件包中添加了以下 radix 树符号:

  • __radix_tree_insert
  • __radix_tree_next_slot
  • radix_tree_delete
  • radix_tree_gang_lookup
  • radix_tree_gang_lookup_tag
  • radix_tree_next_chunk
  • radix_tree_preload
  • radix_tree_tag_set

上面的符号不应存在,将从 RHEL8 白名单中删除。

(BZ#1695142)

podman 检查 RHEL 8 中的容器失败

Checkpoint 和 Restore in Userspace(CRIU)软件包的版本在 Red Hat Enterprise Linux 8 中已经过时。因此,CRIU 不支持容器检查点和恢复功能,podman 工具无法检查点容器。在运行 podman container checkpoint 命令时,会显示以下错误消息: 'checkpointing a container 至少需要 CRIU 31100'

(BZ#1689746)

early-kdump 如果使用 add_dracutmodules+=earlykdump 选项,则标准 kdump 会失败 dracut.conf

目前,为 early-kdump 安装的内核版本和 initramfs 内核版本之间会出现不一致的情况。因此,启用了 early-kdump 的引导失败,early-kdump 会失败。另外,如果 early-kdump 检测到它包含在标准 kdump initramfs 镜像中,它会强制退出。因此,如果 early-kdump 作为默认的 dracut 模块添加,标准 kdump 服务也会在尝试重建 kdump initramfs 时失败。因此,early-kdump 和标准 kdump 都会失败。要临时解决这个问题,不要在 dracut.conf 文件中添加 add_dracutmodules+=earlykdump 或任何等同的配置。因此,默认情况下 dracut 不包含 early-kdump,这会导致问题发生。但是,如果需要 early-kdump 镜像,则必须手动创建它。

(BZ#1662911)

Debug 内核无法在 RHEL 8 的崩溃捕获环境中引导

由于 debug 内核的内存需求特性,会在使用 debug 内核并触发内核 panic 时出现问题。因此,调试内核无法作为捕获内核引导,而是生成一个堆栈追踪。要临时解决这个问题,相应地增大崩溃内核内存。因此,debug 内核可以在崩溃捕获环境中成功引导。

(BZ#1659609)

使用 fadump 时,网络接口被重命名为 kdump-<interface-name>

当使用固件辅助转储(fadump)捕获 vmcore 并使用 SSH 或 NFS 协议将其保存到远程机器时,如果 <interface-name> 是通用的,例如 *eth# 或 net#,则会将网络接口重命名为 kdump-<interface-name>。这是因为初始 RAM 磁盘(initrd)中的 vmcore 捕获脚本在网络接口名称中添加 kdump- 前缀来保护持久性命名。同样的 initrd 也用于常规引导,因此生产内核的接口名称也会被更改。

(BZ#1745507)

5.5.4. 软件管理

在非 root 用户中运行 yum list 会导致 YUM 崩溃

当在更新 libdnf 软件包后在非 root 用户中运行 yum list 命令时,YUM 可能会 意外终止。如果您遇到这个错误,请在 root 下运行 yum list 来解决此问题。因此,后续尝试在非 root 用户下运行 yum list 不再会导致 YUM 崩溃。

(BZ#1642458)

默认情况下,YUM v4 跳过不可用的软件仓库

YUM v4 默认为所有存储库的"skip_if_unavailable=True"设置。因此,如果所需的存储库不可用,则不会在安装、搜索或更新操作中考虑存储库中的软件包。因此,即使没有软件仓库,一些 yum 命令和基于 yum 的脚本也会成功使用退出代码 0。

目前,除了更新 libdnf 软件包外,没有其他可用的临时解决方案。

(BZ#1679509)

5.5.5. 基础架构服务

nslookuphost 工具忽略了来自递归不可用的名称服务器的回复

如果配置了更多名称服务器,且名称服务器无法使用递归,则 nslookuphost 工具会忽略来自此类名称服务器的回复,除非它是最后配置的名称服务器。如果是最后配置的名称服务器,即使没有 recursion available 标志,也可以接受回复。但是,如果最后配置的域名服务器无法响应或者无法访问,名字解析会失败。

要临时解决这个问题:

  • 确定配置的域名服务器总是使用 recursion available 标志进行回复。
  • 允许为所有内部客户端进行 recursion。

要排除这个问题,您还可以使用 dig 工具来检测递归是否可用。

(BZ#1599459)

5.5.6. Shell 和命令行工具

Python 绑定 net-snmp 软件包不可用

Net-SNMP 工具套件没有为 Python 3 提供绑定,它是 RHEL 8 中的默认 Python 实现。因此,RHEL 8 不提供 python-net-snmppython2-net-snmppython3-net-snmp 软件包。

(BZ#1584510)

systemd 在 debug 模式中生成不必要的日志消息

调试模式的 systemd 系统和服务管理器会生成不必要的日志消息,这些信息以:

"Failed to add rule for system call ..."

运行以下命令列出信息:

journalctl -b _PID=1

这些调试消息毫无危害,您可以放心忽略它们。

目前,还没有可用的临时解决方案。

(BZ#1658691)

ksh 使用 KEYBD 陷阱多字节字符

当启用 KEYBD 陷阱时,Korn Shell(KSH)无法正确处理多字节字符。因此,当用户输入(如日语字符)时,ksh 显示一个不正确的字符串。要临时解决这个问题,注释掉以下行来禁用 /etc/kshrc 文件中的 KEYBD 陷阱:

trap keybd_trap KEYBD

如需了解更多详细信息,请参阅相关的 知识库解决方案

(BZ#1503922)

5.5.7. 动态编程语言、网页和数据库服务器

数据库服务器无法并行安装

因为 RPM 软件包有冲突,所以在 RHEL 8.0 中无法并行安装 mariadbmysql 模块。

按照设计,无法并行安装同一模块的多个版本(stream)。例如:您需要从 postgresql 模块中只选择一个可用流,可以是 10 (默认)或 9.6。在 RHEL 6 和 RHEL 7 的 Red Hat Software Collections 中可以并行安装组件。在 RHEL 8 中,可在容器中使用不同版本的数据库服务器。

(BZ#1566048)

mod_cgid 日志记录中的问题

如果在线程多处理模块(MPM)下使用 mod_cgid Apache httpd 模块,这是 RHEL 8 中的默认情况,则会出现以下日志问题:

  • CGI 脚本的 stderr 输出没有使用标准时间戳信息作为前缀。
  • 如果配置了,CGI 脚本的 stderr 输出将无法正确重定向到特定于 VirtualHost 的日志文件。

(BZ#1633224)

IO::Socket::SSL Perl 模块不支持 TLS 1.3

TLS 1.3 协议的新特性,如会话恢复或后握验证,在 RHEL 8 OpenSSL 库中实现,但没有在 Net::SSLeay Perl 模块中实现,因此在 IO::Socket::SSL Perl 模块中不可用。因此,客户端证书身份验证可能会失败,重新建立会话可能比 TLS 1.2 协议慢。

要临时解决这个问题,在创建 IO::Socket::SSL 对象时将 SSL_version 选项设置为 !TLSv1_3 值来禁用 TLS 1.3 的使用。

(BZ#1632600)

生成的 Scala 文档不可读取

当使用 scaladoc 命令生成文档时,因为缺少 JavaScript 资源,生成的 HTML 页面将无法使用。

(BZ#1641744)

5.5.8. Desktop

qxl 不可在基于 Wayland 的虚拟机上工作

qxl 驱动程序无法在特定虚拟机监控程序中提供内核模式设置功能。因此,使用 qxl 的虚拟机(VM)不支持基于 Wayland 协议的图形,基于 Wayland 的登录屏幕也不会启动。

要临时解决这个问题,请使用 :

  • Xorg 在基于 QuarkXpress Element Library(QXL)图形的虚拟机上显示服务器而不是 GNOME Shell

或者

  • 虚拟机的 virtio 驱动程序而不是 qxl 驱动程序。

(BZ#1641763)

运行时不会显示控制台提示符 systemctl isolate multi-user.target

当从 GNOME 桌面会话中的 GNOME Terminal 运行 systemctl isolate multi-user.target 命令时,只会显示光标,而不是控制台提示。要临时解决这个问题,按 Ctrl+Alt+F2 键。因此,会出现控制台提示符。

该行为适用于 Wayland 和 X.Org 显示服务器上的 GNOME Shell

(BZ#1678627)

5.5.9. 图形基础结构

X.Org 上运行的桌面在更改为低屏幕分辨率时挂起

将 GNOME 桌面与 X.Org 显示服务器搭配使用时,如果您尝试将屏幕分辨率更改为低值,桌面将变得无响应。要临时解决这个问题,请不要将屏幕分辨率设置为小于 800 800 像素的值。

(BZ#1655413)

radeon 无法正确重置硬件

radeon 内核驱动程序目前没有在 kexec 上下文中正确重置硬件。相反,radeon 无法正常工作,从而导致剩余的 kdump 服务失败。

要临时解决这个问题,请在 kdump 中将 radeon 列入黑名单,方法是在 /etc/kdump.conf 文件中添加以下行:

dracut_args --omit-drivers "radeon"
force_rebuild 1

重启机器和 kdump。启动 kdump 后,可将 force_rebuild 1 行从配置文件中删除。

请注意,在这种情况下,kdump 不会提供图形,但 kdump 可成功运行。

(BZ#1694705)

5.5.10. 硬件启用

使用 ARP 链接监控器时备份从 MII 状态不起作用

默认情况下,由 i40e 驱动程序管理的设备进行源修剪,这会丢弃具有源 Media Access Control(MAC)地址与其中一个接收过滤器匹配的数据包。因此,在通道绑定中使用地址解析协议(ARP)监控时,备份介质独立接口(MII)状态将无法正常工作。要临时解决这个问题,请使用以下命令禁用源修剪:

# ethtool --set-priv-flags <ethX> disable-source-pruning on

因此,备份从 MII 状态可以正常工作。

(BZ#1645433)

在某些情况下,HP NMI watchdog 不会生成崩溃转储

HP NMI watchdog 的 hpwdt 驱动程序有时无法声明由 HPE watchdog 计时器生成的不可屏蔽中断(NMI),因为 perfmon 驱动程序使用了 NMI。

因此, hpwdt 在某些情况下无法调用 panic 来生成崩溃转储。

(BZ#1602962)

5.5.11. Identity Management

KCM 凭证缓存不适用于单个凭证缓存中的大量凭证

Kerberos 凭据管理器(KCM)可以处理最多 64 kB 的 ccache 大小。如果它包含太多凭证,Kerberos 操作(如 kinit )会失败,因为用于在 sssd-kcm 组件和底层数据库间传输数据的缓冲区存在硬编码限制。

要临时解决这个问题,在 /etc/sssd/sssd.conf 文件的 kcm 部分添加 ccache_storage = memory 选项。这指示 kcm 响应器仅将凭证缓存存储在内存中,而不是永久存储。如果您这样做,重启系统或 sssd-kcm 会清除凭证缓存。

(BZ#1448094)

更改 /etc/nsswitch.conf 需要手动重启

/etc/nsswitch.conf 文件的任何更改(例如运行 authselect select profile_id 命令)都需要重启系统,以便所有相关进程使用 /etc/nsswitch.conf 文件的更新版本。如果无法重启系统,重启将您的系统加入 Active Directory 的服务,这是 System Security Services Daemon (SSSD)或 winbind

(BZ#1657295)

冲突的超时值阻止 SSSD 连接到服务器

与 System Security Services Daemon(SSSD)使用的故障转移操作相关的一些默认超时值相互冲突。因此,为 SSSD 与单个服务器进行通信的超时值会阻止 SSSD 在连接操作超时前尝试其他服务器。要临时解决这个问题,设置 ldap_opt_timeout 超时参数的值高于 dns_resolver_timeout 参数的值,并设置高于 dns_resolver_op_timeout 参数值的 dns_resolver_timeout 参数值。

(BZ#1382750)

SSSD 只能查找 ID 覆盖中的唯一证书

当多个 ID 覆盖包含同一证书时,系统安全服务守护进程(SSSD)将无法解析与证书匹配的用户的查询。尝试查找这些用户不会返回任何用户。请注意,通过使用用户名或 UID 查找用户可以正常工作。

(BZ#1446101)

SSSD 无法正确处理具有相同优先级的多个证书匹配规则

如果给定证书与多个具有相同优先级的证书匹配规则匹配,系统安全服务守护进程(SSSD)只使用其中一个规则。作为临时解决方案,请使用单个证书匹配规则,该规则 LDAP 过滤器由与 | (或)运算符串联的独立规则的过滤器组成。有关证书匹配规则的示例,请参阅 sss-certamp(5)man page。

(BZ#1447945)

SSSD 为本地用户返回不正确的 LDAP 组成员资格

如果系统安全服务守护进程(SSSD)从本地文件为用户提供服务,则文件提供商不包含来自其他域的组成员资格。因此,如果本地用户是 LDAP 组的成员,id local_user 命令不会返回用户的 LDAP 组成员资格。要临时解决这个问题,请恢复系统在 /etc/nsswitch.conf 文件中查找用户组成员资格的数据库顺序,将 sss files 替换为 files sss,或者通过添加来禁用隐式 files

enable_files_domain=False

到文件 /etc/sssd/sssd.conf 中的 [sssd] 部分。

因此,id local_user 会为本地用户返回正确的 LDAP 组成员资格。

(BZ#1652562)

如果 sudo 规则引用组名称,则 sudo 规则可能无法使用 id_provider=ad

系统安全服务守护进程(SSSD)不会在 initgroups 操作过程中解析 Active Directory 组名称,因为使用缓存优化了 AD 和 SSSD 之间的通信。缓存条目仅包含安全标识符(SID),在按名称或 ID 请求组之前,不包含组名称。因此,sudo 规则与 AD 组不匹配,除非在运行 sudo 之前完全解析了这些组。

要临时解决这个问题,您需要禁用优化: 打开 /etc/sssd/sssd.conf 文件并在 [domain/example.com] 部分添加 ldap_use_tokengroups = false 参数。

(BZ#1659457)

在 RHEL 8 中 systemd-user 的默认 PAM 设置已更改,这可能会影响 SSSD 行为

Red Hat Enterprise Linux 8 中更改了可插拔验证模块(PAM)堆栈。例如: systemd 用户会话现在使用 systemd-user PAM 服务启动 PAM 对话。这个服务现在以递归方式包含 system-auth PAM 服务,它可能包括 pam_sss.so 接口。这意味着始终调用 SSSD 访问控制。

请注意为 RHEL 8 系统设计访问控制规则时的更改。例如,您可以在允许的服务列表中添加 systemd-user 服务。

请注意,对于一些访问控制机制,如 IPA HBAC 或 AD GPOs,默认情况下 systemd-user 服务已添加到允许的服务列表中,您不需要进行任何操作。

(BZ#1669407)

IdM 服务器在 FIPS 中无法工作

由于 Tomcat 的 SSL 连接器实现不完整,装有证书服务器的身份管理(IdM)服务器在启用了 FIPS 模式的机器上无法正常工作。

(BZ#1673296)

当使用 sss ID 映射插件时,Samba 拒绝访问

要将 Samba 用作加入 Active Directory(AD)域的 RHEL 主机上的文件服务器,必须运行 Samba Winbind 服务,即使 SSSD 用于管理 AD 中的用户和组。如果您使用 realm join --client-software=sssd 命令或这个命令中没有指定 --client-software 参数加入域,realm 只创建 /etc/sssd/sssd.conf 文件。当您在使用此配置在域成员中运行 Samba 并添加使用 sss ID 映射后端到 /etc/samba/smb.conf 文件共享目录的配置时,ID 映射后端的更改可能会导致错误。因此,Samba 在某些情况下拒绝访问文件,即使存在用户或组且 SSSD 已知的。

如果您计划从以前的 RHEL 版本升级,且 /etc/sssd/sssd.conf 文件中的 ldap_id_mapping 参数被设置为 True (默认值),则没有可用的临时解决方案。在这种情况下,不要将主机升级到 RHEL 8,直到问题解决为止。

在其他情况下可能解决这一问题:

  • 对于新安装,使用 realm join --client-software=winbind 命令加入域。这会将系统配置为在所有用户和组查找中使用 Winbind 而不是 SSSD。在这种情况下,Samba 在 /etc/samba/smb.conf 中使用 ridad ID 映射插件,具体取决于您将 --automatic-id-mapping 选项设置为 yes (默认)还是 no。如果您计划在将来或其他系统中使用 SSSD,使用 --automatic-id-mapping=no 可简化迁移,但要求您在 AD 中为所有用户和组存储 POSIX UID 和 GID。
  • 当从以前的 RHEL 版本升级时,如果 /etc/sssd/sssd.conf 文件中的 ldap_id_mapping 参数被设置为 False,系统会使用 AD 中的 uidNumbergidNumber 属性进行 ID 映射:

    1. /etc/samba/smb.conf 文件中的 idmap config <domain> : backend = sss 条目更改为 idmap config <domain> : backend = ad
    2. 使用 systemctl status winbind 命令重启 Winbind。

(BZ#1657665)

nuxwdog 服务在 HSM 环境中失败,它需要在非 HSM 环境中安装 keyutils 软件包

nuxwdog watchdog 服务已集成到证书系统中。因此,nuxwdog 不再作为单独的软件包提供。要使用 watchdog 服务,请安装 pki-server 软件包。

请注意,nuxwdog 服务有以下已知问题:

  • 如果您使用硬件存储模块(HSM),nuxwdog 服务将无法正常工作。对于这个问题,没有可用的临时解决方案。
  • 在非 HSM 环境中,Red Hat Enterprise Linux 8.0 不会自动安装 keyutils 软件包作为依赖项。要手动安装软件包,请使用 dnf install keyutils 命令。

(BZ#1652269)

仅可在 IdM CLI 中添加 AD 用户的 ID 覆盖

目前,将 Active Directory(AD)用户的 ID 覆盖添加到 Identity Management(IdM)组中,以便在 IdM Web UI 中授予对管理角色的访问权限。要临时解决这个问题,请使用 IdM 命令行界面(CLI)。

请注意,在之前使用 ipa 工具执行某些操作后,在 IdM 服务器中安装了 ipa-idoverride-memberof-plugin 软件包,红帽建议清理 ipa 工具的缓存,强制它刷新其有关 IdM 服务器元数据的视图。

为此,请删除执行 ipa 工具的用户的 ~/.cache/ipa 目录的内容。例如,对于 root:

# rm -r /root/.cache/ipa

(BZ#1651577)

在 IdM 中启用 AD 信任时,没有显示有关所需 DNS 记录的信息

当通过外部 DNS 管理启用对 Red Hat Enterprise Linux Identity Management(IdM)安装中的 Active Directory(AD)信任时,不会显示有关所需 DNS 记录的信息。只有添加所需的 DNS 记录后,林信任才会成功。要临时解决这个问题,请运行 'ipa dns-update-system-records --dry-run' 命令,以获取 IdM 所需的所有 DNS 记录列表。当 IdM 域的外部 DNS 定义所需的 DNS 记录时,有可能建立对 AD 的林信任。

(BZ#1665051)

5.5.12. 编译器和开发工具

GCC confuse SystemTap 生成的复合功能

GCC 优化可以为其他函数的部分内嵌副本生成复合函数。SystemTap 和 GDB 等工具无法区分这些复合函数和实际功能。因此,SystemTap 可以在复合和真实功能入口点上放置探测,从而为单个实际函数调用注册多个探测命中。

要临时解决这个问题,SystemTap 脚本必须经过相应调整,如检测递归和抑制与内联部分功能相关的探测。例如,一个脚本

probe kernel.function("can_nice").call { }

可以尝试避免描述的问题,如下所示:

global in_can_nice%

probe kernel.function("can_nice").call {
  in_can_nice[tid()] ++;
  if (in_can_nice[tid()] > 1) { next }
  /* code for real probe handler */
}

probe kernel.function("can_nice").return {
  in_can_nice[tid()] --;
}

请注意,这个示例脚本没有考虑所有可能的情况,如错过的 kprobes 或 kretprobes 或真正的预期递归。

(BZ#1169184)

ltrace 工具不会报告功能调用

由于改进了对所有 RHEL 组件的二进制强化,ltrace 工具无法检测到来自 RHEL 组件的二进制文件中的功能调用。因此,ltrace 输出为空,因为它不会报告在这些二进制文件中使用任何检测到的调用。目前还没有可用的临时解决方案。

请注意,ltrace 可以正确地报告构建的自定义二进制文件中的调用,而无需相关的强化标记。

(BZ#1618748, BZ#1655368)

5.5.13. 文件系统和存储

无法使用 iscsiuio 软件包发现 iSCSI 目标

Red Hat Enterprise Linux 8 不允许并发访问 PCI 寄存器区域。因此,设置了一个 could not set host net params (err 29) 错误,到发现门户的连接会失败。要临时解决这个问题,在内核命令行中为 iSCSI 卸载设置内核参数 iomem=relaxed。这专门涉及使用 bnx2i 驱动程序进行卸载。因此,连接到发现门户现在可以成功,iscsiuio 软件包现在可以正常工作。

(BZ#1626629)

迁移到不同的终端平台后,VDO 卷会丢失重复数据删除建议

Virtual Data Optimizer(VDO)以您的平台原生的 endian 格式写入通用重复数据删除服务(UDS)索引标头。如果您将 VDO 卷移至使用其他 endian 的平台,VDO 会考虑 UDS 索引损坏,并使用新的空白索引覆盖它。

因此,覆盖前保存在 UDS 索引中的任何重复数据删除建议都会丢失。然后 VDO 无法根据在移动卷前存储的数据删除新写入的数据,从而减少空间。

(BZ#1696492)

XFS DAX 挂载选项与共享写时复制数据扩展不兼容

使用共享写时复制数据扩展功能格式化的 XFS 文件系统与 -o dax 挂载选项不兼容。因此,使用 -o dax 挂载这样的文件系统会失败。

要临时解决这个问题,使用 reflink=0 metadata 选项格式化文件系统以禁用共享的 copy-on-write 数据扩展:

# mkfs.xfs -m reflink=0 block-device

因此,使用 -o dax 挂载文件系统成功。

如需更多信息,请参阅 在 NVDIMM 上创建文件系统 DAX 命名空间

(BZ#1620330)

某些 SCSI 驱动程序有时可能会使用过多的内存

某些 SCSI 驱动程序使用的内存比 RHEL 7 中的内存更大。在某些情况下,比如在光纤通道主机总线适配器(HBA)上创建 vPort,内存用量可能会过大,具体取决于系统配置。

内存用量增加是由块层中内存预分配造成的。多队列块设备调度(BLK-MQ)和多队列 SCSI 堆栈(SCSI-MQ)预分配 RHEL 8 中每个 I/O 请求的内存,从而提高了内存用量。

(BZ#1733278)

5.5.14. 网络

nftables 不支持多组 IP 设置类型

nftables 数据包过滤框架不支持设置具有串联和间隔的类型。因此,您不能使用多组 IP 设置类型,如 hash:net,port,使用 nftables

要临时解决这个问题,如果您需要多组 IP 设置类型,请将 iptables 框架与 ipset 工具一起使用。

(BZ#1593711)

iptables-extensions(8) man page 中的 TRACE 目标没有引用 nf_tables 变体

iptables-extensions(8) man page 中 TRACE 目标的描述只涉及 compat 变体,但 Red Hat Enterprise Linux(RHEL)8.0 使用 nf_tables 变体。RHEL 中的基于 nftablesiptables 工具在内部使用 meta nftrace 表达式。因此,内核不会在内核日志中打印 TRACE 事件,而是将它们发送到用户空间。但是,man page 不会引用 xtables-monitor 命令行工具来显示这些事件。

(BZ#1658734)

RHEL 8 在交换机在长时间不可用后显示 802.3ad 绑定的状态为"Churned"

目前,当您配置 802.3ad 网络绑定并且交换机长时间停机时,Red Hat Enterprise Linux 会正确地将绑定的状态显示为"Churned",即使连接返回到工作状态后也是如此。但是,这是预期的行为,因为"Churned"状态旨在告知管理员发生了重大链接中断。要清除此状态,请重新启动网络绑定或重新引导主机。

(BZ#1708807)

ebtables 命令不支持 broute

Red Hat Enterprise Linux 8.0 中的基于 nftablesebtables 命令不支持 broute 表。因此,用户无法使用这个功能。

(BZ#1649790)

当禁用 GRO 时,IPsec 网络流量在 IPsec 卸载过程中失败

当在该设备中禁用通用接收 Offload(GRO)时,IPsec 卸载将不会正常工作。如果在一个网络接口中配置了 IPsec 卸载,且在该设备中禁用 GRO,IPsec 网络流量会失败。

要临时解决这个问题,在该设备中启用 GRO。

(BZ#1649647)

NetworkManager 现在默认使用 internal DHCP 插件

NetworkManager 支持 internaldhclient DHCP 插件。默认情况下,Red Hat Enterprise Linux(RHEL)7 中的 NetworkManager 使用 dhclient,RHEL 8 使用 internal 插件。在某些情况下,插件的行为不同。例如: dhclient 可以使用 /etc/dhcp/ 目录中指定的附加设置。

如果您从 RHEL 7 升级到 RHEL 8,且 NetworkManager 的行为不同,请在 /etc/NetworkManager/NetworkManager.conf 文件中的 [main] 部分添加以下设置以使用 dhclient 插件:

[main]
dhcp=dhclient

(BZ#1571655)

无法使用更改 IPsec based VPN 的高级选项 gnome-control-center

当使用 gnome-control-center 应用程序配置 IPsec based VPN 连接时,Advanced 对话框将只显示配置,但不允许进行任何更改。因此,用户无法更改任何高级 IPsec 选项。要临时解决这个问题,使用 nm-connection-editornmcli 工具执行高级属性配置。

(BZ#1697326)

/etc/hosts.allow 和 /etc/hosts.deny 文件包含不准确的信息

在 Red Hat Enterprise Linux(RHEL)8 中删除 tcp_wrappers 软件包,但不删除其文件 /etc/hosts.allow 和 /etc/hosts.deny。因此,这些文件包含过时的信息,不适用于 RHEL 8。

要临时解决这个问题,请使用防火墙规则过滤对服务的访问。要根据用户名和主机名进行过滤,请使用特定于应用程序的配置。

(BZ#1663556)

在网络流量过载下,IP 碎片整理无法持续

在 Red Hat Enterprise Linux 8 中,垃圾回收内核线程已被删除,IP 片段仅在超时后过期。因此,在 Denial of Service(DoS)下的 CPU 使用率低得多,且最大可持续发展片段丢弃率会受到为 IP 回配单元配置的内存量的限制。使用默认设置工作负载需要存在数据包丢弃的碎片流量时,数据包重新排序或多个并发碎片流可能会发生相关的性能回归。

在这种情况下,用户可以在 /proc/sys/net/ipv4 目录中正确调整 IP 碎片缓存,设置 ipfrag_high_thresh 变量来限制内存量和 ipfrag_time 变量,以便每秒在内存中保留 IP 片段。例如:

echo 419430400 > /proc/sys/net/ipv4/ipfrag_high_thresh echo 1 > /proc/sys/net/ipv4/ipfrag_time

以上命令适用于 IPv4 流量。对于 IPv6,相关的可调项为: /proc/sys/net/ipv6/ 目录中的 ip6frag_high_threship6frag_time

请注意,任何依赖于高速碎片流量的工作负载都可能导致稳定性和性能问题,特别是在数据包丢弃方面,因此生产环境中强烈建议进行此类部署。

(BZ#1597671)

RHEL 8 中的网络接口名称更改

在 Red Hat Enterprise Linux 8 中,默认使用与 RHEL 7 相同的一致的网络设备命名方案。但是,一些内核驱动程序,如 e1000enfpqedesfctg3bnxt_en 在全新安装 RHEL 8 中更改了他们的一致名称。但是,名称会在从 RHEL 7 升级时保留。

(BZ#1701968)

5.5.15. 安全性

libselinux-python 只能通过其模块提供

libselinux-python 软件包只包含用于开发 SELinux 应用程序的 Python 2 绑定,它用于向后兼容。因此,通过 dnf install libselinux-python 命令,默认的 RHEL 8 软件仓库不再提供 libselinux-python

要临时解决这个问题,请启用 libselinux-pythonpython27 模块,并使用以下命令安装 libselinux-python 软件包及其依赖软件包:

# dnf module enable libselinux-python
# dnf install libselinux-python

或者,在单个命令中使用安装配置集安装 libselinux-python

# dnf module install libselinux-python:2.8/common

因此,您可以使用相关的模块安装 libselinux-python

(BZ#1666328)

libssh 不遵循系统范围的加密策略

libssh 库不遵循系统范围的加密策略设置。因此,当管理员使用 update-crypto-policies 命令更改 crypto 策略级别时,支持的算法集合不会被更改。

要临时解决这个问题,需要使用 libssh 的每个应用程序单独设置一组公告的算法。因此,当系统被设置为 criACY 或 FUTURE 策略级别时,与 OpenSSH 相比,使用 libssh 的应用程序的行为不一致。

(BZ#1646563)

某些 rsyslog 优先级字符串无法正常工作

支持 imtcpGnuTLS 优先级字符串(允许对加密进行精细控制)未完成。因此,以下优先级字符串无法在 rsyslog 中正常工作:

NONE:+VERS-ALL:-VERS-TLS1.3:+MAC-ALL:+DHE-RSA:+AES-256-GCM:+SIGN-RSA-SHA384:+COMP-ALL:+GROUP-ALL

要临时解决这个问题,请只使用正确的优先级字符串:

NONE:+VERS-ALL:-VERS-TLS1.3:+MAC-ALL:+ECDHE-RSA:+AES-128-CBC:+SIGN-RSA-SHA1:+COMP-ALL:+GROUP-ALL

因此,当前的配置必须仅限于可正常工作的字符串。

(BZ#1679512)

默认日志设置在性能上的负面影响

默认日志环境设置可能会消耗 4 GB 内存甚至更多,当 systemd-journald 使用 rsyslog 运行时,速率限制值的调整会很复杂。

如需更多信息,请参阅 RHEL 默认日志设置对性能的负面影响及环境方案

(JIRA:RHELPLAN-10431)

OpenSCAP rpmverifypackage 无法正常工作

rpmverifypackage 探测会调用 chdirchroot 系统调用两次。因此,在使用自定义 Open Vulnerability 和评估语言(OVAL)内容的 OpenSCAP 扫描中使用探测时会出现错误。

要临时解决这个问题,请不要在您的内容中使用 rpmverifypackage_test OVAL 测试,或者只使用 rpmverifypackage_testscap-security-guide 软件包中的内容。

(BZ#1646197)

SCAP Workbench 无法从定制的配置集生成基于结果的补救方法

当尝试使用SCAP Workbench 工具从自定义配置集生成基于结果的补救角色时,会出现以下错误:

Error generating remediation role .../remediation.sh: Exit code of oscap was 1: [output truncated]

要临时解决这个问题,使用 oscap 命令和 --tailoring-file 选项。

(BZ#1640715)

Kickstart 在 RHEL 8 中使用 org_fedora_oscap 而不是 com_redhat_oscap

Kickstart 将 Open Security Content Automation Protocol(OSCAP)Anaconda 附加组件引用为 org_fedora_oscap 而不是 com_redhat_oscap,这可能会导致混乱。这样做可以保持与 Red Hat Enterprise Linux 7 的向后兼容性。

(BZ#1665082)

OpenSCAP rpmverifyfile 无法正常工作

OpenSCAP 扫描程序无法以离线模式正确更改当前工作目录,且没有使用 OpenSCAP rpmverifyfile 探测中正确的参数调用 fchdir 功能。因此,如果在 SCAP 内容中使用 rpmverifyfile_test,使用 oscap-chroot 命令扫描任意文件系统会失败。因此,oscap-chroot 在上述场景中中止。

(BZ#1636431)

OpenSCAP 不提供虚拟机和容器的离线扫描

重构 OpenSCAP 代码库会导致某些 RPM 探测无法在离线模式下扫描虚拟机和容器文件系统。因此,从 openscap-utils 软件包中删除了以下工具: oscap-vmoscap-chroot。另外,openscap-containers 软件包已被完全删除。

(BZ#1618489)

不提供容器安全和合规性扫描的实用程序

在 Red Hat Enterprise Linux 7 中,oscap-docker 工具可用于扫描基于 Atomic 技术的 Docker 容器。在 Red Hat Enterprise Linux 8 中,Docker 和 Atomic 相关的 OpenSCAP 命令不可用。因此,在 RHEL 8 中,RHEL 8 不提供 oscap-docker 或者对容器的安全性和合规性扫描的等效工具。

(BZ#1642373)

OpenSSL TLS 库不会检测到 PKCS#11 令牌是否支持创建 raw RSARSA-PSS 签名

TLS-1.3 协议需要支持 RSA-PSS 签名。如果 PKCS#11 令牌不支持 raw RSARSA-PSS 签名,则使用 OpenSSL TLS 库的服务器应用程序如果由 PKCS#11 令牌持有,将无法使用 RSA 密钥。因此,TLS 通讯会失败。

要临时解决这个问题,配置服务器或客户端以使用 TLS-1.2 版本作为可用最高 TLS 协议版本。

(BZ#1681178)

如果 Apache httpd 使用存储在 PKCS#11 设备和 RSA-PSS 证书中的 RSA 私钥,则无法启动

PKCS#11 标准不会区分 RSA 和 RSA-PSS 密钥对象,并为这两者使用 CKK_RSA 类型。但是,OpenSSL 将不同类型的用于 RSA 和 RSA-PSS 密钥。因此,openssl-pkcs11 引擎无法决定为 PKCS#11 RSA 密钥对象提供哪些类型。目前,引擎会将所有 PKCS#11 CKK_RSA 对象的密钥类型设置为 RSA 密钥。当 OpenSSL 将从证书获得的 RSA-PSS 公钥的类型与引擎提供的 RSA 私钥对象中包含的类型进行比较时,则得出不同类型的结果。因此,证书和私钥不匹配。X509_check_private_key() OpenSSL 功能中的检查会返回一个错误。httpd Web 服务器在其启动过程中调用这个功能,以检查提供的证书和密钥是否匹配。因为对包含 RSA-PSS 公钥和存储在 PKCS#11 模块中的 RSA 私钥的证书进行这个检查总会失败,所以 httpd 无法开始使用此配置。这个问题没有可用的临时解决方案。

(BZ#1664802)

httpd 如果使用 ECDSA 私钥且未存储在 PKCS#11 设备中对应的公钥,则启动失败

与 RSA 密钥不同,ECDSA 私钥不一定包含公钥信息。在这种情况下,您无法从 ECDSA 私钥获取公钥。因此,PKCS#11 设备将公钥信息存储在单独的对象中,无论是公钥对象还是证书对象。OpenSSL 期望引擎提供的 EVP_PKEY 结构用于私钥,以包含公钥信息。当填充要提供给 OpenSSL 的 EVP_PKEY 结构时,openssl-pkcs11 软件包中的引擎会尝试仅从匹配的公钥对象获取公钥信息,并忽略现在的证书对象。

当 OpenSSL 从引擎请求 ECDSA 私钥时,如果 PKCS#11 设备中没有公钥,提供的 EVP_PKEY 结构也不会包含公钥信息,即使有包含公钥的匹配证书可用时。因此,因为 Apache httpd Web 服务器调用 X509_check_private_key() 功能(在启动过程中需要公钥),httpd 在这种情况下无法启动。要临时解决这个问题,使用 ECDSA 密钥将私钥和公钥保存在 PKCS#11 设备中。因此,当 ECDSA 密钥存储在 PKCS#11 设备中时,httpd 会正确启动。

(BZ#1664807)

OpenSSH 无法正确处理不匹配标签的密钥的 PKCS #11 URI

OpenSSH 套件可以通过标签识别密钥对。该标签可能会在保存在智能卡中的私钥和公钥上有所不同。因此,使用对象部分(密钥标签)指定 PKCS #11 URI 可以阻止 OpenSSH 在 PKCS #11 中查找适当的对象。

要临时解决这个问题,请指定 PKCS #11 URIs,但没有对象部分。因此,OpenSSH 可以在使用 PKCS #11 URI 引用的智能卡上使用密钥。

(BZ#1671262)

iptables-ebtables 的输出与 ebtables 并不完全兼容

在 RHEL 8 中,ebtables 命令由 iptables-ebtables 软件包提供,它包含了基于 nftables 的新的实现。此工具具有不同的代码库,其输出在诸多方面有偏差,这些代码可忽略或谨慎设计选择。

因此,在迁移用于解析 ebtables 输出的脚本时,需要对脚本进行以下调整:

  • 将 MAC 地址格式化改为固定长度。必要时,在独立的字节值的开始包含一个 0,用于维护每个字段值带有两个字符。
  • 已更改 IPv6 前缀的格式以符合 RFC 4291。斜杠字符后的结尾部分不再包含 IPv6 地址格式的子网掩码,而是一个前缀长度。这个更改只适用于有效的(left-contiguous)掩码,其他更改则仍然以旧格式打印。

(BZ#1674536)

curve25519-sha256 默认情况下,OpenSSH 不支持

curve25519-sha256 SSH 密钥交换算法在 OpenSSH 客户端和服务器的系统范围的加密策略配置中缺失,即使它与默认策略级别兼容。因此,如果客户端或服务器使用 curve25519-sha256,且主机不支持此算法,则连接可能会失败。

要临时解决这个问题,您可以通过修改 OpenSSH 客户端和服务器的 /etc/crypto-policies/back-ends/ 目录中的 openssh.configopensshserver.config 文件来手动覆盖系统范围的加密策略的配置。请注意,这个配置在每次系统范围的加密策略更改中都会被覆盖。如需更多信息,请参阅 update-crypto-policies(8) man page。

(BZ#1678661)

OpenSSL 错误处理不支持原始 RSA 或 RSA-PSS 签名的 PKCS #11 令牌

OpenSSL 库不会检测 PKCS #11 令牌的与密钥相关的功能。因此,当使用不支持原始 RSA 或 RSA-PSS 签名的令牌创建签名时,建立 TLS 连接会失败。

要临时解决这个问题,请在 /etc/pki/tls/openssl.cnf 文件的 crypto_policy 部分末尾的 .include 行后面添加以下行:

SignatureAlgorithms = RSA+SHA256:RSA+SHA512:RSA+SHA384:ECDSA+SHA256:ECDSA+SHA512:ECDSA+SHA384
MaxProtocol = TLSv1.2

因此,可以在描述的场景中建立 TLS 连接。

(BZ#1685470)

与 VMware 托管系统的 SSH 连接无法正常工作

OpenSSH 套件的当前版本引入了在 SSH 数据包中更改默认 IP 服务质量(IPQoS)标记,VMware 虚拟化平台无法正确处理该标志。因此,无法与 VMware 上的系统建立 SSH 连接。

要临时解决这个问题,在 ssh_config 文件中包括 IPQoS=throughput。因此,与 VMware 托管系统的 SSH 连接可以正常工作。

如需更多信息,请参阅 在 VMWare 工作站中运行的 RHEL 8 无法通过 SSH 连接到其他主机 知识库解决方案。

(BZ#1651763)

5.5.16. 订阅管理

没有打印成功设置和取消设置的消息 service-level

candlepin 服务没有"syspurpose"功能时,订阅管理器使用不同的代码路径设定 service-level 参数。这个代码路径不会打印操作的结果。因此,当订阅管理器设置了服务级别时,不会显示任何信息。当 service-level 集有拼写错误或者真正不可用时,这尤其有问题。

(BZ#1661414)

syspurpose addonssubscription-manager attach --auto 输出没有影响。

在 Red Hat Enterprise Linux 8 中,为 syspurpose 命令行工具增加了四个属性: roleusageservice_level_agreementaddons。目前,只有 roleusageservice_level_agreement 会影响运行 subscription-manager attach --auto 命令的输出。试图将值设置为 addons 参数的用户不会观察对自动附加的订阅产生的任何影响。

(BZ#1687900)

5.5.17. 虚拟化

ESXi 虚拟机使用 cloud-init 自定义并克隆的启动非常慢

目前,如果 cloud-init 服务用于修改在 VMware ESXi hypervisor 上运行的虚拟机(VM)以使用静态 IP,然后克隆虚拟机,则新的克隆虚拟机在某些情况下需要很长时间才能重启。这会导致 cloud-init 将虚拟机的静态 IP 重写为 DHCP,然后搜索可用的数据源。

要临时解决这个问题,您可以在虚拟机第一次引导后卸载 cloud-init。因此,后续重启不会减慢。

(BZ#1666961, BZ#1706482)

启用嵌套虚拟化阻止实时迁移

目前,嵌套虚拟化功能与实时迁移不兼容。因此,在 RHEL 8 主机上启用嵌套虚拟化会阻止从主机迁移任何虚拟机(VM),并保存虚拟机状态快照到磁盘。

请注意,嵌套虚拟化目前在 RHEL 8 中作为技术预览提供,因此不受支持。此外,默认禁用嵌套虚拟化。如果要启用它,请使用 kvm_intel.nestedkvm_amd.nested 模块参数。

(BZ#1689216)

使用 cloud-init 在 Microsoft Azure 中置备虚拟机失败

目前,无法使用 cloud-init 在 Microsoft Azure 平台上置备 RHEL 8 虚拟机(VM)。要临时解决这个问题,请使用以下方法之一:

  • 使用 WALinuxAgent 软件包而不是 cloud-init 在 Microsoft Azure 上置备虚拟机。
  • /etc/NetworkManager/NetworkManager.conf 文件中的 [main] 部分添加以下设置:

    [main]
    dhcp=dhclient

(BZ#1641190)

第二代 RHEL 8 虚拟机有时无法在 Hyper-V Server 2016 主机上引导

当使用 RHEL 8 作为在 Microsoft Hyper-V Server 2016 主机上运行的虚拟机(VM)中的客户机操作系统时,虚拟机在某些情况下无法引导,并返回到 GRUB 引导菜单。另外,会在 Hyper-V 事件日志中记录以下错误:

The guest operating system reported that it failed with the following error code: 0x1E

这个错误是由 Hyper-V 主机上的 UEFI 固件错误造成的。要临时解决这个问题,,使用 Hyper-V Server 2019 作为主机。

(BZ#1583445)

virsh iface-\* 命令无法一致性地工作

目前,virsh iface-* 命令(如 virsh iface-startvirsh iface-destroy )会因为配置依赖关系而经常失败。因此,建议您不要使用 virsh iface-\* 命令配置和管理主机网络连接。反之,使用 NetworkManager 程序及其相关管理程序。

(BZ#1664592)

Azure 的 Linux 虚拟机扩展有时无法正常工作

默认情况下,RHEL 8 不包含 python2 软件包。因此,在 RHEL 8 虚拟机上为 Azure 运行 Linux 虚拟机扩展(也称为 azure-linux-extensions )会失败。

要增加 azure-linux-extensions 可以正常工作的可能性,在 RHEL 8 虚拟机上手动安装 python2

# yum install python2

(BZ#1561132)

5.5.18. 支持性

redhat-support-tool 不从中自动收集 sosreport opencase

redhat-support-tool 命令无法创建 sosreport 归档。要临时解决这个问题,请单独运行 sosreport 命令,然后输入 redhat-support-tool addattachment -c 命令来上传归档或使用客户门户网站中的 Web UI。因此,会创建一个问题单并上传 sosreport

请注意,findkerneldebugsbtextractanalyze diagnose 命令无法按预期工作,并将在以后的版本中修复。

(BZ#1688274)

第 6 章 容器的显著变化

一组容器镜像可用于 Red Hat Enterprise Linux(RHEL)8.0。主要变更包括:

  • Docker 不包含在 RHEL 8.0 中。要使用容器,请使用 podman、buildah、s kopeorunc 工具。

    有关这些工具以及 RHEL 8 中使用容器的详情,请参考 构建、运行和管理容器

  • podman 已作为完全支持的功能发布。

    podman 管理单节点上的 pod、容器镜像和容器。它在 libpod 库基础上构建,支持管理容器和容器组,称为 pod。

    了解如何使用 podman,查看 构建、运行和管理容器

  • 在 RHEL 8 GA 中,红帽通用基础镜像(UBI)现已推出。UBIs 替换了以前提供的一些镜像,如标准和最小 RHEL 基础镜像。

    与旧的红帽镜像不同,UBI 可以自由重新分发。这意味着它们可以在任何环境和任意位置共享。即使您不是红帽客户,您也可以使用它们。

    有关 UBI 文档,请参阅构建、运行和管理容器

  • 在 RHEL 8 GA 中,提供了额外的容器镜像,可提供 AppStream 组件,其中的容器镜像由 RHEL 7 中的 Red Hat Software Collections 发布。所有这些 RHEL 8 镜像都基于 ubi8 基础镜像。
  • RHEL 8 完全支持 64 位 ARM 架构的容器镜像 ARM。
  • rhel-tools 容器已在 RHEL 8 中删除。sosredhat-support-tool 工具在 support-tools 容器中提供。系统管理员也可以使用此镜像来构建系统工具容器镜像。
  • 在 RHEL 8 中,对无根容器的支持作为技术预览提供。

    无根容器是由普通系统用户在没有管理权限的情况下创建和管理的容器。

第 7 章 国际化

7.1. Red Hat Enterprise Linux 8 国际语言

Red Hat Enterprise Linux 8 支持多种语言的安装,并根据您的需要更改语言。

  • 东亚语言 - 日语、韩语、简体中文和繁体中文。
  • 欧洲语言 - 英语、德语、西班牙语、法语、意大利语、葡萄牙语和俄语。

下表列出了为各种主要语言提供的字体和输入法。

语言默认字体(字体软件包)输入法

English

dejavu-sans-fonts

 

法语

dejavu-sans-fonts

 

德语

dejavu-sans-fonts

 

意大利语

dejavu-sans-fonts

 

俄语

dejavu-sans-fonts

 

西班牙语

dejavu-sans-fonts

 

葡萄牙语

dejavu-sans-fonts

 

简体中文

google-noto-sans-cjk-ttc-fonts, google-noto-serif-cjk-ttc-fonts

ibus-libpinyin, libpinyin

繁体中文

google-noto-sans-cjk-ttc-fonts, google-noto-serif-cjk-ttc-fonts

ibus-libzhuyin, libzhuyin

日语

google-noto-sans-cjk-ttc-fonts, google-noto-serif-cjk-ttc-fonts

ibus-kkc, libkc

韩语

google-noto-sans-cjk-ttc-fonts, google-noto-serif-cjk-ttc-fonts

ibus-hangul, libhangu

7.2. RHEL 8 中国际化的显著变化

RHEL 8 与 RHEL 7 相比,对国际化进行了以下更改:

  • 添加了对 Unicode 11 计算行业标准的支持。
  • 国际化发布在多个软件包中,这样就可以进行较小的内存占用安装。

    如需更多信息,请参阅 RHEL 的glibc 本地化在多个软件包中分发

  • 现在,多个本地的 glibc 软件包更新与 Common Locale Data Repository(CLDR)同步。

附录 A. 按组件划分的问题单列表

组件票证

389-ds-base

BZ#1334254, BZ#1358706

NetworkManager

BZ#1555013, BZ#1555012, BZ#1557035, BZ#1335409, BZ#1571655

PackageKit

BZ#1559414

WALinuxAgent

BZ#1561132

anaconda

BZ#1499442, BZ#1500792, BZ#1547908, BZ#1612060, BZ#1595415, BZ#1610806, BZ#1533904 , BZ#1672405, JIRA:RHELPLAN-1943, BZ#1677411, BZ#15023, BZ#1696609

audit

BZ#1616428

authselect

BZ#1657295

bcc

BZ#1548302

bind

BZ#1588592

boom-boot

BZ#1649582

boost

BZ#1494495, BZ#1616244

cloud-init

BZ#1615599, BZ#1641190

cmake

BZ#1590139

cockpit

BZ#16¹3, BZ#1631905

criu

BZ#1689746

crypto-policies

BZ#1591620, BZ#1645606, BZ#1678661,BZ#1660839

cryptsetup

BZ#1564540

device-mapper-multipath

BZ#1643550, BZ#1673167

distribution

BZ#1516728, BZ#1516741, BZ#1566048

dnf

BZ#1622580, BZ#1647760, BZ#1581191

driverctl

BZ#1648411

edk2

BZ#1536627

esc

BZ#1538645

firewalld

BZ#1509026, BZ#1648497

gcc

BZ#1169184, BZ#1607227, BZ#1535774, BZ#1504980, BZ#1571124, BZ#1246444, JIRA:RHELPLAN-7437, BZ#1652016

gdb

BZ#1491128

gdm

BZ#1589678, BZ#1641763, BZ#1678627

glib-networking

BZ#1640534

glibc

BZ#1512004, BZ#1376834, BZ#1512010, BZ#1304448, BZ#1512009, BZ#1512006, BZ#1514839, BZ#1533608

gnome-control-center

BZ#1697326

go-toolset-1.10-golang

BZ#1633351

grub2

BZ#1583445

httpd

BZ#1633224, BZ#1632754

ipa-idoverride-memberof

BZ#1651577

ipa

BZ#1664718,BZ#1664719,BZ#1665051

iproute

BZ#1640991, BZ#1589317

iptables

BZ#1644030, BZ#1564596, BZ#1646159, BZ#1658734, BZ#1649790, BZ#1674536

iscsi-initiator-utils

BZ#1626629, BZ#1582099

kernel-rt

BZ#1592977

kernel

BZ#1598448, BZ#1559607, BZ#1643522, BZ#1485546, BZ#1562998, BZ#1494651, BZ#1485532, BZ#1494028, BZ#1563617, BZ#1485525, BZ#1261167, BZ#1562987, BZ#1562987, BZ#1273139, BZ#1401552, BZ#1638465, BZ#1598776, BZ#1503672, BZ#1633143, BZ#1596240, BZ#1534870, BZ#1153521, BZ#1515987, BZ#1642795, BZ#1570255, BZ#1645744, BZ#1440031, BZ#1649647, BZ#1422268, BZ#1494705, BZ#1650149, BZ#1655413, BZ#1651806, BZ#1620330, BZ#1665295, BZ#1505999, BZ#1645433, BZ#1663281, BZ#1695142, BZ#1627455, BZ#1581898, BZ#1597671, BZ#1550498, BZ#1658391, BZ#1623590, BZ#1614144, BZ#1519039, BZ#1524683, BZ#1694705

kexec-tools

BZ#1520209, BZ#1662911

kmod-kvdo

BZ#1534087, BZ#1639512, BZ#1696492

ksh

BZ#1503922

libdnf

BZ#1642458, BZ#1679509

libreswan

BZ#1566574, BZ#1648776, BZ#1657854

libssh

BZ#1485241

libvirt

BZ#1528684

lksctp-tools

BZ#1568622

ltrace

BZ#1618748, BZ#1584322

lvm2

BZ#1676598, BZ#1643543, BZ#1643545, BZ#1643547, BZ#1643549, BZ#1643562, BZ#1643576

mariadb

BZ#1637034

mdadm

BZ#1654482

mutter

BZ#1668883

net-snmp

BZ#1584510

nfs-utils

BZ#1592011, BZ#1639432

nftables

BZ#1593711

nginx

BZ#1545526

nodejs-10-module

BZ#1622118

nss

BZ#1489094, BZ#1645153

nuxwdog

BZ#1652269

openldap

BZ#1570056

opensc

BZ#1595638, BZ#1595626

openscap

BZ#1614273, BZ#1618484, BZ#1646197, BZ#1636431, BZ#1618489, BZ#1642373, BZ#1618464

openssh

BZ#1622511, BZ#1228088, BZ#1645038, BZ#1671262, BZ#1651763

openssl-pkcs11

BZ#1664802,BZ#1664807

openssl

BZ#1685470

oscap-anaconda-addon

BZ#1665082

pacemaker

BZ#1543494

pcs

BZ#1578891, BZ#1591308, BZ#1615420, BZ#1158816, BZ#1542288, BZ#1549535, BZ#1620190, BZ#1566430, BZ#1595829, BZ#1436217, BZ#1578955, BZ#1596050, BZ#1554310, BZ#1638852, BZ#1640477, BZ#1619620

perl-IO-Socket-SSL

BZ#1632600

perl

BZ#1511131

pki-core

BZ#1565073, BZ#1623444, BZ#1566360, BZ#1394069, BZ#1669257, BZ#1656856, BZ#1673296

postgresql-9.6-module

BZ#1660041

pykickstart

BZ#1637872, BZ#1612061

python-rtslib

BZ#1666377

qemu-kvm

BZ#1559240, BZ#1508139, BZ#1497911, BZ#1578855, BZ#165¹, BZ#1621817, BZ#1508137, BZ#1592337, BZ#1570029, BZ#1689216, BZ#1585651, BZ#1519004

redhat-release

BZ#1636338

redhat-support-tool

BZ#1688274

rsyslog

BZ#1613880, BZ#1542497, BZ#1614179, BZ#1619645, BZ#1679512, JIRA:RHELPLAN-10431

scala-2.10-module

BZ#1641744

scap-security-guide

BZ#1618505, BZ#1618528, BZ#1618518

scap-workbench

BZ#1640715

selinux-policy

BZ#1664345, BZ#1594111, BZ#1592244, BZ#1549772, BZ#1483904, BZ#1626446

setup

BZ#1591969, BZ#1663556

sos

BZ#1559836

squid

BZ#1656871

sssd

BZ#1448094, BZ#1382750, BZ#1446101, BZ#1447945, BZ#1620123, BZ#1652562,BZ#1659457,BZ#1669407,BZ#1657665

subscription-manager

BZ#1654531,BZ#1661414

subversion

BZ#1571415

swig-3.0-module

BZ#1660051

systemd

BZ#1658691

tomcatjss

BZ#1424966, BZ#1636564

tuned

BZ#1565598

valgrind

BZ#1500481, BZ#1538009

varnish

BZ#1633338

vdo

BZ#1669537

virt-manager

BZ#1599777, BZ#1643609

wpa_supplicant

BZ#1582538, BZ#1537143

xorg-x11-server

BZ#1687489, BZ#1698565

其他

JIRA:RHELPLAN-10347, BZ#1646563, JIRA:RHELPLAN-2306, BZ#1640697, BZ#1623712, BZ#1649404, BZ#1581198, BZ#158, BZ#1649497, BZ#16 95584, BZ#16 54280, BZ#1643294, BZ#1643294, BZ#1647612, BZ#1641015, BZ#1641032, BZ#1641004, BZ#1641034, BZ#1647110, BZ#1641007, BZ#1641029, BZ#1641022, JIRA:RHELPLAN-1212, BZ#16493, BZ#1559616, BZ#1699825 , BZ#1699825, BZ#1646541, BZ#1647725, BZ#1686057, BZ#1582530, BZ#1581496, BZ#1650618, BZ#1650675 , BZ#1650701, JIRA:RHELPLAN-10439, JIRA:RHELPLAN-10440, JIRA:RHELPLAN-10442, JIRA:RHELPLAN-10443, JIRA:RHELPLAN-10438, JIRA:RHELPLAN-2878, JIRA:RHELPLAN-10355, JIRA:RHELPLAN-3010, JIRA:RHELPLAN-10352, JIRA:RHELPLAN-10353, JIRA:RHELPLAN-1473, JIRA:RHELPLAN-10445, JIRA:RHELPLAN-3001, JIRA:RHELPLAN-6746, JIRA:RHELPLAN-10354, JIRA:RHELPLAN-2896, JIRA:RHELPLAN-10304, JIRA:RHELPLAN-10628, JIRA:RHELPLAN-10441, JIRA:RHELPLAN-10444, JIRA:RHELPLAN-1842, JIRA:RHELPLAN-10596, JIRA:RHELPLAN-7291, JIRA:RHELPLAN-12764, BZ#1680177, JIRA:RHELPLAN-14607, JIRA:RHELPLAN-1820, BZ#1684947,BZ#1683712, BZ#1659609, BZ#1504934, BZ#1642765, BZ#1641014, BZ#1692746, BZ#1687900, BZ#1690207, BZ#1693775, BZ#1580387, BZ#1583620, BZ#1580430, BZ#1648843, BZ#1647908, BZ#1649891, BZ#1695698, BZ#1697896, BZ#1698613, BZ#1699535, BZ#1701968, BZ#1704867

致谢

感谢 RHEL 8 准备挑战过程中提供反馈的所有人。前 3 名获奖者是:

  • sterling Alexander
  • John Pittman
  • Jake Hunsaker

附录 B. 修订历史记录

0.0-9

Thu Aug 19 2021, Lucie Maňásková (lmanasko@redhat.com)

0.0-8

Wed Jun 23 2021, Lucie Maňásková (lmanasko@redhat.com)

  • 更新了新功能部分(Installer)。
0.0-7

Tue Apr 06 2021, Lenka ¼paová(lspackova@redhat.com)

  • 改进了支持的构架列表。
0.0-6

Thu Jan 28 2021, Lucie Maňásková (lmanasko@redhat.com)

  • 更新了技术预览章节。
0.0-5

Thu Dec 10 2020, Lenka Špačková (lspackova@redhat.com)

  • 向新功能(身份管理)中添加了有关在 SSSD 中处理 AD GPO 的信息。
0.0-4

Tue Apr 28 2020, Lenka ¼paová(lspackova@redhat.com)

  • 在概述中更新有关原位升级的信息。
0.0-3

Thu Mar 12 2020, Lenka ¼paová(lspackova@redhat.com)

  • 在技术预览中添加了缺少的 postfix RHEL 系统角色。
0.0-2

Wed Feb 12 2020, Jaroslav Klech (jklech@redhat.com)

  • 为架构和新功能提供了完整的内核版本.
0.0-1

Tue Jul 30 2019, Lucie Maňásková (lmanasko@redhat.com)

  • 发行 Red Hat Enterprise Linux 8.0.1 发行注记。
0.0-0

2019 年 5 月 07 日,Ioanna Gkioka(mailto:igkioka@redhat.com

  • 发布 Red Hat Enterprise Linux 8.0 发行注记。