避免Linux實例升級內核系統(tǒng)無法啟動的方法
發(fā)布時間:2021-04-15 點擊數:686
概述
本文介紹避免Linux實例升級內核,系統(tǒng)無法啟動的方法。
詳細信息
- 如果您對實例或數據有修改、變更等風險操作,務必注意實例的容災、容錯能力,確保數據安全。
- 如果您對實例(包括但不限于ECS、RDS)等進行配置與數據修改,建議提前創(chuàng)建快照或開啟RDS日志備份等功能。
- 如果您在阿里云平臺授權或者提交過登錄賬號、密碼等安全信息,建議您及時修改。
對于CentOS、OpenSUSE、SLES(SUSE Linux Enterprise Server)和Aliyun Linux等鏡像,升級Linux實例后啟動失敗,可能是因為升級后的內核對應的initrd文件中沒有virtio-blk和xen-blkfront驅動。而Debian和Ubuntu的virtio-blk和xen-blkfront驅動是內核內置的,所以不存在這個可能性。
什么是initrd文件
initrd(initial ramdisk)用于載入臨時root文件系統(tǒng)至磁盤,運行于Linux實例啟動階段。起同樣作用的還有initramfs文件,雖然initrd和initramfs是兩種不同的操作概念,但這兩個文件都活躍在啟動實例時掛載文件系統(tǒng)之前。
可以直接升級內核的系統(tǒng)鏡像
阿里云優(yōu)化了20161115之后的公用系統(tǒng)鏡像內核,您可以檢查鏡像名稱中的時間戳,如果時間戳為20161115之后的鏡像,則可以正常升級內核。以下列舉部分可直接升級內核的系統(tǒng)鏡像。這些鏡像的initrd文件不會因為缺失virtio-blk和blkfront驅動的情況而導致啟動失敗。
- centos_6u8_64_40G_cloudinit_20161115.vhd
- centos_6u8_32_40G_cloudinit_20161115.vhd
- centos_5u11_64_40G_cloudinit_20161115.vhd
- centos_5u11_32_40G_cloudinit_20161115.vhd
- centos_6_8_64_40G_base_20170222.vhd
- centos_6_8_32_40G_base_20170222.vhd
- centos_7_2_64_40G_base_20170222.vhd
- centos_5_11_64_40G_base_20170222.vhd
- centos_5_11_32_40G_base_20170222.vhd
- centos_6_08_64_20G_alibase_20170824.vhd
-
debian_8_09_64_20G_alibase_20170824.vhd
說明:此處僅列舉部分公共鏡像,請以鏡像中的時間戳為準。
如何優(yōu)化內核并避免啟動失敗
如果您未使用阿里云已經優(yōu)化過的公共鏡像,并且需要升級系統(tǒng)內核,則參考以下對應步驟,對內核進行優(yōu)化從而避免ECS啟動失敗。
說明:在修改配置文件前,建議先備份原文件。
- 創(chuàng)建ECS快照。
-
添加缺失內容到指定系統(tǒng)配置文件,操作如下。
-
CentOS 6和CentOS 7系統(tǒng),執(zhí)行以下命令,添加缺失內容到/etc/dracut.conf.d/virt-drivers.conf配置文件。
echo 'add_drivers+="xen-blkfront virtio_blk"' >> /etc/dracut.conf.d/virt-drivers.conf
-
CentOS 5系統(tǒng),執(zhí)行以下命令,添加缺失內容到/etc/dracut.conf.d/virt-drivers.conf配置文件。
echo 'add_drivers+="xen-vbd virtio_blk virtio_console"' >> /etc/dracut.conf.d/virt-drivers.conf
-
OpenSUSE或SUSE系統(tǒng),依次執(zhí)行以下命令,添加缺失內容到/etc/sysconfig/kernel和/etc/dracut.conf配置文件。
echo 'INITRD_MODULES=" virtio_blk virtio_pci xen-vbd"' >> /etc/sysconfig/kernelecho 'add_drivers+="virtio_blk virtio_pci xen-vbd"' >> /etc/dracut.conf
-
CentOS 6和CentOS 7系統(tǒng),執(zhí)行以下命令,添加缺失內容到/etc/dracut.conf.d/virt-drivers.conf配置文件。
-
執(zhí)行以下命令,更新內核。
-
CentOS系統(tǒng),執(zhí)行以下命令,更新內核。
yum install kernel
-
OpenSUSE或SUSE系統(tǒng),執(zhí)行以下命令,更新內核。
zypper install kernel-default
-
CentOS系統(tǒng),執(zhí)行以下命令,更新內核。
-
執(zhí)行以下命令,確認當前系統(tǒng)initrd或initramfs文件中已經包含了virtio-blk和xen-blkfront驅動。
說明:必須確認virtio-blk和xen-blkfront驅動在initrd中才可以重啟實例。
lsinitrd /boot/initramfs-`uname -r`.img | grep -E 'virtio|xen'
適用于
- 云服務器ECS
如果您有其他問題,可以聯(lián)系北京優(yōu)勝智連阿里云代理商,為您提供一對一專業(yè)全面的技術服務,同時新/老阿里云會員,均可享受我公司代理商價格,歡迎咨詢!