Поделиться через


Подготовка виртуальной машины 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 необходимо выполнить определенные действия по настройке.

  1. В центральной области диспетчера Hyper-V выберите виртуальную машину.

  2. Выберите "Подключиться" , чтобы открыть окно виртуальной машины.

  3. Удаление NetworkManager:

    sudo rpm -e --nodeps NetworkManager
    

    Примечание.

    Если пакет еще не установлен, эта команда завершается ошибкой. Это сообщение ожидается.

  4. Создайте файл с именем network в каталоге /etc/sysconfig/. Файл должен содержать следующий текст:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Создайте файл с именем ifcfg-eth0 в каталоге /etc/sysconfig/network-scripts/. Файл должен содержать следующий текст:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Измените правила 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
    
  7. Убедитесь, что сетевая служба начинается во время загрузки:

    sudo chkconfig network on
    
  8. Установите python-pyasn1:

    sudo yum install python-pyasn1
    
  9. Измените загрузочную строку ядра в конфигурации grub, чтобы включить дополнительные параметры ядра для Azure. Для этого откройте /boot/grub/menu.lst текстовый редактор и убедитесь, что ядро включает следующие параметры:

    console=ttyS0 earlyprintk=ttyS0
    

    Этот параметр гарантирует, что все сообщения консоли отправляются в первый последовательный порт, который может помочь поддержка Azure с проблемами отладки.

    В дополнение к приведенным выше шагам рекомендуется удалить следующие параметры:

    rhgb quiet crashkernel=auto
    

    Графическая и тихая загрузка не полезна в облачной среде, в которой требуется отправить все журналы в последовательный порт.

    Если crashkernel вы хотите, можно оставить этот параметр. Этот параметр уменьшает объем доступной памяти на виртуальной машине на 128 МБ или более, что может быть проблемой для небольших размеров виртуальных машин.

  10. Убедитесь, что SSH-сервер установлен и настроен для включения во время загрузки. Обычно этот параметр задан по умолчанию.

  11. Установите агент Azure Linux, выполнив следующую команду. Последней является версия 2.0.15.

    sudo yum install WALinuxAgent
    

    WALinuxAgent Установка пакета удаляет NetworkManager и NetworkManager-gnome пакеты, если они еще не удалены, как описано на шаге 2.

  12. Не создавайте пространство подкачки на диске с ОС.

    Агент 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.
    
  13. Отмените подготовку виртуальной машины и подготовьте ее к подготовке в Azure:

    sudo waagent -force -deprovision
    sudo export HISTSIZE=0
    sudo logout
    
  14. В диспетчере 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 по-прежнему может использоваться, если вы хотите.

Шаги настройки

  1. В диспетчере Hyper-V выберите виртуальную машину.

  2. Выберите Подключение, чтобы открыть окно консоли для виртуальной машины.

  3. Создайте файл с именем network в каталоге /etc/sysconfig/. Файл должен содержать следующий текст:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Создайте файл с именем ifcfg-eth0 в каталоге /etc/sysconfig/network-scripts/. Файл должен содержать следующий текст:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  5. Измените правила udev, чтобы избежать создания статических правил для интерфейсов Ethernet. Эти правила могут вызвать проблемы при клонировании виртуальной машины в Azure или Hyper-V:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    
  6. Убедитесь, что сетевая служба начинается во время загрузки:

    sudo chkconfig network on
    
  7. Установите пакет python-pyasn1.

    sudo yum install python3-pyasn1
    
  8. Снимите текущие метаданные yum и установите все обновления:

    sudo yum clean all
    sudo yum -y update
    
  9. Измените загрузочную строку ядра в конфигурации 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 МБ или более, что может быть проблемой для небольших размеров виртуальных машин.

  10. После завершения редактирования /etc/default/grubперестройте конфигурацию grub:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  11. Убедитесь, что SSH-сервер установлен и настроен для включения во время загрузки. Обычно этот параметр задан по умолчанию.

  12. Установите агент Azure Linux и зависимости:

    sudo yum install WALinuxAgent
    sudo systemctl enable waagent
    
  13. Установите cloud-init для обработки подготовки:

    sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
  14. Настройка 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
    
  15. Конфигурация переключения:

    1. Не создавайте пространство подкачки на диске ОС.

      Ранее агент 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
      
    2. Если вы хотите подключить, отформатировать и создать буфер, можно:

      • Передайте этот код в качестве конфигурации при каждом создании виртуальной 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
      
  16. Отмените подготовку виртуальной машины и подготовьте ее к подготовке в 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
    

    Примечание.

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

  17. В диспетчере Hyper-V выберите Действие>Завершение работы. Виртуальный жесткий диск Linux готов к передаче в Azure.

Теперь вы готовы использовать VHD-файл Oracle Linux для создания новых виртуальных машин в Azure. Если вы отправляете VHD-файл в Azure впервые, см. раздел Вариант 1. Передача VHD.