第 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 系统,因此系统性能会受到影响。要临时解决这个问题并确保性能最佳,请完成以下步骤。
删除 Intel Cascade Lake 系统中的内核引导参数:
# grubby --remove-args="spectre_v2=retpoline" --update-kernel=DEFAULT
重启系统:
# reboot
在使用 Emulex OneConnect 卡时 iSCSI 安装会失败
在连接了 Emulex OneConnect 卡并为 iSCSI 引导进行配置后,当您启动 RHEL 安装时,Anaconda 安装程序会返回一个异常,安装会意外终止。
要临时解决这个问题,请在安装后在引导命令行中添加 rd.iscsi.firmware
参数,并且可以成功引导到 RHEL。但请注意,使用这个临时解决方案的引导过程需要更长的时间。
(BZ#1632274)
8.5. 内核
系统引导有时在大型系统中失败
在引导过程中,udev
设备管理器有时会在大型系统中生成太多规则。例如,这个问题会存在于内存 32TB 和 192 个 CPU 的系统中。因此,引导过程变得无响应,或者超时,并切换到紧急 shell。
要临时解决这个问题,增大 udev.children-max
值:
-
在文件
/etc/default/grub
的内核命令行中添加udev.children-max=1000
选项。您可以使用不同的udev.children-max
值进行测试,以查看哪个值在系统中引导速度最快。 限制
kdump
内核的udev.children-max
值:在
/etc/sysconfig/kdump
文件中的KDUMP_COMMANDLINE_REMOVE
行中添加udev.children-max
选项。如果您没有指定
kdump
选项,则该系统可能会在 IBM POWER 系统上使用kdump
或fadump
捕获后进入紧急模式。重启
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
软件包中的 dig
、host
和 nslookup
DNS 查找工具只支持最多 8 个搜索域,系统中的 glibc
解析器支持任意数量的搜索域。因此,当 /etc/resolv.conf
文件中的搜索包含超过 8 个域时,DNS 查找工具可能会得到与应用程序不同的结果。
要临时解决这个问题,请使用以下内容之一:
- 以点结尾的完整名称,或者
-
resolv.conf
搜索条款中少于 9 个域。
请注意,我们不建议使用超过三个域。
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
服务器。
可执行审核监控在符号链接上无法正常工作
-w
选项提供的文件监控无法直接跟踪路径。它需要解析到设备的路径以及内节点,才能与已执行程序进行比较。监控可执行符号链接的监视器监控设备以及符号链接本身的内节点,而不是内存中执行的程序(从符号链接解析中找到)。即使监视解析符号链接以获取生成的可执行程序,该规则也会触发从不同符号链接调用的任何多调用二进制文件。这会导致大量日志带有假的正状态。因此,可执行的审计监控符号链接无法正常工作。
要临时解决这个问题,设置对程序可执行文件的解析路径的监视,并使用 comm=
或 proctitle=
字段中列出的最后组件过滤得到的日志消息。
(BZ#1421794)
8.8. 服务器和服务
当在 Workstation 中安装了 mariadb-test
或 postgresql-docs
时,升级到 RHEL 7.8 会失败
mariadb-test
和 postgresql-docs
软件包已移至 Workstation Optional 软件仓库。因此,如果安装了这些软件包,则无法将 Workstation 变体更新到 RHEL 7.8。要临时解决这个问题,请在升级到 RHEL 7.8 前卸载 mariadb-test
和 postgresql-docs
。
(BZ#1749776)
FreeRADIUS 会默默地截断大于 249 个字符的 Tunnel-Password
如果 Tunnel-Password 大于 249 个字符,则 FreeRADIUS 服务会默默地截断它。这可能导致无法预期的,与其它系统不兼容的密码。
要临时解决这个问题,请选择 249 个字符或更少的密码。
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 主机的虚拟机从其他主机迁移失败。
kdump 不支持在 Hyper-V 虚拟机中将 nr_cpus 设置为 2 或更高
当使用 RHEL 7.8 作为 Microsoft Hyper-V hypervisor 上的客户机操作系统时,在一些情况下,当 nr_cpus
参数设置为 2 或更高级别时, kdump 内核会变得无响应。为了避免这个问题的发生,请不要更改客户端 /etc/sysconfig/kdump
文件中的默认 nr_cpus=1
参数。