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

