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

Elastic Compute Service:Alibaba Cloud Linuxイメージの要件

最終更新日:Oct 16, 2024

カスタムイメージをAlibaba Cloudにインポートするか、Alibaba Cloud Marketplaceでカスタムイメージをリリースする前に、イメージはイメージ要件を満たし、Elastic Compute Service (ECS) インスタンスタイプとの互換性に関するテストに合格する必要があります。 これにより、カスタムイメージの可用性とインポート効率が向上し、その後のさまざまなビジネス要件を満たすECSインスタンスの作成が容易になります。 このトピックでは、Alibaba Cloud Linuxイメージの要件について説明します。

ディスクパーティション

イメージの作成中にAlibaba Cloudイメージのディスクを分割する場合は、次の要件を満たしていることを確認してください。

  • ディスクのサイズ変更

    • ディスクは、物理パーティションに基づいて論理パーティションに分割されます。 各ディスクの最後の論理パーティションはルートパーティションとして使用され、システムディスクのパーティションの障害を防ぎます。

    • オンラインディスクのサイズ変更をサポートするオペレーティングシステムの場合、cloud-utils-growpartパッケージをインストールし、growpartユーティリティを使用してパーティションを拡張し、使用可能なディスク領域を占有することを推奨します。 詳細については、「Linuxインスタンス上のディスクのパーティションとファイルシステムの拡張」をご参照ください。

  • パーティションの交換

    イメージを作成するときは、スワップパーティションを使用しないでください。

  • ディスクの取り付け

    fstabファイルとgrubファイルでUUIDを設定する必要があります。 詳細については、「データディスクを自動的にマウントするためのfstabファイルのUUIDの設定」および「Linux Image Grubファイルでファイルディスク識別子をUUIDに変更する方法」をご参照ください。

    重要

    ECSインスタンスに対してfstabファイルが正しく設定されていない場合、インスタンスの再起動後にインスタンスが期待どおりに実行されないことがあります。

  • ディスクサイズ

    システムディスクのサイズは20 GiB以上に設定する必要があります。

必要なソフトウェアとツール

  • virtioドライバーのインストール

    イメージをリリースする前に、イメージのvirtioドライバーがインストールされていること、およびvirtioドライバーが一時ファイルシステムに追加されていることを確認してください。 virtioドライバーは、イメージがECSインスタンスで期待どおりに使用できるようにします。 詳細については、「virtioドライバーのインストール」をご参照ください。

  • NVMeドライバーのインストール

    ecs.g7se、ecs.c7se、ecs.r7seなどの特定のインスタンスファミリーでは、NVMe (Non-Volatile Memory Express) プロトコルを使用してディスクを接続できます。 イメージを使用して上記のインスタンスファミリーのいずれかのECSインスタンスを作成し、インスタンスが期待どおりに実行されるようにする場合は、イメージにNVMeドライバーをインストールします。 詳細については、「」をご参照ください。カスタムイメージ用のNVMeドライバをインストールするにはどうすればよいですか?

  • cloud-init のインストール

    イメージを作成するときは、cloud-initをインストールして、イメージを実行するECSインスタンスを初期化できるようにします。 詳細については、「cloud-init のインストール」をご参照ください。

    説明

    cloud-initを使用してパスワードを変更する場合は、イメージのオペレーティングシステムカーネルがCONFIG_FW_CFG_SYSFS機能をサポートしていることを確認してください。 デフォルトでは、Linuxコミュニティカーネル4.6以降とCentOSカーネル3.10.0-826.el7以降は、CONFIG_FW_CFG_SYSFS機能をサポートしています。 この機能がサポートされているかどうかを確認するには、イメージのソースサーバーでgrep -nr CONFIG_FW_CFG_SYSFS /boot/config-$(uname -r) コマンドを実行します。 コマンド出力にCONFIG_FW_CFG_SYSFS=yが含まれる場合、イメージのカーネルはCONFIG_FW_CFG_SYSFS機能をサポートします。

  • Cloud Assistant のインストール

    イメージを作成するときは、Cloud Assistantをインストールします。 Cloud Assistantは、ECS用に開発されたネイティブの自動O&Mツールです。 Cloud Assistantを使用すると、シェル、PowerShell、バッチコマンドなどのコマンドをバッチ実行して、インスタンスにログインしたり、ジャンプサーバーを使用したりすることなく、パスワードなしでECSインスタンス上でさまざまなタスクを実行できます。 Cloud Assistantを使用して、自動化されたO&Mタスクの実行、ポーリングプロセス、ソフトウェアのインストールまたはアンインストール、サービスの開始または停止、パッチまたはセキュリティアップデートのインストールを行うことができます。 詳細については、「Cloud Assistant Agentのインストール」をご参照ください。

  • Security Centerを使用してイメージのソースサーバーを保護する

    イメージを作成するときは、Alibaba Cloud Security Centerを使用してサーバーを保護することを推奨します。 Security Centerは、アラート通知、ウイルスの検出と削除、Webシェルの検出と削除、クライアント保護、画像スキャンなどのセキュリティ機能を提供し、クラウドアセットとオンプレミスサーバーを保護します。

システム構成

  • クロックの設定

    イメージのハードウェアクロックは、協定世界時 (UTC) またはローカルタイムゾーンにあります。 イメージを作成するときにUTC時間を使用します。 サンプルコマンド:

    cat > $dst << EOF
    0.0 0 0.0
    0
    UTC
    EOF
    
    timedatectl set-local-rtc 0

    詳細については、「Linuxのタイムゾーンとタイムゾーン」をご参照ください。

  • sshdサービスの設定

    イメージを作成するときに、sshdサービスを設定します。

    sshdは、Linuxオペレーティングシステムにリモートでログオンして管理するために使用されるLinuxサービスです。 sshdはSSHを使用して暗号化通信チャネルを確立し、リモートログオンを保護します。 次の例では、/etc/ssh/sshd_configファイルに対して次の変更を実行します。

    UseDNS no
    AddressFamily inet 
    SyslogFacility AUTHPRIV 
    PermitRootLogin yes 
    PasswordAuthentication yes 
  • chronyサービスまたはNTPサービスの設定

    イメージを作成するときは、chronyサービスまたはNetwork Time Protocol (NTP) サービスを設定することを推奨します。

    chronyとNTPは、コンピュータクロックをタイムソースと同期させて時間の正確さを確保し、時間の不一致によって引き起こされる問題を防ぐために使用されるネットワークプロトコルです。

    chronyサービスの設定に使用されるサンプルコマンド

    chrony_file=/etc/chrony.conf
    cat >$chrony_file <<EOF
    # Use Alibaba NTP server
    # Public NTP
    # Alicloud NTP
    
    
    server ntp.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
    server ntp.aliyun.com minpoll 4 maxpoll 10 iburst
    server ntp1.aliyun.com minpoll 4 maxpoll 10 iburst
    server ntp1.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
    server ntp10.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
    server ntp11.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
    server ntp12.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
    server ntp2.aliyun.com minpoll 4 maxpoll 10 iburst
    server ntp2.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
    server ntp3.aliyun.com minpoll 4 maxpoll 10 iburst
    server ntp3.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
    server ntp4.aliyun.com minpoll 4 maxpoll 10 iburst
    server ntp4.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
    server ntp5.aliyun.com minpoll 4 maxpoll 10 iburst
    server ntp5.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
    server ntp6.aliyun.com minpoll 4 maxpoll 10 iburst
    server ntp6.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
    server ntp7.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
    server ntp8.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
    server ntp9.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
    
    # Ignore stratum in source selection.
    stratumweight 0.05
    
    # Record the rate at which the system clock gains/losses time.
    driftfile /var/lib/chrony/drift
    
    # Enable kernel RTC synchronization.
    rtcsync
    
    # In first three updates step the system clock instead of slew
    # if the adjustment is larger than 10 seconds.
    makestep 10 3
    
    # Allow NTP client access from local network.
    #allow 192.168/16
    
    # Listen for commands only on localhost.
    bindcmdaddress 127.0.0.1
    bindcmdaddress ::1
    
    # Disable logging of client accesses.
    noclientlog
    
    # Send a message to syslog if a clock adjustment is larger than 0.5 seconds.
    logchange 0.5
    
    logdir /var/log/chrony
    #log measurements statistics tracking
    EOF

    NTPサービスの設定に使用されるサンプルコマンド

    ntp_conf=/etc/ntp.conf
        cat > $ntp_conf << EOF
    driftfile  /var/lib/ntp/drift
    pidfile    /var/run/ntpd.pid
    logfile    /var/log/ntp.log
    
    
    # Access Control Support
    restrict    default kod nomodify notrap nopeer noquery
    restrict -6 default kod nomodify notrap nopeer noquery
    restrict 127.0.0.1
    restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap nopeer noquery
    restrict 172.16.0.0 mask 255.240.0.0 nomodify notrap nopeer noquery
    restrict 100.64.0.0 mask 255.192.0.0 nomodify notrap nopeer noquery
    restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap nopeer noquery
    
    
    # local clock
    server 127.127.1.0
    fudge  127.127.1.0 stratum 10
    
    restrict ntp.aliyun.com nomodify notrap nopeer noquery
    restrict ntp.cloud.aliyuncs.com nomodify notrap nopeer noquery
    restrict ntp1.aliyun.com nomodify notrap nopeer noquery
    restrict ntp1.cloud.aliyuncs.com nomodify notrap nopeer noquery
    restrict ntp10.cloud.aliyuncs.com nomodify notrap nopeer noquery
    restrict ntp11.cloud.aliyuncs.com nomodify notrap nopeer noquery
    restrict ntp12.cloud.aliyuncs.com nomodify notrap nopeer noquery
    restrict ntp2.aliyun.com nomodify notrap nopeer noquery
    restrict ntp2.cloud.aliyuncs.com nomodify notrap nopeer noquery
    restrict ntp3.aliyun.com nomodify notrap nopeer noquery
    restrict ntp3.cloud.aliyuncs.com nomodify notrap nopeer noquery
    restrict ntp4.aliyun.com nomodify notrap nopeer noquery
    restrict ntp4.cloud.aliyuncs.com nomodify notrap nopeer noquery
    restrict ntp5.aliyun.com nomodify notrap nopeer noquery
    restrict ntp5.cloud.aliyuncs.com nomodify notrap nopeer noquery
    restrict ntp6.aliyun.com nomodify notrap nopeer noquery
    restrict ntp6.cloud.aliyuncs.com nomodify notrap nopeer noquery
    restrict ntp7.cloud.aliyuncs.com nomodify notrap nopeer noquery
    restrict ntp8.cloud.aliyuncs.com nomodify notrap nopeer noquery
    restrict ntp9.cloud.aliyuncs.com nomodify notrap nopeer noquery
    
    
    server ntp.aliyun.com iburst minpoll 4 maxpoll 10
    server ntp.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
    server ntp1.aliyun.com iburst minpoll 4 maxpoll 10
    server ntp1.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
    server ntp10.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
    server ntp11.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
    server ntp12.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
    server ntp2.aliyun.com iburst minpoll 4 maxpoll 10
    server ntp2.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
    server ntp3.aliyun.com iburst minpoll 4 maxpoll 10
    server ntp3.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
    server ntp4.aliyun.com iburst minpoll 4 maxpoll 10
    server ntp4.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
    server ntp5.aliyun.com iburst minpoll 4 maxpoll 10
    server ntp5.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
    server ntp6.aliyun.com iburst minpoll 4 maxpoll 10
    server ntp6.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
    server ntp7.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
    server ntp8.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
    server ntp9.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10
    EOF
  • MOTDサービスの設定

    イメージを作成するときは、Message of the Day (MOTD) サービスを設定することをお勧めします。

    MOTDサービスは、Linuxオペレーティングシステムにログオンするときにメッセージやアナウンスを表示するために使用されるLinux機能です。 サンプルコマンド:

    echo -e "\nWelcome to Alibaba Cloud Elastic Compute Service !  \n" > /etc/motd
  • Firewalldサービスを無効にする

    イメージを作成するときは、Firewalldサービスを無効にすることを推奨します。 Firewalldは、Linuxオペレーティングシステム用のファイアウォール管理サービスです。 Firewalldではなくセキュリティグループがクラウドで保護されます。 サンプルコマンド:

    systemctl stop firewalld
    systemctl disable firewalld
  • pipリポジトリの設定

    pipリポジトリが設定されている場合は、Alibaba Cloud pipリポジトリのアドレスを使用して、Alibaba Cloudから最新のソフトウェアパッケージを取得することを推奨します。 ~/.pip/pip.confファイルのサンプルコンテンツ:

    [global]
    index-url=http://mirrors.cloud.aliyuncs.com/pypi/simple/
    
    [install]
    trusted-host=mirrors.cloud.aliyuncs.com
  • ネットワーク設定を構成するConfigure the network settings

    NetworkManagerまたはネットワークサービスを使用する場合は、/etc/sysconfig/network-scripts/ifcfg-eth0ファイルを設定します。

    DEVICE=eth0
    BOOTPROTO=dhcp
    ONBOOT=yes

    その他のネットワークサービス設定については、「セカンダリENIの設定」をご参照ください。

カーネルパラメーターの設定

  • kerneloptパラメーターの設定

    イメージを作成するときは、GRand Unified Bootloader (GRUB) のkernelopeカーネルパラメーターを設定して、オペレーティングシステムが期待どおりに起動できるようにします。 次の例では、Debianオペレーティングシステムが使用されています。

    1. /etc/default/grubファイルで、次のデータをGRUB_CMDLINE_LINUX= 行に追加します。

      • x86_64アーキテクチャ

        net.ifnames=0 console=tty0 console=ttyS0,115200n 8
      • Arm64アーキテクチャ

        net.ifnames=0 console=tty0 console=ttyAMA0,115200n 8
    2. sudo update-grub2コマンドを実行して、GRUB設定を有効にします。

      説明

      GRUB構成ファイルのパスは、オペレーティングシステムによって異なります。 詳細については、「」をご参照ください。カスタムイメージ用のNVMeドライバをインストールするにはどうすればよいですか?

  • sysctlパラメーターの設定

    イメージを作成するときは、sysctlパラメーターを設定して、Linuxカーネルのランタイムパラメーターを調整および最適化することを推奨します。

    1. /etc/sysctl.confファイルで次の変更を実行します。

      vm.swappiness = 0
      kernel.sysrq = 1
      
      net.ipv4.neigh.default.gc_stale_time = 120
      
      net.ipv4.conf.all.rp_filter = 0
      net.ipv4.conf.default.rp_filter = 0
      net.ipv4.conf.default.arp_announce = 2
      net.ipv4.conf.lo.arp_announce = 2
      net.ipv4.conf.all.arp_announce = 2
      
      net.ipv4.tcp_max_tw_buckets = 5000
      net.ipv4.tcp_syncookies = 1
      net.ipv4.tcp_max_syn_backlog = 1024
      net.ipv4.tcp_synack_retries = 2
      net.ipv4.tcp_slow_start_after_idle = 0
    2. sudo sysctl -pコマンドを実行して、カーネルパラメーターの変更を有効にします。

システムセキュリティの推奨事項

Alibaba Cloudにカスタムイメージをインポートする前に、システムのセキュリティを向上させるために、次の項目に注意してください。

  • rootアカウントをロックします。 これにより、rootパスワードが設定されていても、他のユーザーはrootアカウントとパスワードを使用してシステムにログインできなくなります。

  • パスワードベースのログインを無効にするには、PasswordAuthenticationパラメーターを変更します。

    説明

    インスタンスの初期化にルートパスワードを設定した場合、PasswordAuthenticationパラメーターをyesに設定します。これは、パスワードベースのログインが有効になっていることを示します。

サンプルコード:

  dst=/etc/ssh/sshd_config
  sed -i 's/^SyslogFacility.*//' $dst
  sed -i 's/^PermitRootLogin.*//' $dst
  sed -i 's/^PasswordAuthentication.*//' $dst

  echo UseDNS no >> $dst
  echo SyslogFacility AUTHPRIV >> $dst
  echo PasswordAuthentication no >> $dst

  passwd -l root
  sed -i -e 's/root:[^:]*:/root:*:/g' /etc/shadow

イメージ情報をクリア

独立系ソフトウェアベンダー (ISV) がイメージをリリースする前に、ISVはビジネス要件に基づいて履歴レコードとログをクリアできます。