第 8 章 已知问题

本章记录了 Red Hat Enterprise Linux 7 中已知的问题。

8.1. 编译器和工具

RHEL 中包含的 GCC 线程 sanitizer 不再可以正常工作

由于内核内存映射中的变化不兼容,在 RHEL 中的 GNU C Compiler(GCC)编译器中包含的线程清理器不再工作。另外,线程 sanitizer 无法根据不兼容的内存布局进行调整。因此,无法再使用 RHEL 中包含的 GCC 线程 sanitizer。

作为临时解决方案,使用 Red Hat Developer Toolset 中包含的 GCC 版本来构建使用线程 sanitizer 的代码。

(BZ#1569484)

8.2. Desktop

radeon 驱动程序无法在 kexec 上下文中正确重置硬件

当从当前运行的内核引导内核时,比如执行 kdump 过程时, radeon 内核驱动程序目前没有正确重置硬件。相反,radeon 会意外终止,从而导致剩余的 kdump 服务失败。

要临时解决这个问题,请通过在 /etc/kdump.conf 文件中添加以下行将 kdump 中的 radeon 列入黑名单:

dracut_args --omit-drivers "radeon"

之后,重启机器和 kdump

请注意,在这种情况下,kdump 不会提供图形界面,但 kdump 可以成功完成。

(BZ#1509444)

8.3. 文件系统

系统引导可能会因为持久内存文件系统而失败

有大量持久内存的系统需要很长时间才能引导。如果 /etc/fstab 文件配置持久内存文件系统,系统可能会因为等待设备可用造成超时。然后引导过程会失败,并给出一个紧急提示符。

要临时解决这个问题,增大 /etc/systemd/system.conf 文件中的 DefaultTimeoutStartSec 值。使用足够大的值,如 1200s。因此,系统引导不会超时。

(BZ#1666535, BZ#1634341)

8.4. 安装和引导

RHEL 7.7 及更新的安装将 spectre_v2=retpoline 添加到 Intel Cascade Lake 系统 

RHEL 7.7 及更新的安装将 spectre_v2=retpoline 内核参数添加到 Intel Cascade Lake 系统,因此系统性能会受到影响。要临时解决这个问题并确保性能最佳,请完成以下步骤。

  1. 删除 Intel Cascade Lake 系统中的内核引导参数:

    # grubby --remove-args="spectre_v2=retpoline" --update-kernel=DEFAULT
  2. 重启系统:

    # reboot

(BZ#1767612)

在使用 Emulex OneConnect 卡时 iSCSI 安装会失败

在连接了 Emulex OneConnect 卡并为 iSCSI 引导进行配置后,当您启动 RHEL 安装时,Anaconda 安装程序会返回一个异常,安装会意外终止。

要临时解决这个问题,请在安装后在引导命令行中添加 rd.iscsi.firmware 参数,并且可以成功引导到 RHEL。但请注意,使用这个临时解决方案的引导过程需要更长的时间。

(BZ#1632274)

8.5. 内核

系统引导有时在大型系统中失败

在引导过程中,udev 设备管理器有时会在大型系统中生成太多规则。例如,这个问题会存在于内存 32TB 和 192 个 CPU 的系统中。因此,引导过程变得无响应,或者超时,并切换到紧急 shell。

要临时解决这个问题,增大 udev.children-max 值:

  1. 在文件 /etc/default/grub 的内核命令行中添加 udev.children-max=1000 选项。您可以使用不同的 udev.children-max 值进行测试,以查看哪个值在系统中引导速度最快。
  2. 限制 kdump 内核的 udev.children-max 值:

    /etc/sysconfig/kdump 文件中的 KDUMP_COMMANDLINE_REMOVE 行中添加 udev.children-max 选项。

    如果您没有指定 kdump 选项,则该系统可能会在 IBM POWER 系统上使用 kdumpfadump 捕获后进入紧急模式。

  3. 重启 kdump 服务:

    # systemctl restart kdump

因此,系统可以成功引导。

(BZ#1722855)

mirror 片段类型会导致系统在堆栈配置中死锁

使用 mirror 片段类型并将任何逻辑卷放在上面会导致系统死锁。要临时解决这个问题,红帽建议使用片段类型为 raid1 的 RAID 1 逻辑卷。

要将 mirror 设备转换为 raid1 时,请参阅将镜像 LVM 设备转换为 RAID1 设备

(BZ#1772107)

zlib 压缩格式可能会减慢 vmcore 捕获速度

kdump 配置文件默认使用 lzo 压缩格式(makedumpfile -l)。修改配置文件以使用 zlib 压缩格式(makedumpfile -c)可能会带来更好的压缩效果,但会牺牲 vmcore 捕获过程的速度。因此,与 lzo 相比,在使用 zlib 时,kdump 大约需要 4 倍的时间捕获 vmcore。因此,红帽建议如果速度是主要的考虑因素,使用默认的 lzo。但是,如果目标机器中的可用空间较低,zlib 就是一个更好的选项。

(BZ#1737111)

使用 ice 驱动程序的 Intel 网络设备在使用 bridge-over-VLAN 拓扑时不会传递流量

以太网设备不会传输互联网控制消息协议(ICMP)echo request,并在以下条件满足时回复流量:

  • 以太网设备使用 ice Intel 驱动程序。
  • 以太网设备是网桥的成员。
  • 网桥使用 802.1Q 协议的 VLAN 标记

因此,Network Interface Controller(NIC)不会为上述网络拓扑传递流量。这个问题还没有可用的临时解决方案。

(BZ#1787295)

8.6. 网络

在 Red Hat Enterprise Linux 7 中禁用了使用 MD5 hash 算法验证签名的功能

无法连接到任何需要 MD5 签名证书的 Wi-Fi Protected Access(WPA)Enterprise Access Point(AP)。要临时解决这个问题,将 wpa_supplicant.service 文件从 /usr/lib/systemd/system/ 目录中复制到 /etc/systemd/system/ 目录中,并在文件的 Service 部分添加以下行:

Environment=OPENSSL_ENABLE_MD5_VERIFY=1

然后以 root 用户身份运行 systemctl daemon-reload 命令重新载入该服务文件。

重要

请注意,MD5 证书非常不安全,因此红帽不推荐使用它们。

(BZ#1062656)

glibc 相比,bind-utils DNS 查找实用程序支持较少的搜索域

bind-utils 软件包中的 dighostnslookup DNS 查找工具只支持最多 8 个搜索域,系统中的 glibc 解析器支持任意数量的搜索域。因此,当 /etc/resolv.conf 文件中的搜索包含超过 8 个域时,DNS 查找工具可能会得到与应用程序不同的结果。

要临时解决这个问题,请使用以下内容之一:

  • 以点结尾的完整名称,或者
  • resolv.conf 搜索条款中少于 9 个域。

请注意,我们不建议使用超过三个域。

(BZ#1758317)

8.7. 安全性

auditd 服务器不会使用 KRB5 peer 验证在远程日志服务器中启动

SELinux 策略不包含用于在 auditd_t SELinux 类型下运行的进程所创建的临时目录和文件的 auditd_tmp_t 文件类型。这可防止在使用 KRB5 peer 验证进行远程日志时在服务器中启动 auditd 服务。

要临时解决这个问题,可以将 auditd_t 域设置为 permissive 模式,也可以构建自定义 SELinux 策略,允许 auditd_t 类型下运行的进程在 /var/tmp 目录中创建和修改文件和目录。因此,只有在应用了上述临时解决方案后,才能启动使用 KRB5 peer 验证进行远程日志的 auditd 服务器。

(BZ#1752577)

可执行审核监控在符号链接上无法正常工作

-w 选项提供的文件监控无法直接跟踪路径。它需要解析到设备的路径以及内节点,才能与已执行程序进行比较。监控可执行符号链接的监视器监控设备以及符号链接本身的内节点,而不是内存中执行的程序(从符号链接解析中找到)。即使监视解析符号链接以获取生成的可执行程序,该规则也会触发从不同符号链接调用的任何多调用二进制文件。这会导致大量日志带有假的正状态。因此,可执行的审计监控符号链接无法正常工作。

要临时解决这个问题,设置对程序可执行文件的解析路径的监视,并使用 comm=proctitle= 字段中列出的最后组件过滤得到的日志消息。

(BZ#1421794)

8.8. 服务器和服务

当在 Workstation 中安装了 mariadb-testpostgresql-docs 时,升级到 RHEL 7.8 会失败

mariadb-testpostgresql-docs 软件包已移至 Workstation Optional 软件仓库。因此,如果安装了这些软件包,则无法将 Workstation 变体更新到 RHEL 7.8。要临时解决这个问题,请在升级到 RHEL 7.8 前卸载 mariadb-testpostgresql-docs

(BZ#1749776)

FreeRADIUS 会默默地截断大于 249 个字符的 Tunnel-Password

如果 Tunnel-Password 大于 249 个字符,则 FreeRADIUS 服务会默默地截断它。这可能导致无法预期的,与其它系统不兼容的密码。

要临时解决这个问题,请选择 249 个字符或更少的密码。

(BZ#1463673)

8.9. 存储

在使用外部 MD 元数据的低内存情况下,系统有时会变得无响应

如果出现以下情况,系统可能会定期变得无响应:

  • 多设备(MD)存储子系统被配置为使用外部元数据阵列。
  • 系统会出现低内存情况。
  • MD 用户空间执行一个分配,将数据写入 MD 分配的同一设备。

要临时解决这个问题,请确定系统有足够的可用内存。因此,在 MD 执行分配时系统不会变得无响应。

(BZ#1703180)

8.10. 虚拟化

在某些情况下,具有不同物理地址大小的主机间实时迁移无法正常工作

使用热插拔 CPU 的虚拟机(VM)的实时迁移,如果主机的物理地址大小不同,某些情况下会失败。要临时解决这个问题,在使用 CPU 热插时不要在这些主机间进行实时迁移。或者,不要将 CPU 热插到已迁移到具有不同物理地址大小的主机的虚拟机。

(BZ#1607311)

当使用 --nonsparse 时,virt-clone 会始终显示 100% 的进度条

目前,当将 virt-clone 实用程序与 --nonparse 选项搭配使用时,在 CLI 中显示的进程始终为完成了 100%。因此,用户无法看到克隆虚拟机的实际进度。

(BZ#1746771)

RHEL 7 虚拟机有时无法引导并迁移到 Witherspoon 主机

在某些情况下,使用 pseries-rhel7.6.0-sxxm 机器类型的 RHEL 7 虚拟机(VM)无法 为使用 DD2.3 CPU 的 HPC 主机(也称为 Witherspoon)启动 Power9 S922LC

尝试引导这样的虚拟机会生成以下出错信息:

qemu-kvm: Requested safe indirect branch capability level not supported by kvm

另外,将使用 pseries-rhel7.6.0-sxxm 机器类型迁移到 Witherspoon 主机的虚拟机从其他主机迁移失败。

(BZ#1751054)

kdump 不支持在 Hyper-V 虚拟机中将 nr_cpus 设置为 2 或更高

当使用 RHEL 7.8 作为 Microsoft Hyper-V hypervisor 上的客户机操作系统时,在一些情况下,当 nr_cpus 参数设置为 2 或更高级别时, kdump 内核会变得无响应。为了避免这个问题的发生,请不要更改客户端 /etc/sysconfig/kdump 文件中的默认 nr_cpus=1 参数。

(BZ#1773478)