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.x 到 Red Hat Enterprise Linux 7
产品变体 x86 架构 x86_64 架构 IBM Power IBM z Systems
Desktop Edition 不支持 不支持 N/A N/A
Workstation Edition 不支持 不支持 N/A N/A
Server Edition 不支持 支持 支持[1] 支持[2]
HPC Compute Node 不支持 支持 N/A N/A
Server running CloudForms software N/A 不支持 N/A N/A
Server running Satellite software N/A 不支持[3] N/A N/A
产品变体 所有变体
基于 UEFI 的 RHEL 安装 不支持

[1] Red Hat Enterprise Linux for Power, big endian
[2] Red Hat Enterprise Linux for IBM z Systems
[3] Red Hat Satellite 6 文档提供了把 Satellite 环境从 RHEL 6 升级到 RHEL 7 的信息以及所需的工具,但是这个升级过程并不支持使用 in-place 升级工具。相关信息请参阅 Satellite 6 Documentation

Issue

  • 如何把最新版本的 Red Hat Enterprise Linux 6 原位升级 (in-place upgrade) 到最新版本的 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 6)进行原位( in-place)升级的 RHEL 主版本。原位升级(in-place upgrade)提供了通过覆盖已存在的操作系统来把系统升级到一个新的主 RHEL 版本的方法。

请注意:这个过程不适用于升级 Amazon Web Services(AWS) 实例、Amazon Machine Image 和 Microsoft Azure。

当您的 RHEL 系统满足以下条件时,这里所介绍的 RHEL 6 升级到 RHEL 7 的过程会被完全支持:

  • 最新的 Red Hat Enterprise Linux 6: 在把系统升级到最新的 RHEL 7 版本前,需要对 RHEL 6 系统进行更新以安装最新的 RHEL 6 软件包。下面会对此进行介绍。

  • 所有 Server 版本 (除 x86 以外): RHEL 6 的所有 server 版本 (除 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.X 早于最新版本 6.X 的 RHEL 6
升级到的系统 最新的 RHEL 7.X 早于最新版本7.X 的 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 次要版本并安装所需工具。
  2. 执行系统评估
    在进行实际升级前,使用 Preupgrade Assistant 对要升级的系统进行评估,找出可能存在的升级问题。这个操作不会对系统进行任何改变,您可以重复这个操作直到解决了所有可能的问题。
  3. 进行实际的升级
    请备份您的系统,并使用 Red Hat Upgrade Tool 进行升级操作。
  4. 提供反馈意见
    请向红帽提供您在升级过程中遇到的问题信息。

步骤 1: 准备系统

  1. 获得最新的软件包
    确保您在运行最新版本的 Red Hat Enterprise Linux,并安装了最新的软件包,注册了系统并具有相关的订阅。然后运行以下命令:

    # yum update -y
    # reboot
    
  2. 启用 Extras repository
    启用包括 preupgrade-assistantpreupgrade-assistant-uipreupgrade-assistant-el6toel7preupgrade-assistant-el6toel7-dataredhat-upgrade-tool 软件包的 repository。这个 repository 的订阅可以通过 RHN Classic获得(系统连接到一个 Red Hat Satellite Server),或通过 Red Hat Subscription Management 获得(系统连接到 CDN):

    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 
  3. 安装所需的软件包
    运行以下命令安装升级所需的软件包:

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

Step 2: 执行系统评估操作

在实际升级前,使用 Preupgrade Assistant (preupg 命令) 可以对您的系统进行评估,并找出在 Red Hat Enterprise Linux 6 升级到 Red Hat Enterprise Linux 7 的过程中可能会出现的问题。这个操作不会对系统进行任何改变,它可以帮助您在进行实际的升级前,对成功升级到 Red Hat Enterprise Linux 7 的可能性有一个了解。

注意: 在进行实际升级前,您可以(并应该)多次运行 Preupgrade Assistant 以帮助提前解决可能的问题。Preupgrade Assistant 不会对您已安装的系统造成任何损害。而如何您对系统执行了原位升级操作,则无法简单恢复到以前的系统。

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 这通常意味着测试工具本身有问题。请向红帽的技术支持团队报告这类问题。

  4. 查看 README 文件
    输出目录中 (/root/preupgrade/) 还会包括一个 README 文件。您可以查看这个文件来了解与 preupg 工具相关的测试结果信息。

  5. 修正发现的问题
    解决在评估过程中 Preupgrade Assistant 发现的问题。测试结果报告中会对每个问题提供一段 Solution 信息,您可以参考这些信息解决相关的问题。然后,再次进行评估操作。当没有更多需要解决的问题时,则可以继续 Step 3 的操作对系统进行升级。

选择 2: 运行 Preupgrade Assistant 来远程查看测试结果报告

如果已安装了 preupgrade-assistant-ui 软件包,您可以使用 Preupgrade Assistant 的基于浏览器的接口。这个接口从多个系统收集评估报告,并提供了对结果数据进行过滤的功能。因为升级的过程不支持升级 GNOME desktop,您可以使用这个接口在一个远程的 GUI 桌面系统中显示 Preupgrade Assistant 的结果。

警告: 安装并使用 Preupgrade Assistant Web UI 会改变要升级系统的内容,它会在 /etc/httpd/conf.d/ 目录中增加一些文件,并会在那个系统上运行 httpd 服务以实现提供相关内容的功能。如果您不希望要升级系统上的数据暴露在网络中,或不希望在要升级的系统上增加新内容,请不要使用这个方法。一个更安全的、使用图形界面查看 Preupgrade Assistant 评估结果报告的方法是,把 result.html 文件复制到一个远程系统上,并在远程系统上使用网络浏览器打开这个文件进行查看。

如果需要使用 Preupgrade Assistant Web UI 通过网络远程查看评估结果数据,则进行以下操作:

  1. 安装 httpd 软件包
    如果要升级的 RHEL 6 系统上还没有安装 httpd 软件包,运行以下命令安装它:

    # yum -y install httpd
    
  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
    在另外一台机器上使用网络浏览器,通过 IP 地址(例如,http://192.168.99.1:8099)或主机名(例如,http://preupg-ui.example.com:8099)访问 Preupgrade Assistant Web UI 服务。

  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 的一个示例:

    Preupgrade Assistant report in Web UI

  10. 修复结果报告中的问题
    在 Web UI 中,找到并查看相关的评估报告。检查报告中的每个项,并解决相关的问题。然后,再次运行 preupg 已重新访问系统,并把报告上传到 Web UI。如果没有新问题,则可以继续 Step 3 的操作。

Step 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 工具进行注册,您需要取消相关的注册(请参阅 How do I delete System Profiles in RHN Classic?),然后使用 subscription-manager 命令进行注册。请参阅 Get Started with Red Hat Subscription Management。您也可以使用 一个自动的方法从 RHN 迁移到 RHSM

  4. 运行 redhat-upgrade-tool 下载升级到 Red Hat Enterprise Linux 7 所需的软件包,并准备软件包的安装。您可以使用多个方法指定 Red Hat Enterprise Linux 7 软件包的位置:

    • 安装软件仓库(repository)
      使用 --instrepo 选项可以指定包括 Red Hat Enterprise Linux 7 软件包的软件仓库的位置。红帽不会提供这个软件仓库,您需要自己创建它。在这里的示例中,我们使用一个 FTP 服务器,最新的 RHEL 7 DVD 中的内容被复制到这个服务器的一个 rhel7/ 目录中。您也可以使用 HTTP 或 HTTPS 系统来包括最新的 Red Hat Enterprise Linux 7 软件包。

    # redhat-upgrade-tool --network <the-latest-rhel-7-minor-version> --instrepo ftp://ftp.example.com/pub/rhel7/
    example:
    # redhat-upgrade-tool --network 7.3 --instrepo ftp://ftp.example.com/pub/rhel7/

    如果指定了一个无效的 Red Hat Enterprise Linux 7 次版本,升级过程会失败。

    • 挂载安装介质
      把安装介质挂载到系统上。例如,/dev/sdb 设备中的一个 DVD 或 USB 盘,以 root 身份运行以下命令:
    # redhat-upgrade-tool --device /dev/sdb
    

    如果没有在参数中指定一个具体设备,这个工具程序会扫描当前所有已挂载的可删除设备。

    • ISO 镜像
      如果需要使用一个 ISO 镜像进行升级,在 --iso 参数后指定到 ISO 镜像的路径。例如,最新的 RHEL 7 安装 DVD 镜像位于本地系统上的 /var/isos/rhel7dvd.iso,可以使用与以下相似的命令:
    # redhat-upgrade-tool --iso /var/isos/rhel7dvd.iso
    

    请注意: 为了使升级可以正常进行,您可以需要访问除 RHEL 7 DVD 所提供的基础软件包以外的其它一些软件仓库。特别是,RHEL 7 的 Extras 软件仓库中包括了一些 RHEL 6 基本系统中的一些软件包(主要是与软件开发相关的软件包),它们没有包括在 DVD 中。如果您的系统升级需要的软件包(用来满足软件包依赖)没有包括在 RHEL 7 Base 软件仓库中,您可以安装一个独立的 RHEL 7 系统作为一个 yum 软件仓库来提供您所需要的软件包(通过 FTP 或 HTTP)。根据使用 createrepo 或 reposync 创建一个本地软件仓库以进行更新 的介绍设置一个在升级过程中可以使用的软件仓库。然后,使用 --addrepo 参数为 Red Hat Upgrade Tool 提供额外的软件仓库。这个命令会和以下类似:

    # redhat-upgrade-tool --device /dev/sdb --addrepo optional=http://host/repo
    
  5. 重启
    您需要重启系统以完成安装过程。根据您所升级的软件包数量,重启过程可能会需要一定时间完成。如果一切顺利,系统会重启到 Red Hat Enterprise Linux 7,您可以检查系统是否可以正常工作。

  6. 执行升级后(post-upgrade)任务
    Preupgrade Assistant 为那些 FIXED 项创建的脚本会在升级后自动运行。 Preupgrade Assistant 中报告的其它升级后的任务需要系统管理员手工运行。

  7. 检查系统
    如果您的系统在使用 RHEL 6 时已被正确注册并订阅,升级过程会自动把它重新订阅到 RHEL 7。运行以下命令检查系统已被正确升级并订阅为 RHEL 7 系统:

    # 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
    # cat /etc/redhat-release
    Red Hat Enterprise Linux Server release 7.0 (Maipo)
    
  8. 如果需要,更新软件仓库列表
    如果软件仓库列表没有被正确升级到 RHEL 7,取消订阅这个系统,重新把它订阅为一个 RHEL 7 系统,添加您需要的软件仓库。所有可用的软件仓库都应该在 /etc/yum.repos.d/redhat.repo 文件中列出。

    # subscription-manager remove --all
    # subscription-manager unregister
    # subscription-manager register
    # subscription-manager attach --pool=poolID
    # subscription-manager repos --enable=repoID
    
  9. 运行 yum update
    如果升级过程成功,使用以下命令把所有新的 RHEL 7 软件包升级到最新版本:

    # yum update -y
    # reboot
    

Step 4: 提供反馈意见

请向红帽提供您在升级过程中遇到的问题信息。您可以在 Bugzilla 中开一个 bug report,或在红帽客户门户网站中开一个支持问题单,我们将帮助解决您可能遇到的问题。

您也可以提供一个 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.

Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.