Подготовка виртуальной машины Oracle Linux для Azure
Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы
В этой статье предполагается, что вы уже установили операционную систему Oracle Linux на виртуальный жесткий диск. Существует несколько средств для создания VHD-файлов, например решение для виртуализации, такое как Hyper-V. Инструкции см. в разделе Установка роли Hyper-V и настройка виртуальной машины.
Замечания по установке Oracle Linux
- См. дополнительные сведения о подготовке Linux для Azure.
- Hyper-V и Azure поддерживают Oracle Linux с ядром Unbreakable Enterprise Kernel (UEK) или ядром, совместимым с Red Hat.
- UEK2 Oracle не поддерживается в Hyper-V и Azure, так как он не включает необходимые драйверы.
- Формат VHDX не поддерживается в Azure, поддерживается только фиксированный VHD. Можно преобразовать диск в формат VHD с помощью диспетчера Hyper-V или командлета convert-vhd.
- Требуется поддержка ядра для монтирования файловых систем UDF. При первой загрузке в Azure конфигурация подготовки передается виртуальной машине Linux через отформатированный UDF носитель, подключенный к гостевой машине. Агент Azure Linux должен иметь возможность подключать файловую систему UDF для считывания конфигурации и подготовки виртуальной машины.
- При установке системы Linux рекомендуется использовать стандартные секции, а не LVM (часто по умолчанию для многих установок). Эти стандартные секции избежать конфликтов имен LVM с клонируемыми виртуальными машинами, особенно если диск ОС когда-либо должен быть подключен к другой виртуальной машине для устранения неполадок. Для дисков данных можно использовать LVM или RAID.
- Версии ядра Linux ниже 2.6.37 не поддерживают NUMA в Hyper-V с виртуальными машинами большего размера. Эта проблема в основном влияет на старые дистрибутивы с помощью ядра вышестоящий Red Hat 2.6.32 и исправлена в Oracle Linux 6.6 и более поздних версий.
- Не настраивайте раздел подкачки на диске с ОС.
- Размер виртуальной памяти всех виртуальных жестких дисков в Azure должен быть округлен до 1 МБ. Перед конвертацией диска RAW в формат VHD убедитесь, что размер диска RAW в несколько раз превышает 1 МБ. См. дополнительные сведения в примечаниях по установке Linux.
- Убедитесь, что
Addons
включен репозиторий. Измените файл/etc/yum.repos.d/public-yum-ol6.repo
(Oracle Linux 6) или/etc/yum.repos.d/public-yum-ol7.repo
(Oracle Linux 7) и замените в нем строкуenabled=0
строкойenabled=1
в разделе [ol6_addons] или [ol7_addons].
Oracle Linux 6.X
Важно!
Учитывайте, что Oracle Linux 6.x уже является EOL. Oracle Linux версии 6.10 имеет поддержку ELS, которая завершится 07.2024.
Необходимо выполнить определенные действия с конфигурацией операционной системы, чтобы виртуальная машина запускалась в среде Azure.
На центральной панели диспетчера Hyper-V выберите виртуальную машину.
Щелкните Подключение , чтобы открыть окно виртуальной машины.
Удалите NetworkManager, выполнив следующую команду:
sudo rpm -e --nodeps NetworkManager
Примечание.
Если пакет еще не установлен, эта команда завершается ошибкой. Ожидается, что это сообщение.
Создайте файл с именем network в каталоге
/etc/sysconfig/
. Файл должен содержать следующий текст:NETWORKING=yes HOSTNAME=localhost.localdomain
Создайте файл с именем ifcfg-eth0 в каталоге
/etc/sysconfig/network-scripts/
. Файл должен содержать следующий текст:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Переместите или удалите правила udev, чтобы не создавать статические правила для интерфейса Ethernet. Эти правила приводят к появлению проблем при клонировании виртуальной машины в Microsoft Azure или Hyper-V:
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
Убедитесь, что сетевая служба начинается во время загрузки, выполнив следующую команду:
sudo chkconfig network on
Установите python-pyasn1, выполнив следующую команду:
sudo yum install python-pyasn1
Измените загрузочную строку ядра в конфигурации grub, чтобы включить дополнительные параметры ядра для Azure. Для этого откройте файл /boot/grub/menu.lst в текстовом редакторе и убедитесь в том, что ядро включает следующие параметры:
console=ttyS0 earlyprintk=ttyS0
Этот параметр гарантирует, что все сообщения консоли отправляются на первый последовательный порт, который может помочь поддержка Azure с проблемами отладки.
В дополнение к приведенным выше параметрам рекомендуется удалить следующие параметры:
rhgb quiet crashkernel=auto
Графическая и "тихая" загрузка бесполезны в облачной среде, в которой нам нужно, чтобы все журналы отправлялись на последовательный порт.
При желании этот параметр может быть настроен, но обратите внимание, что этот
crashkernel
параметр уменьшает объем доступной памяти на виртуальной машине на 128 МБ или более, что может быть проблематично на меньших размерах виртуальных машин.Убедитесь, что SSH-сервер установлен и настроен для включения во время загрузки. Обычно это сделано по умолчанию.
Установите агент Linux для Azure, выполнив следующую команду. Последней является версия 2.0.15.
sudo yum install WALinuxAgent
Установка пакета WALinuxAgent удаляет пакеты NetworkManager и NetworkManager-gnome, если они еще не удалены, как описано на шаге 2.
Не создавайте пространство подкачки на диске с ОС.
Агент Linux для Azure может автоматически настраивать пространство подкачки с использованием диска на локальном ресурсе, подключенном к виртуальной машине после подготовки для работы в среде Azure. Локальный диск ресурсов является временным диском и может быть очищен при отмене подготовки виртуальной машины. После установки агента Linux для Azure (см. предыдущий шаг) измените следующие параметры в /etc/waagent.conf соответствующим образом:
ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
Выполните следующие команды, чтобы отменить подготовку виртуальной машины и подготовить ее в Azure:
sudo waagent -force -deprovision sudo export HISTSIZE=0 sudo logout
В диспетчере Hyper-V выберите Действие -> Завершение работы. Виртуальный жесткий диск Linux готов к передаче в Azure.
Oracle Linux 7.0 и более поздние версии
Изменения в Oracle Linux 7
Подготовка виртуальной машины Oracle Linux 7 для Azure аналогична Oracle Linux 6, однако стоит отметить несколько существенных различий.
- Azure поддерживает Oracle Linux с ядром Unbreakable Enterprise Kernel (UEK) или ядром, совместимым с Red Hat. Рекомендуется использовать Oracle Linux с UEK.
- Пакет NetworkManager больше не конфликтует с агентом Azure Linux. Этот пакет устанавливается по умолчанию и рекомендуется не удалять его.
- В качестве загрузчика по умолчанию теперь используется GRUB2, поэтому изменилась процедура правки параметров ядра (см. ниже).
- XFS теперь является файловой системой по умолчанию. При желании можно продолжать использование файловой системы ext4.
Шаги настройки
В диспетчере Hyper-V выберите виртуальную машину.
Щелкните Подключение , чтобы открыть окно консоли для виртуальной машины.
Создайте файл с именем network в каталоге
/etc/sysconfig/
. Файл должен содержать следующий текст:NETWORKING=yes HOSTNAME=localhost.localdomain
Создайте файл с именем ifcfg-eth0 в каталоге
/etc/sysconfig/network-scripts/
. Файл должен содержать следующий текст:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Переместите или удалите правила udev, чтобы не создавать статические правила для интерфейса Ethernet. Эти правила приводят к появлению проблем при клонировании виртуальной машины в Microsoft Azure или Hyper-V:
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
Убедитесь, что сетевая служба начинается во время загрузки, выполнив следующую команду:
sudo chkconfig network on
Установите пакет python-pyasn1, выполнив следующую команду:
sudo yum install python3-pyasn1
Выполните следующую команду, чтобы очистить текущие метаданные yum и установить все обновления:
sudo yum clean all sudo yum -y update
Измените загрузочную строку ядра в конфигурации grub, чтобы включить дополнительные параметры ядра для Azure. Для этого откройте файл /etc/default/grub в текстовом редакторе и измените параметр
GRUB_CMDLINE_LINUX
, например:GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
Это также гарантирует отправку всех сообщений консоли на первый последовательный порт, что может помочь технической поддержке Azure в плане отладки. При этом также отключаются соглашения об именовании сетевых карт в Oracle Linux 7 с Unbreakable Enterprise Kernel. Помимо вышесказанного, рекомендуется удалить следующие параметры:
rhgb quiet crashkernel=auto
Графическая и "тихая" загрузка бесполезны в облачной среде, в которой нам нужно, чтобы все журналы отправлялись на последовательный порт.
При желании этот параметр может быть настроен, но обратите внимание, что этот
crashkernel
параметр уменьшит объем доступной памяти на виртуальной машине до 128 МБ или более, что может быть проблематично для небольших размеров виртуальных машин.После завершения редактирования "/etc/default/grub" для каждого выше выполните следующую команду, чтобы перестроить конфигурацию grub:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Убедитесь, что SSH-сервер установлен и настроен для включения во время загрузки. Обычно это сделано по умолчанию.
Установите агент Linux для Azure и зависимости:
sudo yum install WALinuxAgent sudo systemctl enable waagent
Установите cloud-init для обработки операций подготовки:
sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
Настройка waagent для cloud-init
sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf
sudo echo "Adding mounts and disk_setup to init stage" sudo sed -i '/ - mounts/d' /etc/cloud/cloud.cfg sudo sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg sudo sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg sudo sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
echo "Allow only Azure datasource, disable fetching network setting via IMDS"
sudo cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF datasource_list: [ Azure ] datasource: Azure: apply_network_config: False EOF if [[ -f /mnt/resource/swapfile ]]; then echo Removing swapfile - Oracle Linux uses a swapfile by default swapoff /mnt/swapfile rm /mnt/swapfile -f fi echo "Add console log file" cat >> /etc/cloud/cloud.cfg.d/05_logging.cfg <<EOF # This tells cloud-init to redirect its stdout and stderr to # 'tee -a /var/log/cloud-init-output.log' so the user can see output # there without needing to look on the console. output: {all: '| tee -a /var/log/cloud-init-output.log'} EOF
Переключите конфигурацию. Не создавайте пространство подкачки на диске ОС.
Ранее агент Linux Azure использовался автоматически для настройки пространства буфера с помощью локального диска ресурсов, подключенного к виртуальной машине после подготовки виртуальной машины в Azure. Однако теперь это обрабатывается cloud-init, не следует использовать агент Linux для форматирования диска ресурсов, создающего файл буфера, измените следующие параметры соответствующим
/etc/waagent.conf
образом:sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
Если вы хотите подключить, отформатировать и создать переключение, можно:
- Передать его в конфигурации cloud-init при каждом создании виртуальной машины.
- Использовать директиву cloud-init, встроенную в образ, которая будет выполнять эту операцию при каждом создании виртуальной машины:
echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF #cloud-config # Generated by Azure cloud image build 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/resource"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"] EOF
Выполните следующие команды, чтобы отменить подготовку виртуальной машины и подготовить ее в Azure:
sudo cloud-init clean sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision sudo rm -f ~/.bash_history sudo export HISTSIZE=0
Примечание.
Если вы переносите определенную виртуальную машину и не хотите создавать обобщенный образ, пропустите этап отмены подготовки.
В диспетчере Hyper-V выберите Действие -> Завершение работы. Виртуальный жесткий диск Linux готов к передаче в Azure.
Следующие шаги
Теперь вы можете создавать новые виртуальные машины в Azure с помощью VHD-файла системы Oracle Linux. Если вы отправляете VHD-файл в Azure впервые, см. раздел Вариант 1. Передача VHD.