第 1 章 如何升级

从 Red Hat Enterprise Linux 7.0 GA 开始,只支持一种升级途径:即从 Red Hat Enterprise Linux 6 的最新版本升级到 Red Hat Enterprise Linux 7 的最新版本。

1.1. 如何从 Red Hat Enterprise Linux 6 升级

按照本章所述步骤从 Red Hat Enterprise Linux 6 升级至 Red Hat Enterprise Linux 7。升级过程由以下几个步骤组成:
  1. 查看 Red Hat 是否支持升级您的系统(请参考 第 1.1.1 节 “查看您的支持状态”)。
  2. 准备升级(请参考 第 1.1.2 节 “准备系统以便升级”)。
  3. 检查您的系统,查看是否有可能会影响您升级的问题(请参考 第 1.1.3 节 “查看系统是否适合升级”)。
  4. 运行 Red Hat Upgrade Tool 升级系统(请参考 第 1.1.4 节 “升级您的系统”)。

1.1.1. 查看您的支持状态

只有您的系统满足以下条件后才会支持您从 Red Hat Enterprise Linux 6 升级至 Red Hat Enterprise Linux 7。
  • 您的系统为 Red Hat Enterprise Linux 6 用于 x86_64 架构的 Server 变体,所有软件包都是最新版本。请运行以下命令查看:
    # cat /etc/redhat-release
    Red Hat Enterprise Linux Server release 6.6 (Santiago)
    # arch
    x86_64
    # yum upgrade -y
  • 系统已注册接收来自订阅管理和经典 RHN 的更新。
  • 系统中只有以下软件包组:Minimal、Base、Web Server、DHCP Server、NFS File Server(@nfs-server)及 Printer Server。升级前请删除其他软件包,并在升级完成后重新安装它们。
详情请查看以下知识库解决方案:https://access.redhat.com/solutions/799813.

1.1.2. 准备系统以便升级

Red Hat Enterprise Linux 7 是第一个允许从之前的主要发行本就地升级的主要发行本。这个升级梯度很复杂,且更容易出错。为尽量保证您能够顺利升级,需进行必要的准备工作。
备份所有数据
使用 Red Hat Upgrade Tool redhat-upgrade-tool 前,应备份整个系统,以避免可能的数据丢失,同时测试您的备份功能是否正常工作。
首先测试
升级产品系统前,应克隆该系统,并在克隆的系统中测试升级步骤。这样您就可以在不威胁到产品系统的情况下准备升级。
转换至 Red Hat Subscription Management
Red Hat Enterprise Linux 7 必须使用订阅管理工具(subscription-manager)而不是 RHN Classic 工具(比如 rhn_register)注册。有关使用 Subscription Management 的详情,请查看 https://access.redhat.com/articles/433903
开始升级软件包前,yum upgrade 命令会输出这个系统如何接收更新的声明。请确定该声明中给出的是 subscription-manager 而不是 RHN。
# yum upgrade
Loaded plugins: product-id, security, subscription-manager
...
如果您的 Red Hat Enterprise Linux 6 目前使用 RHN Classic 注册,则必须首先按照 https://access.redhat.com/solutions/11272 所述步骤在 RHN Classic 中取消注册。
确保只安装了支持的软件包组
这个升级过程只支持以下软件包组:Minimal、Base、Web Server、DHCP Server, NFS File Server(@nfs-server)和 Print Server。请使用 yum grouplist 命令查看已安装软件包组。升级前,请删除其他软件包组,并在升级完成后重新安装它们。
升级所有软件包
使用 Subscription Management 注册您的系统后,请运行以下命令确定您系统中安装的所有软件包均为最新版本。
# yum update -y
# reboot
必要时可启用附加存储库
有些之前在 Red Hat Enterprise Linux 6 中归类为 Base 软件包组的软件包在 Red Hat Enterprise Linux  7 中不再属于该软件包组。您可能需要配置附加存储库,以便正确升级这些软件包。
请参考 https://access.redhat.com/site/solutions/912213 在 yum 存储库中启用 Extras 存储库。然后参考 https://access.redhat.com/site/solutions/9892 设置您可以在升级过程中使用的存储库。这种情况的升级命令类似如下:
# redhat-upgrade-tool --device /dev/sdb --addrepo optional=http://hostname/path/to/repo

1.1.3. 查看系统是否适合升级

Preupgrade Assistant 会检查您的 Red Hat Enterprise Linux 6 系统是否会对成功升级有负面影响。

1.1.3.1. 安装 Preupgrade Assistant

  1. 启用 preupgrade 存储库

    作为 root 用户运行以下命令,在包含 Preupgrade Assistant 的存储库中订阅您的系统。
    如果您的系统从 Red Hat Subscription Management 获取更新:
    # subscription-manager repos --enable rhel-6-server-extras-rpms
    # subscription-manager repos --enable rhel-6-server-optional-rpms
    如果您的系统从 Red Hat Satellite 获取更新:
    # rhn-channel --add --channel rhel-x86_64-server-extras-6
  2. 安装 preupgrade 软件包

    作为 root 用户运行以下命令安装所有 preupgrade 软件包。
    # yum -y install preupgrade-assistant preupgrade-assistant-ui preupgrade-assistant-contents

1.1.3.2. 运行 Preupgrade Assistant

请作为 root 用户执行以下命令运行 Preupgrade Assistant。
# preupg -y
需要几分钟时间完成。
另外,如果您已经配置了这个系统可以访问的 Preupgrade Assistant 网页用户界面,请执行以下命令,并使用您 Preupgrade Assistant 网页用户界面的正确值替换 hostnameport
# preupg -y -u http://hostname:port/submit
有关设置网页用户界面的说明,请参考 第 1.1.3.2.1 节 “配置 Preupgrade Assistant 网页用户界面”
1.1.3.2.1. 配置 Preupgrade Assistant 网页用户界面
可以使用 Preupgrade Assistant 网页用户界面,通过基于浏览器的界面上传和查看预升级结果。这对要在无外设或没有图形用户界面环境中升级的系统会很有帮助。

警告

Preupgrade Assistant 网页用户界面需要一个运行的 Apache Web Server(httpd)实例,以及对 /etc/httpd/conf.d 目录的大量更改。如果您不愿意将系统中的数据暴露给网络,或者要避免在要升级的系统中添加过多软件包,则不要按照这个步骤操作。反之,请将 /root/preupgrade/results.html 文件复制到有图形用户界面的机器中,并使用网页浏览器查看。
  1. 安装所需软件包

    # yum -y install httpd preupgrade-assistant-ui
  2. 更改上传配置

    使用默认专用预升级配置更改公共配置。
    # cd /etc/httpd/conf.d
    # mv 99-preup-httpd.conf 99-preup-httpd.conf.private
    # cp 99-preup-httpd.conf.public 99-preup-httpd.conf
    这样就可以让 Preupgrade Assistant 网页用户界面在本地系统的所有网络接口中使用,默认是通过 TCP 端口 8099 工作。
    如果您想要通过类似 preupg-ui.example.com:8099 的主机名而不是类似 192.168.99.1:8099 的 IP 地址访问 Preupgrade Assistant 网页用户界面,还可以编辑新 /etc/httpd/conf.d/99-preup-httpd.conf 中的 NameVirtualHost 变量设定主机名。
  3. 更改防火墙和 SELinux 配置

    临时将 SELinux 设定为 permissive 模式,并允许流量通过 TCP 端口 8099。
    # setenforce 0
    # iptables -I INPUT -m state --state NEW -p tcp --dport 8099 -j ACCEPT
  4. 重启网页服务器

    # service httpd restart
  5. 配置或禁用认证

    在网页浏览器中导航至 http://192.168.99.1:8099/(如果在第二步中指定主机名,则可以在这里使用主机名)。此时会提示您输入详情创建新管理用户,或者禁用认证。
现在,您可以从要升级的系统上传预升级测试结果,方法是在那个系统中运行附带 -u http://hostname:port/submit 选项的 preupg 命令。

1.1.3.3. 查看结果并修正错误

运行 preupg 后,会在标准输出中显示结果概述。详细的结果会默认以 results.html 格式保存在 /root/preupgrade 目录中。您还可以将结果上传至 Preupgrade Assistant 网页用户界面与多个 preupg 运行结果进行对比,以修正可能的迁移问题。
无论如何查看评估结果,您都需要在升级前检查每个项目中需要修改的部分。每个项目都有一个退出代码,表示该项目是否适合就地升级,如 表 1.1 “退出代码” 所述。理想情况是在所有项目都标记为 PASS 或者 FIXED 前不应升级。

表 1.1. 退出代码

退出代码
定义
PASS
一切正常,可以升级。
FAIL
升级风险极大。不可能进行就地升级。
NEEDS_ACTION
升级风险很高。升级前需要管理员进行一些操作。
NEEDS_INSPECTION
升级风险为中到低度。升级应该可以成功,但可能会造成系统无法全面正常工作。
FIXED
自动完成升级所需变更。
INFORMATIONAL
报告中有关于这个项目很有用但并不关键的信息。
NOT_APPLICABLE
为没有安装在您系统中的项目进行预升级检查。
ERROR
预升级工具检测到一些问题。请向 Red Hat Support 报告此类问题。
记录所有 Preupgrade Assistant 识别出的后升级任务,您可能需要在运行 Red Hat Upgrade Tool 后执行这些任务。
还应该在《发行注记》、《技术说明》及《迁移规划指南》中查看 Preupgrade Assistant 无法探测到的项目。

1.1.4. 升级您的系统

解决了所有 Preupgrade Assistant 报告的问题后,就可以使用 Red Hat Upgrade Tool 升级您的系统。

警告

在任意产品系统中执行此步骤前,请在非产品系统中进行测试。
  1. 安装该工具

    # yum -y install redhat-upgrade-tool
  2. 禁用存储库

    # yum -y install yum-utils
    # yum-config-manager --disable
  3. 运行该升级

    升级过程需要访问 Red Hat Enterprise Linux 7 软件包。您可以指定网络中或挂载的设备或 ISO 映像中的存储库位置,如下所示。
    # redhat-upgrade-tool --network 7.0 --instrepo repo_location
    # redhat-upgrade-tool --device device_path
    # redhat-upgrade-tool --iso iso_path
  4. 重启

    提示时,请重启该系统。
  5. 等待升级完成

    系统重启后,升级会耗时几分钟或几小时,具体要看安装的软件包数量。
  6. 执行后升级任务

    执行 Preupgrade Assistant 结果中显示的所有后升级任务。Preupgrade Assistant 为标记为 FIXED 的项目所生成的脚本会在升级完成后自动运行。
  7. 检查系统状态

    请检查系统的订阅是否已更新,这是升级过程的一部分。
    # cat /etc/redhat-release
    Red Hat Enterprise Linux Server release 7.0 (Maipo)
    # yum repolist
    Loaded plugins: product-id, subscription-manager
    repo id        repo name                                    status
    rhel-7-rpms    Red Hat Enterprise Linux 7 Server (RPMs)     4,323
    如果未正确更新您的 repolist,则请执行以下命令:
    # subscription-manager remove --all
    # subscription-manager unregister
    # subscription-manager register
    # subscription-manager attach --pool=poolID
    # subscription-manager repos --enable=repoID
  8. 升级所有软件包

    运行以下命令以确保所有软件包均为最新版本:
    # yum upgrade -y
       # reboot

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