共用方式為


使用 cloud-init 在 Linux 虛擬機器上設定交換分割區

適用於:✔️ Linux VM ✔️ 彈性擴展集

這篇文章會示範如何使用 cloud-init 在各種 Linux 發行套件上設定交換分割區。 傳統上是由 Linux 代理程式 (WALA) 根據發行套件的需求來設定交換分割區。 本文將概述在佈建期間,使用 cloud-init 依需求建置交換分割區的流程。 如需深入了解 cloud-init 如何以原生方式在 Azure 和支援的 Linux 散發版本中運作,請參閱 cloud-init 概觀

建立 Ubuntu 型映像的交換分割區

依預設,Azure 上的 Ubuntu 資源庫映像不會建立交換分割區。 若要使用 cloud-init 在虛擬機器佈建期間啟用交換分割區設定,請參閱 Ubuntu wiki 上的 AzureSwapPartitions 文件

建立 RHEL 型映像的交換分割區

在您目前的殼層中,建立名為 cloud_init_swappart.txt 的檔案,並貼上下列設定。 針對此案例,在 Cloud Shell 中 (而不是本機電腦上) 建立該檔案。 您可以使用任何您想要的編輯器。 請確定已正確複製整個 cloud-init 檔案,特別是第一行。

#cloud-config
disk_setup:
  ephemeral0:
    table_type: gpt
    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", "0", "0"]

掛接是使用 nofail 選項建立而成,確保即使掛接未順利完成,開機程序仍會繼續執行。

部署此映像前,您必須使用 az group create 命令建立資源群組。 Azure 資源群組是在其中部署與管理 Azure 資源的邏輯容器。 下列範例會在 eastus 位置建立名為 myResourceGroup 的資源群組。

az group create --name myResourceGroup --location eastus

現在,請使用 az vm create 建立 VM 並以 --custom-data cloud_init_swappart.txt 指定 cloud-init 檔案,如下所示:

az vm create \
  --resource-group myResourceGroup \
  --name vmName \
  --image imageCIURN \
  --custom-data cloud_init_swappart.txt \
  --generate-ssh-keys

注意

請據以取代 myResourceGroupvmNameimageCIURN 值。 確定已選擇具有 Cloud-init 的映像。

修改已在執行中的機器

如果您已經佈建伺服器,而且想要修改暫時性儲存體的掛接點,並且想要將磁碟的一部分設定為交換空間,請採取下列步驟。

/etc/cloud/cloud.cfg.d 目錄中建立名為 00-azure-swap.cfg 的 cloud-init 組態檔,其中包括下列內容:

#cloud-config
disk_setup:
  ephemeral0:
    table_type: gpt
    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", "0", "0"]

接下來,在 /etc/systemd/system.conf 檔案中附加一行,內容如下:

DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"

注意

檔案名稱可任意指定,可替換為您偏好的任何特定名稱,只需保留 .cfg 後綴即可,並確保在 CLOUD_CFG 參數行中也反映這些變更。

完成變更之後,機器必須解除配置或重新部署,變更才會生效。

確認已建立交換分割區

以 SSH 連線到顯示於由上述命令所產生之輸出中的 VM 公用 IP 位址。 輸入您自己的 userpublicIpAddress,如下所示:

ssh <user>@<publicIpAddress>

一旦您使用 SSH 連線至虛擬機器,就必須檢查是否已建立交換分割區

sudo swapon -s

此命令的輸出如下所示:

Filename                Type        Size    Used    Priority
/dev/sdb2  partition   2494440 0   -1

注意

如果您現有的 Azure 映像已設定交換分割區,但您想要變更新映像的交換分割區設定,就應該要移除現有的交換分割區。 如需詳細資訊,請參閱透過 cloud-init 自訂映像來進行佈建的文件。

下一步

如需設定變更的 cloud-init 範例,請參閱下列文件: