https://access.redhat.com/zh_CN/solutions/3293791
SOLUTION 已验证 - 已更新 2019年一月2日09:19 -
中文 (中国)
产品变体 | 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,当使用 Direct Access Storage Device (DASD) with Linux Disk Layout (LDL) 时除外
[3] Red Hat Satellite 6 文档提供了把 Satellite 环境从 RHEL 6 升级到 RHEL 7 的信息以及所需的工具,但是这个升级过程并不支持使用 in-place 升级工具。相关信息请参阅 Satellite 6 Documentation 。
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 | 无 | 所有 |
升级过程包括以下基本步骤:
获得最新的软件包
确保您在运行最新版本的 Red Hat Enterprise Linux,并安装了最新的软件包,注册了系统并具有相关的订阅。然后运行以下命令:
# yum update -y
# reboot
启用 Extras repository
启用包括 preupgrade-assistant、 preupgrade-assistant-ui、preupgrade-assistant-el6toel7、preupgrade-assistant-el6toel7-data 和 redhat-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
安装所需的软件包
运行以下命令安装升级所需的软件包:
# yum -y install preupgrade-assistant preupgrade-assistant-ui preupgrade-assistant-el6toel7 redhat-upgrade-tool
在实际升级前,使用 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 软件包后,您可以选择在被评估系统的本地查看系统评估的结果信息,或通过网络把多个系统的评估结果发送到远程的服务器上。下面对这两种选择进行介绍。
运行 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 .
查看评估结果
在 Preupgrade Assistant 对系统进行扫描时,每个执行的测试都会在命令行的标准输出中显示相应的信息,以及测试的结果。另外,这个工具还会产生一个详细的评估报告。
命令行: 每个测试的结果关键字和评估的概述信息会在屏幕中显示。查看这些信息可以对评估结果有一个大概的了解。您也可以只查看结果关键字,如需更详细的信息,则可以查看 HTML 格式的评估报告。
评估报告文件: 用户可以使用任何网络浏览器打开 /root/preupgrade/result.html 文件。下面是使用 Firefox 浏览器打开这个文件的命令示例:# firefox file:///root/preupgrade/result.html
检查每个测试结果
在评估过程中执行的每个测试都会有自己的关键字。下表对所有可能的测试结果关键字进行了介绍:
结果关键字 | 解释 |
---|---|
PASS | 一切正常。如果所有的结果关键字都是 PASS,则可以进行升级操作。 |
FAIL | 进行升级操作有极大风险。无法进行原位升级。 |
NEEDS_ACTION | 升级会有很大风险。在运行 Red Hat Upgrade Tool 进行升级前,需要进行一些额外的操作。 |
NEEDS_INSPECTION | 升级有中度或低度风险。这个关键字并不意味着升级将会失败,但升级后的系统可能无法完全正常工作。系统管理员可能需要对系统的一些部分进行检查,如果需要,还需要对相关部分进行修改。 |
FIXED | 升级所需要的系统修改已自动完成,用户不再需要对此进行额外检查。 |
INFORMATIONAL | 有用但并不是非常关键的信息。 |
NOT_APPLICABLE | 要进行测试的软件包没有包括在测试的系统中。 |
ERROR | 这通常意味着测试工具本身有问题。请向红帽的技术支持团队报告这类问题。 |
查看 README 文件
输出目录中 (/root/preupgrade/) 还会包括一个 README 文件。您可以查看这个文件来了解与 preupg 工具相关的测试结果信息。
修正发现的问题
解决在评估过程中 Preupgrade Assistant 发现的问题。测试结果报告中会对每个问题提供一段 Solution 信息,您可以参考这些信息解决相关的问题。然后,再次进行评估操作。当没有更多需要解决的问题时,则可以继续 Step 3 的操作对系统进行升级。
如果已安装了 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 通过网络远程查看评估结果数据,则进行以下操作:
安装 httpd 软件包
如果要升级的 RHEL 6 系统上还没有安装 httpd 软件包,运行以下命令安装它:
# yum -y install httpd
配置 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
编辑新的 .conf 文件
前一步会创建一个名为 99-preup-httpd.conf 的文件,它将允许通过主机上的一个 IP 地址访问 Preupgrade Assistant UI。如果您希望使用主机名而不是 IP 地址进行访问,您可以修改这个文件中的 "NameVirtualHost" 行中的内容。例如,您所使用的 DNS CNAME 会把 preupg-ui.example.com 指向要升级的系统,则可以使用 NameVirtualHost preupg-ui.example.com:8099
来通过主机名访问这个服务。
修改防火墙和 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
重启 httpd 访问加载新的配置
# service httpd restart
使用一个网络浏览器访问 Preupgrade Assistant Web UI
在另外一台机器上使用网络浏览器,通过 IP 地址(例如,http://192.168.99.1:8099)或主机名(例如,http://preupg-ui.example.com:8099)访问 Preupgrade Assistant Web UI 服务。
添加 Web UI 身份验证信息
在第一次访问 Preupgrade Assistant Web UI 时,需要添加一个用户账户,使用这个用户来对服务进行访问;或禁用身份验证功能。
运行 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/
通过 Web UI 查看评估结果
返回到远程系统中的网络浏览器并再次访问 Web UI,或重新加载这个网页。以下是 Preupgrade Assistant Web UI 的一个示例:
修复结果报告中的问题
在 Web UI 中,找到并查看相关的评估报告。检查报告中的每个项,并解决相关的问题。然后,再次运行 preupg
已重新访问系统,并把报告上传到 Web UI。如果没有新问题,则可以继续 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
选项来强制进行升级,但使用这个选项进行升级的系统将不被支持。
备份系统
在使用 Red Hat Upgrade Tool 对系统进行升级前,请备份所有数据以避免出现可能的数据丢失问题。这一点非常重要。
先进行测试
请不要马上对生产环境中的系统进行升级。先对系统进行一个克隆并在克隆的环境中对升级过程进行测试。
使用 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。
运行 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 --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 次版本,升级过程会失败。
# redhat-upgrade-tool --device /dev/sdb
如果没有在参数中指定一个具体设备,这个工具程序会扫描当前所有已挂载的可删除设备。
--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
重启
您需要重启系统以完成安装过程。根据您所升级的软件包数量,重启过程可能会需要一定时间完成。如果一切顺利,系统会重启到 Red Hat Enterprise Linux 7,您可以检查系统是否可以正常工作。
执行升级后(post-upgrade)任务
Preupgrade Assistant 为那些 FIXED
项创建的脚本会在升级后自动运行。 Preupgrade Assistant 中报告的其它升级后的任务需要系统管理员手工运行。
检查系统
如果您的系统在使用 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)
如果需要,更新软件仓库列表
如果软件仓库列表没有被正确升级到 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
运行 yum update
如果升级过程成功,使用以下命令把所有新的 RHEL 7 软件包升级到最新版本:
# yum update -y
# reboot
请向红帽提供您在升级过程中遇到的问题信息。您可以在 Bugzilla 中开一个 bug report,或在红帽客户门户网站中开一个支持问题单,我们将帮助解决您可能遇到的问题。
您也可以提供一个 debug 日志,它位于升级系统的 /var/log/upgrade.log 文件中。
现在,原位升级(in-place upgrade)中增加了一个新的回滚功能。请参阅 RHEL 6.10 发行注记 或 Red Hat Upgrade Tool - rollbacks and cleanup after upgrading RHEL 6 to RHEL 7 KBase 中的相关内容。
启用 FIPS 模式时将无法使用原位升级的方法把 RHEL 6 系统升级到 RHEL 7.6
当使用 LDL 时,在 IBM Z 系统上进行原位升级将会失败并导致数据丢失