匯入自訂鏡像前,錯誤的配置(如缺少驅動、網路設定不當)可能導致執行個體啟動失敗或網路異常。使用阿里雲官方鏡像偵查工具 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系統。
操作流程
步驟一:下載並解壓工具
下載
sersi工具包。wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/imagecheck/sersi.tar.gz解壓工具包。
tar -xf sersi.tar.gz
步驟二:檢測鏡像
運行檢測命令,擷取鏡像的健康情況報告。
對鏡像執行所有檢測項的掃描。
./main.sh --target=image --diagnostic分析檢測結果。命令會輸出格式化的報告。
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)進行自動修複,請參照指引進行手動修複。執行審查:
使用
--dry-run參數產生修複指令碼並進行審查,此操作不會執行任何修改。通過參見單個檢測項修複方案,可對單個檢測項進行修複。
# 修複所有問題 ./main.sh --target=image --run all --dry-run執行修複:
在確認指令碼安全無誤後,移除
--dry-run參數來實際執行修複。# 互動式修複:執行每個修複步驟前會請求確認 ./main.sh --target=image --run all分析修複結果:
OK:表示該項修複成功。NO_FOUND_RISK:表示檢測鏡像中未找到該項的異常。OK_Need_Reboot:表示該項修複完成需重啟系統才會生效。DRY_RUN:表示找到該項的異常並通過dry-run模式運行僅列印修複指令碼,但未執行修複。FAILED:表示該項修複失敗,需要進行手動修複。
手動修複
對於不支援自動修複,或自動修複失敗的檢測項,請根據以下指引進行手動操作。
Diskusage:手動刪除不必要檔案。
Inodeusage:手動刪除不必要檔案。
Criticaluser:保留root帳號。
LibDirectory:連結檔案/lib和/lib64的指向位置不能為絕對路徑,修改指向位置為相對路徑。
SupportMocinstanceTypes:不支援神龍規格的系統通常是已經EOL不再維護的低版本系統,建議儘早更新升級,使用各發行廠商正在維護更新的作業系統版本。
Virtio:安裝virtio驅動。
Nvme:安裝NVMe驅動。
Fstab:正確配置/etc/fstab。
Dhcp:設定鏡像網路設定模式為DHCP。
Selinux:關閉SELinux。
OnlineResizeFS:安裝cloud-init和growpart工具
Cloudinit:安裝cloud-init。
SshConfig:檢查sshd設定檔。
Firewall:關閉系統防火牆服務。
CloudAssistant:安裝雲助手Agent。
SecurityCenterAgent:安裝用戶端。
QemuGuestAgent:手動卸載qemu-guestos-agent。
SystemFileAttribute:不要使用
chattr命令鎖定/etc/shadow等檔案。
步驟四:驗證修複結果
(可選)重啟系統。部分修複項(
Nvme、Dhcp和Selinux)需要重啟系統才會生效。重新運行檢測命令,確保所有問題項狀態變為
OK。./main.sh --target=image --diagnostic
檢測與修複項總覽
檢測項 (Case Name) | 修複項 | 影響 | 說明 |
|
| ECS啟動異常。 | 檢測鏡像中是否安裝virtio驅動。阿里雲ECS通常為基於KVM的虛擬機器,因此依賴鏡像中安裝虛擬磁碟的virtio驅動。 |
|
| 無法使用NVMe協議雲端硬碟的執行個體規格,例如ecs.g7se。 | 檢測鏡像中是否安裝NVMe驅動。ECS部分規格使用NVMe協議雲端硬碟,例如ecs.g7se,要求鏡像包含NVMe驅動。NVMe相比SCSI、virtio-blk等傳統驅動協議速度更快、傳輸頻寬更高,因此建議在鏡像中安裝NVMe驅動,以支援相關執行個體規格。 |
|
| 系統啟動異常。 | 檢測/etc/fstab配置是否正常。錯誤的配置會導致系統啟動異常,例如配置的掛載裝置資訊不存在、裝置UUID錯誤等。 |
|
| 系統啟動異常。 | 檢測grub設定檔是否正常。配置錯誤(如使用裝置名稱而非 UUID 指定開機磁碟分割)將導致系統無法啟動。 |
|
| 系統網路異常。 | 檢測網路設定是否為DHCP。建議為網路裝置配置DHCP的方式,static靜態方式會導致網路設定失敗,串連異常。我們還建議在grub核心啟動參數中增加配置選項 |
|
| 無法正常啟動ECS執行個體。 | 檢測是否禁用SELinux,建議關閉SELinux。 |
|
| 執行個體根分區無法擴容。 | 檢測鏡像是否支援線上擴容檔案系統。例如鏡像虛擬磁碟空間大小為10 GB,而ECS執行個體的系統硬碟為100 GB,如果安裝了cloud-init、growpart等組件,相關組件在執行個體初始化時會將根分區及檔案系統擴容,擴容至系統硬碟的大小100 GB。更多資訊,請參見擴容分區及檔案系統(Linux)。 |
|
| 系統初始化配置缺失。 | 檢測是否安裝cloud-init服務。cloud-init能在ECS執行個體啟動階段完成系統初始化配置,包括NTP、軟體源、主機名稱和SSH金鑰組等,同時執行執行個體自訂資料(User data)指令碼。 |
|
| 執行個體SSH串連失敗。 | 檢測sshd服務的設定檔(通常是/etc/ssh/sshd_config)是否正常。 sshd設定檔異常會導致sshd服務啟動失敗,進而導致SSH串連ECS失敗,因此檢查sshd設定檔的正確性和有效性非常重要。通常可執行以下命令:
|
|
| 系統防火牆應用可能導致執行個體訪問失敗。 | 檢測防火牆服務是否開啟。建議關閉系統中的防火牆服務,使用ECS安全性群組統一管理雲上執行個體的出入流量。 |
|
| 雲上營運不便。 | 檢測鏡像是否安裝雲助手。雲助手是專為Elastic Compute Service打造的原生自動化營運工具,建議為鏡像安裝雲助手服務,實現雲上ECS高效營運。 |
|
| 無法識別執行個體中的漏洞問題,缺少Security Center的保護。 | 檢測是否安裝Security CenterAgent。安裝Security Center的Agent外掛程式後,伺服器才能受到Security Center的保護。 |
|
| 執行個體功能異常。 | 檢測系統中是否安裝qemu-guest-agent。該軟體是運行在虛擬機器上,和宿主機互動通訊,會導致部分ECS服務不可用,執行個體功能不全。 |
| 不支援 | 系統啟動異常。 | 檢測磁碟空間使用率是否正常。可執行 |
| 不支援 | 系統啟動異常。 | 檢測磁碟inode使用率是否正常。可執行 |
|
| 執行個體啟動異常、功能異常。 | 檢測系統中關鍵設定檔的檔案屬性是否正常。 |
| 不支援 | 執行個體啟動異常、功能異常。 | 檢測系統中關鍵使用者(例如root)是否存在。關鍵使用者的缺失會導致系統啟動異常,執行個體功能使用異常,例如無法使用使用者名稱和密碼遠端連線ECS執行個體。 |
| 不支援 | 系統功能異常。 | 在RedHat系列Linux系統中,/lib和/lib64通常為一個連結檔案,指向/usr/lib及/usr/lib64,請不要隨意修改該連結檔案,否則可能導致系統異常。 |
| 不支援 | 不能使用ecs.g6、ecs.g7等神龍規格類型系列。 | 檢測鏡像是否支援阿里雲ECS神龍規格。 阿里雲最新的ECS執行個體通常為神龍規格,例如ecs.g6、ecs.g7等,如果鏡像的系統和核心版本過低,在相關規格上啟動會有異常。具體的執行個體規格資訊,請參見執行個體規格類型系列。 |
修複命令詳細說明
自動修複鏡像的命令如下:
./main.sh --target=image --run <case> [--debug] [--dry-run] [-y]參數 | 是否必選 | 說明 |
| 是 | 修複項,表示運行需要修複的檢測項。
|
| 否 | 建議首次修複時使用。僅列印修複指令碼,不實際執行。 |
| 否 | 啟用詳細日誌輸出,用於問題排查。 |
| 否 | 自動確認所有修複步驟,跳過互動式提示。 |
相關文檔
通過工具檢測鏡像符合規範後,可擷取Linux鏡像檔案,並匯入自訂鏡像到阿里雲平台。
常見問題
為什麼修複 nvme 、 selinux或 dhcp後問題依然存在?
這三個檢測項的修複涉及核心參數或系統運行模式的根本性改變,必須重啟作業系統才能應用新的配置。修複後需重啟虛擬機器,再運行檢測進行驗證。
對於單個檢測項,應該如何修複?
以SshConfig檢測項為例。
從檢測與修複項總覽表中,找到檢測項
SshConfig對應的修複項sshd。執行審查。
如要修複其他檢測項,將sshd參數改為對應修複項。
./main.sh --target=image --run sshd --dry-run執行修複。
./main.sh --target=image --run sshd