すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:イメージコンプライアンスツールを使用して、イメージをチェックして修復する

最終更新日:Aug 23, 2024

カスタムイメージをAlibaba Cloud Elastic Compute Service (ECS) にインポートする前に、sersiという名前のイメージコンプライアンスツールを使用して、イメージがインポート条件を満たしているかどうかを確認し、イメージに例外が存在する場合はイメージを自動的に修復することを推奨します。 これにより、画質が保証され、高度に互換性のあるフル機能のECSインスタンスをAlibaba Cloudにデプロイできます。 このトピックでは、sersiツールを使用して画像を確認および修復する方法について説明します。

sersiツール

Alibaba Cloudが提供するsersiツールは、画像のチェックと修復に使用されます。 sersiツールは、画像のチェックと修復中に次のタスクを自動的に完了します。

  • イメージ内のオペレーティングシステム構成とサービス構成をスキャンし、チェックレポートを出力します。 チェックレポートには、イメージオペレーティングシステムと詳細な例外が記載されています。

  • 検出された例外に基づいて修復スクリプトを生成し、修復スクリプトを実行してイメージを修復します。

制限事項

sersiツールは、FreeBSD、Fedora CoreOS、およびWindows Serverオペレーティングシステムをサポートしていません。

手順

ステップ1: 画像の確認

  1. イメージが作成されている仮想マシン (VM) にrootユーザーとしてログオンします。

  2. 次のコマンドを順番に実行して、sersiツールパッケージをダウンロードして解凍します。

    wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/imagecheck/sersi.tar.gz
    tar -xf sersi.tar.gz

    VMがインターネットにアクセスできる場合は、ブラウザからのsersiツールパッケージをダウンロードできます。

  3. 次のコマンドを実行してsersiツールを実行します。

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

    sersiツールは、次の表の項目をチェックします。

    チェックアイテム

    チェックアイテム

    優先度

    説明

    インコンプライアンスの影響

    ヴィルティオ

    高い

    virtioドライバがイメージにインストールされているかどうかを確認します。

    ECSインスタンスは、カーネルベースの仮想マシン (KVM) アーキテクチャに基づいて構築されたVMであり、virtioドライバーがイメージにインストールされている必要があります。

    ECSインスタンスの起動例外が発生しました。

    NVMe

    高い

    イメージにNVMe (Non-Volatile Memory Express) ドライバがインストールされているかどうかを確認します。

    ECS. g7seなどの特定のecsインスタンスタイプはNVMeディスクを使用し、NVMeドライバがイメージにインストールされている必要があります。 NVMeは、SCSI (Small Computer System Interface) やvirtio-blkなどの従来のドライバプロトコルよりも高速な応答速度と高い帯域幅を実現します。 特定のインスタンスタイプをサポートするには、イメージにNVMeドライバーをインストールすることを推奨します。 詳細については、「NVMeプロトコル」をご参照ください。

    ecs.g7seなど、NVMeディスクを使用するインスタンスタイプは使用できません。

    Fstab

    高い

    /etc/fstabファイルの設定を確認します。

    /etc/fstabファイルの設定が正しくない場合 (存在しないデバイスの設定やUUID (universally unique identifier) が正しくない場合) 、システムの起動例外が発生します。

    オペレーティングシステムを期待どおりに起動できません。

    GRUB

    高い

    GRand Unified Bootloader (GRUB) 構成ファイルを確認します。

    GRUBは、カーネルをロードおよびブートするために使用されるツールであり、オペレーティングシステムの重要な構成項目です。 構成が正しくないと、システムの起動例外が発生します。 オペレーティングシステムでGRUB構成ファイルを確認することを推奨します。 たとえば、GRUB構成ファイルをチェックして、デバイス名がブートパーティションの指定に使用されていないことを確認します。 例: root=/dev/sda1。 デバイス名は、環境に応じて異なる場合があります。 代わりにUUIDを使用してブートパーティションを指定することを推奨します。

    オペレーティングシステムの起動例外が発生しました。

    DHCP

    高い

    イメージのネットワーク設定ファイルでDHCP (Dynamic Host Configuration Protocol) が設定されているかどうかを確認します。

    動的IPアドレスをインスタンスに割り当てるように、ネットワークデバイスのDHCPを設定することを推奨します。 静的IPアドレスがイメージで設定されている場合、ネットワーク設定の例外が発生し、イメージを使用するインスタンスが起動できない可能性があります。 また、net.ifnamesパラメーターをカーネル起動パラメーターとしてGRUB設定ファイルに追加し、パラメーターを0に設定して、ネットワークインターフェイスの名前がカーネルで変更されないようにすることをお勧めします。 このように、ネットワークインターフェースコントローラ (NIC) はeth0という名前のままです。

    ネットワークエラーが発生した場合。

    SELinux

    イメージでセキュリティ強化Linux (SELinux) が無効になっているかどうかを確認します。 SELinuxを無効にすることを推奨します。

    ECSインスタンスの起動例外が発生しました。

    OnlineResizeFS

    高い

    イメージ内のファイルシステムをオンラインで拡張できるかどうかを確認します。

    たとえば、イメージ内の仮想ディスク領域のサイズが10 GBで、イメージから100 GBのシステムディスクを持つインスタンスを作成し、そのインスタンスにcloud-initやgrowpartなどのコンポーネントをインストールするとします。 インスタンスが初期化されると、ルートパーティションとファイルシステムは自動的にシステムディスクのサイズ (100 GB) に拡張されます。 詳細については、「Linuxインスタンス上のディスクのパーティションとファイルシステムの拡張」をご参照ください。

    ECSインスタンスのルートパーティションは拡張できません。

    CloudInit

    高い

    cloud-initがイメージにインストールされているかどうかを確認します。

    cloud-initは、インスタンスの起動時にシステム設定を初期化し、ユーザーデータスクリプトを実行します。 システム構成には、NTP (Network Time Protocol) 設定、ソフトウェアリポジトリ、ホスト名、およびSSHキーペアが含まれます。

    特定のシステム初期化設定がありません。

    DiskUsage

    高い

    イメージ内のディスク容量の使用状況を確認します。

    df -hコマンドを実行して、ディスク領域の使用状況を確認し、十分なディスク領域が使用可能であることを確認できます。

    オペレーティングシステムの起動例外が発生しました。

    InodeUsage

    高い

    イメージ内のディスクのインデックスノード (inode) 使用状況を確認します。

    df -iコマンドを実行して、ディスクのinode使用率を確認できます。

    オペレーティングシステムの起動例外が発生しました。

    SystemFileAttribute

    高い

    重要な構成ファイルの属性が正しいかどうかを確認します。

    インスタンスの起動例外または機能例外が発生しました。

    CriticalUser

    高い

    rootなどの重要なユーザーがオペレーティングシステムに存在するかどうかを確認します。

    重要なユーザーがいないと、システムの起動例外とインスタンス機能の例外が発生します。 たとえば、ユーザー名とパスワードを使用してインスタンスに接続することはできません。

    インスタンスの起動例外または機能例外が発生しました。

    QemuGuestAgent

    Quick EMUulator (QEMU) ゲストエージェント (qemu-guest-agent) がオペレーティングシステムにインストールされているかどうかを確認します。

    QEMUゲストエージェントはVM上で実行され、ホストと対話します。 QEMUゲストエージェントがインストールされている場合、ECSに必要な特定のサービスは利用できず、インスタンスはフル機能ではありません。

    特定のインスタンス機能で例外が発生します。

    SshConfig

    高い

    sshd設定ファイルにエラーがないか確認してください。 ほとんどの場合、sshd設定ファイルは /etc/ssh/sshd_configです。

    sshd設定ファイルにエラーが含まれている場合、sshdサービスは開始できず、イメージを使用するECSインスタンスへのSSH接続は確立できません。 sshd設定ファイルの正確性と有効性を確認する必要があります。 次のコマンドを実行できます。

    • sudo sshd -Tコマンドを実行して、すべてのsshd設定オプションを表示します。

    • sudo sshd -tコマンドを実行して、sshd設定ファイルの有効性を確認します。 sshd設定ファイルが有効な場合、情報は返されません。

    イメージを使用するECSインスタンスへのSSH接続は確立できません。

    ファイアウォール

    ファイアウォールサービスが有効かどうかを確認してください。

    オペレーティングシステムでファイアウォールサービスを無効にし、ECSセキュリティグループを使用してインスタンスのインバウンドトラフィックとアウトバウンドトラフィックを管理することを推奨します。 セキュリティグループの詳細については、「概要」をご参照ください。

    システムファイアウォールサービスがインスタンスアクセス失敗を引き起こす可能性があります。

    LibDirectory

    高い

    Red Hatオペレーティングシステムでは、/lib/lib64/usr/lib/usr/lib64を指すシンボリックリンクです。 これらのリンクを変更しないでください。 そうでない場合、システム例外が発生する可能性があります。

    オペレーティングシステムは期待どおりに実行できません。

    SupportMocInstanceTypes

    高い

    イメージがSHENLONGアーキテクチャに基づくインスタンスタイプをサポートしているかどうかを確認します。

    最新のAlibaba Cloud ECSインスタンスファミリーは、ecs.g6やecs.g7などのSHENLONGアーキテクチャに基づいています。 イメージのオペレーティングシステムバージョンとカーネルバージョンが早すぎる場合、イメージがSHENLONGアーキテクチャベースのECSインスタンスで起動されたときに例外が発生する可能性があります。 詳細については、「インスタンスファミリーの概要」をご参照ください。

    ECS. g6やecs.g7などのSHENLONGアーキテクチャベースのecsインスタンスファミリーは使用できません。

    CloudAssistant

    Cloud Assistant Agentがイメージにインストールされているかどうかを確認します。

    Cloud Assistantは、ECS用に開発されたネイティブの自動O&Mツールです。 ECSの効率的な運用管理のために、イメージにCloud Assistant Agentをインストールすることを推奨します。 詳細については、「概要」をご参照ください。

    クラウドベースのO&M効率は悪影響を受けます。

    SecurityCenterAgent

    Security Centerエージェントがイメージにインストールされているかどうかを確認します。

    インスタンスは、Security Centerエージェントがインスタンスにインストールされた後にのみ、Security Centerによって保護できます。

    イメージを使用するインスタンスの脆弱性は識別できず、インスタンスはSecurity Center保護なしで実行されます。

    sersiツールがチェックを完了すると、次のようなチェック結果が返されます。

    サンプルチェック結果

    ------------------------------------------------------------
    
                OS: Alibaba Cloud Linux 3   Kernel: 5.10.134-16.3.al8.x86_64 
                Arch: x86_64       RTC-Mode: utc       Boot-Mode: UEFI
            
    ------------------------------------------------------------
    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ツールは、チェック項目の優先順位に従って、OKFAILEDWARNINGなどのチェック結果を出力します。

    • OK: すべてのチェック項目は要件に準拠しています。

    • 失敗: チェックアイテムが要件を満たしていません。 カスタムイメージから作成されたECSインスタンスは、開始に失敗するか、ネットワーク例外が発生する可能性があります。 イメージをインポートする前に、ステップ2: イメージを修復してエラー項目を修復することを推奨します。

    • 警告: チェック項目が要件を満たしていません。 カスタムイメージから作成されたECSインスタンスは、Security Center保護なしで実行され、Cloud Assistantによる自動O&MはECSインスタンスでは使用できません。 イメージをインポートする前に、ステップ2: イメージを修復してO&M効率を向上させるためにエラー項目を修復することを推奨します。

ステップ2: 画像を修復する

次のコマンドを実行して、イメージを自動的に修復します。

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

次の表に、上記のコマンドで使用されるパラメーターを示します。 ビジネス要件に基づいてパラメーターを設定します。

パラメーター

必須

説明

run <case>

はい

修理する必要があるチェックアイテム。 サポートされているチェック項目には、cloudinitvirtionvmefstabgrubdhcpselinuxgrowpartaegisassistfirewallsshdfileattributeqemugestagentが含まれます。 ビジネス要件に基づいてチェック項目を指定します。

  • すべてのアイテムをチェックし、例外のあるアイテムを修復します。 例:. /main.sh -- target=image -- すべて実行.

  • 特定のアイテムを確認して修理します。 たとえば、cloud-initがイメージにインストールされているかどうかを確認するには、. /main.sh -- target=image -- cloudinitを実行するコマンドを実行します。

  • 複数のアイテムをチェックして修理します。 チェック項目をスペースで区切ります。 例:. /main.sh -- target=image -- cloudinit virtio assistを実行.

[-- デバッグ]

いいえ

デバッグメッセージを出力するには、このパラメーターを指定します。

[-- ドライラン]

いいえ

  • このパラメーターを指定すると、sersiツールは修復スクリプトを印刷し、修復スクリプトは実行しません。

  • このパラメーターを指定しない場合、sersiツールは修復スクリプトを実行し、修復スクリプトを印刷しません。

[-y]

いいえ

  • このパラメーターを指定すると、sersiツールは操作の確認を求めずに修復スクリプトを実行します。

  • このパラメーターを指定しない場合、sersiツールは修復スクリプトを実行するかどうかの確認を求めます。 yを入力して続行できます。

重要

sersiツールは修復スクリプトをロールバックできません。 修復スクリプトを実行した後、オペレーティングシステムへの変更を取り消すことはできません。 次の操作に注意することを強くお勧めします。

  • 修復スクリプトを実行する前に、[-- dry-run] パラメーターを指定して、修復スクリプトを実行せずに修復スクリプトを表示します。 キャッシュディレクトリに保存されている修復スクリプトを表示またはデバッグできます。 スクリプトが正しいことを確認したら、[-- dry-run] パラメーターを指定せずに修復スクリプトを実行します。

  • sersiツールを使用して修復スクリプトを実行する場合は、-yパラメーターを指定しないでください。 これにより、修復スクリプトを実行するかどうかを確認できます。これにより、修復スクリプトによる偶発的な変更やデータの損失を防ぐことができます。

サンプル修復コマンド

説明

自動修復できないチェックアイテムは、sersiツールを使用して手動で修復できます。

チェックアイテム

自動修理方法

コマンドの自動修復

マニュアル修理方法

ヴィルティオ

このツールは、virtioドライバ構成を含むinitrdファイルを再生成するdracut構成ファイルにvirtioドライバ構成を追加します。

. /main.sh -- target=image -- run virtio -- debug -- dry-run

virtioドライバをインストールします

Nvme

このツールは、NVMeドライバ構成を含むinitrdファイルを再生成するdracut構成ファイルにNVMeドライバ構成を追加します。 同時に、nvmeまたはnvme_coreカーネルモジュールのtimeoutパラメーターがGRUB構成ファイルに追加され、nvme I/O処理の信頼性が向上します。

重要

変更された設定を有効にするには、システムを手動で再起動する必要があります。

. /main.sh -- target=image -- run nvme -- debug

カスタムイメージ用のNVMeドライバをインストールするにはどうすればよいですか?

Fstab

このツールは、/etc/fstabファイル内の異常なマウントエントリをコメントアウトします。

. /main.sh -- target=image -- run fstab -- debug

/etc/fstabファイルの設定方法については、「データディスクを自動的にマウントするためのfstabファイルのUUIDの設定」をご参照ください。

グラブ

このツールは、GRUB設定ファイルのrootdevice値を修正します。

. /main.sh -- target=image -- run grub -- debug

なしだ

Dhcp

このツールは、ネットワークサービス構成ファイルを構成します。 構成ファイルでは、NIC名はeth0で、dhcpパラメーターはtrueに設定されています。 同時に、カーネル起動パラメーターbiosdevname=0 net.ifnames=0をGRUB設定ファイルに追加し、NIC名がeth0であることを確認できます。

重要

変更された設定を有効にするには、システムを手動で再起動する必要があります。

. /main.sh -- target=image -- run dhcp -- debug

なしだ

Selinux

このツールは、/etc/selinux/config設定ファイルでモードをdisabledに変更します。 このツールは、カーネル起動パラメーターselinux=0を追加して、GRUB設定ファイルでSElinuxを無効にします。

重要

変更された設定を有効にするには、システムを手動で再起動する必要があります。

. /main.sh -- target=image -- selinux -- デバッグを実行する

SELinuxを無効にする方法については、「SELinuxの有効化または無効化」をご参照ください。

OnlineResizeFS

このツールは、ルートパーティション拡張をサポートするようにgrowpartスクリプトを構成します。

. /main.sh -- target=image -- groupart -- デバッグを実行する

  • cloud-initをインストールします

  • growpartユーティリティをインストールします。 growpartのインストール方法については、インスタンスの作成時にディスクのサイズを変更した後、システムディスクのルートパーティションが自動的に拡張されない場合はどうすればよいですか? Install cloud-initトピックのセクション。

CloudInit

このツールは、一時的なソフトウェアリポジトリを設定し、パッケージマネージャを使用してcloud-initソフトウェアパッケージをインストールし、Cloud-init設定ファイルでデータソースをAlibaba cloudに設定します。

. /main.sh -- target=image -- cloudinit -- debugを実行する

cloud-initをインストールします

DiskUsage

チェックアイテムは自動的に修復できません。 チェックアイテムは手動でのみ修復できます。

非該当

不要なファイルを手動で削除します。

InodeUsage

チェックアイテムは自動的に修復できません。 チェックアイテムは手動でのみ修復できます。

非該当

不要なファイルを手動で削除します。

SystemFileAttribute

チェックアイテムは自動的に修復できます。

このツールは、検出されたファイルの例外属性を削除します。

. /main.sh -- target=image -- run fileattribute -- debug

chattrコマンドを実行して /etc/shadowなどのファイルをロックしないでください。

CriticalUser

チェックアイテムは自動的に修復できません。 チェックアイテムは手動でのみ修復できます。

非該当

rootアカウントを保持します。

QemuGuestAgent

チェックアイテムは自動的に修復できます。

このツールは、QEMUゲストエージェント (qemu-guest-agent) をアンインストールします。

. /main.sh -- target=image -- run qemuguestagent -- debug

QEMUゲストエージェント (qemu-guest-agent) をアンインストールします。

SshConfig

チェックアイテムは自動的に修復できます。

このツールは、SSHパスワード認証とルートユーザーログオンを有効にします。

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

sshd設定ファイルを確認してください。

ファイアウォール

チェックアイテムは自動的に修復できます。

このツールはファイアウォールサービスを無効にします。

. /main.sh -- target=image -- run firewalld -- debug

システムファイアウォールサービスを無効にします。

LibDirectory

チェックアイテムは自動的に修復できません。 チェックアイテムは手動でのみ修復できます。

非該当

/libおよび /lib64シンボリックリンクが指すパスを、絶対パスから相対パスに変更します。

SupportMocInstanceTypes

チェックアイテムは自動的に修復できません。 チェックアイテムは手動でのみ修復できます。

非該当

ほとんどの場合、SHENLONGアーキテクチャベースのインスタンスタイプをサポートしていないオペレーティングシステムのバージョンは、EOLに達し、サポートされなくなった以前のバージョンです。 できるだけ早い機会にオペレーティングシステムのバージョンをアップグレードし、ディストリビューターによってサポートおよび更新されているオペレーティングシステムのバージョンを使用することを推奨します。

CloudAssistant

チェックアイテムは自動的に修復できます。

このツールは、Cloud Assistant Agentをインストールします。

. /main.sh -- target=image -- run assist -- debug

Cloud Assistant Agentのインストール

SecurityCenterAgent

チェックアイテムは自動的に修復できます。

このツールは、Alibaba Cloud Security Centerエージェントをインストールします。

. /main.sh -- target=image -- run aegis -- debug

Security Center エージェントをインストールします

サンプル修理結果

2024-07-19 17:20:54,480 root [INFO]: sersi run finished, print summary report
2024-07-19 17:20:54,480 root [INFO]: casename: cloudinit                            NO_FOUND_RISK
2024-07-19 17:20:54,480 root [INFO]: casename: virtio                               OK
2024-07-19 17:20:54,480 root [INFO]: casename: nvme                                 OK_Need_Reboot
2024-07-19 17:20:54,480 root [INFO]: casename: fstab                                NO_FOUND_RISK
2024-07-19 17:20:54,480 root [INFO]: casename: grub                                 NO_FOUND_RISK
2024-07-19 17:20:54,480 root [INFO]: casename: dhcp                                 NO_FOUND_RISK
2024-07-19 17:20:54,480 root [INFO]: casename: selinux                              NO_FOUND_RISK
2024-07-19 17:20:54,480 root [INFO]: casename: growpart                             NO_FOUND_RISK
2024-07-19 17:20:54,480 root [INFO]: casename: aegis                                NO_FOUND_RISK
2024-07-19 17:20:54,480 root [INFO]: casename: assist                               DRY_RUN
2024-07-19 17:20:54,480 root [INFO]: casename: firewall                             NO_FOUND_RISK
2024-07-19 17:20:54,480 root [INFO]: casename: sshd                                 NO_FOUND_RISK
2024-07-19 17:20:54,480 root [INFO]: casename: systemfileattribute                  NO_FOUND_RISK
2024-07-19 17:20:54,480 root [INFO]: casename: qemu_guest_agent                     FAILED

修復が完了すると、ツールは次のサンプル修復結果を返します。

  • OK: チェックアイテムが修復されました。

  • NO_FOUND_RISK: イメージ内のチェック項目に例外はありません。

  • OK_Need_Reboot: チェック項目が修復され、システムを再起動する必要があります。

  • DRY_RUN: ツールはアイテムの例外を検出します。 このツールはドライランモードで動作して修復スクリプトを印刷しますが、修復スクリプトは実行しません。

  • 失敗: チェックアイテムは修復できません。

関連ドキュメント

  • イメージがイメージチェックに合格した後、イメージファイルを取得してAlibaba Cloudにインポートできます。 イメージファイルの取得方法については、「Linuxイメージファイルの取得」をご参照ください。

  • イメージをAlibaba Cloudにインポートするとき、イメージチェック機能を使用してイメージが適切に設定されているかどうかを確認し、CloudOps Orchestration Service (OOS) を使用してイメージを修復できます。 詳細については、「カスタムイメージのインポート」および「イメージチェック機能の概要」をご参照ください。