全部產品
Search
文件中心

:如何避免升級Linux執行個體核心後無法啟動

更新時間:Aug 23, 2018

注意
阿里雲不建議隨意自行升級核心,請參閱文檔 ECS使用須知

對於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檔案系統到磁碟中的,運行於Linux執行個體啟動階段。起同樣作用的還有initramfs檔案,雖然initrd和initramfs是兩種不同的操作概念文件,但這兩個檔案都活躍在啟動執行個體時掛載root檔案系統之前。

可以直接升級核心的系統鏡像

阿里雲優化了鏡像名稱 image_no 中時間戳記從 20161115 開始的鏡像公共系統鏡像核心,這些鏡像的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

如何優化核心並避免啟動失敗

  1. 編輯系統設定檔,若設定檔中缺失下列內容需要您手動加上:

    • CentOS 6和CentOS 7:執行 vi /etc/dracut.conf.d/virt-drivers.conf,添加 add_drivers+=" xen-blkfront virtio_blk "
    • CentOS 5:執行 vi /etc/dracut.conf.d/virt-drivers.conf,添加 add_drivers+=" xen-vbd virtio_blk virtio_console "
    • OpenSUSE/SUSE:
      1. 執行 vi /etc/sysconfig/kernel,添加 INITRD_MODULES=" virtio_blk virtio_pci xen-vbd"
      2. 執行 vi /etc/dracut.conf,添加 add_drivers+="virtio_blk virtio_pci xen-vbd"
  2. 更新核心:

    • CentOS:執行 yum install kernel
    • OpenSUSE/SUSE:執行 zypper install kernel-default
  3. 執行命令 lsinitrd /boot/initramfs-$(new-kernel-ver).img | grep -E 'virtio|xen' 檢查並確認initrd / initramfs檔案中已經包含了virtio-blk和xen-blkfront驅動。

  4. 必須確認virtio-blk和xen-blkfront驅動在initrd中才可以重啟執行個體。

如問題還未解決,請提交工單聯繫阿里雲。