如何为 Azure Ubuntu VM 创建交换?

如何为 Azure Ubuntu VM 创建交换?

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

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

  2. 我想使用现有的虚拟机存储创建交换,而不是使用额外的存储创建新的磁盘

我读过的帖子:

讨论了许多解决方案,但我似乎找不到一个能够在服务器重启后仍然存在的解决方案(可能是因为 cloud-init 对图像分区有自己的想法),有人可以给我一些最佳实践的建议吗?

答案1

假设您已安装 Linux Agent。您所要做的就是在 /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.

它将自动使用资源磁盘(每个虚拟机都自带)来创建交换。无需为其创建磁盘。

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

umount /mnt
service walinuxagent restart

答案2

布鲁诺的回答是一个很好的起点,但它只有在我重新启动并在启动后再给它一分钟后才起作用。

a. 启用交换/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.

b. 以 root 身份执行以下操作,包括重新启动计算机:

umount /mnt
service walinuxagent restart
reboot

c. 启动后,仍需要一些时间才能真正启用交换。您可以使用 进行检查swapon -s

答案3

我认为正确的做法是让 cloud-init 和 waagent 能够“友好”地协同工作(从Cloud-Init Azure 文档)是将这些值设置为

# disabling provisioning turns off all 'Provisioning.*' function
Provisioning.Enabled=n
# this is currently not handled by cloud-init, so let walinuxagent do it.
ResourceDisk.Format=y
ResourceDisk.MountPoint=/mnt

我尝试更改挂载点,但似乎没有正常工作,因此文档中关于这些值的信息可能是准确的

然后您可以根据需要自定义交换选项

# Create and use swapfile on resource disk.
ResourceDisk.EnableSwap=y

# Size of the swapfile.
ResourceDisk.SwapSizeMB=8192

基本重启后,新的交换就正常了

sudo service walinuxagent restart

free -m
             total       used       free     shared    buffers     cached
Mem:          3944        882       3061         44         29        163
-/+ buffers/cache:        689       3255
Swap:         8192          0       8192

答案4

相关内容