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