Подготовка виртуальной машины на основе Red Hat для Azure
Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы ✔️ Универсальные масштабируемые наборы
Из этой статьи вы узнаете, как подготовить виртуальную машину Red Hat Enterprise Linux (RHEL) для использования в Azure. Версии RHEL, описанные в этой статье, — 6.X, 7.X и 8.X. Гипервизоры для подготовки, описанные в этой статье, представляют собой Hyper-V, виртуальную машину на основе ядра (KVM) и VMware.
Дополнительные сведения о требованиях к требованиям для участия в программе Cloud Access Red Hat см . на веб-сайте Red Hat Cloud Access и запуске RHEL в Azure. Способы автоматизации создания образов RHEL см. в разделе Конструктор образов Azure.
Примечание.
Помните о версиях, которые находятся в конце жизни (EOL) и больше не поддерживаются Red Hat. Загруженные образы, которые находятся в EOL или за пределами EOL, поддерживаются на разумной бизнес-основе. Дополнительные сведения см. в циклах жизненного цикла продукта Red Hat.
Диспетчер Hyper-V
В этом разделе показано, как подготовить виртуальную машину RHEL 6, RHEL 7 или RHEL 8 с помощью диспетчера Hyper-V.
Необходимые компоненты
В этом разделе предполагается, что вы уже получили ISO-файл с веб-сайта Red Hat и установили образ RHEL на виртуальный жесткий диск (VHD). Дополнительные сведения об использовании диспетчера Hyper-V для установки образа операционной системы см. в статье "Установка роли Hyper-V" и настройка виртуальной машины.
Замечания по установке RHEL
- Azure не поддерживает формат VHDX. поддержка Azure только фиксированный виртуальный жесткий диск. Диспетчер Hyper-V можно использовать для преобразования диска в формат VHD или командлета
convert-vhd
. Если вы используете VirtualBox, при создании диска выберите фиксированный размер вместо динамически выделяемого (по умолчанию). - виртуальные машины поддержка Azure 1-го поколения (загрузка BIOS) и UEFI(UEFI).
- Максимально допустимый размер виртуального жесткого диска составляет 1023 ГБ.
- Модуль ядра vfat должен быть включен в ядро.
- Диспетчер логических томов (LVM) поддерживается и может использоваться на диске ОС или на дисках данных в виртуальных машинах Azure. Как правило, рекомендуется использовать стандартные секции на диске ОС, а не LVM. Это позволит избежать конфликта имен LVM при клонировании виртуальных машин, особенно если нужно подключить диск с OC к другой идентичной виртуальной машине в целях устранения неполадок. Дополнительные сведения см. в документации по LVM и RAID .
- Требуется поддержка ядра для подключения файловых систем UDF. При первой загрузке в Azure uDF-отформатированный носитель, подключенный к гостевой машине, передает конфигурацию подготовки виртуальной машине Linux. Агент Azure Linux должен иметь возможность подключать файловую систему UDF для считывания конфигурации и подготовки виртуальной машины. Без этого шага подготовка завершается ошибкой.
- Не настраивайте раздел swap на диске операционной системы. Дополнительные сведения см. в следующих шагах.
- Размер виртуальной памяти всех виртуальных жестких дисков в Azure должен быть округлен до 1 МБ. При преобразовании из необработанного диска в VHD необходимо убедиться, что размер необработанного диска составляет 1 МБ перед преобразованием. Дополнительные сведения см. в следующих шагах. См. также заметки о установке Linux.
Примечание.
Cloud-init >= 21.2 удаляет требование UDF. Однако без включения модуля UDF компакт-диск не будет подключаться во время подготовки, что предотвращает применение пользовательских данных. Обходным решением является применение пользовательских данных с помощью пользовательских данных. В отличие от пользовательских данных, пользовательские данные не шифруются. Дополнительные сведения см. в разделе "Форматы данных пользователей".
RHEL 6 с использованием диспетчера Hyper-V
Внимание
30 ноября 2020 года RHEL 6 достигла конца этапа обслуживания. За этапом обслуживания следует этап расширенной жизни. При переходе RHEL 6 из этапов полного или обслуживания настоятельно рекомендуется обновить до RHEL 7, 8 или 9. Если необходимо остаться в RHEL 6, рекомендуется добавить надстройку поддержки расширенного жизненного цикла RHEL.
В диспетчере Hyper-V выберите виртуальную машину.
Выберите Подключение, чтобы открыть окно консоли для виртуальной машины.
В RHEL 6
NetworkManager
может повлиять на агент Linux Azure. Удалите этот пакет:sudo rpm -e --nodeps NetworkManager
Создайте или измените файл
/etc/sysconfig/network
, добавив следующий текст:NETWORKING=yes HOSTNAME=localhost.localdomain
Создайте или измените файл
/etc/sysconfig/network-scripts/ifcfg-eth0
, добавив следующий текст:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Переместите (или удалите) правила udev, чтобы не создавать статические правила для интерфейса Ethernet. Эти правила вызывают проблемы при клонировании виртуальной машины в Azure или Hyper-V:
Предупреждение
Для многих виртуальных машин версии 5 и более новых размеров виртуальных машин требуется ускорение сети. Если он не включен, NetworkManager назначит один и тот же IP-адрес всем виртуальным интерфейсам функций. Чтобы предотвратить дублирование IP-адресов, обязательно включите это правило udev при миграции на новый размер.
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
Примечание.
При использовании ускоренной сети искусственный интерфейс, созданный, необходимо настроить неуправляемый с помощью правила udev. Это действие предотвращает
NetworkManager
назначение того же IP-адреса ему, что и основной интерфейс.Чтобы применить его, выполните указанные действия.
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Убедитесь, что сетевая служба начинается во время загрузки:
sudo chkconfig network on
Зарегистрируйте подписку Red Hat, чтобы включить установку пакетов из репозитория RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Пакет WALinuxAgent
WALinuxAgent-<version>
был отправлен в репозиторий дополнений Red Hat. Включите репозиторий дополнительных компонентов:sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
Измените загрузочную строку ядра в конфигурации grub, чтобы включить дополнительные параметры ядра для Azure. Для этого откройте
/boot/grub/menu.lst
текстовый редактор. Убедитесь, что ядро по умолчанию включает следующие параметры:console=ttyS0 earlyprintk=ttyS0
Это действие также гарантирует, что все сообщения консоли отправляются на первый последовательный порт, который может помочь поддержка Azure с проблемами отладки.
Мы также рекомендуем удалить следующие параметры:
rhgb quiet crashkernel=auto
Графические и тихие загрузки не полезны в облачной среде, где требуется отправлять все журналы в последовательный порт. Если вы хотите, можно оставить
crashkernel
этот параметр. Этот параметр уменьшает объем доступной памяти на виртуальной машине на 128 МБ или более. Эта конфигурация может быть проблемой для небольших размеров виртуальных машин.Убедитесь, что SSH-сервер установлен и настроен для включения во время загрузки (что обычно задано по умолчанию). Измените файл
/etc/ssh/sshd_config
, добавив в него следующую строку:ClientAliveInterval 180
Установите агент Azure Linux:
sudo yum install WALinuxAgent sudo chkconfig waagent on
Установка пакета WALinuxAgent удаляет
NetworkManager
иNetworkManager-gnome
пакеты, если они еще не удалены на шаге 3.Не создавайте пространство подкачки на диске ОС.
Агент Linux Azure может автоматически настроить пространство подкачки с помощью локального диска ресурсов, подключенного к виртуальной машине после подготовки виртуальной машины в Azure. Локальный диск ресурсов является временным диском и может быть очищен, если виртуальная машина отключена. После установки агента Linux Azure на предыдущем шаге измените следующие параметры соответствующим
/etc/waagent.conf
образом:ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
Отмена регистрации подписки (при необходимости):
sudo subscription-manager unregister
Отмените подготовку виртуальной машины и подготовьте ее к подготовке в Azure:
Примечание.
Если вы переносите определенную виртуальную машину и не хотите создавать обобщенный образ, пропустите этап отмены подготовки.
sudo waagent -force -deprovision sudo export HISTSIZE=0
В диспетчере Hyper-V выберите Действие>Завершение работы. Виртуальный жесткий диск Linux готов к передаче в Azure.
RHEL 7 с использованием диспетчера Hyper-V
В диспетчере Hyper-V выберите виртуальную машину.
Выберите Подключение, чтобы открыть окно консоли для виртуальной машины.
Создайте или измените файл
/etc/sysconfig/network
, добавив следующий текст:NETWORKING=yes HOSTNAME=localhost.localdomain
Создайте или измените файл
/etc/sysconfig/network-scripts/ifcfg-eth0
, добавив следующий текст:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes
Примечание.
При использовании ускоренной сети искусственный интерфейс, созданный, необходимо настроить неуправляемый с помощью правила udev. Это действие предотвращает
NetworkManager
назначение того же IP-адреса ему, что и основной интерфейс.Чтобы применить его, выполните указанные действия.
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Убедитесь, что сетевая служба начинается во время загрузки:
sudo systemctl enable network
Зарегистрируйте подписку Red Hat, чтобы включить установку пакетов из репозитория RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Измените загрузочную строку ядра в конфигурации grub, чтобы включить дополнительные параметры ядра для Azure. Для этого откройте
/etc/default/grub
текстовый редактор и изменитеGRUB_CMDLINE_LINUX
параметр. Рассмотрим пример.GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0 net.ifnames=0" GRUB_TERMINAL_OUTPUT="serial console" GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1" ENABLE_BLSCFG=true
Примечание.
Если ENABLE_BLSCFG=false присутствует
/etc/default/grub
вместоENABLE_BLSCFG=true
этого, такие средства, как grubedit или gubby, которые зависят от спецификации загрузчика (BLS) для управления загрузочными записями и конфигурациями, могут работать неправильно в RHEL 8 и 9. ЕслиENABLE_BLSCFG
он отсутствует, по умолчанию используетсяfalse
поведение.Это изменение также гарантирует, что все сообщения консоли отправляются на первый последовательный порт и обеспечивают взаимодействие с последовательной консолью, что может помочь поддержка Azure с проблемами отладки. Эта конфигурация также отключает новые соглашения об именовании RHEL 7 для сетевых карт (сетевых карт).
rhgb quiet crashkernel=auto
Графические и тихие загрузки не полезны в облачной среде, где требуется отправлять все журналы в последовательный порт. Если вы хотите, можно оставить
crashkernel
этот параметр. Этот параметр уменьшает объем доступной памяти на виртуальной машине на 128 МБ или более, что может быть проблемой для небольших размеров виртуальных машин.После завершения редактирования
/etc/default/grub
выполните следующую команду, чтобы перестроить конфигурацию grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Примечание.
Если вы отправляете виртуальную машину с поддержкой UEFI, выполните команду для обновления grub
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
.Убедитесь, что SSH-сервер установлен и настроен для включения во время загрузки (что обычно задано по умолчанию). Измените файл
/etc/ssh/sshd_config
, добавив в него следующую строку:ClientAliveInterval 180
Пакет WALinuxAgent
WALinuxAgent-<version>
был отправлен в репозиторий дополнений Red Hat. Включите репозиторий дополнительных компонентов:sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
Установите агент
cloud-init
Azure Linux и другие необходимые служебные программы:sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons sudo systemctl enable waagent.service sudo systemctl enable cloud-init.service
Настройте
cloud-init
для обработки подготовки:Настройка
waagent
дляcloud-init
:sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=auto/g' /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
Примечание.
Если вы переносите определенную виртуальную машину и не хотите создавать обобщенный образ, задайте
Provisioning.Agent=disabled
конфигурацию/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
Настройте источник данных Azure:
sudo 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" #RHEL uses a swapfile by default swapoff /mnt/resource/swapfile rm /mnt/resource/swapfile -f fi
Настройка
cloud-init
ведения журнала:sudo echo "Add console log file" sudo 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
образом:ResourceDisk.Format=n ResourceDisk.EnableSwap=n
Если вы хотите подключить, отформатировать и создать буфер, можно:
Передайте этот код в качестве конфигурации каждый раз, когда вы создаете виртуальную
cloud-init
машину с помощью пользовательских данных. Мы рекомендуем этот метод.Используйте директиву, созданную
cloud-init
на образе, который выполняет этот шаг при каждом создании виртуальной машины.sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf sudo 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
Чтобы отменить регистрацию подписки, выполните следующую команду:
sudo subscription-manager unregister
Отмените подготовку виртуальной машины и подготовьте ее к подготовке в Azure:
Внимание
Если вы переносите определенную виртуальную машину и не хотите создавать обобщенный образ, пропустите этап отмены подготовки. При выполнении команды
waagent -force -deprovision+user
исходный компьютер не используется. Этот шаг предназначен только для создания обобщенного образа.sudo rm -f /var/log/waagent.log sudo cloud-init clean sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0
В диспетчере Hyper-V выберите Действие>Завершение работы. Виртуальный жесткий диск Linux готов к передаче в Azure.
RHEL 8+ с помощью диспетчера Hyper-V
В диспетчере Hyper-V выберите виртуальную машину.
Выберите Подключение, чтобы открыть окно консоли для виртуальной машины.
Убедитесь, что служба Network Manager начинается во время загрузки:
sudo systemctl enable NetworkManager.service
Настройте сетевой интерфейс для автоматического запуска при загрузке и использования протокола конфигурации динамического узла:
sudo nmcli con mod eth0 connection.autoconnect yes ipv4.method auto
Примечание.
При использовании ускоренной сети искусственный интерфейс, созданный, необходимо настроить неуправляемый с помощью правила udev. Это действие предотвращает
NetworkManager
назначение того же IP-адреса ему, что и основной интерфейс.Чтобы применить его, выполните указанные действия.
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Зарегистрируйте подписку Red Hat, чтобы включить установку пакетов из репозитория RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Измените строку загрузки ядра в конфигурации grub, чтобы включить дополнительные параметры ядра для Azure и включить последовательную консоль.
Удалите текущие параметры GRUB:
sudo grub2-editenv - unset kernelopts
Измените
/etc/default/grub
текст в текстовом редакторе и добавьте следующие параметры:GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 earlyprintk=ttyS0 net.ifnames=0" GRUB_TERMINAL_OUTPUT="serial console" GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
Это изменение также гарантирует, что все сообщения консоли отправляются на первый последовательный порт и обеспечивают взаимодействие с последовательной консолью, что может помочь поддержка Azure с проблемами отладки. Также будут отключены новые соглашения об именовании для сетевых карт.
Рекомендуется также удалить следующие параметры:
rhgb quiet crashkernel=auto
Графические и тихие загрузки не полезны в облачной среде, где требуется отправлять все журналы в последовательный порт. Если вы хотите, можно оставить
crashkernel
этот параметр. Этот параметр уменьшает объем доступной памяти на виртуальной машине на 128 МБ или более, что может быть проблемой для небольших размеров виртуальных машин.После завершения редактирования
/etc/default/grub
выполните следующую команду, чтобы перестроить конфигурацию grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Для виртуальной машины с поддержкой UEFI выполните следующую команду:
sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
Убедитесь, что SSH-сервер установлен и настроен для включения во время загрузки (что обычно задано по умолчанию). Измените файл
/etc/ssh/sshd_config
, добавив в него следующую строку:ClientAliveInterval 180
Установите агент
cloud-init
Azure Linux и другие необходимые служебные программы:sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons sudo systemctl enable waagent.service sudo systemctl enable cloud-init.service
Настройте
cloud-init
для обработки подготовки:Настройка
waagent
дляcloud-init
:sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/g' /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
Примечание.
Если вы переносите определенную виртуальную машину и не хотите создавать обобщенный образ, задайте
Provisioning.Agent=disabled
конфигурацию/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
Настройте источник данных Azure:
sudo 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" #RHEL uses a swapfile by defaul swapoff /mnt/resource/swapfile rm /mnt/resource/swapfile -f fi
Настройка
cloud-init
ведения журнала:sudo echo "Add console log file" sudo 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
образом:ResourceDisk.Format=n ResourceDisk.EnableSwap=n
Передайте этот код в качестве конфигурации каждый раз, когда вы создаете виртуальную
cloud-init
машину с помощью пользовательских данных. Мы рекомендуем этот метод.Используйте директиву, созданную
cloud-init
на образе, который выполняет этот шаг при каждом создании виртуальной машины.sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf sudo 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.device-timeout=2,x-systemd.requires=cloud-init.service", "0", "0"] EOF
Чтобы отменить регистрацию подписки, выполните следующую команду:
sudo subscription-manager unregister
Выполните следующие команды, чтобы отменить подготовку виртуальной машины и подготовить ее в Azure:
sudo cloud-init clean sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo sudo rm -f /var/log/waagent.log sudo export HISTSIZE=0
Внимание
Если вы переносите определенную виртуальную машину и не хотите создавать обобщенный образ, пропустите этап отмены подготовки. При выполнении команды
waagent -force -deprovision+user
исходный компьютер не используется. Этот шаг предназначен только для создания обобщенного образа.В диспетчере Hyper-V выберите Действие>Завершение работы. Виртуальный жесткий диск Linux готов к передаче в Azure.
KVM
В этом разделе показано, как использовать KVM для подготовки дистрибутива RHEL 6 или RHEL 7 к передаче в Azure.
RHEL 6 с использованием KVM
Внимание
30 ноября 2020 года RHEL 6 достигла конца этапа обслуживания. За этапом обслуживания следует этап расширенной жизни. При переходе RHEL 6 из этапов полного или обслуживания настоятельно рекомендуется обновить до RHEL 7, 8 или 9. Если необходимо остаться в RHEL 6, рекомендуется добавить надстройку поддержки расширенного жизненного цикла RHEL.
Скачайте образ KVM RHEL 6 с веб-сайта Red Hat.
Задайте пароль пользователя root.
Создайте зашифрованный пароль и скопируйте результат выполнения команды:
sudo openssl passwd -1 changeme
Установите корневой пароль с помощью Guestfish:
sudo guestfish --rw -a <image-name> > <fs> run > <fs> list-filesystems > <fs> mount /dev/sda1 / > <fs> vi /etc/shadow > <fs> exit
Измените второе поле корневого пользователя на
!!
зашифрованный пароль.Создайте виртуальную машину в KVM из образа qcow2. Укажите тип диска qcow2 и задайте для модели устройства интерфейса виртуальной сети значение virtio. Затем запустите виртуальную машину и войдите в качестве корневого каталога.
Создайте или измените файл
/etc/sysconfig/network
, добавив следующий текст:NETWORKING=yes HOSTNAME=localhost.localdomain
Создайте или измените файл
/etc/sysconfig/network-scripts/ifcfg-eth0
, добавив следующий текст: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
Примечание.
При использовании ускоренной сети искусственный интерфейс, созданный, необходимо настроить неуправляемый с помощью правила udev. Это действие предотвращает
NetworkManager
назначение того же IP-адреса ему, что и основной интерфейс.Чтобы применить его, выполните указанные действия.
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparently bonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Убедитесь, что сетевая служба начинается во время загрузки:
sudo chkconfig network on
Зарегистрируйте подписку Red Hat, чтобы включить установку пакетов из репозитория RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Измените загрузочную строку ядра в конфигурации grub, чтобы включить дополнительные параметры ядра для Azure. Для этого откройте
/boot/grub/menu.lst
текстовый редактор. Убедитесь, что ядро по умолчанию включает следующие параметры:console=ttyS0 earlyprintk=ttyS0
Этот шаг также гарантирует, что все сообщения консоли отправляются в первый последовательный порт, который может помочь поддержка Azure с проблемами отладки.
Мы также рекомендуем удалить следующие параметры:
rhgb quiet crashkernel=auto
Графические и тихие загрузки не полезны в облачной среде, где требуется отправлять все журналы в последовательный порт. Если вы хотите, можно оставить
crashkernel
этот параметр. Этот параметр уменьшает объем доступной памяти на виртуальной машине на 128 МБ или более, что может быть проблемой для небольших размеров виртуальных машин.Добавьте модули Hyper-V в initramfs.
Измените файл
/etc/dracut.conf
, добавив следующее содержимое:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Повторно создайте initramfs:
sudo dracut -f -v
Удаление
cloud-init
:sudo yum remove cloud-init
Убедитесь, что SSH-сервер установлен и настроен для включения во время загрузки:
sudo chkconfig sshd on
Измените,
/etc/ssh/sshd_config
чтобы включить следующие строки:PasswordAuthentication yes ClientAliveInterval 180
Пакет WALinuxAgent
WALinuxAgent-<version>
был отправлен в репозиторий дополнений Red Hat. Включите репозиторий дополнительных компонентов:sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
Установите агент Azure Linux:
sudo yum install WALinuxAgent sudo chkconfig waagent on
Агент Linux Azure может автоматически настроить пространство подкачки с помощью локального диска ресурсов, подключенного к виртуальной машине после подготовки виртуальной машины в Azure. Локальный диск ресурсов является временным диском, и он может быть очищен, если виртуальная машина отключена. После установки агента Linux Azure на предыдущем шаге измените следующие параметры соответствующим
/etc/waagent.conf
образом:ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
Отмена регистрации подписки (при необходимости):
sudo subscription-manager unregister
Выполните следующие команды, чтобы отменить подготовку виртуальной машины и подготовить ее к подготовке в Azure.
Примечание.
Если вы переносите определенную виртуальную машину и не хотите создавать обобщенный образ, пропустите этап отмены подготовки.
sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0
Завершите работу виртуальной машины в KVM.
Конвертируйте образ qcow2 в формат VHD.
Примечание.
Существует известная ошибка в версиях >qemu-img =2.2.1, что приводит к неправильно отформатированным VHD. Эта проблема устранена в QEMU версии 2.6. Рекомендуется использовать qemu-img 2.2.0 или более поздней версии или обновить до версии 2.6 или выше. Дополнительные сведения см. на этом веб-сайте.
Для начала конвертируйте образ в формат RAW:
sudo qemu-img convert -f qcow2 -O raw rhel-6.9.qcow2 rhel-6.9.raw
Убедитесь, что размер образа в формате RAW соответствует 1 МБ. Если это не так, округлите размер до 1 МБ:
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-6.9.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-6.9.raw $rounded_size
Преобразуйте необработанный диск в виртуальный жесткий диск фиксированного размера:
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-6.9.raw rhel-6.9.vhd
Иначе с помощью qemu версии 2.6 или выше добавьте параметр
force_size
:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-6.9.raw rhel-6.9.vhd
RHEL 7 с использованием KVM
Скачайте образ KVM RHEL 7 с веб-сайта Red Hat. В этой процедуре в качестве примера используется RHEL 7.
Задайте пароль пользователя root.
Создайте зашифрованный пароль и скопируйте результат выполнения команды:
sudo openssl passwd -1 changeme
Установите корневой пароль с помощью Guestfish:
sudo guestfish --rw -a <image-name> > <fs> run > <fs> list-filesystems > <fs> mount /dev/sda1 / > <fs> vi /etc/shadow > <fs> exit
Измените второе поле корневого пользователя на
!!
зашифрованный пароль.Создайте виртуальную машину в KVM из образа qcow2. Укажите тип диска qcow2 и задайте для модели устройства интерфейса виртуальной сети значение virtio. Затем запустите виртуальную машину и войдите в качестве корневого каталога.
Создайте или измените файл
/etc/sysconfig/network
, добавив следующий текст:NETWORKING=yes HOSTNAME=localhost.localdomain
Создайте или измените файл
/etc/sysconfig/network-scripts/ifcfg-eth0
, добавив следующий текст:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes
Примечание.
При использовании ускоренной сети искусственный интерфейс, созданный, необходимо настроить неуправляемый с помощью правила udev. Это действие предотвращает
NetworkManager
назначение того же IP-адреса ему, что и основной интерфейс.Чтобы применить его, выполните указанные действия.
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Убедитесь, что сетевая служба начинается во время загрузки:
sudo systemctl enable network
Зарегистрируйте подписку Red Hat, чтобы включить установку пакетов из репозитория RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Измените загрузочную строку ядра в конфигурации grub, чтобы включить дополнительные параметры ядра для Azure. Для этого откройте
/etc/default/grub
текстовый редактор и изменитеGRUB_CMDLINE_LINUX
параметр. Например:GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
Эта команда также гарантирует отправку всех сообщений консоли на первый последовательный порт, что может помочь технической поддержке Azure в плане отладки. Также будут отключены новые соглашения об именовании RHEL 7 для сетевых карт. Мы также рекомендуем удалить следующие параметры:
rhgb quiet crashkernel=auto
Графические и тихие загрузки не полезны в облачной среде, где требуется отправлять все журналы в последовательный порт. Если вы хотите, можно оставить
crashkernel
этот параметр. Этот параметр уменьшает объем доступной памяти на виртуальной машине на 128 МБ или более, что может быть проблемой для небольших размеров виртуальных машин.После завершения редактирования
/etc/default/grub
выполните следующую команду, чтобы перестроить конфигурацию grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Добавьте модули Hyper-V в initramfs.
Измените файл
/etc/dracut.conf
, добавив в него следующее содержимое:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Повторно создайте initramfs:
sudo dracut -f -v
Удаление
cloud-init
:sudo yum remove cloud-init
Убедитесь, что SSH-сервер установлен и настроен для включения во время загрузки:
sudo systemctl enable sshd
Измените,
/etc/ssh/sshd_config
чтобы включить следующие строки:PasswordAuthentication yes ClientAliveInterval 180
Пакет WALinuxAgent
WALinuxAgent-<version>
был отправлен в репозиторий дополнений Red Hat. Включите репозиторий дополнительных компонентов:sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
Установите агент Azure Linux:
sudo yum install WALinuxAgent
waagent
Включите службу:sudo systemctl enable waagent.service
Установите
cloud-init
.Выполните действия, описанные в разделе "Подготовка виртуальной машины RHEL 7 из диспетчера Hyper-V", шаг 12 "Установка
cloud-init
для обработки подготовки".Конфигурация переключения:
- Не создавайте пространство подкачки на диске ОС.
- Выполните действия, описанные в разделе "Подготовка виртуальной машины RHEL 7 из диспетчера Hyper-V", шаг 13 "Переключение конфигурации".
Отмена регистрации подписки (при необходимости):
sudo subscription-manager unregister
Отмена подготовки виртуальной машины RHEL 7 из диспетчера Hyper-V, шаг 15 "Отмена подготовки виртуальной машины RHEL 7".
Завершите работу виртуальной машины в KVM.
Конвертируйте образ qcow2 в формат VHD.
Примечание.
Существует известная ошибка в версиях >qemu-img =1.1.1, что приводит к неправильно отформатированным VHD. Проблема устранена в QEMU 1.6. Рекомендуется использовать qemu-img 1.1.0 или более поздней версии или обновить до версии 1.6 или выше. Дополнительные сведения см. на этом веб-сайте.
Для начала конвертируйте образ в формат RAW:
sudo qemu-img convert -f qcow2 -O raw rhel-7.4.qcow2 rhel-7.4.raw
Убедитесь, что размер образа в формате RAW соответствует 1 МБ. Если это не так, округлите размер до 1 МБ:
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-7.4.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-7.4.raw $rounded_size
Преобразуйте необработанный диск в виртуальный жесткий диск фиксированного размера:
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-7.4.raw rhel-7.4.vhd
Или, используя qemu версии 1.6+, включите
force_size
этот параметр:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
VMware
В этом разделе показано, как подготовить дистрибутив RHEL 6 или RHEL 7 из VMware.
Необходимые компоненты
В этом разделе предполагается, что вы уже установили виртуальную машину RHEL в VMware. Сведения о том, как установить операционную систему в VMware, см. в руководстве по установке гостевой операционной системы VMware.
- При установке операционной системы Linux мы рекомендуем использовать стандартные разделы, а не LVM (который зачастую используется по умолчанию при установке). Использование секций позволяет избежать конфликтов имен LVM с клонируемой виртуальной машиной, особенно если диск операционной системы когда-либо необходимо подключить к другой виртуальной машине для устранения неполадок. Если требуется, можно использовать LVM или RAID на дисках данных.
- Не настраивайте раздел swap на диске операционной системы. Вы можете настроить агент Linux для создания файла подкачки на временном диске с ресурсами. Дополнительные сведения см. в следующих шагах.
- При создании виртуального жесткого диска выберите "Сохранить виртуальный диск" в виде одного файла.
RHEL 6 с использованием VMware
Внимание
30 ноября 2020 года RHEL 6 достигла конца этапа обслуживания. За этапом обслуживания следует этап расширенной жизни. При переходе RHEL 6 из этапов полного или обслуживания настоятельно рекомендуется обновить до RHEL 7 или 8 или 9. Если необходимо остаться в RHEL 6, рекомендуется добавить надстройку поддержки расширенного жизненного цикла RHEL.
В RHEL 6
NetworkManager
может повлиять на агент Linux Azure. Удалите этот пакет:sudo rpm -e --nodeps NetworkManager
Создайте файл с именем network в каталоге
/etc/sysconfig/
. Файл должен содержать следующий текст:NETWORKING=yes HOSTNAME=localhost.localdomain
Создайте или измените файл
/etc/sysconfig/network-scripts/ifcfg-eth0
, добавив следующий текст: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
Примечание.
При использовании ускоренной сети искусственный интерфейс, созданный, необходимо настроить неуправляемый с помощью правила udev. Это действие предотвращает
NetworkManager
назначение того же IP-адреса ему, что и основной интерфейс.Чтобы применить его, выполните указанные действия.
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparently bonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Убедитесь, что сетевая служба начинается во время загрузки:
sudo chkconfig network on
Зарегистрируйте подписку Red Hat, чтобы включить установку пакетов из репозитория RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Пакет WALinuxAgent
WALinuxAgent-<version>
был отправлен в репозиторий дополнений Red Hat. Включите репозиторий дополнительных компонентов:sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
Измените загрузочную строку ядра в конфигурации grub, чтобы включить дополнительные параметры ядра для Azure. Для этого откройте
/etc/default/grub
текстовый редактор и изменитеGRUB_CMDLINE_LINUX
параметр. Например:GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0"
Этот шаг также гарантирует, что все сообщения консоли отправляются в первый последовательный порт, который может помочь поддержка Azure с проблемами отладки. Мы также рекомендуем удалить следующие параметры:
rhgb quiet crashkernel=auto
Графические и тихие загрузки не полезны в облачной среде, где требуется отправлять все журналы в последовательный порт. Если вы хотите, можно оставить
crashkernel
этот параметр. Этот параметр уменьшает объем доступной памяти на виртуальной машине на 128 МБ или более, что может быть проблемой для небольших размеров виртуальных машин.Добавьте модули Hyper-V в initramfs.
Измените файл
/etc/dracut.conf
, добавив следующее содержимое:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Повторно создайте initramfs:
sudo dracut -f -v
Убедитесь, что SSH-сервер установлен и настроен для включения во время загрузки (что обычно задано по умолчанию). Измените файл
/etc/ssh/sshd_config
, добавив в него следующую строку:ClientAliveInterval 180
Установите агент Azure Linux:
sudo yum install WALinuxAgent sudo chkconfig waagent on
Не создавайте место на диске операционной системы.
Агент Linux Azure может автоматически настроить пространство подкачки с помощью локального диска ресурсов, подключенного к виртуальной машине после подготовки виртуальной машины в Azure. Локальный диск ресурсов является временным диском, и он может быть очищен, если виртуальная машина отключена. После установки агента Linux Azure на предыдущем шаге измените следующие параметры соответствующим
/etc/waagent.conf
образом:ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
Отмена регистрации подписки (при необходимости):
sudo subscription-manager unregister
Выполните следующие команды, чтобы отменить подготовку виртуальной машины и подготовить ее в Azure:
Примечание.
Если вы переносите определенную виртуальную машину и не хотите создавать обобщенный образ, пропустите этап отмены подготовки.
sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0
Завершите работу виртуальной машины и конвертируйте файл VMDK в формат VHD.
Примечание.
Существует известная ошибка в версиях >qemu-img =2.2.1, что приводит к неправильно отформатированным VHD. Эта проблема устранена в QEMU версии 2.6. Рекомендуется использовать qemu-img 2.2.0 или более поздней версии или обновить до версии 2.6 или выше. Дополнительные сведения см. на этом веб-сайте.
Для начала конвертируйте образ в формат RAW:
sudo qemu-img convert -f vmdk -O raw rhel-6.9.vmdk rhel-6.9.raw
Убедитесь, что размер образа в формате RAW соответствует 1 МБ. Если это не так, округлите размер до 1 МБ:
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-6.9.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-6.9.raw $rounded_size
Преобразуйте необработанный диск в виртуальный жесткий диск фиксированного размера:
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-6.9.raw rhel-6.9.vhd
Иначе с помощью qemu версии 2.6 или выше добавьте параметр
force_size
:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-6.9.raw rhel-6.9.vhd
RHEL 7 с использованием VMware
Создайте или измените файл
/etc/sysconfig/network
, добавив следующий текст:NETWORKING=yes HOSTNAME=localhost.localdomain
Создайте или измените файл
/etc/sysconfig/network-scripts/ifcfg-eth0
, добавив следующий текст:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes
Примечание.
При использовании ускоренной сети искусственный интерфейс, созданный, необходимо настроить неуправляемый с помощью правила udev. Это действие предотвращает
NetworkManager
назначение того же IP-адреса ему, что и основной интерфейс.Чтобы применить его, выполните указанные действия.
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Убедитесь, что сетевая служба начинается во время загрузки:
sudo systemctl enable network
Зарегистрируйте подписку Red Hat, чтобы включить установку пакетов из репозитория RHEL:
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Измените загрузочную строку ядра в конфигурации grub, чтобы включить дополнительные параметры ядра для Azure. Для этого откройте
/etc/default/grub
текстовый редактор и изменитеGRUB_CMDLINE_LINUX
параметр. Например:GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
Это также гарантирует отправку всех сообщений консоли на первый последовательный порт, что может помочь технической поддержке Azure в плане отладки. Также будут отключены новые соглашения об именовании RHEL 7 для сетевых карт. В дополнение к вышесказанному мы рекомендуем удалить следующие параметры:
rhgb quiet crashkernel=auto
Графические и тихие загрузки не полезны в облачной среде, где требуется отправлять все журналы в последовательный порт. Если вы хотите, можно оставить
crashkernel
этот параметр. Этот параметр уменьшает объем доступной памяти на виртуальной машине на 128 МБ или более, что может быть проблемой для небольших размеров виртуальных машин.После завершения редактирования
/etc/default/grub
выполните следующую команду, чтобы перестроить конфигурацию grub:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Добавьте модули Hyper-V в initramfs.
Измените файл
/etc/dracut.conf
, добавив в него следующее содержимое:add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Повторно создайте initramfs:
sudo dracut -f -v
Убедитесь, что SSH-сервер установлен и настроен для включения во время загрузки. Обычно этот параметр задан по умолчанию. Измените файл
/etc/ssh/sshd_config
, добавив в него следующую строку:ClientAliveInterval 180
Пакет WALinuxAgent
WALinuxAgent-<version>
был отправлен в репозиторий дополнений Red Hat. Включите репозиторий дополнительных компонентов:sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
Установите агент Azure Linux:
sudo yum install WALinuxAgent sudo systemctl enable waagent.service
Установите
cloud-init
:Выполните действия, описанные в разделе "Подготовка виртуальной машины RHEL 7 из диспетчера Hyper-V", шаг 12 "Установка
cloud-init
для обработки подготовки".Конфигурация переключения:
- Не создавайте пространство подкачки на диске ОС.
- Выполните действия, описанные в разделе "Подготовка виртуальной машины RHEL 7 из диспетчера Hyper-V", шаг 13 "Переключение конфигурации".
Чтобы отменить регистрацию подписки, выполните следующую команду:
sudo subscription-manager unregister
Отмена подготовки виртуальной машины RHEL 7 из диспетчера Hyper-V, шаг 15 "Отмена подготовки виртуальной машины RHEL 7".
Завершите работу виртуальной машины и преобразуйте файл VMDK в формат VHD.
Примечание.
Существует известная ошибка в версиях >qemu-img =2.2.1, что приводит к неправильно отформатированным VHD. Эта проблема устранена в QEMU версии 2.6. Рекомендуется использовать qemu-img 2.2.0 или более поздней версии или обновить до версии 2.6 или выше. Дополнительные сведения см. на этом веб-сайте.
Для начала конвертируйте образ в формат RAW:
sudo qemu-img convert -f vmdk -O raw rhel-7.4.vmdk rhel-7.4.raw
Убедитесь, что размер образа в формате RAW соответствует 1 МБ. Если это не так, округлите размер до 1 МБ:
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-7.4.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-7.4.raw $rounded_size
Преобразуйте необработанный диск в виртуальный жесткий диск фиксированного размера:
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-7.4.raw rhel-7.4.vhd
Иначе с помощью qemu версии 2.6 или выше добавьте параметр
force_size
:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
Файл kickstart
В этом разделе показано, как подготовить дистрибутив RHEL 7 из ISO с помощью файла запуска.
RHEL 7 из файла kickstart
Создайте файл kickstart, содержащий следующее содержимое и сохраните файл. Дополнительные сведения о установке kickstart см. в руководстве по установке Kickstart.
# Kickstart for provisioning a RHEL 7 Azure VM # System authorization information auth --enableshadow --passalgo=sha512 # Use graphical install text # Don't run the Setup Agent on first boot firstboot --disable # Keyboard layouts keyboard --vckeymap=us --xlayouts='us' # System language lang en_US.UTF-8 # Network information network --bootproto=dhcp # Root password rootpw --plaintext "to_be_disabled" # System services services --enabled="sshd,waagent,NetworkManager" # System timezone timezone Etc/UTC --isUtc --ntpservers 0.rhel.pool.ntp.org,1.rhel.pool.ntp.org,2.rhel.pool.ntp.org,3.rhel.pool.ntp.org # Partition clearing information clearpart --all --initlabel # Clear the MBR zerombr # Disk partitioning information part /boot --fstype="xfs" --size=500 part / --fstyp="xfs" --size=1 --grow --asprimary # System bootloader configuration bootloader --location=mbr # Firewall configuration firewall --disabled # Enable SELinux selinux --enforcing # Don't configure X skipx # Power down the machine after install poweroff %packages @base @console-internet chrony sudo parted -dracut-config-rescue %end %post --log=/var/log/anaconda/post-install.log #!/bin/bash # Register Red Hat Subscription subscription-manager register --username=XXX --password=XXX --auto-attach --force # Install latest repo update yum update -y # Enable extras repo subscription-manager repos --enable=rhel-7-server-extras-rpms # Install WALinuxAgent yum install -y WALinuxAgent # Unregister Red Hat subscription subscription-manager unregister # Enable waaagent at boot-up systemctl enable waagent # Install cloud-init yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons # Configure waagent for cloud-init sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/g' /etc/waagent.conf sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf echo "Adding mounts and disk_setup to init stage" sed -i '/ - mounts/d' /etc/cloud/cloud.cfg sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg # Disable the root account usermod root -p '!!' # Configure swap using 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"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.device-timeout=2,x-systemd.requires=cloud-init.service", "0", "0"] EOF # Set the cmdline sed -i 's/^\(GRUB_CMDLINE_LINUX\)=".*"$/\1="console=tty1 console=ttyS0 earlyprintk=ttyS0"/g' /etc/default/grub # Enable SSH keepalive sed -i 's/^#\(ClientAliveInterval\).*$/\1 180/g' /etc/ssh/sshd_config # Build the grub cfg grub2-mkconfig -o /boot/grub2/grub.cfg # Configure network cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes EOF sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF # Deprovision and prepare for Azure if you are creating a generalized image sudo cloud-init clean --logs --seed sudo rm -rf /var/lib/cloud/ sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user rm -f ~/.bash_history export HISTSIZE=0 %end
Поместите файл kickstart в место, доступное для системы установки.
В диспетчере Hyper-V создайте новую виртуальную машину. На странице "Подключение виртуального жесткого диска" выберите "Подключить виртуальный жесткий диск" позже и завершите работу мастера создания виртуальной машины.
Откройте параметры виртуальной машины:
Подключите новый виртуальный жесткий диск к виртуальной машине. Выберите параметры VHD Format (Формат VHD) и Фиксированный размер.
Подключите установочный ISO-образ к DVD-дисководу.
В BIOS выберите загрузку с компакт-диска.
Запустите виртуальную машину. Когда появится руководство по установке, выберите клавишу TAB , чтобы настроить параметры загрузки.
Введите
inst.ks=<the location of the kickstart file>
в конце параметров загрузки и нажмите клавишу ВВОД .Дождитесь завершения процесса установки. По завершении виртуальная машина завершает работу автоматически. Виртуальный жесткий диск Linux готов к передаче в Azure.
Известные проблемы
Известна следующая проблема.
Не удалось включить драйвер Hyper-V в начальный электронный диск при использовании низкоуровневой оболочки Hyper V
В некоторых случаях установщики Linux могут не включать драйверы для Hyper-V в начальный электронный диск (initrd или initramfs), если только не обнаружат, что он работает в среде Hyper-V.
При использовании другой системы виртуализации (например, VirtualBox или Xen) для подготовки образа Linux может потребоваться перестроить инициализацию, чтобы обеспечить доступность по крайней мере hv_vmbus
hv_storvsc
модулей ядра на начальном диске ОЗУ. Эта проблема известна, по крайней мере, в системах, основанных на вышестоящем дистрибутиве Red Hat.
Чтобы устранить эту проблему, необходимо добавить модули Hyper-V в initramfs и выполнить повторную сборку:
Измените файл /etc/dracut.conf
, добавив следующее содержимое:
add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Повторно создайте initramfs:
sudo dracut -f -v
Дополнительные сведения см. в разделе "Перестроение инициамфов".
Связанный контент
- Теперь вы готовы использовать виртуальный жесткий диск RHEL для создания новых виртуальных машин в Azure. Если вы отправляете VHD-файл в Azure впервые, см. раздел Вариант 1. Передача VHD.
- Дополнительные сведения о гипервизорах, сертифицированных для запуска RHEL, см. на веб-сайте Red Hat.
- Чтобы узнать больше об использовании образов RHEL BYOS, готовых к работе, перейдите на страницу документации для создания собственной подписки.