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 で構成されている場合は、無効にする必要があります。
このタスクは 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
Azure Linux エージェントを再起動します。 さまざまな Linux ディストリビューションの再起動コマンドについては、「 VM 上の Azure Linux エージェントを更新する方法 」を参照してください。
SWAP パーティションを作成する
SWAP パーティションは、次のいずれかのオプションを使用して作成できます。
Note
SWAP パーティションが作成されると、スワップ ファイルも作成されます。
オプション 1: スクリプトを使用して、リソースまたはカスタム ディスク パスの下に SWAP パーティションを作成する
次のスクリプトを使用して、/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% が割り当てられます。 状況に応じて値をカスタマイズできます。
スクリプトを実行可能にする:
chmod +x /var/lib/cloud/scripts/per-boot/swap.sh
VM を停止してから、起動する。 VM の停止と開始は、スワップ ファイル作成後の初回にのみ必要です。
オプション 2: cloud-init を使用してリソース ディスク パスの下に SWAP パーティションを作成する
swap とリソース ディスクの両方を設定するには、/systemd/system.conf に
CLOUD_CFG
変数を作成します。sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
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
VM を停止して起動するか、再デプロイしてリソース ディスクに SWAP パーティションを作成します。
オプション 3: cloud-init を使用してカスタム リソース ディスク パスの下に SWAP パーティションを作成する
swap とリソース ディスクの両方を設定するには、/systemd/system.conf に
CLOUD_CFG
変数を作成します。sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
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 ファイルで指定された場所に存在することを確認します。
VM を停止して起動するか、再デプロイしてリソース ディスクに SWAP パーティションを作成します。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。