全部產品
Search
文件中心

Elastic Compute Service:使用sersi鏡像偵查工具檢測並修複鏡像

更新時間:Sep 17, 2025

匯入自訂鏡像前,錯誤的配置(如缺少驅動、網路設定不當)可能導致執行個體啟動失敗或網路異常。使用阿里雲官方鏡像偵查工具 sersi,可在匯入前掃描、評估並自動修複鏡像,確保其雲上相容性,提升部署成功率。

重要

sersi工具的修複指令碼無法復原,對系統的修改無法撤銷。

適用範圍

該工具支援主流 RedHat、Debian、SUSE系列的作業系統,例如

  • Red Hat 系列:Alibaba Cloud Linux, Anolis, RedHat, CentOS, CentOS Stream, Fedora, AlmaLinux, Rocky Linux, openEuler, OpenCloudOS。

  • Debian 系列:Debian, Ubuntu, Kylin, UOS。

  • SUSE 系列:SUSE, openSUSE。

不支援FreeBSD、Fedora CoreOS以及Windows Server系統。

操作流程

步驟一:下載並解壓工具

  1. 下載 sersi 工具包。

    wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/imagecheck/sersi.tar.gz
  2. 解壓工具包。

    tar -xf sersi.tar.gz

步驟二:檢測鏡像

運行檢測命令,擷取鏡像的健康情況報告。

  1. 對鏡像執行所有檢測項的掃描。

    ./main.sh --target=image --diagnostic
  2. 分析檢測結果。命令會輸出格式化的報告。

    • OK:該項符合阿里雲鏡像規範。

    • FAILED(必須修複):該項存在嚴重問題,可能導致執行個體無法啟動或核心功能(如網路)異常。

    • WARNING(建議修複):該項存在配置問題,雖不影響執行個體啟動,但可能導致部分進階功能(如雲助手、監控)不可用或存在安全隱患。

    檢測結果樣本如下,報告中檢測項的詳細說明見檢測與修複項總覽

    ------------------------------------------------------------
    
                OS: Alibaba Cloud Linux 3   Kernel: 5.10.134-16.1.al8.x86_64 
                Arch: x86_64       RTC-Mode: utc       Boot-Mode: Legacy
            
    ------------------------------------------------------------
    Image Check Result
    Virtio                                                                                 [OK]
    Nvme                                                                                   [OK]
    Fstab                                                                                  [OK]
    Grub                                                                                   [OK]
    Dhcp                                                                                   [OK]
    Selinux                                                                                [OK]
    OnlineResizeFS                                                                         [OK]
    CloudAssistant                                                                         [OK]
    CloudInit                                                                              [OK]
    SecurityCenterAgent                                                                    [OK]
    SupportMocInstanceTypes                                                                [OK]
    DiskUsage                                                                              [OK]
    InodeUsage                                                                             [OK]
    SystemFileAttribute                                                                    [OK]
    CriticalUser                                                                           [OK]
    QemuGuestAgent                                                                         [OK]
    SshConfig                                                                              [OK]
    Firewall                                                                               [OK]
    
             Total case Count                18
                Successes:                   18
                Failures:                    0
                Warnings:                    0
            
    ------------------------------------------------------------

步驟三:修複鏡像

自動修複

sersi工具的修複指令碼無法復原,對系統的修改無法撤銷。建議採用“先審查,後執行”的安全流程進行修複。

sersi工具不支援對檢測項(Diskusage、Inodeusage、Criticaluser、LibDirectory和SupportMocinstanceTypes)進行自動修複,請參照指引進行手動修複
  1. 執行審查:

    使用--dry-run參數產生修複指令碼並進行審查,此操作不會執行任何修改

    通過參見單個檢測項修複方案,可對單個檢測項進行修複。
    # 修複所有問題
    ./main.sh --target=image --run all --dry-run 
  2. 執行修複:

    在確認指令碼安全無誤後,移除 --dry-run 參數來實際執行修複。

    # 互動式修複:執行每個修複步驟前會請求確認
    ./main.sh --target=image --run all
  3. 分析修複結果:

    • OK:表示該項修複成功。

    • NO_FOUND_RISK:表示檢測鏡像中未找到該項的異常。

    • OK_Need_Reboot:表示該項修複完成需重啟系統才會生效。

    • DRY_RUN:表示找到該項的異常並通過dry-run模式運行僅列印修複指令碼,但未執行修複。

    • FAILED:表示該項修複失敗,需要進行手動修複

手動修複

對於不支援自動修複,或自動修複失敗的檢測項,請根據以下指引進行手動操作。

步驟四:驗證修複結果

  1. (可選)重啟系統。部分修複項(NvmeDhcpSelinux)需要重啟系統才會生效。

  2. 重新運行檢測命令,確保所有問題項狀態變為 OK

    ./main.sh --target=image --diagnostic

檢測與修複項總覽

檢測項 (Case Name)

修複項

影響

說明

Virtio

virtio

ECS啟動異常。

檢測鏡像中是否安裝virtio驅動。阿里雲ECS通常為基於KVM的虛擬機器,因此依賴鏡像中安裝虛擬磁碟的virtio驅動。

Nvme

nvme

無法使用NVMe協議雲端硬碟的執行個體規格,例如ecs.g7se。

檢測鏡像中是否安裝NVMe驅動。ECS部分規格使用NVMe協議雲端硬碟,例如ecs.g7se,要求鏡像包含NVMe驅動。NVMe相比SCSI、virtio-blk等傳統驅動協議速度更快、傳輸頻寬更高,因此建議在鏡像中安裝NVMe驅動,以支援相關執行個體規格。

Fstab

fstab

系統啟動異常。

檢測/etc/fstab配置是否正常。錯誤的配置會導致系統啟動異常,例如配置的掛載裝置資訊不存在、裝置UUID錯誤等。

Grub

grub

系統啟動異常。

檢測grub設定檔是否正常。配置錯誤(如使用裝置名稱而非 UUID 指定開機磁碟分割)將導致系統無法啟動。

Dhcp

dhcp

系統網路異常。

檢測網路設定是否為DHCP。建議為網路裝置配置DHCP的方式,static靜態方式會導致網路設定失敗,串連異常。我們還建議在grub核心啟動參數中增加配置選項net.ifnames=0來禁用核心網路介面重新命名行為,使網卡名稱為eth0。

Selinux

selinux

無法正常啟動ECS執行個體。

檢測是否禁用SELinux,建議關閉SELinux。

OnlineResizeFS

growpart

執行個體根分區無法擴容。

檢測鏡像是否支援線上擴容檔案系統。例如鏡像虛擬磁碟空間大小為10 GB,而ECS執行個體的系統硬碟為100 GB,如果安裝了cloud-init、growpart等組件,相關組件在執行個體初始化時會將根分區及檔案系統擴容,擴容至系統硬碟的大小100 GB。更多資訊,請參見擴容分區及檔案系統(Linux)

Cloudinit

cloudinit

系統初始化配置缺失。

檢測是否安裝cloud-init服務。cloud-init能在ECS執行個體啟動階段完成系統初始化配置,包括NTP、軟體源、主機名稱和SSH金鑰組等,同時執行執行個體自訂資料(User data)指令碼。

SshConfig

sshd

執行個體SSH串連失敗。

檢測sshd服務的設定檔(通常是/etc/ssh/sshd_config)是否正常。

sshd設定檔異常會導致sshd服務啟動失敗,進而導致SSH串連ECS失敗,因此檢查sshd設定檔的正確性和有效性非常重要。通常可執行以下命令:

  • 執行sudo sshd -T命令可展示所有的sshd配置選項。

  • 執行sudo sshd -t 命令驗證sshd設定檔的合法性;若合法,則沒有資訊輸出。

Firewall

firewall

系統防火牆應用可能導致執行個體訪問失敗。

檢測防火牆服務是否開啟。建議關閉系統中的防火牆服務,使用ECS安全性群組統一管理雲上執行個體的出入流量。

CloudAssistant

assist

雲上營運不便。

檢測鏡像是否安裝雲助手。雲助手是專為Elastic Compute Service打造的原生自動化營運工具,建議為鏡像安裝雲助手服務,實現雲上ECS高效營運。

SecurityCenterAgent

aegis

無法識別執行個體中的漏洞問題,缺少Security Center的保護。

檢測是否安裝Security CenterAgent。安裝Security Center的Agent外掛程式後,伺服器才能受到Security Center的保護。

QemuGuestAgent

qemuguestagent

執行個體功能異常。

檢測系統中是否安裝qemu-guest-agent。該軟體是運行在虛擬機器上,和宿主機互動通訊,會導致部分ECS服務不可用,執行個體功能不全。

Diskusage

不支援

系統啟動異常。

檢測磁碟空間使用率是否正常。可執行df -h命令檢查磁碟空間的使用率,確保有充足空間。

Inodeusage

不支援

系統啟動異常。

檢測磁碟inode使用率是否正常。可執行df -i命令來檢查磁碟inode的使用率。

SystemFileAttribute

fileattribute

執行個體啟動異常、功能異常。

檢測系統中關鍵設定檔的檔案屬性是否正常。

Criticaluser

不支援

執行個體啟動異常、功能異常。

檢測系統中關鍵使用者(例如root)是否存在。關鍵使用者的缺失會導致系統啟動異常,執行個體功能使用異常,例如無法使用使用者名稱和密碼遠端連線ECS執行個體。

LibDirectory

不支援

系統功能異常。

在RedHat系列Linux系統中,/lib/lib64通常為一個連結檔案,指向/usr/lib/usr/lib64,請不要隨意修改該連結檔案,否則可能導致系統異常。

SupportMocinstanceTypes

不支援

不能使用ecs.g6、ecs.g7等神龍規格類型系列。

檢測鏡像是否支援阿里雲ECS神龍規格。

阿里雲最新的ECS執行個體通常為神龍規格,例如ecs.g6、ecs.g7等,如果鏡像的系統和核心版本過低,在相關規格上啟動會有異常。具體的執行個體規格資訊,請參見執行個體規格類型系列

修複命令詳細說明

自動修複鏡像的命令如下:

./main.sh --target=image --run <case> [--debug] [--dry-run] [-y]

參數

是否必選

說明

run <case>

修複項,表示運行需要修複的檢測項。

  • 當前支援的修複項:

    cloudinitvirtionvmefstabgrubdhcpselinuxgrowpartaegisassistfirewallsshdfileattributeqemuguestagent。檢測項與修複項的對應關係見檢測與修複項總覽

  • 使用all修複所有支援的項,多個項之間用空格分隔。

[--dry-run]

建議首次修複時使用。僅列印修複指令碼,不實際執行。

[--debug]

啟用詳細日誌輸出,用於問題排查。

[-y]

自動確認所有修複步驟,跳過互動式提示。

相關文檔

通過工具檢測鏡像符合規範後,可擷取Linux鏡像檔案,並匯入自訂鏡像到阿里雲平台。

常見問題

為什麼修複 nvmeselinuxdhcp後問題依然存在?

這三個檢測項的修複涉及核心參數或系統運行模式的根本性改變,必須重啟作業系統才能應用新的配置。修複後需重啟虛擬機器,再運行檢測進行驗證。

對於單個檢測項,應該如何修複?

SshConfig檢測項為例。

  1. 檢測與修複項總覽表中,找到檢測項SshConfig對應的修複項sshd

  2. 執行審查。

    如要修複其他檢測項,將sshd參數改為對應修複項。
    ./main.sh --target=image --run sshd --dry-run 
  3. 執行修複。

    ./main.sh --target=image --run sshd