2.4. 系统管理

本小节总结了 Red Hat Enterprise Linux 6 和 Red Hat Enterprise Linux 7 中系统管理工具和进程的变化。

2.4.1. Red Hat Subscription Manager

Red Hat Subscription Manager 替换了 Red Hat Network,后者也称 RHN Classic。
虽然在 Red Hat Enterprise Linux 6 中 Red Hat Subscription Manager 与 Red Hat Network Classic 并存,但 Red Hat Enterprise Linux 7 只支持 Red Hat Subscription Manager 注册技术。
Red Hat Subscription Manager 在 Red Hat 知识库及其自身文档中均有记录。以下资源可帮助您迁移已升级系统的注册,或者注册全新安装的 Red Hat Enterprise Linux 7。

2.4.2. 默认进程最大值(无限)

在 Red Hat Enterprise Linux 6 中,非 root 用户每个 PAM 会话中的总进程数是限制在 1024 个。在 Red Hat Enterprise Linux 7 中将这个限制提高到默认每个 PAM 会话 4096 个进程。
默认值是在 /etc/security/limits.d/*-nproc.conf 文件(Red Hat Enterprise Linux 7 中通常为 /etc/security/limits.d/20-nproc.conf)中指定。如果没有这个文件,则可编程决定非 root 用户的最大进程数,如 https://access.redhat.com/solutions/218383 所述。
您可以使用 ulimit -u 命令查看非 root 用户每个 PAM 会话的当前可用进程数。

2.4.3. 配置文件语法

在 Red Hat Enterprise Linux 6 中,在配置文件中使用 export 命令导出那些文件中定义的值。未使用 export 命令的变量就不会被导出,而是只作为对应初始化脚本中的配置值使用。以下是 /etc/sysconfig/sshd 文件示例:
AUTOCREATE_SERVER_KEYS=YES
export SSH_USE_STRONG_RNG=1
export OPENSSL_DISABLE_AES_NI=1
在 Red Hat Enterprise Linux 6 中,只将 SSH_USE_STRONG_RNGOPENSSL_DISABLE_AES_NI 值导出到 ssh 守护进程的环境中。变量 AUTOCREATE_SERVER_KEYS 是用来告知初始化脚本自动生成 RSA 和 DSA 服务器私钥和公钥。
在 Red Hat Enterprise Linux 7 中,不再需要使用 export 命令将这些值导出到要配置服务的环境中。因此下面的示例 /etc/sysconfig/sshd 文件会将所有这三个值导出到 ssh 守护进程环境中:
AUTOCREATE_SERVER_KEYS=YES
SSH_USE_STRONG_RNG=1
OPENSSL_DISABLE_AES_NI=1

2.4.4. 新的日志框架

Red Hat Enterprise Linux 7 采用新的日志守护进程 journald,这是迁移到 systemd 的一部分。journald 为所有服务捕获以下类型的信息:
  • syslog 信息
  • 内核信息
  • 初始化 RAM 磁盘以及早期引导信息
  • 发送到标准输出以及标准错误输出的信息
然后它会将这些信息保存到自身的日志文件中:该文件是一个结构清晰带索引的二进制文件,其中包含有用的元数据,可更迅速、方便地进行搜素。
默认情况下不会持久保存日志文件。记录的数据量依赖可用的剩余内存量。当系统耗尽内存空间,或者耗尽 /run/log/journal 目录空间后,会删除最旧的日志文件以便继续记录。
在 Red Hat Enterprise Linux 7 中,rsyslogjournald 并存。会将 journald 收集的数据转发到 rsyslog,后者可进一步进行处理并保存文本日志文件。默认情况下,rsyslog 只保存典型的 syslog 信息的日志字段,但可将其配置为保存可用于 journald 的所有字段。因此 Red Hat Enterprise Linux 7 仍兼容依赖 rsyslog 的应用程序和系统配置。
有关日志子系统的详情请参考 《Red Hat Enterprise Linux 7 系统管理员指南》,网址 http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/

2.4.5. 本地化设置

作为转移到新的初始化系统 systemd 的一部分,已将本地化设置从 /etc/sysconfig/i18n 转移到 /etc/locale.conf/etc/vconsole.conf

2.4.6. 主机名定义

在 Red Hat Enterprise Linux 6 中,hostname 变量是在 /etc/sysconfig/network 配置文件中定义。在 Red Hat Enterprise Linux 7 中,作为迁移到新初始化系统(systemd)的一部分,将在 /etc/hostname 中定义 hostname 变量。

2.4.7. Yum 更新

Red Hat Enterprise Linux 7 包含 Yum 的更新版本,其中包含大量更改和改进。本小节总结了 Red Hat Enterprise Linux 6 到 Red Hat Enterprise Linux 7 的变化可能对 yum 用户产生的影响。
  • yum groupyum groups 现在是顶层命令,这提高了命令行 yum 使用的一致性。例如:之前您需要使用 yum groupinfo,现在可以使用 yum group info
  • yum group list 现在包含附加可选参数以改变其输出结果。新的选项为 languageids
  • 已将 /etc/yum.conf 中的 group_command 参数默认值从 compat 改为 objects。之前 yum group install 的默认行为是安装所有软件包组成员,同时还要升级之前安装的软件包以及上次升级后添加到组中的所有软件包。新的默认行为是 yum 保留对之前安装软件包的跟踪,同时将作为该组一部分安装的软件包和独立安装的软件包区分开来。
  • 已在 yum 中整合了 yum-securityyum-presto 插件。
  • yum 选择可同时下载多个软件包。
  • yum 现在包括对环境组的支持。这可让您安装并删除作为单一条目在环境组中列出的多个软件包组。
  • yum 现在可以将库作为软件包处理,这样用户就可以将某个库中的所有软件包作为一个条目对待,比如要安装或者删除那个库中的所有软件包。这个功能由 repository-packages 子命令提供。
  • yum 现在包含 --disableincludes 选项,它可让您禁用配置文件中定义的 include 声明。您可以使用 all 值禁用所有 include 声明,也可以禁用由存储库标识符提供的具体存储库的 include 声明。
  • yum 现在包含 --assumeno 选项,它假设对 yum 提出的所有问题的回答都是‘no’。这个选项覆盖 --assumeyes 选项,但受 alwaysprompt 所描述行为影响。
有关 yum 的详情请参考 man page:
$ man yum

2.4.8. RPM Package Manager(RPM)更新

Red Hat Enterprise Linux 7 提供 RPM Package Manager 的更新版本。这个更新包含大量可能影响迁移的行为变化。
  • 现在冲突探测更严格也更准确。由于对冲突敏感性的提升,有些应在 Red Hat Enterprise Linux 6 安装的软件包可能不会在 Red Hat Enterprise Linux 7 中安装。
  • 现在,可使用备选方法将与其自身其他版本冲突的软件包设定为 singleton,以便可同时安装同一软件包的多个版本。
  • 如果安装的软件包将另一个软件包列为 obsolete,则不会安装第二个软件包。
  • 淘汰规则现在包括所有匹配的软件包,不考虑其他属性,比如架构。
  • 相依性计算不再考虑未安装或者已被替换的文件,例如使用 --nodocs, --noconfig 或者 --force 选项提供。
  • 重建 panicked(DB_RUNRECOVER)RPM Package Manager 数据库时不再需要手动执行 rm -f /var/lib/rpm/__db.
  • 不再支持使用 OpenPGP 3 创建公钥。
  • --info 选项现在每行给出单独的 tag-value 对以提高可读性。所有之前依赖 --info 格式的脚本都需要重新编写。
  • spec 解析程序现在更严格也更准确,因此一些之前可以接受的 spec 文件现在可能会无法解析,或者给出警告信息。
  • 现在可使用 %license 标记 spec 文件中的 %files 部分,因为即使指定 --nodocs 也必须安装许可证。
  • 版本比较现在支持使用波浪符(~)运算符以便更好地处理预先发布的软件。例如:foo-2.0~beta1 是指比 foo-2.0 老的版本,这样即使不适用 Release 字段也可以处理这些 upstream 版本问题。
  • 已重新编写自动相依性生成程序,使其成为可扩展、可自定义的基于规则的系统,并内置过滤器。
这个更新还包括以下改进:
  • 现在可查询使用软件包安装的文件(INSTFILENAMES),文件的硬链接号(FILENLINKS),软件包版本控制系统详情(VCS)以及格式化相依性字符串简写(PROVIDENEVRSREQUIRENEVRSCONFLICTNEVRSOBSOLETENEVRS)。
  • 提供大量新命令,其中包括:
    • rpmkeys
    • rpmdb
    • rpmspec
    • rpmsign
  • RPM 软件包管理器现在包含新的小脚本切换,可启用运行时宏扩展或者运行时查询格式扩展。
  • 现在可以使用 Requires(pretrans)Requires(posttrans) 正确表示事务前及事务后小脚本相依性。
  • RPM Package Manager 现在包括 OrderWithRequires 标签,允许用户提供额外的排序信息。这个新标签使用与 Requires 标签相同的语法,但不生成相依性。如果上述软件包出现在同一事务中,则在计算事务顺序时,将排序提示视为 Requires。
  • spec 文件中的连续行及宏扩展不再限制为指定的长度。
  • RPM Package Manager 现在可让用于指定 upstream 版本控制程序库信息。
  • RPM Package Manager 现在包含 %autosetup 宏以便帮助自动化应用补丁的过程。

2.4.9. /etc/ifconfig 新格式

在 Red Hat Enterprise Linux 7 中已更改被淘汰的 ifconfig 工具的输出格式。解析 ifconfig 输出结果的脚本可能会受这些变化的影响,并可能需要重新编写。
Red Hat 推荐使用 ip 程序及其子命令(ip addr, ip link),而不是被淘汰的 ifconfig 工具。

2.4.10. 控制组的变化

内核使用控制组根据系统资源管理将进程分组。Red Hat Enterprise Linux 7 引进了大量控制组变化。
  • 控制组现在是挂载到 /sys/fs/cgroup 而不是 /cgroup 目录中。
  • 有些文件系统现在默认挂载。
  • systemd 还不完全支持从 libcgroupsystemd 的迁移。因此,应只在将进出移动到不是由 systemd 管理的组时方可使用 cgred 服务。cgconfig.conf 应只能用于配置文件系统或者不是由 systemd 管理的文件控制程序继承的控制组。
有关这些变化的详情请参考《Red Hat Enterprise Linux 7 资源管理指南》,网址:http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/

2.4.11. 内核崩溃收集(Kdump)的变化

内核崩溃收集工具 kdump 之前为 kdump 生成一个初始化 ramdisk(initrd)以便使用自定义 mkdumprd 脚本捕获内核。在 Red Hat Enterprise Linux 7 中是使用 dracut 生成初始化 ramdisk,这样更容易维护生成的初始化 ramdisk。
这个变化的结果是对 kdump 及其配置文件进行了如下更改:
  • 不再支持 net 指令。用户现在必须明确定义 ssh 或者 nfs
  • 不再支持 blacklist 选项,反之,用户可以指定 rd.driver.blacklist 作为其捕获内核的 /etc/sysconfig/kdump 文件中的一个参数。
  • 如果转储到预期的目标失败,dump_to_rootfs 动作替换了默认的 mount_root_run_init 动作。这个动作不会在 kdump 服务启动时挂载实际的 root 文件系统、运行 init 脚本并尝试保存 vmcore,而是挂载 root 文件系统并立即在其中保存 vmcore。
  • 新的 dracut_args 指令可让您在配置 kdump 时指定附加 dracut 参数。
  • Kdump 中不再包含 debug_mem_level 选项。这个功能已经移动到 dracut 中。用户可以通过将 rd.memdebug 指定为其捕获内核的 /etc/sysconfig/kump 文件中的一个参数得到类似的功能。
  • 之前使用 options 指令包含初始化 ram 文件系统(initramfs)中具体内核模块参数。Red Hat Enterprise Linux 7 中不支持这个方法,反之,用户可以在其捕获内核的 /etc/sysconfig/kdump 文件中指定相关参数。
  • 不再需要或者支持 link_delaydisk_timeout 参数,因为 dracut 包含 udev,它可以处理之前需要这些参数的情况。
  • 所有文件系统后端转储目标都必须在 kdump 服务启动前挂着到崩溃的内核中,并生成初始化 ramdisk 映像。您可以将这些目标添加到 /etc/fstab 中以便在引导时自动挂着,这样就可以达到这个目的。
  • 如果您指定路径,但不指定目标,同时您指定路径中的所有目录都是独立设备的挂载点,则会为该路径保存 vmcore,而不是设备在该路径挂载的某一点。因此当系统重启是,挂载设备,但无法访问 vmcore,因为该设备是挂载到其位置的上级。Red Hat Enterprise Linux 7 现在回在您指定路径但未指定目标时就这个问题给出警告信息。
有关 kdump 的详情请参考 《Red Hat Enterprise Linux 7 内核崩溃转储指南》,网址 http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/

为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。