目录
- 一、场景说明
- 二、开始升级
- 1.使用ssh工具并使用root用户登陆操作系统
- 2.检查CentOS版本
- 3.使用ftp工具将CentOS-7-x86_64-DVD-1810.iso文件上传到/root目录
- 4.挂载iso文件
- 5.备份系统repo文件,备份完成后/root目录文件如下图所示
- 6.编辑本地源repo文件,以下是一条命令,请注意复制整体,按回车执行
- 7.更新yum缓存
- 8.更新系统
- 三、问题来了
- 异常现象一:
- 异常现象二:
- openssl问题:
- 四、总结
一、场景说明
客户环境有三台服务器都是CentOS 7.4.1708的操作系统,现要升级为Centos 7.6 1810。
但是由于客户环境服务器不能联网,所以只能以挂载ISO镜像作为本地yum源的方式进行升级,下面来讲升级步骤和过程中遇到的问题
阿里云CentOS 7.6 1810的下载地址:
https://mirrors.aliyun.com/centos-vault/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso
二、开始升级
1.使用ssh工具并使用root用户登陆操作系统
2.检查CentOS版本
cat /etc/redhat-release
3.使用ftp工具将CentOS-7-x86_64-DVD-1810.iso文件上传到/root目录
4.挂载iso文件
mkdir /mnt/cdrom
cd /root
mount ./CentOS-7-x86_64-DVD-1810.iso /mnt/cdrom
5.备份系统repo文件,备份完成后/root目录文件如下图所示
6.编辑本地源repo文件,以下是一条命令,请注意复制整体,按回车执行
cat << EOF > /etc/yum.repos.d/CentOS-Media.repo
[Media]
name=CentOS Media
baseurl=file:///mnt/cdrom
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
EOF
7.更新yum缓存
yum clean all
yum makecache
8.更新系统
yum update
9.检查CentOS版本,正常情况下如下图已经更新到Centos 7.6 1810
cat /etc/redhat-release
10.重启服务器,重启好后参考单机环境和集群环境的服务验证流程进行验证
reboot
三、问题来了
正常情况下,使用第二部分的操作是可以直接升级操作系统的,但是由于服务器上部署的程序使用了自己的rpm包,导致这部分rpm包的某些包和CentOS 7.6的包存在冲突。
以下整理了两种异常类型和一个openssl引发的问题:
异常现象一:
错误:软件包:xxxx(installed)
需要:xxxx
正在删除:xxxx
更新:xxxx
解决思路就是先卸载,升级完操作系统后再安装新版本
以上图为例我们需要先卸载ntp包
# 卸载ntp
yum remove -y ntp-4.2.6p5-22.el7.centos.x86_64
# 升级操作系统
yum update
# 安装新版本ntp
yum install -y ntp-4.2.6p5-28.el7.centos.x86_64
具体每个服务器都不一样,总体思路就是先卸载,卸载到yum update可以正常运行即可,系统升级完成后再将需要安装的新版本安装即可。
异常现象二:
错误:软件包:xxxx
需要:xxxx
这种由于没有指定具体版本的冲突,我这边没有处理,还是按照现象一的方案卸载掉在更新操作系统,只不过没办法安装指定的新版本
openssl问题:
openssl是一个比较核心的系统运行库,还是一样的方案,先卸载。
yum remove -y openssl-1.0.2q-1.x86_64
但是卸载完成后出现了一个很严重的问题,yum命令直接用不了了,不要急,由于我们挂载的是DVD版本的系统镜像,我们可以从镜像的Packages中找到对应的rpm包直接安装
cd /mnt/cdrom/Packages
rpm -ivh openssl-1.0.2k-16.el7.x86_64.rpm openssl-libs-1.0.2k-16.el7.x86_64.rpm
此时yum命令已经恢复了,但是新的问题来了,如果此时重启操作系统会发现ssh连不上了,不要问我为什么知道。其实卸载openssl的时候已经告诉我们openssh已经连着一块卸载了,只是当时没有注意看。
所以我们现在要将openssh先安装回来在重启服务器验证
# 安装openssh
yum install -y openssh-server
# 启动ssh
systemctl enable sshd
service sshd start
此时就可以重启服务器了。其实应该是不用重启服务器的,但是为了保险还是做了一下重启(不然ssh连接不了的问题就发现不了了0.0)
cat /etc/redhat-release
reboot
四、总结
1、如果是一个纯净的系统按照第二节操作就可以完成了;
2、如果使用了自己下载安装的rpm包需要先卸载掉才能升级操作系统;
3、除了卸载和升级还需要注意卸载会引发的问题,比如文中提到的openssl的问题。再加个例子:mysql的包冲突了,那能直接卸载吗?肯定不能,要注意先备份数据库在执行操作;
4、如果是虚拟机环境可以注意做一下快照,出了问题还可以拯救一下;
5、升级有风险,操作需谨慎,能不升就不升。
从一个菜鸟进阶成一个老菜鸟