Skip to content

Commit 36b42bd

Browse files
authored
Update optimization.md
Added proper steps to manage swap using images that have cloud-init as its provisioning mechanism. This is a reference for the steps as well: https://support.microsoft.com/en-au/help/4577868/swap-file-is-not-re-created-after-a-linux-vm-restarts
1 parent 909c7a9 commit 36b42bd

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

articles/virtual-machines/linux/optimization.md

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,32 @@ By default when you create a VM, Azure provides you with an OS disk (**/dev/sda*
4242
## Linux Swap Partition
4343
If your Azure VM is from an Ubuntu or CoreOS image, then you can use CustomData to send a cloud-config to cloud-init. If you [uploaded a custom Linux image](upload-vhd.md?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json) that uses cloud-init, you also configure swap partitions using cloud-init.
4444

45-
On Ubuntu Cloud Images, you must use cloud-init to configure the swap partition. For more information, see [AzureSwapPartitions](https://wiki.ubuntu.com/AzureSwapPartitions).
45+
For all images that are being provisioned and supported by cloud-init, which can all be found [here](https://docs.microsoft.com/en-us/azure/virtual-machines/linux/using-cloud-init). You cannot use the **/etc/waagent.conf** to manage swap.
46+
47+
The easiest method when using cloud-init is to follow the steps below:
48+
49+
Create a file called **create_swapfile.sh** under **/var/lib/cloud/scripts/per-boot** folder.
50+
**$ sudo touch /var/lib/cloud/scripts/per-boot/create_swapfile.sh**
51+
52+
Add the following lines to the file:
53+
**$ sudo vi /var/lib/cloud/scripts/per-boot/create_swapfile.sh**
54+
55+
```
56+
#!/bin/sh
57+
if [ ! -f '/mnt/swapfile' ]; then
58+
fallocate --length 2GiB /mnt/swapfile
59+
chmod 600 /mnt/swapfile
60+
mkswap /mnt/swapfile
61+
swapon /mnt/swapfile
62+
swapon -a ; fi
63+
```
64+
**NOTE**: You can change the value according to your need and also based on the available space in your resource disk which is different based on the VM size being used.
65+
66+
Make the file executable by using:
67+
**$ sudo chmod +x /var/lib/cloud/scripts/per-boot/create_swapfile.sh**
68+
69+
You can execute the script right after the last step for the swapfile to be created right away:
70+
**$ sudo /var/lib/cloud/scripts/per-boot/./create_swapfile.sh**
4671

4772
For images without cloud-init support, VM images deployed from the Azure Marketplace have a VM Linux Agent integrated with the OS. This agent allows the VM to interact with various Azure services. Assuming you have deployed a standard image from the Azure Marketplace, you would need to do the following to correctly configure your Linux swap file settings:
4873

0 commit comments

Comments
 (0)