Создание секции SWAP для виртуальной машины Linux Azure
Область применения: ✔️ виртуальные машины Linux
Чтобы создать секцию SWAP на виртуальных машинах Linux Azure, необходимо настроить cloud-init, чтобы автоматически создать ее на эфемерном (ресурсе) виртуальной машины. Диск ресурсов подключен /mnt
по умолчанию. Он расположен на физическом сервере, на котором размещена виртуальная машина Linux и имеет меньшую задержку. Не рекомендуется создавать секции SWAP на дисках ОС или дисках данных, которые могут повлиять на производительность операционной системы и приложений. Важно помнить, что диск ресурсов никогда не следует использовать для хранения обычных данных, так как это только временное хранилище. При перемещении виртуальной машины на другой узел или остановлен или освобожден, все данные, записанные на этот диск, будут удалены. Рекомендуется использовать диск ресурсов только для данных, которые можно удалить, такие как SWAP и кэширование файлов. Дополнительные сведения см. в разделе "Временный диск".
Отключение создания SWAP в конфигурации waagent
Если создание SWAP настроено в файле /etc/waagent.conf, необходимо отключить его.
Отключите форматирование дисков ресурсов и конфигурацию SWAP в файле /etc/waagent.conf, так как эта задача теперь обрабатывается Cloud-Init. Задайте параметры следующим образом:
# Format if unformatted. If 'n', resource disk will not be mounted. ResourceDisk.Format=n # Create and use SWAPfile on resource disk. ResourceDisk.EnableSWAP=n #Mount point for the resource disk ResourceDisk.MountPoint=/mnt #Size of the SWAPfile. ResourceDisk.SWAPSizeMB=0
Перезапустите агент Azure Linux. Сведения о командах перезапуска для разных дистрибутивов Linux см. в статье об обновлении агента Linux на виртуальной машине .
Создание секции SWAP
Вы можете создать секцию SWAP с помощью одного из следующих параметров.
Примечание.
При создании секции SWAP файл буфера также создается на нем.
Вариант 1. Создание секции SWAP в ресурсе или пользовательском пути к диску с помощью скриптов
Создайте скрипт создания SWAP с именем swap.sh в разделе /var/lib/cloud/scripts/per-boot с помощью следующего сценария:
#!/bin/sh # Percent of space on the ephemeral disk to dedicate to swap. Here 30% is being used. Modify as appropriate. PCT=0.3 # Location of the swap file. Modify as appropriate based on the location of the ephemeral disk. LOCATION=/mnt if [ ! -f ${LOCATION}/swapfile ] then # Get size of the ephemeral disk and multiply it by the percent of space to allocate size=$(/bin/df -m --output=target,avail | /usr/bin/awk -v percent="$PCT" -v pattern=${LOCATION} '$0 ~ pattern {SIZE=int($2*percent);print SIZE}') echo "$size MB of space allocated to swap file" # Create an empty file first and set correct permissions /bin/dd if=/dev/zero of=${LOCATION}/swapfile bs=1M count=$size /bin/chmod 0600 ${LOCATION}/swapfile # Make the file available to use as swap /sbin/mkswap ${LOCATION}/swapfile fi # Enable swap /sbin/swapon ${LOCATION}/swapfile /sbin/swapon -a # Display current swap status /sbin/swapon -s
Скрипт будет выполняться при каждой загрузке и выделяет 30 % доступного места на диске ресурса. Вы можете настроить значения на основе вашей ситуации.
Сделайте исполняемый скрипт:
chmod +x /var/lib/cloud/scripts/per-boot/swap.sh
Остановите и запустите виртуальную машину. Остановка и запуск виртуальной машины требуется только в первый раз после создания ФАЙЛА SWAP.
Вариант 2. Создание секции SWAP в пути к диску ресурса с помощью cloud-init
CLOUD_CFG
Создайте переменную в файле /systemd/system.conf, чтобы задать как SWAP, так и диск ресурсов:sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
Создайте ФАЙЛ YAML, который задает точки БУФЕРА, создания диска ресурсов и точки подключения:
sudo cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF #cloud-config disk_setup: ephemeral0: table_type: mbr 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,x-systemd.device-timeout=2", "0", "0"] EOF
Остановите и запустите виртуальную машину или повторно разверните ее, чтобы создать секцию SWAP на диске ресурса.
Вариант 3. Создание секции SWAP в пользовательском пути к диску ресурса с помощью cloud-init
CLOUD_CFG
Создайте переменную в файле /systemd/system.conf, чтобы задать как SWAP, так и диск ресурсов:sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf
Создайте YAML-файл, который задает буфер обмена, создание диска ресурсов и пользовательские точки подключения ("azure" — пример):
sudo cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF #cloud-config disk_setup: ephemeral0: table_type: mbr layout: [66, [33, 82]] overwrite: True fs_setup: - device: ephemeral0.1 filesystem: ext4 - device: ephemeral0.2 filesystem: swap mounts: - ["ephemeral0.1", "/azure"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"] EOF
Примечание.
Убедитесь, что пользовательская точка подключения существует в расположении, указанном в YAML-файле.
Остановите и запустите виртуальную машину или повторно разверните ее, чтобы создать секцию SWAP на диске ресурса.
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.