Linux弹性云服务器怎样升级内核?
操作场景
当Linux弹性云服务器的操作系统内核版本出现系统崩溃、卡顿、内存泄露等稳定性或性能问题,或需要使用新的内核功能时,可通过升级操作系统内核解决。
约束与限制
升级操作系统内核可能导致系统不稳定或出现兼容性问题。在升级前,建议您了解升级过程中可能出现的问题,备份重要数据并谨慎操作。
备份弹性云服务器的详细操作,请参见备份概述。
- 升级操作系统内核后,Linux弹性云服务器可能无法识别网卡,从而导致网络不通。
- 升级操作系统内核后,Linux弹性云服务器可能无法识别数据盘,从而导致系统启动挂载点异常,无法正常启动。
操作步骤
本文以Huawei Cloud EulerOS、CentOS、Ubuntu、Debian为例介绍如何升级操作系统内核。
- 登录弹性云服务器。
- 执行以下命令,查看当前操作系统的内核版本。
- 执行以下命令,查看是否有可升级的操作系统内核版本。
- 如果没有可用的操作系统内核版本:
建议更换操作系统至Huawei Cloud EulerOS 2.0,详细操作,请参见切换操作系统。
CentOS官方已停止维护CentOS 6/7/8版本操作系统,华为云也同时停止对该操作系统的支持。更多详细内容,请参见CentOS Linux停止维护后如何应对。
- 如果有可用的操作系统内核版本:
- 执行以下命令,确认当前系统initrd或initramfs文件中是否包含virtio-blk或xen-blkfront驱动。
sudo lsinitrd /boot/initramfs-`uname -r`.img | grep -E 'virtio|xen'
若返回结果包含如下类似信息,表示包含virtio-blk或xen-blkfront驱动,否则不包含。
-rwxr--r-- 1 root root 23888 Feb 10 2022 lib/modules/2.6.32-754.35.1.el6.x86_64/kernel/drivers/block/virtio_blk.ko -rwxr--r-- 1 root root 55064 Feb 10 2022 lib/modules/2.6.32-754.35.1.el6.x86_64/kernel/drivers/block/xen-blkfront.ko
- (可选)执行以下命令,在系统initrd或initramfs文件中中添加virtio-blk或xen-blkfront驱动。
若当前系统initrd或initramfs文件中不包含virtio-blk或xen-blkfront驱动,需要执行本步骤。
sudo sh -c 'echo 'add_drivers+="xen-blkfront virtio_blk"' >> /etc/dracut.conf.d/virt-drivers.conf'
- 执行以下命令,确认当前系统initrd或initramfs文件中是否包含virtio-blk或xen-blkfront驱动。
- 如果没有可用的操作系统内核版本:
- 执行以下命令,升级操作系统内核版本。
- 执行以下命令,更新GRUB配置文件,以便ECS在启动时选择新的内核版本。
- 执行以下命令,重启ECS。
- 再次执行以下命令,检查操作系统的内核版本,验证是否升级成功。
如果返回新的内核版本,表示内核升级成功。
- 登录弹性云服务器。
- 执行以下命令,查看当前操作系统的内核版本。
- 执行以下命令,更新系统软件包列表,并查看是否有可升级的操作系统内核版本。
apt-cache search linux-image
- 如果没有可用的操作系统内核版本:
建议更换操作系统至更高版本,详细操作,请参见切换操作系统。
- 如果有可用的操作系统内核版本:
- 执行以下命令,升级操作系统内核版本。
- (可选)执行以下命令,升级操作系统内核额外模块。
对于ubuntu系统的ECS,内核升级后还需要升级操作系统内核的额外模块。
sudo apt-get install linux-modules-extra-<目标内核包名>
例如,Ubuntu 20.04需要升级内核至5.15.0版本时,升级命令如下:
sudo apt update
apt-cache search linux-image | grep '5.15' | grep generic
sudo apt-get install linux-image-5.15.0-122-generic
sudo apt-get install linux-modules-extra-5.15.0-122-generic
- 如果没有可用的操作系统内核版本:
- 执行以下命令,更新GRUB配置文件,以便ECS在启动时选择新的内核版本。
- 执行以下命令,重启ECS。
- 再次执行以下命令,检查操作系统的内核版本,验证是否升级成功。
如果返回新的内核版本,表示内核升级成功。