Compartir vía


Preparación de una máquina virtual Oracle Linux para Azure

Se aplica a: ✔️ máquinas virtuales Linux ✔️ conjuntos de escalado flexibles

En este artículo se supone que ya ha instalado un sistema operativo (SO) Oracle Linux en un disco duro virtual (VHD). Existen varias herramientas para crear archivos .vhd. Un ejemplo es una solución de virtualización como Hyper-V. Para obtener instrucciones, consulte Instalación del rol de Hyper-V y configuración de una máquina virtual (VM).

Notas sobre la instalación de Oracle Linux

  • Para obtener más sugerencias sobre cómo preparar Linux para Azure, consulte Notas generales de instalación de Linux.
  • Hyper-V y Azure admiten Oracle Linux tanto con el kernel de empresa ininterrumpible (UEK) como con el kernel compatible con Red Hat.
  • El UEK2 de Oracle no se admite en Hyper-V y Azure porque no incluye los controladores requeridos.
  • El formato VHDX no se admite en Azure, solo el VHD fijo. Puede convertir el disco al formato VHD mediante el Administrador de Hyper-V o el cmdlet convert-vhd.
  • Se necesita soporte de kernel para montar sistemas de archivos de funciones definidas por el usuario (UDF). Al arrancar Azure la primera vez, la configuración de aprovisionamiento se pasa a la máquina virtual Linux a través de medios con formato UDF conectados al invitado. El agente Linux de Azure debe poder montar el sistema de archivos UDF para leer su configuración y aprovisionar la máquina virtual.
  • Al instalar el sistema Linux, se recomienda usar particiones estándar en lugar de Administrador de volúmenes lógicos (LVM), que suele ser el valor predeterminado para muchas instalaciones. Estas particiones estándar impiden que el nombre del LVM entre en conflicto con las máquinas virtuales clonadas, especialmente si en algún momento hace falta adjuntar un disco de SO a otra máquina virtual para solucionar problemas. LVM o RAID también se pueden usar en discos de datos.
  • Las versiones de kernel de Linux inferiores a la versión 2.6.37 no admiten NUMA en Hyper-V con tamaños de VM más grandes. Este problema afecta principalmente a las distribuciones anteriores que usan el kernel Red Hat 2.6.32 de canal de subida y se ha corregido en Oracle Linux 6.6 y las versiones posteriores.
  • No configure una partición de intercambio en el disco del SO.
  • En Azure, todos los discos duros virtuales deben tener un tamaño virtual alineado con 1 MB. Al convertir de un disco sin formato a VHD, debe asegurarse de que el tamaño del disco sin procesar sea un múltiplo de 1 MB antes de la conversión. Para obtener más información, consulte Notas de instalación de Linux.
  • Asegúrese de que el repositorio Addons está habilitado. Edite el archivo /etc/yum.repos.d/public-yum-ol6.repo(Oracle Linux 6) o /etc/yum.repos.d/public-yum-ol7.repo(Oracle Linux 7). Cambie la línea enabled=0 a enabled=1 en [ol6_addons] o [ol7_addons] en este archivo.

Oracle Linux 6.X

Importante

Recuerde que Oracle Linux 6.x ya está al final de la vida. Oracle Linux versión 6.10 tiene disponible el soporte extendido del ciclo de vida, que finaliza en julio de 2024 .

Debe completar los pasos de configuración específicos del sistema operativo para que la máquina virtual se ejecute en Azure.

  1. Seleccione la máquina virtual en el panel central del Administrador de Hyper-V.

  2. Seleccione Conectar para abrir la ventana de la máquina virtual.

  3. Desinstalar NetworkManager:

    sudo rpm -e --nodeps NetworkManager
    

    Nota:

    Si el paquete todavía no está instalado, se produce un mensaje de error en este comando. Este mensaje está previsto.

  4. Cree un archivo llamado network in the /etc/sysconfig/ que contenga el texto siguiente:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Cree un archivo llamado ifcfg-eth0 in the /etc/sysconfig/network-scripts/ que contenga el texto siguiente:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Modifique las reglas udev para evitar generar reglas estáticas para las interfaces Ethernet. Estas reglas pueden causar problemas al clonar una máquina virtual en Azure o 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. Asegúrese de que el servicio de red se inicia en tiempo de arranque:

    sudo chkconfig network on
    
  8. Instale python-pyasn1:

    sudo yum install python-pyasn1
    
  9. Modifique la línea de arranque de kernel de su configuración grub para que incluya más parámetros de kernel para Azure. Para realizar este paso, abra /boot/grub/menu.lst en un editor de texto y asegúrese de que el kernel incluye los parámetros siguientes:

    console=ttyS0 earlyprintk=ttyS0
    

    Esta configuración garantiza que todos los mensajes de la consola se envíen al primer puerto serie, lo que puede ayudar al soporte técnico de Azure con los problemas de depuración.

    Además de los pasos anteriores, se recomienda quitar los parámetros siguientes:

    rhgb quiet crashkernel=auto
    

    El arranque gráfico y silencioso no es útil en un entorno en la nube en el que desea que todos los registros se envíen al puerto serie.

    La opción crashkernel se puede dejar configurada si lo desea. Este parámetro reduce la cantidad de memoria disponible en la máquina virtual en 128 MB o más, lo que podría ser un problema para tamaños de máquina virtual más pequeños.

  10. Asegúrese de que el servidor SSH se haya instalado y configurado para iniciarse en el tiempo de arranque. Esta configuración es normalmente el valor predeterminado.

  11. Instale el Agente de Linux de Azure ejecutando el comando siguiente. La versión más reciente es la 2.0.15.

    sudo yum install WALinuxAgent
    

    Al instalar el paquete WALinuxAgent, se quitan los paquetes NetworkManager y NetworkManager-gnome si aún no se han quitado, como se describe en el paso 2.

  12. No cree un espacio de intercambio en el disco del sistema operativo.

    El agente de Linux de Azure puede configurar automáticamente un espacio de intercambio usando el disco de recursos local que se adjunta a la máquina virtual después de aprovisionarse en Azure. El disco de recursos local es un disco temporal que podría tener que vaciarse cuando la máquina virtual se desaprovisiona. Después de instalar el agente de Linux de Azure (consulte el paso anterior), modifique los parámetros siguientes en /etc/waagent.conf correctamente:

    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. Desaprovisione la máquina virtual y prepárela para el aprovisionamiento en Azure:

    sudo waagent -force -deprovision
    sudo export HISTSIZE=0
    sudo logout
    
  14. Seleccione Acción >Apagar en el Administrador de Hyper-V. El VHD de Linux ya está listo para cargarse en Azure.


Oracle Linux 7.0 y posterior

Siga los pasos de las secciones siguientes si usa Oracle Linux 7.0 o posterior.

Cambios en Oracle Linux 7

La preparación de una máquina virtual Oracle Linux 7 para Azure es similar a Oracle Linux 6, pero cabe destacar varias diferencias:

  • Azure admite Oracle Linux tanto con el kernel de empresa ininterrumpible (UEK) como con el kernel compatible con Red Hat. Se recomienda usar Oracle Linux con UEK.
  • El paquete NetworkManager ya no entra en conflicto con el agente de Linux de Azure. Este paquete se instala de forma predeterminada y se recomienda no quitarlo.
  • GRUB2 ahora se usa como cargador de arranque predeterminado, por lo que el procedimiento para editar los parámetros del kernel ha cambiado. (Consulte la sección "Pasos de configuración".)
  • XFS es ahora el sistema de archivos predeterminado. El sistema de archivos ext4 todavía se puede usar si lo desea.

Pasos de configuración

  1. En el Administrador de Hyper-V, seleccione la máquina virtual.

  2. Seleccione Conectar para abrir una ventana de consola de la máquina virtual.

  3. Cree un archivo llamado network in the /etc/sysconfig/ que contenga el texto siguiente:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Cree un archivo llamado ifcfg-eth0 in the /etc/sysconfig/network-scripts/ que contenga el texto siguiente:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  5. Modifique las reglas udev para evitar generar reglas estáticas para las interfaces Ethernet. Estas reglas pueden causar problemas al clonar una máquina virtual en Azure o Hyper-V:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    
  6. Asegúrese de que el servicio de red se inicia en tiempo de arranque:

    sudo chkconfig network on
    
  7. Instale el paquete python-pyasn1:

    sudo yum install python3-pyasn1
    
  8. Borre los metadatos de yum actuales e instale las actualizaciones:

    sudo yum clean all
    sudo yum -y update
    
  9. Modifique la línea de arranque de kernel de su configuración grub para que incluya más parámetros de kernel para Azure. Para realizar este paso, abra /etc/default/grub en un editor de texto y edite el parámetro GRUB_CMDLINE_LINUX. Por ejemplo:

    GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
    

    Esta modificación también garantiza que todos los mensajes de consola se envíen al primer puerto serie, lo que puede ayudar a la compatibilidad de Azure con problemas de depuración. También desactiva las convenciones de nomenclatura para tarjetas de interfaz de red en Oracle Linux 7 con el kernel de empresa ininterrumpible. También se recomienda quitar los parámetros siguientes:

       rhgb quiet crashkernel=auto
    

    El arranque gráfico y silencioso no es útil en un entorno en la nube en el que desea que todos los registros se envíen al puerto serie.

    La opción crashkernel se puede dejar configurada si lo desea. Este parámetro reduce la cantidad de memoria disponible en la máquina virtual en 128 MB o más, lo que podría ser un problema para tamaños de máquina virtual más pequeños.

  10. Una vez que haya terminado de editar /etc/default/grub, vuelva a generar la configuración de grub:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  11. Asegúrese de que el servidor SSH se haya instalado y configurado para iniciarse en el tiempo de arranque. Esta configuración es normalmente el valor predeterminado.

  12. Instale el Agente de Linux de Azure y sus dependencias:

    sudo yum install WALinuxAgent
    sudo systemctl enable waagent
    
  13. Instale cloud-init para controlar el aprovisionamiento:

    sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
  14. Configure waagent para 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. Configuración de intercambio:

    1. No cree un espacio de intercambio en el disco del sistema operativo.

      Anteriormente, el agente de Linux de Azure se usaba automáticamente para configurar el espacio de intercambio mediante el disco de recursos local que está conectado a la máquina virtual después de que la máquina virtual se aprovisione en Azure. Sin embargo, ahora cloud-init controla este paso. No debe usar el agente de Linux para dar formato al disco de recursos para crear el archivo de intercambio. Modifique los parámetros siguientes de /etc/waagent.conf de manera adecuada:

      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. Si quiere montar, formatear y crear un intercambio, puede hacer lo siguiente:

      • Pase este código como una configuración cloud-init cada vez que cree una máquina virtual.
      • Use una directiva cloud-init horneada en la imagen para realizar este paso cada vez que se cree la máquina virtual:
      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. Desaprovisione la máquina virtual y prepárela para el aprovisionamiento en 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
    

    Nota:

    Si va a migrar una máquina virtual específica y no desea crear una imagen generalizada, omita el paso de desaprovisionamiento.

  17. Seleccione Acción >Apagar en el Administrador de Hyper-V. El VHD de Linux ya está listo para cargarse en Azure.

Ya está listo para usar el .vhd de Oracle Linux para crear nuevas máquinas virtuales en Azure. Si es la primera vez que carga el archivo .vhd en Azure, vea Crear una VM Linux a partir de un disco personalizado.