你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Linux VM 上使用 cloud-init 配置交换分区
适用于:✔️ Linux VM ✔️ 灵活规模集
本文介绍如何使用 cloud-init 在各种 Linux 分发版中配置交换分区。 在传统上,交换分区由 Linux 代理 (WALA) 根据分发版的需要进行配置。 本文档概述了在预配期间使用 cloud-init 按需生成交换分区的过程。 有关 cloud-init 如何在 Azure 以及受支持的 Linux 发行版中本机工作的详细信息,请参阅 cloud-init 概述
为基于 Ubuntu 的映像创建交换分区
在 Azure 上,Ubuntu 库映像默认不会创建交换分区。 若要在预配 VM 期间使用 cloud-init 启用交换分区配置,请参阅 Ubuntu wiki 中的 AzureSwapPartitions 文档。
为基于 RHEL 的映像创建交换分区
在当前 shell 中,创建名为 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 连接到 VM 后,请验证是否已创建交换分区
sudo swapon -s
此命令的输出应如下所示:
Filename Type Size Used Priority
/dev/sdb2 partition 2494440 0 -1
注意
如果在现有的 Azure 映像中配置了交换分区,而你想要更改新映像的交换分区配置,则应删除现有的交换分区。 有关更多详细信息,请参阅通过 cloud-init 自定义要进行预配的映像。
后续步骤
有关更多配置更改的 cloud-init 示例,请参阅以下内容: