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íneaenabled=0
aenabled=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.
Seleccione la máquina virtual en el panel central del Administrador de Hyper-V.
Seleccione Conectar para abrir la ventana de la máquina virtual.
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.
Cree un archivo llamado network in the
/etc/sysconfig/
que contenga el texto siguiente:NETWORKING=yes HOSTNAME=localhost.localdomain
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
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
Asegúrese de que el servicio de red se inicia en tiempo de arranque:
sudo chkconfig network on
Instale
python-pyasn1
:sudo yum install python-pyasn1
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.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.
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 paquetesNetworkManager
yNetworkManager-gnome
si aún no se han quitado, como se describe en el paso 2.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.
Desaprovisione la máquina virtual y prepárela para el aprovisionamiento en Azure:
sudo waagent -force -deprovision sudo export HISTSIZE=0 sudo logout
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
En el Administrador de Hyper-V, seleccione la máquina virtual.
Seleccione Conectar para abrir una ventana de consola de la máquina virtual.
Cree un archivo llamado network in the
/etc/sysconfig/
que contenga el texto siguiente:NETWORKING=yes HOSTNAME=localhost.localdomain
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
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
Asegúrese de que el servicio de red se inicia en tiempo de arranque:
sudo chkconfig network on
Instale el paquete
python-pyasn1
:sudo yum install python3-pyasn1
Borre los metadatos de yum actuales e instale las actualizaciones:
sudo yum clean all sudo yum -y update
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ámetroGRUB_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.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
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.
Instale el Agente de Linux de Azure y sus dependencias:
sudo yum install WALinuxAgent sudo systemctl enable waagent
Instale
cloud-init
para controlar el aprovisionamiento:sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
Configure
waagent
paracloud-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
Configuración de intercambio:
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
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
- Pase este código como una configuración
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.
Seleccione Acción >Apagar en el Administrador de Hyper-V. El VHD de Linux ya está listo para cargarse en Azure.
Contenido relacionado
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.