インポート前に sersi でカスタムイメージをスキャンして修正し、ドライバーの欠落や設定ミスによる起動失敗やネットワークの問題を防ぎます。
sersi 修正スクリプトによる変更は、元に戻すことはできません。
サポート対象のオペレーティングシステム
サポートされている OS ファミリー:
-
Red Hat 系: Alibaba Cloud Linux、Anolis、Red Hat、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 -
パッケージを解凍します。
tar -xf sersi.tar.gz
ステップ 2: イメージのチェック
チェックコマンドを実行して、イメージの健全性レポートを生成します。
-
イメージをスキャンします。
./main.sh --target=image --diagnostic -
結果の分析:
-
OK:Alibaba Cloud イメージ仕様を満たします。 -
FAILED(修正必須): 起動を妨げたり、コア機能 (ネットワークなど) を失敗させたりする可能性のある、致命的な問題です。 -
WARNING(修正を推奨): 起動には影響しませんが、一部の機能 (Cloud Assistant やモニタリングなど) が利用できなくなる、またはセキュリティリスクをもたらす可能性がある設定上の問題です。
各項目の詳細については、「チェック項目と修正項目の概要」をご参照ください。
------------------------------------------------------------ OS: Alibaba Cloud Linux 3 Kernel: 5.10.134-18.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] CloudInitConfigPassword [OK] SecurityCenterAgent [OK] SupportMocInstanceTypes [OK] DiskUsage [OK] InodeUsage [OK] SystemFileAttribute [OK] CriticalUser [OK] QemuGuestAgent [OK] SshConfig [OK] Firewall [OK] Total case Count 19 Successes: 19 Failures: 0 Warnings: 0 ------------------------------------------------------------ Import Image Command Example (aliyun CLI) ------------------------------------------------------------ Based on the detected system information, you can use the following command to import this image via Alibaba Cloud CLI: aliyun ecs ImportImage \ --RegionId <your-region-id> \ --ImageName <your-image-name> \ --Architecture x86_64 # [!] 自動検出されました。イメージと一致することを確認してください \ --OSType linux \ --Platform 'Aliyun' # [!] 自動検出されました。OS のディストリビューションと一致する必要があります \ --BootMode BIOS # [!] 自動検出されました。値が間違っていると起動の失敗につながります \ --DiskDeviceMapping.1.OSSBucket <your-oss-bucket> \ --DiskDeviceMapping.1.OSSObject '<your-oss-object-path>' \ --DiskDeviceMapping.1.Format <RAW|VHD|QCOW2> NOTE: Replace <...> placeholders with your actual values. - RegionId must match the OSS Bucket's region. - Format: RAW, VHD, or QCOW2 (matches your image file format). ------------------------------------------------------------ -
-
イメージのインポートパラメーターを確認してください。レポートの最後にある
イメージのインポートコマンドの例セクションでは、検出されたシステム情報に基づいて、イメージをインポートするためのサンプル aliyun CLI コマンドが生成されます。[!]が付いたパラメーターは自動検出されます。実際のイメージと一致しない値があると、イメージから作成されたインスタンスが起動に失敗するため、インポートする前に各パラメーターを確認してください。-
--Architecture:イメージのシステムアーキテクチャ。有効な値:x86_64およびarm64。 -
--Platform: イメージのオペレーティングシステムディストリビューションです。イメージに実際にインストールされているシステムと一致している必要があります。お使いのイメージのオペレーティングシステムが、イメージのインポートパラメーターでサポートされていないPlatformである場合、チェックレポートによって適切なPlatformが推奨されます。openEuler や openCloudOS などの Red Hat ベースのディストリビューションの場合、Platformを CentOS Stream に設定することをお勧めします。 -
--BootMode: イメージの起動モード。 有効な値:BIOSおよびUEFI。 実際の起動モードと一致しない値を指定すると、インスタンスが起動できなくなります。
各パラメーターの完全な説明については、「カスタムイメージのインポート」をご参照ください。
-
ステップ 3: イメージの修正
自動修復
修正スクリプトによる変更は元に戻せません。「レビューしてから実行する」というプロセスに従ってください。
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: 問題を検出。修正スクリプトは出力されるが実行されない。 -
FAILED: 修正に失敗しました。手動修正を行ってください。
-
手動修復
自動的に修正できない項目、または自動修復が失敗した場合は、以下の手順に従ってください。
-
DiskUsage: 手動で不要なファイルを削除します。 -
InodeUsage:不要なファイルを手動で削除します。 -
CriticalUser: root アカウントを保持します。 -
LibDirectory: /lib および /lib64 のシンボリックリンクは、絶対パスではなく、相対パスを指す必要があります。 -
SupportMocInstanceTypes:通常、古い EOL の OS バージョンが原因で発生します。アクティブにメンテナンスされているバージョンにアップグレードしてください。 -
Virtio: virtio ドライバーをインストールする -
NVMe:NVMe ドライバーをインストールする -
Fstab: /etc/fstab を正しく設定する -
Selinux: SELinux を有効または無効にする。 -
OnlineResizeFS: cloud-init のインストールと growpart ツールが必要です。 -
Cloudinit: cloud-init をインストールする -
CloudInitConfigPassword:cloud-init 設定ファイルのシンボリックリンクを作成します。ln -sf /sys/firmware/qemu_fw_cfg/by_name/etc/cloud-init/vendor-data/raw /etc/cloud/cloud.cfg.d/aliyun_cloud.cfg -
SshConfig: sshd 設定ファイルを確認する -
ファイアウォール: システムファイアウォールサービスを無効にする。 -
CloudAssistant: Cloud Assistant エージェントをインストールする。 -
SecurityCenterAgent: Security Center エージェントをインストールする -
QemuGuestAgent: 手動でqemu-guest-agentをアンインストールします。 -
SystemFileAttribute: /etc/shadow のような重要なファイルをロックするために、chattrコマンドを使用しないでください。
ステップ 4: 修正の確認
-
(任意) システムを再起動します。一部の修正(
Nvme、Dhcp、Selinux)には再起動が必要です。 -
チェックコマンドを再実行し、すべての項目が
OKであることを確認します。./main.sh --target=image --diagnostic
チェック項目と修正項目の概要
|
チェック項目 (ケース名) |
修正項目 |
影響 |
説明 |
|
|
|
ECS インスタンスの起動に失敗します。 |
virtio ドライバーがインストールされているかどうかをチェックします。Alibaba Cloud ECS インスタンスは KVM ベースの仮想マシンであり、仮想ディスクには virtio ドライバーが必要です。 |
|
|
|
ecs.g7se など、NVMe プロトコルベースのクラウドディスクを必要とするインスタンスタイプは使用できません。 |
NVMe ドライバーがインストールされているかどうかをチェックします。ecs.g8i、ecs.g8a、ecs.g9i、ecs.g9a などの一部の ECS インスタンスタイプは、NVMe プロトコル クラウドディスクを使用し、NVMe ドライバーを必要とします。NVMe は、従来のプロトコル (SCSI や virtio-blk など) よりも高速で高帯域幅を提供します。 |
|
|
|
システムの起動に失敗します。 |
/etc/fstab が正しく設定されているかどうかをチェックします。存在しないマウントデバイスや間違った UUID などの不正なエントリは、起動を妨げる可能性があります。 |
|
|
|
システムの起動に失敗します。 |
GRUB 設定が正しいかどうかをチェックします。UUID の代わりにデバイス名でブートパーティションを指定するなどのエラーは、起動を妨げます。 |
|
|
|
システムのネットワーク接続に失敗します。 |
ネットワークインターフェイスで DHCP が有効になっていることを確認します。静的アドレッシングはネットワーク障害を引き起こす可能性があります。GRUB カーネルの起動パラメーターに |
|
|
|
ECS インスタンスの起動に失敗します。 |
SELinux が無効になっているかどうかをチェックします。 |
|
|
|
インスタンスのルートパーティションはリサイズできません。 |
イメージが初回起動時にルートパーティションとファイルシステムを自動拡張できるかどうか (cloud-init または growpart を使用して) をチェックします。たとえば、10 GB のイメージを 100 GB のシステムディスクいっぱいに拡張できます。詳細については、「パーティションとファイルシステム (Linux) の拡張」をご参照ください。 |
|
|
|
システム初期化設定が欠落しています。 |
cloud-init がインストールされていることを確認します。cloud-init は、起動時に NTP、パッケージリポジトリ、ホスト名、SSH キーペアを設定し、ユーザーデータスクリプトを実行します。 |
|
|
|
インスタンスへの SSH 接続に失敗します。 |
sshd 設定ファイル (/etc/ssh/sshd_config) が正しいかどうかをチェックします。 sshd 設定ファイルが正しくない場合、sshd サービスが起動に失敗し、SSH 接続が妨げられる可能性があります。確認方法:
|
|
|
|
システムファイアウォールがインスタンスへのアクセスをブロックする可能性があります。 |
ファイアウォールサービスが有効になっているかどうかをチェックします。システムファイアウォールを無効にし、セキュリティグループを使用してインバウンドおよびアウトバウンドトラフィックを管理します。 |
|
|
|
クラウド O&M が不便です。 |
クラウドアシスタントがインストールされているかどうかをチェックします。クラウドアシスタントは、運用とメンテナンスのためのネイティブな ECS 自動化ツールです。 |
|
|
|
セキュリティセンターの保護がないと、インスタンスの脆弱性を特定できません。 |
セキュリティセンターエージェントがインストールされているかどうかをチェックします。サーバーを保護するためにセキュリティセンターに必要です。 |
|
|
|
インスタンスの機能が正しく動作しない可能性があります。 |
がインストールされているかどうかをチェックします。このソフトウェアはホストマシンと通信し、ECS サービスに干渉してインスタンスの機能が不完全になる可能性があります。 |
|
|
サポート対象外 |
システムの起動に失敗します。 |
ディスク領域の使用状況が正常かを確認するには、 ディスク使用量を確認し、十分な容量を確保してください。 |
|
|
サポート対象外 |
システムの起動に失敗します。 |
ディスクの inode 使用状況が正常かどうかを確認します。inode の使用状況を確認するには、 |
|
|
|
インスタンスの起動に失敗するか、機能が異常になります。 |
重要なシステム設定ファイルのファイル属性が正しいかどうかをチェックします。 |
|
|
サポート対象外 |
インスタンスの起動に失敗するか、機能が異常になります。 |
重要なユーザー (root など) が存在するかどうかをチェックします。重要なユーザーが欠落していると、起動が異常になったり、リモート接続が妨げられたりする可能性があります。 |
|
|
サポート対象外 |
システムの機能が異常になります。 |
Red Hat 系の Linux では、/lib と /lib64 は通常、/usr/lib と /usr/lib64 へのシンボリックリンクです。これらのリンクは変更しないでください。 |
|
|
サポート対象外 |
および などの SHENLONG インスタンスファミリーは使用できません。 |
イメージが神龍インスタンスタイプ ( および などの最新の ECS インスタンスは、通常 SHENLONG インスタンスタイプです。イメージの OS とカーネルのバージョンが古すぎると、これらのインスタンスタイプで起動に失敗する可能性があります。詳細については、「インスタンスファミリーの概要」をご参照ください。 |
修正コマンドリファレンス
自動修復コマンドの構文:
./main.sh --target=image --run <case> [--debug] [--dry-run] [-y]
|
パラメーター |
必須 |
説明 |
|
|
はい |
実行する修正項目。
|
|
|
いいえ |
初回試行に推奨されます。修正スクリプトを実行せずに表示します。 |
|
|
いいえ |
トラブルシューティングのために詳細なログ出力を有効にします。 |
|
|
いいえ |
対話型のプロンプトをスキップし、すべての修正ステップを自動的に承認します。 |
関連ドキュメント
検証後、イメージファイルを取得し、カスタムイメージとしてインポートします。
よくある質問
nvme、selinux または dhcp の修正を適用した後も、問題が依然として残るのはなぜですか?
これら 3 つの修正を適用するには、再起動が必要です。適用後、VM を再起動し、ツールを再実行して結果を確認してください。
単一のチェック項目を修正する方法
SshConfig のような単一の項目を修正するには:
-
チェック項目と修正項目の概要の表で、
SshConfigに対応する修正項目sshdを探します。 -
レビュー:
別の項目を修正するには、
sshdを修正対象の項目名に置き換えます。./main.sh --target=image --run sshd --dry-run -
実行:
./main.sh --target=image --run sshd