Настройка раздела подкачки на виртуальной машине Linux с помощью cloud-init

Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы

В этой статье показано, как с помощью cloud-init настроить раздел подкачки в разных дистрибутивах Linux. Раздел подкачки традиционно настраивался агентом Linux (WALA) в зависимости от того, каким дистрибутивам он требовался. В этом документе описывается процесс создания секции буфера по запросу во время подготовки с помощью cloud-init. Дополнительные сведения о встроенной поддержке cloud-init в Azure и поддерживаемых дистрибутивах Linux см. в обзоре cloud-init.

Создайте своп-раздел для образов на основе Ubuntu

По умолчанию в Azure образы коллекции Ubuntu не создают разделы подкачки. Чтобы включить настройку раздела подкачки во время подготовки виртуальной машины с помощью cloud-init, следуйте инструкции в документации для AzureSwapPartitions на вики-сайте Ubuntu.

Создание секции буфера для образов на основе RHEL

В текущей оболочке создайте файл 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 и управление ими. В следующем примере создается группа ресурсов с именем myResourceGroup в расположении eastus.

az group create --name myResourceGroup --location eastus

Теперь создайте виртуальную машину с помощью команды az vm create и укажите файл cloud-init с помощью --custom-data cloud_init_swappart.txt, как показано ниже.

az vm create \
  --resource-group myResourceGroup \
  --name vmName \
  --image imageCIURN \
  --custom-data cloud_init_swappart.txt \
  --generate-ssh-keys

Примечание.

Замените myResourceGroup, vmName и imageCIURN на соответствующие значения. Убедитесь, что выбран образ с Cloud-init.

Изменение уже работающего компьютера

Если вы уже подготовили сервер и хотите изменить точку подключения эфемерного хранилища и хотите настроить часть диска в качестве пространства подкачки, выполните следующие действия.

Создайте файл конфигурации cloud-init с именем 00-azure-swap.cfg в каталоге /etc/cloud/cloud.cfg.d со следующим содержимым:

#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 к общедоступному IP-адресу виртуальной машины, который указан в выходных данных предыдущей команды. Введите собственный пользователь и publicIpAddress следующим образом:

ssh <user>@<publicIpAddress>

SSH-подключение к виртуальной машине выполнено; теперь проверьте, был ли создан раздел подкачки.

sudo swapon -s

Выходные данные этой команды должны выглядеть следующим образом:

Filename                Type        Size    Used    Priority
/dev/sdb2  partition   2494440 0   -1

Примечание.

Если в существующем образе Azure настроен раздел подкачки и для новых образов нужно изменить конфигурацию, существующий раздел подкачки следует удалить. Для получения более подробной информации см. документ «Настройка образов для подготовки с помощью cloud-init».

Следующие шаги

Дополнительные примеры изменений конфигурации в cloud-init см. в следующих статьях: