Подготовка виртуальной машины Oracle Linux для Azure
Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы
В этой статье предполагается, что вы уже установили операционную систему Oracle Linux на виртуальный жесткий диск (VHD). Существует несколько средств для создания VHD-файлов. Примером является решение виртуализации, например Hyper-V. Инструкции см. в разделе "Установка роли Hyper-V" и настройка виртуальной машины .
Замечания по установке Oracle Linux
- Дополнительные советы по подготовке Linux для Azure см . в общих заметках о установке Linux.
- Hyper-V и Azure поддерживают Oracle Linux с ядром Unbreakable Enterprise Kernel (UEK) или ядром, совместимым с Red Hat.
- UEK2 Oracle не поддерживается в Hyper-V и Azure, так как он не включает необходимые драйверы.
- Формат VHDX не поддерживается в Azure, только фиксированный виртуальный жесткий диск. Диск можно преобразовать в формат 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 МБ. При преобразовании из необработанного диска в VHD необходимо убедиться, что размер необработанного диска составляет 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 уже находится в конце жизни. Oracle Linux версии 6.10 имеет расширенную поддержку жизненного цикла, которая заканчивается июля 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. Эти правила могут вызвать проблемы при клонировании виртуальной машины в 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-сервер установлен и настроен для включения во время загрузки. Обычно этот параметр задан по умолчанию.
Установите агент Azure Linux, выполнив следующую команду. Последней является версия 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.0 или более поздней версии.
Изменения в Oracle Linux 7
Подготовка виртуальной машины Oracle Linux 7 для Azure аналогична Oracle Linux 6, но следует отметить несколько различий:
- Azure поддерживает Oracle Linux с ядром Unbreakable Enterprise Kernel (UEK) или ядром, совместимым с Red Hat. Рекомендуется использовать Oracle Linux с UEK.
- Пакет
NetworkManager
больше не конфликтует с агентом Linux Azure. Этот пакет устанавливается по умолчанию и рекомендуется не удалять его. - 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. Эти правила могут вызвать проблемы при клонировании виртуальной машины в 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 с UEK. Мы также рекомендуем удалить следующие параметры:
rhgb quiet crashkernel=auto
Графическая и тихая загрузка не полезна в облачной среде, в которой требуется отправить все журналы в последовательный порт.
Если
crashkernel
вы хотите, можно оставить этот параметр. Этот параметр уменьшает объем доступной памяти на виртуальной машине на 128 МБ или более, что может быть проблемой для небольших размеров виртуальных машин.После завершения редактирования
/etc/default/grub
перестройте конфигурацию grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Убедитесь, что SSH-сервер установлен и настроен для включения во время загрузки. Обычно этот параметр задан по умолчанию.
Установите агент Azure Linux и зависимости:
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
Конфигурация переключения:
Не создавайте пространство подкачки на диске ОС.
Ранее агент Azure Linux использовался автоматически для настройки пространства буфера с помощью локального диска ресурсов, подключенного к виртуальной машине после подготовки виртуальной машины в 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.
Связанный контент
Теперь вы готовы использовать VHD-файл Oracle Linux для создания новых виртуальных машин в Azure. Если вы отправляете VHD-файл в Azure впервые, см. раздел Вариант 1. Передача VHD.