CentOS 6 升级 CentOS 7
升级限制
- SELinux 必须是关闭状态
- 必须是 CentOS 6 x86_64
- 根分区剩余空间不小于5GB,/boot分区剩余空间不小于120MB
- 必须能连外网
升级风险
- 升级需要1-3小时不等,甚至更长时间,视硬盘的速度和系统已安装的软件包数量
- 升级可能会导致 sshd 起不来,因此远程升级有较大的风险
- 升级可能会导致网卡配不上IP,因此远程升级有较大的风险
- 升级后有部分软件不能使用(如 grep、yum等),需要手动处理
- 升级后需要手动解决依赖关系,此步骤通常需要1-2小时甚至更久,视系统安装的软件包数量
- 此升级不可逆,如升级失败系统将无法正常启动。物理机升级有较大风险,升级前务必做好数据备份。虚拟机升级前务必做好快照
升级路径
CentOS 6.x --> CentOS 7.2 --> CentOS 7 最新版
升级步骤
升级前准备(非常重要)
解决升级后
grep
、yum
命令不能使用,网卡无法配置IP等问题- 此步骤非常重要,如果不做或做错,升级后将无法远程连接到目标机器
cat > /etc/ld.so.conf.d/usr-local-lib.conf << EOF /usr/local/lib /usr/local/lib64 EOF cp /usr/lib64/libsas12.so.2.0.23 /usr/local/lib64/ cp /lib64/libpcre.so.0.0.1 /usr/local/lib64/ ldconfig
libsas12.so.2.0.23
、libpcre.so.0.0.1
这两个文件在不同的版本中可能版本号会不一样操作完成后必须检查
/usr/local/lib64/
下是否有这两个文件和其软连接[root@localhost ~]# ll /usr/local/lib64/ total 284 lrwxrwxrwx. 1 root root 16 Apr 20 22:49 libpcre.so.0 -> libpcre.so.0.0.1 -rwxr-xr-x. 1 root root 183080 Apr 20 22:48 libpcre.so.0.0.1 lrwxrwxrwx. 1 root root 18 Apr 20 22:49 libsasl2.so.2 -> libsasl2.so.2.0.23 -rwxr-xr-x. 1 root root 106160 Apr 20 22:49 libsasl2.so.2.0.23
- 如无以上信息,不可往下执行
CentOS 6 升级到 CentOS 7.2
配置 yum 源
cat > /etc/yum.repos.d/upgrade.repo << EOF [upgrade] name=upgrade baseurl=https://buildlogs.centos.org/centos/6/upg/x86_64/ enabled=1 gpgcheck=0 EOF
安装旧版 openscap
yum remove -y openscap yum install -y https://buildlogs.centos.org/centos/6/upg/x86_64/Packages/openscap-1.0.8-1.0.1.el6.centos.x86_64.rpm
需确认
openscap
的版本必须是1.0.8
,而不能是1.2.13
或其他版本,否则执行升级步骤会报错安装升级工具
yum install -y redhat-upgrade-tool preupgrade-assistant preupgrade-assistant-contents
升级前检查
preupg -s CentOS6_7
- 如检查成功,会生成检查报告,此报告需要细读一遍
- 如检查失败,根据提示解决问题或放弃升级
- 上传CentOS7.2 DVD ISO 镜像包到系统任意路径,必须是DVD包,大小为4G多
执行更新
centos-upgrade-tool-cli --iso=/PATH/TO/CentOS7.2-DVD-ISO
- 如提示
Finished. Reboot to start upgrade.
,则输入reboot
执行后续升级,此步骤需要较长时间 - 如报错,根据提示解决问题或放弃升级
- 如提示
升级后完善
升级
grep
软件包因为 grep 没有被升级,需要手工将
grep
升级到CentOS 7
的版本yum downgrade -y grep
卸载
el6
相关软件包# 查找 el6 的包 rpm -qa | grep el6 # 卸载 yum remove xxx
el6 的包是升级遗留的一些软件包,不建议保留,保留这些软件包可能会导致后续升级到最新 CentOS 7 造成依赖问题,因此需要将其卸载或升级为 CentOS 7 的版本。
- 此处可能需要解决很多依赖问题。而且可能有些包是被系统重要组件依赖的,卸载时要注意看清楚,建议少量多次分批卸载
- 最后剩余卸不掉的包,尝试将其升级为
CentOS 7
的版本
删除无效开机启动项
因 CentOS 7 使用 systemd 作为系统初始化程序,升级后系统还残留了一些无效的启动项(服务脚本软连接,位于 /etc/rc.d/rc{0..6}.d/ 目录下),因此删除这些无效的启动项for f in /etc/rc.d/rc{0..6}.d/*; do ls -H $f || unlink $f; done
CentOS 7.2 升级到 7.x 最新版
升级到 CentOS 7.x 最新版本,此过程需要联网升级。
- 执行
yum update
- 如报错,需手动解决依赖并不断循环此过程,直到升级成功