如何为 Azure Ubuntu VM 创建交换?

bit*_*inn 9 ubuntu azure cloud-init

我已经阅读了很多关于此的帖子,但我仍然不确定正确的方法,假设:

  1. 我有一个由 Azure 创建并在其上运行的默认 Ubuntu 14.04 LTS VM,它没有交换

  2. 我想使用现有的 VM 存储创建交换,而不是使用附加存储创建新磁盘

我读过的帖子:

讨论了许多解决方案,但我似乎找不到一个可以在服务器重新启动后持续存在的解决方案(可能是由于 cloud-init 对映像分区有自己的想法),有人可以就最佳实践向我提出建议吗?

Bru*_*ria 8

假设您已安装 Linux 代理。您所要做的就是在 /etc/waagent.conf 下启用交换。这些是相关的行:

ResourceDisk.Format=y                   # Format if unformatted. If 'n', resour$
ResourceDisk.Filesystem=ext4            # Typically ext3 or ext4. FreeBSD image$
ResourceDisk.MountPoint=/mnt/resource   #
ResourceDisk.EnableSwap=y               # Create and use swapfile on resource d$
ResourceDisk.SwapSizeMB=2048            # Size of the swapfile.
Run Code Online (Sandbox Code Playgroud)

它将自动使用资源磁盘(每个 VM 附带的)来创建交换。无需为其创建磁盘。

更新:您还需要执行以下步骤才能创建交换文件:

umount /mnt
service walinuxagent restart
Run Code Online (Sandbox Code Playgroud)

  • 我联系了 MS 支持,发现解决方案是设置“ResourceDisk.Format”、“ResourceDisk.EnableSwap”和“ResourceDisk.SwapSizeMB”。但重要的一步是手动执行`sudo service walinuxagent restart` 来创建交换文件,因为只是重新启动服务器对我不起作用。 (2认同)
  • 不适用于从 Azure Gallery 映像创建的 Ubuntu 14.04 LTS VM。执行完所有步骤后,`swapon -s` 仍然显示交换文件的空列表。 (2认同)