次の方法で共有


Azure Linux VM のスワップ パーティションを作成する

適用対象: ✔️ Linux VM

Azure Linux VM 上に SWAP パーティションを作成するには、VM のエフェメラル (リソース) ディスクに cloud-init を自動的に作成するように cloud-init を設定する必要があります。 既定では、リソース ディスクは /mnt の下にマウントされます。 これは、Linux VM がホストされている物理サーバー上にあり、待機時間が短くなります。 オペレーティング システムとアプリのパフォーマンスに影響する可能性がある OS ディスクまたはデータ ディスクに SWAP パーティションを作成することはお勧めしません。 リソース ディスクは一時的なストレージのみであるため、通常のデータを格納するために使用しないでください。 VM が別のホストに移動されるか、停止または割り当てが解除されると、このディスクに書き込まれたデータはすべてワイプされます。 SWAP ファイルやキャッシュ ファイルなど、削除できるデータにのみリソース ディスクを使用することをお勧めします。 詳細については、「 Temporary disk」を参照してください。

waagent 構成で SWAP 作成を無効にする

swap の作成が /etc/waagent.conf で構成されている場合は、無効にする必要があります。

  1. このタスクは Cloud-Init によって処理されるようになったため、/etc/waagent.conf 内でリソース ディスクの書式設定と SWAP 構成を無効にします。 パラメーターを次のように編集します。

    # Format if unformatted. If 'n', resource disk will not be mounted.
    ResourceDisk.Format=n
    
    # Create and use SWAPfile on resource disk.
    ResourceDisk.EnableSWAP=n
    
    #Mount point for the resource disk
    ResourceDisk.MountPoint=/mnt
    
    #Size of the SWAPfile.
    ResourceDisk.SWAPSizeMB=0
    
  2. Azure Linux エージェントを再起動します。 さまざまな Linux ディストリビューションの再起動コマンドについては、「 VM 上の Azure Linux エージェントを更新する方法 」を参照してください。

SWAP パーティションを作成する

SWAP パーティションは、次のいずれかのオプションを使用して作成できます。

Note

SWAP パーティションが作成されると、スワップ ファイルも作成されます。

オプション 1: スクリプトを使用して、リソースまたはカスタム ディスク パスの下に SWAP パーティションを作成する
  1. 次のスクリプトを使用して、/var/lib/cloud/scripts/per-boot の下にswap.shという名前の SWAP 作成スクリプトを作成します。

    #!/bin/sh
    
    # Percent of space on the ephemeral disk to dedicate to swap. Here 30% is being used. Modify as appropriate.
    PCT=0.3
    
    # Location of the swap file. Modify as appropriate based on the location of the ephemeral disk.
    LOCATION=/mnt
    
    if [ ! -f ${LOCATION}/swapfile ]
    then
    
        # Get size of the ephemeral disk and multiply it by the percent of space to allocate
        size=$(/bin/df -m --output=target,avail | /usr/bin/awk -v percent="$PCT" -v pattern=${LOCATION} '$0 ~ pattern {SIZE=int($2*percent);print SIZE}')
        echo "$size MB of space allocated to swap file"
    
         # Create an empty file first and set correct permissions
        /bin/dd if=/dev/zero of=${LOCATION}/swapfile bs=1M count=$size
        /bin/chmod 0600 ${LOCATION}/swapfile
    
        # Make the file available to use as swap
        /sbin/mkswap ${LOCATION}/swapfile
    fi
    
    # Enable swap
    /sbin/swapon ${LOCATION}/swapfile
    /sbin/swapon -a
    
    # Display current swap status
    /sbin/swapon -s
    

    スクリプトは起動時に実行され、リソース ディスク内の使用可能な領域の 30% が割り当てられます。 状況に応じて値をカスタマイズできます。

  2. スクリプトを実行可能にする:

    chmod +x /var/lib/cloud/scripts/per-boot/swap.sh
    
  3. VM を停止してから、起動する。 VM の停止と開始は、スワップ ファイル作成後の初回にのみ必要です。

オプション 2: cloud-init を使用してリソース ディスク パスの下に SWAP パーティションを作成する
  1. swap とリソース ディスクの両方を設定するには、/systemd/system.confCLOUD_CFG変数を作成します。

    sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
    
  2. SWAP、リソース ディスクの作成、マウント ポイントを設定する YAML ファイルを作成します。

    sudo cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF
    #cloud-config
    disk_setup:
      ephemeral0:
        table_type: mbr
        layout: [66, [33, 82]]
        overwrite: True
    fs_setup:
      - device: ephemeral0.1
        filesystem: ext4
      - device: ephemeral0.2
        filesystem: swap
    mounts:
      - ["ephemeral0.1", "/mnt"]
      - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
    EOF
    
  3. VM を停止して起動するか、再デプロイしてリソース ディスクに SWAP パーティションを作成します。

オプション 3: cloud-init を使用してカスタム リソース ディスク パスの下に SWAP パーティションを作成する
  1. swap とリソース ディスクの両方を設定するには、/systemd/system.confCLOUD_CFG変数を作成します。

    sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
    
  2. SWAP、リソース ディスクの作成、およびカスタム マウント ポイントを設定する YAML ファイルを作成します ("azure" が例です)。

    sudo cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF
    #cloud-config
    disk_setup:
      ephemeral0:
        table_type: mbr
        layout: [66, [33, 82]]
        overwrite: True
    fs_setup:
      - device: ephemeral0.1
        filesystem: ext4
      - device: ephemeral0.2
        filesystem: swap
    mounts:
      - ["ephemeral0.1", "/azure"]
      - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
    EOF
    

    Note

    カスタム マウント ポイントが YAML ファイルで指定された場所に存在することを確認します。

  3. VM を停止して起動するか、再デプロイしてリソース ディスクに SWAP パーティションを作成します。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。