Warning message

This translation is outdated. For the most up-to-date information, please refer to the English version.

如何从 Red Hat Enterprise Linux 6 升级到 Red Hat Enterprise Linux 7?

Solution Verified - Updated -

Environment

  • Red Hat Enterprise Linux 6.10 到 Red Hat Enterprise Linux 7.9
产品变体 x86 架构 x86_64 架构 IBM Power IBM z 系统
桌面版 不支持 不支持 不适用 不适用
工作站版 不支持 不支持 不适用 不适用
服务器版 不支持 支持 支持[1] 支持[2]
HPC Compute 节点 不支持 支持 不适用 不适用
服务器运行 CloudForms 软件 不适用 不支持 不适用 不适用
服务器运行 Satellite 软件 不适用 不支持[3] 不适用 不适用

[1] Red Hat Enterprise Linux for Power,big endian
[2] Red Hat Enterprise Linux for IBM z Systems,使用 带有 Linux Disk Layout(LDL)的直接访问存储设备(DASD)除外
[3] Red Hat Satellite 6 文档将提供将 Satellite 环境从 RHEL 6 迁移到 RHEL 7 所需的信息和工具,但原位(in-place)升级工具不是此流程支持的方法。请参考 Satellite 6 安装指南 中的第 6.1 点。

注: SAP 系统会不同。
* 如何使用 SAP HANA 从 Red Hat Enterprise Linux 6 升级到 Red Hat Enterprise Linux 7

Issue

  • 如何从 Red Hat Enterprise Linux 6 原位升级到 Red Hat Enterprise Linux 7?
  • 如何使用 Preupgrade Assistant 和 Red Hat Upgrade Tool 将 Red Hat Enterprise Linux 6 升级到 Red Hat Enterprise Linux 7?

Resolution

概述

Red Hat Enterprise Linux 7(RHEL 7)是 RHEL 的第一个允许从以前的 RHEL 主发行版本(RHEL 6)进行原位升级的主版本。原位(in-place)升级提供了一种通过替换现有操作系统将系统升级到新的 RHEL 主版本的方法。

注:此步骤不适用于升级 Amazon Web Services(AWS)实例、Amazon Machine Image 或 Microsoft Azure。  您可以使用 yum update 命令从一个次版本进行升级(例如 从 RHEL 6.9 到 RHEL 6.10, 或从 RHEL 7.3 更新至 RHEL 7.4)。

注: 在 RHEL 7 中,NetworkManager 被默认安装。如果从 RHEL 6 进行原位升级,则不会安装和配置 NetworkManager,除非在升级前配置并运行该服务。

注:此程序严格限制在下表中描述的情况。最重要的是,只有在系统中的软件包来自表中提到的软件仓库时,升级才能成功。这不包括任何有第三方软件包的系统,尤其是那些引导时需要第三方驱动程序的系统。

如果 RHEL 系统满足以下条件,则可以完全支持这个 RHEL 6 到 RHEL 7 的升级步骤:

  • Red Hat Enterprise Linux 6.10: 在升级到 RHEL 7 之前,从 RHEL 6 开始并更新系统以安装最新的 RHEL 6.10 软件包。具体操作过程如下。

  • 所有服务器版本(除了 x86):可使用此步骤升级 RHEL 6 的所有服务器版本(除了 x86)。不支持对 RHEL Workstation 和 Desktop 系统进行升级。支持 POWER 构架的升级。请参阅上表。不支持从 32 位构架升级。

  • 有限软件包组: 升级过程只处理以下软件包组和软件包: Minimal (@minimal), Base (@base), Web Server (@web-server), DHCP Server, File Server (@nfs-server), CIFS File Server 和 Print Server (@print-server)。虽然不支持升级其它软件包和组,但在某些情况下,可以从 RHEL 6 系统卸载软件包,并在升级的 RHEL 7 系统中重新安装软件包,而不会出现问题。请参考下表。

将 RHEL 6 升级到 RHEL 7 支持的用例:

支持 不支持
升级源 RHEL 6.10 低于 6.10 的 RHEL 6 版本
目标 RHEL 版本 RHEL 7.9
如需更多信息,请参阅:
支持的 Red Hat Enterprise Linux 原位升级路径
低于 7.9 的 RHEL 7 版本
**文件系统 ** 相同的文件系统升级
例如: ext3 到 ext3, ext4 到 ext4, xfs 到 xfs
不同文件系统升级
例如: ext4 到 xfs
GNOME, KDE 所有 GNOME, KDE 安装
软件包/组 Minimal (@minimal)
Base (@base)
Web Server (@web-server)
DHCP Server
File Server (@nfs-server)
CIFS File Server
Print Server
所有其他
Virtualization KVM, VMware Microsoft Hyper-V
Red Hat Software Collections 使用测试过的进程 所有其他进程
High Availability 所有

升级步骤包括以下基本步骤:

  1. 准备系统
    将系统更新至 RHEL 6 的最新次要版本 - RHEL 6.10 - 并安装所需工具。
  2. 执行系统评估
    在执行实际升级前,使用 Preupgrade Assistant 评估系统以找出可能的升级问题。它不会对系统进行任何更改,且可以重复这一步,直到您处理了所有问题为止。
  3. 执行升级
    确定您的系统已经备份,并使用 Red Hat Upgrade Tool 执行升级。
  4. 提供反馈
    在您遇到任何问题时可以向红帽提供反馈信息。

第 1 步:准备系统

  1. 获取最新的软件包
    确认使用最新的 Red Hat Enterprise Linux 6 次版本,并安装了最新的软件包,且注册并订阅了系统。然后键入:

    # yum update -y
    # reboot
    
  2. 启用 Extras 软件仓库
    启用包括 preupgrade-assistantpreupgrade-assistant-uipreupgrade-assistant-el6toel7preupgrade-assistant-el6toel7-dataredhat-upgrade-tool 软件包的软件仓库。当使用 Red Hat Satellite Server 时,可以通过 RHN Classic 注册软件仓库;当使用 CDN 时,通过 Red Hat Subscription Management 注册软件仓库:

    RHN Classic(Satellite)

    # rhn-channel --add --channel rhel-x86_64-server-extras-6
    # rhn-channel --add --channel rhel-x86_64-server-optional-6
    

    Red Hat Subscription Management

    # subscription-manager repos --enable rhel-6-server-extras-rpms
    # subscription-manager repos --enable rhel-6-server-optional-rpms
    

    对于 POWER 系统,请执行以下命令:

    # subscription-manager repos --enable rhel-6-for-power-extras-rpms
    # subscription-manager repos --enable rhel-6-for-power-optional-rpms
    
  3. 安装所需软件包
    要安装升级所需的软件包,请键入:

    # yum -y install preupgrade-assistant preupgrade-assistant-ui preupgrade-assistant-el6toel7 redhat-upgrade-tool
    

第 2 步:执行系统评估

Preupgrade Assistant( preupg 命令)可让您在系统进行任何更改之前,评估系统是否会在 Red Hat Enterprise Linux 6 升级到 Red Hat Enterprise Linux 7 的过程中会遇到问题。这有助于您在实际升级过程开始前,确定可以成功升级到 Red Hat Enterprise Linux 7 的机率。

:在实际进行升级前, 您可以(也应该)多次运行 Preupgrade Assistant 来处理可能会出现的问题。Preupgrade Assistant 不会损害您安装的系统。当对系统进行原位升级后,可以使用 Red Hat Upgrade Tool 集成的回滚功能,或其他适当的备份和恢复解决方案(例如,使用 Relax-and-Recover(ReaR)程序)把系统恢复到以前的状态。如需更多信息,请参阅 ReaR 文档以及 Relax and Recover(ReaR)是什么以及如何使用它进行灾难恢复?

Preupgrade Assistant 进行以下操作:

  • 评估系统以了解可能的原位升级限制,如删除软件包、不兼容的启用功能、名称更改或者在某些配置文件的兼容性问题。

  • 提供一个包含评估结果的报告。

  • 提供一些升级后的脚本以便解决原位升级后的复杂问题。

  • 除了保存相关信息或日志外,您的系统不会有其他变化。它不会修改评估的系统。

因为 Preupgrade Assistant 基于一个模块系统,所以可以相对方便地添加新的检查和升级动作。因此,您可以随时使用经过改进的工具。

安装 Preupgrade Assistant 软件包后,您可以选择在本地查看系统评估结果,或者通过网络将报告提交到可能会从多个系统中收集结果的远程服务器。下面将描述这两个选项。

选项 1:运行 Preupgrade Assistant 在本地查看报告

  1. 运行 preupg 命令对系统执行评估

    # preupg    With no options, produces result.html and tar.gz results files
    The Preupgrade Assistant is a diagnostics tool 
    and does not perform the actual upgrade.
    Do you want to continue? [Y/n]
    y
    Gathering logs used by the Preupgrade Assistant:
    All installed packages : 01/10 ...finished (time 00:01s)
       ...
    |Removed rpms                                                                       |needs_inspection  |
    |Content for enabling and disabling services based on RHEL 6 system                 |needs_inspection  |
    |Python 2.7.5                                                                       |needs_inspection  |
    |Check for usage of dangerous range of UID/GIDs                                     |needs_inspection  |
    |Packages not signed by Red Hat                                                     |needs_action      |
    --------------------------------------------------------------------------------------------------------
    The tarball with results is stored in '/root/preupgrade-results/preupg_results-170629152543.tar.gz' .
    The latest assessment is stored in the '/root/preupgrade' directory.
    Summary information:
    We have found some potential risks.
    Read the full report file '/root/preupgrade/result.html' for more details.
    Please ensure you have backed up your system and/or data 
    before doing a system upgrade to prevent loss of data in 
    case the upgrade fails and full re-install of the system 
    from installation media is needed.
    Upload results to UI by the command:
    e.g. preupg -u http://example.com:8099/submit/ -r /root/preupgrade-results/preupg_results-170629152543.tar.gz .
    
  2. 查看评估结果
    当 Preupgrade Assistant 扫描您的系统时,每个执行的测试以及其结果都会被输出到命令行标准输出中。该工具还生成包含详细信息的评估报告文件。

    • 命令行:每个测试的结果关键字以及评估概述会显示在屏幕中。查看结果输出以了解评估过程。您可以只查看结果关键字。如果需要更详细的信息,可以进一步查看 HTML 格式的评估报告。

    • 评测报告文件: /root/preupgrade/result.html 文件可以使用任何网页浏览器打开。例如,使用 Firefox 浏览器查看该文件的示例:
      # firefox file:///root/preupgrade/result.html

  3. 查看每个测试结果
    在评测期间进行的每个测试都会显示其结果关键字。以下列出了所有可能的测试结果关键字及其说明:

    结果关键字 解释
    PASS 一切正常。当所有退出代码都为 PASS 时,您应该可以进行正常升级。
    FAIL 升级风险极大。无法进行原位升级。
    NEEDS_ACTION 升级风险较高。在运行 Red Hat Upgrade Tool 前,管理员需要进行一些操作。
    NEEDS_INSPECTION 低度或中度风险。这个退出码并不意味着升级一定会失败,但可能会导致系统无法完全正常工作。系统的某些部分需要检查,需要时管理员要对其进行修复。
    FIXED 升级所需的更改已被自动修复。您不需要再进一步审核它们。
    INFORMATIONAL 有用的信息(但并不关键)。
    NOT_APPLICABLE 您需要测试的软件包不在您的系统中。
    ERROR 这通常表示工具本身有错误。向红帽支持报告此类问题。
    notchecked 相关的模块还没有被检查。请参阅 已知问题 以了解更多详细信息。

  4. 查看 README 文件
    输出目录中还包括一个 README 文件(/root/preupgrade/)。如需了解更多与 preupg 工具相关的输出目录结构、退出代码和风险解释信息,请参阅该文件。

  5. 解决发现的问题
    解决在评估过程中 Preupgrade Assistant 发现的问题。每个问题都会有一个 Solution 信息,这可帮助您解决问题。然后,再次运行评估。如果没有新的问题需要解决,请继续第三步以升级系统。

选项 2:运行 Preupgrade Assistant 以远程查看报告

如果安装了 preupgrade-assistant-ui 软件包,您可以与基于浏览器的 Preupgrade Assistant 的界面进行交互,该界面可从多个系统中收集评估报告并可以对结果进行过滤。因为升级步骤不支持对 GNOME 桌面的升级,这个过程为您提供了在远程 GUI 桌面上显示 Preupgrade Assistant 的结果。

警告:安装并使用 Preupgrade Assistant 网页用户界面会修改升级系统的内容,它把文件添加到 /etc/httpd/conf.d/ 目录,并在该系统中运行 httpd 服务来提供内容。如果您担心将系统中的数据公开到网络中,或者不希望在要升级的系统中添加内容,则不要使用这个步骤。以图形方式查看 Preupgrade Assistant 评估输出的一个更安全的方法是,将 result.html 文件复制到一个远程系统,并使用网页浏览器打开该文件。

如果您想要使用 Preupgrade Assistant Web UI 通过网络查看评测结果,请执行以下步骤:

  1. 安装 httpd 软件包
    如果您还没有在 RHEL 6 系统中安装它,请输入:

    # yum -y install httpd preupgrade-assistant-ui
    
  2. 配置 conf.d 文件
    默认情况下,Preupgrade Assistant Web UI 仅适用于本地系统(127.0.0.1)。要使本地系统上的所有网络接口都可以使用它(默认为 TCP 端口 8099),请输入:

    # cd /etc/httpd/conf.d
    # cp 99-preup-httpd.conf.public 99-preup-httpd.conf
    
  3. 编辑新的 .conf 文件
    在上一步中创建的 99-preup-httpd.conf 文件将使用主机上的 IP 地址提供 Preupgrade Assistant UI。如果要使用主机名而不是 IP 地址访问这个服务,可以在此文件中更改 "NameVirtualHost" 行。例如,如果有一个 DNS CNAME 记录将 preupg-ui.example.com 指向要升级的系统,可以使用 NameVirtualHost preupg-ui.example.com:8099 访问该服务。

  4. 打开防火墙和 SELinux
    如果您有一个防火墙并在 enforcing 模式下运行 SELinux,您可以使用以下命令允许访问 Preupgrade Assistant Web UI 服务所需的端口:

    # setsebool httpd_run_preupgrade on
    # iptables -I INPUT -m state --state NEW -p tcp --dport 8099 -j ACCEPT
    
  5. 重启 httpd 服务以载入新配置

    # service httpd restart
    
  6. 通过网页浏览器访问 Preupgrade Assistant Web UI
    在另一个系统上使用网页浏览器访问 Preupgrade Assistant Web UI 服务。使用 IP 地址(如 http://192.168.99.1:8099)或主机名(如 http://preupg-ui.example.com:8099)。

  7. 添加 Web UI 身份验证信息
    在第一次访问 Preupgrade Assistant Web UI 时,您会被要求添加一个用户帐户,该帐户可用于访问该服务,或禁用验证功能。

    • 使用身份验证
      使用现有用户帐户或创建一个新用户帐户。如果选择了 "Submit" 来创建新用户,它会自动启用身份验证功能(如果这个功能以前被禁用)。之后,如果要编辑用户,进入 UI 中的 User Management 标签页。
    • 不使用身份验证功能
      如果您不需要进行身份验证,点 "Disable Authentication" 并开始使用图形界面。
  8. 运行 preupg 命令
    返回要升级的系统。要执行系统评估并自动将结果提交给 Preupgrade Assistant Web UI 服务器,请输入:

    # preupg -u http://localhost:8099/submit/
    The Preupgrade Assistant is a diagnostics tool 
    and does not perform the actual upgrade.
    Do you want to continue? [Y/n]
    y
    Gathering logs used by the Preupgrade Assistant:
    All installed packages : 01/10 ...finished ...
      ...
    Report submitted successfully.You can inspect it at http://localhost:8099/1/detail/
    
  9. 从 Web UI 查看评估报告
    返回到远程系统的网页浏览器,再次访问 Web UI 或重新载入该页面。Preupgrade Assistant Web UI 示例:

    Web UI 中的 Preupgrade Assistant 报告

  10. 修复报告的问题
    在 Web UI 中,找到并扩展正确的评估报告。检查报告中的每个项目,并执行必要的更改来修复报告的问题。然后运行 preupg 来再次评估系统,将报告上传到 Web UI。如果没有新问题需要解决,则继续执行第三步。

第 3 步: 执行升级

完成 Preupgrade Assistant 评估并解决了所有问题后,下一步是使用 Red Hat Upgrade Tool 执行实际系统升级。

重要: 运行 Red Hat Upgrade Tool 的前提条件是运行了 Preupgrade Assistant 工具。如果您在没有首先运行 Preupgrade Assistant 的情况下运行 Red Hat Upgrade Tool,它会退出,并显示以下错误信息:preupgrade-assistant has not been run。使用 --force 选项可以覆盖这个错误,但这样进行的系统升级不被支持。

  1. 备份系统
    在任何重要的系统中使用 Red Hat Upgrade Tool 进行升级前,请确定备份所有数据以避免潜在的数据丢失。

  2. 首先进行测试
    不要试图对生产环境系统进行升级。请首先克隆您的系统,并在一个安全的环境中测试升级过程。

  3. 切换到 Subscription Management
    Red Hat Enterprise Linux 7 需要 Red Hat Subscription Management(RHSM),而不是使用 RHN Classic 工具。如果您的 Red Hat Enterprise Linux 6 系统使用 RHN Classic 工具注册,您需要先取消注册(请参阅 如何在 RHN Classic 中删除系统档案?),然后再使用 subscription-manager 命令进行注册。如需更多信息,请参阅Red Hat Subscription Management 入门。您还可以使用自动方法从 RHN 迁移到 RHSM

  4. 对已知问题应用解决方案
    如果系统有 多个网络接口:

  5. 运行 redhat-upgrade-tool 下载升级到 Red Hat Enterprise Linux 7 所需的软件包,并准备软件包安装。 您有几个选项来指示 Red Hat Enterprise Linux 7 软件包的位置:

    a.安装软件仓库
    要指示含有 Red Hat Enterprise Linux 7 软件包的仓库位置,使用 --instrepo 选项。您需要自己创建相关的软件仓库,红帽不会提供。在这个示例中,使用 FTP 服务器,将 RHEL 7.9 DVD 的内容复制到 rhel79/ 目录中。您还可以使用包含 RHEL 7.9 软件包的 HTTP 或 HTTPS 站点。

    # redhat-upgrade-tool --network 7.9 --instrepo <ftp-or-http-url>
    

    示例:

    # redhat-upgrade-tool --network 7.9 --instrepo ftp://ftp.example.com/pub/rhel79/
    

    如果指定了无效的 Red Hat Enterprise Linux 7 次版本,则在尝试连接不存在的软件仓库时会导致升级失败。

    b.挂载安装介质
    要通过挂载在您的系统中的安装介质(例如,使用一个 /dev/sdb 设备中的 DVD 或者 USB 驱动器)进行升级系统,以 root 身份运行以下命令:

    # redhat-upgrade-tool --device /dev/sdb
    

    如果使用这个选项但没有设备,该工具会扫描所有目前挂载的可移动设备。

    c.ISO 镜像
    要使用 ISO 镜像升级系统,在 --iso 选项后提供到该 ISO 镜像的路径。例如,如果 RHEL 7.9 安装 DVD 位于本地系统的 /var/isos/rhel7dvd.iso,该命令会类似如下:

    # redhat-upgrade-tool --iso /var/isos/rhel7dvd.iso
    

    在 a、b 或 c 选项中,您都可以配置其他额外的软件仓库:您自己的自定义软件仓库,或红帽提供的附加软件仓库。例如: RHEL 6 Base 系统中的特定软件包在 RHEL 7 中由 Extras 软件仓库提供,它们没有包括在 RHEL 7 DVD 中。

    如果您知道系统所需的软件包没有包括在 RHEL 7 Base 软件仓库中时,您可以安装一个单独的 RHEL 7 系统来作为通过 FTP 或 HTTP 提供所需软件包的 yum 软件仓库使用。

    要设置升级过程中可以使用的软件仓库,请参阅如何创建本地软件仓库用于更新。然后,在 redhat-upgrade-tool 命令中使用 --addrepo=REPOID=URL 选项。

    :您可以使用 --cleanup-post 选项自动删除在 RHEL 7 中没以相应替代的、由红帽签名的 RHEL 6 软件包。默认情况下,Red Hat Upgrade Tool 不会处理这些软件包。如果不使用 --cleanup-post 选项,则必须在原位升级后删除所有剩余的 RHEL 6 软件包,以确保升级的系统被完全支持。如需更多信息,请参阅是否可以安装来自不同 RHEL 版本的软件包?

  6. 重启
    要完成安装操作,需要重启该系统。根据要升级的软件包数量,重新引导可能需要一些时间来完成。如果一切都如预期,系统将重启至 Red Hat Enterprise Linux 7,您可以开始检查该系统是否正常工作。

  7. 执行升级后的任务
    在升级后,Preupgrade Assistant 为带有 FIXED 的项所重建的脚本会自动运行。在升级后,管理员应该手动运行的任务都在 Preupgrade Assistant 报告中指定。

  8. 验证系统版本
    要确定该系统已升级至 RHEL 7 系统,请输入:

    # cat /etc/redhat-release
    Red Hat Enterprise Linux Server release 7.9 (Maipo)
    
  9. 检查正确的订阅
    如果您的系统已正确注册并订阅了 RHEL 6,升级过程应该自动为 RHEL 7 重新订阅该系统。要验证系统是否已正确订阅,请输入:

    # yum repolist
    Loaded plugins: product-id, subscription-manager
    repo id                             repo name                                  status
    rhel-7-server-rpms/7Server/x86_64   Red Hat Enterprise Linux 7 Server (RPMs)   23,676
    

    如果以上列出的软件仓库列表不包含 RHEL 7 软件仓库,先取消订阅系统,然后重新把系统订阅为 RHEL 7 系统,并添加需要的软件仓库。

    # subscription-manager remove --all
    # subscription-manager unregister
    # subscription-manager register
    # subscription-manager attach --pool=poolID
    # subscription-manager repos --enable=repoID
    
  10. 将 GRUB Legacy 升级到 GRUB 2(仅用于 x86_64 构架)
    Red Hat Enterprise Linux 7 不再包含 GRUB Legacy。相反,它只包括 GRUB 2。然而,由于配置已被完全修整,升级工具无法自动将 GRUB Legacy 配置升级到 GRUB 2。
    因为 GRUB Legacy 在 Red Hat Enterprise Linux 7 中不被支持,所以您需要手工将其升级到 GRUB 2。 系统管理员指南中包括了将 GRUB Legacy 升级到 GRUB 2 的信息。

  11. 运行 yum update
    如果升级显示成功,将所有新的 RHEL 7 软件包升级到其最新版本。

    # yum update -y
    # reboot
    

第 4 步:升级后应注意的问题。

系统升级至 RHEl 7 后,请注意以下问题。
使用 redhat-upgrade-tool 将 RHEL 6 升级到 RHEL 7 后,应该注意什么问题?

第 5 步:提供反馈

向红帽提供在升级过程中遇到的任何问题相关的反馈信息。我们非常感谢您提交 bug 报告 或创建了支持问题单,以便我们能处理您可能遇到的任何问题。

您可以提交您的 debug 日志,它位于升级系统的 /var/log/upgrade.log 文件中。

常规更新

已知问题

相关信息

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.