適用於:✔️ 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
注意
請據以取代 myResourceGroup、vmName 和 imageCIURN 值。 確定已選擇具有 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 位址。 輸入您自己的 user 和 publicIpAddress,如下所示:
ssh <user>@<publicIpAddress>
一旦您使用 SSH 連線至虛擬機器,就必須檢查是否已建立交換分割區
sudo swapon -s
此命令的輸出如下所示:
Filename Type Size Used Priority
/dev/sdb2 partition 2494440 0 -1
注意
如果您現有的 Azure 映像已設定交換分割區,但您想要變更新映像的交換分割區設定,就應該要移除現有的交換分割區。 如需詳細資訊,請參閱透過 cloud-init 自訂映像來進行佈建的文件。
下一步
如需設定變更的 cloud-init 範例,請參閱下列文件: