2.4 从CentOS 6.5升级到CentOS 7

对于一些已安装CentOS旧版本的计算机来说,通常更希望能从旧版本直接升级到CentOS 7,因为这样能够避免数据迁移的问题。由于CentOS 7与之前的版本差异较大(事实上每一个新版本与老版本差异都较大),不一定能百分之百成功。本节将简要介绍如何从CentOS 6.5升级到CentOS 7。

2.4.1 升级风险

在个人使用的计算机或虚拟机中升级CentOS即使失败,可能也未必会有多大损失,但拥有宝贵数据的生产环境则不同。此处仅讨论生产环境中升级可能带来的影响,其主要可归结为以下几点:

(1)系统升级后,系统中的软件也会同时升级。这些软件可能会因为兼容性等原因与之前版本的数据、配置文件等产生冲突,导致不可用或部分功能丧失。

(2)由于CentOS 7属于较新的系统,其稳定性、性能尚不稳定,可能会危及业务系统的可用性。

(3)新系统使用时间尚短,可能会有许多没有被发现的Bug,这也是为何运维工程师通常会采用较低版本的原因。

从之前红帽子的更新习惯来看,新版本通常有非常巨大的改动,也必然存在较多Bug且系统也尚未得到时间的考验,因此生产环境更新可稍作等待。待更新两三次,系统中大部分Bug被发现、修复,且性能趋于稳定时再更新。

2.4.2 使用升级工具

与之前的版本不同,新版本的CentOS提供了一个升级工具preupg,用户可以使用此工具将CentOS 6.5升级到7。但这个工具并没有得到非常严格的测试,因此生产环境中不建议使用本小节中介绍的升级工具。

(1)由于升级工具并没有包含在CentOS 6.5的软件源中,因此需要添加新的软件源才能使用。使用vim在目录/etc/yum.repos.d中建立一个名为upgrade.repo的文件,内容如下:

[root@localhost ~]# cat /etc/yum.repos.d/upgrade.repo
[upgrade]
name=upgrade
baseurl=http://dev.centos.org/centos/6/upg/x86_64/
enable=1
gpgcheck=0

完成上述设置后,请确保计算机能正常连接网络,然后执行以下命令安装更新工具:

  yum -y install preupgrade-assistant-contents redhat-upgrade-tool
preupgrade-assistant

上面这条命令将安装包括测试工具在内的升级工具。

(2)在正式开始升级之前,建议使用测试工具进行测试:

  [root@localhost ~]# preupg
  Preupg tool doesn't do the actual upgrade.
  Please ensure you have backed up your system and/or data in the event of a failed
upgrade
   that would require a full re-install of the system from installation media.
  Do you want to continue? y/n   #此处需要输入y并按Enter键
  y
  Gathering logs used by preupgrade assistant:
  All installed packages : 01/11 ...finished (time 00:01s)
  All changed files      : 02/11 ...finished (time 15:29s)
  Changed config files   : 03/11 ...finished (time 00:00s)
  All users              : 04/11 ...finished (time 00:00s)
  All groups             : 05/11 ...finished (time 00:00s)
  Service statuses       : 06/11 ...finished (time 00:01s)
  ……

需要注意的是,preupg工具仅作一些常规测试,其结果仅能做参考。

(3)接下来就可以导入CentOS 7的key并开始更新了:

  [root@localhost ~]# rpm --import
http://centos.excellmedia.net/7.0.1406/os/x86_64/RPM-GPG-KEY-CentOS-7  #此命令用
于导入CentOS 7的key
  [root@localhost ~]# redhat-upgrade-tool-cli --force --network 7
--instrepo=http://mirror.centos.org/centos/7/os/x86_64
  setting up repos...
  .treeinfo                                           | 1.1 kB     00:00
  getting boot images...
  vmlinuz-redhat-upgrade-tool                            | 4.7 MB     01:38
  initramfs-redhat-upgrade-tool.img                       |  32 MB    10.28
  ……
  (1467/1468): zlib-devel-1.2.7-13.el7.x86_64.rpm          |  49 kB     00:00
  (1468/1468): zziplib-0.13.62-5.el7.x86_64.rpm            |  81 kB     00:00
  rpm transaction 100%
[=========================================================]
  rpm install 100%
[=============================================================]
  setting up repos...
  No upgrade available for the following repos: base extras updates
  getting boot images...
  setting up update...
  testing upgrade transaction
  setting up system for upgrade
  Finished. Reboot to start upgrade.

先使用rpm导入Key,然后使用redhat-upgrade-tool-cli工具下载更新中需要使用的软件包。从以上执行结果可以看出共计下载了1468个软件包(视系统中安装的软件不同,需要的软件包也不同),由于此步需要从国外服务器中下载软件包,因此可能需要花费大量时间。

(4)完成上述步骤之后,重新启动系统时系统就会自动更新至CentOS 7,如图2.37所示。

图2.37 升级到CentOS 7

从图中可以看到,系统已经开始更新系统中的软件,视计算机配置不同这个过程将持续10~20分钟。在升级过程中可能还会出现一些错误及部分软件升级失败的情况,通常系统会自动处理这些情况,以保证升级过程顺利完成。