Share via


Preparar uma máquina virtual do Oracle Linux para o Azure

Aplica-se a: ✔️ Linux VMs ✔️ Conjuntos de escala flexível

Este artigo pressupõe que você já tenha instalado um sistema operacional Oracle Linux em um disco rígido virtual. Existem várias ferramentas para criar arquivos .vhd, por exemplo, uma solução de virtualização como o Hyper-V. Para obter instruções, consulte Instalar a função Hyper-V e Configurar uma máquina virtual.

Notas de instalação do Oracle Linux

  • Consulte também Notas Gerais de Instalação do Linux para obter mais dicas sobre como preparar o Linux para o Azure.
  • O Hyper-V e o Azure oferecem suporte ao Oracle Linux com o UEK (Unbreakable Enterprise Kernel) ou o Red Hat Compatible Kernel.
  • O UEK2 da Oracle não é suportado no Hyper-V e no Azure, pois não inclui os drivers necessários.
  • O formato VHDX não é suportado no Azure, apenas VHD fixo. Você pode converter o disco para o formato VHD usando o Gerenciador do Hyper-V ou o cmdlet convert-vhd.
  • É necessário suporte de kernel para a montagem de sistemas de ficheiros UDF. Na primeira inicialização no Azure, a configuração de provisionamento é passada para a VM Linux por meio de mídia formatada em UDF anexada ao convidado. O agente Linux do Azure deve ser capaz de montar o sistema de arquivos UDF para ler sua configuração e provisionar a VM.
  • Ao instalar o sistema Linux, recomendamos que você use partições padrão em vez de LVM (geralmente o padrão para muitas instalações). Essas partições padrão evitam conflitos de nome LVM com VMs clonadas, especialmente se um disco do sistema operacional precisar ser conectado a outra VM para solução de problemas. LVM ou RAID podem ser usados em discos de dados, se preferir.
  • As versões do kernel Linux anteriores à 2.6.37 não suportam NUMA no Hyper-V com tamanhos de VM maiores. Esse problema afeta principalmente distribuições mais antigas que usam o kernel upstream do Red Hat 2.6.32 e foi corrigido no Oracle Linux 6.6 e posterior.
  • Não configure uma partição swap no disco do SO.
  • Todos os VHDs no Azure devem ter um tamanho virtual alinhado a 1 MB. Ao converter de um disco bruto para VHD, você deve garantir que o tamanho do disco bruto seja um múltiplo de 1 MB antes da conversão. Consulte Notas de instalação do Linux para obter mais informações.
  • Certifique-se de que o Addons repositório está ativado. Edite o arquivo (Oracle Linux 6) ou (Oracle Linux 7) e altere a linha para [ol6_addons] ou /etc/yum.repos.d/public-yum-ol7.repo[ol7_addons] neste arquivo/etc/yum.repos.d/public-yum-ol6.repo.enabled=1enabled=0

Oracle Linux 6.X [en]

Importante

Tenha em consideração que o Oracle Linux 6.x já é EOL. O Oracle Linux versão 6.10 tem suporte disponível para ELS, que terminará em 07/2024.

Você deve concluir etapas de configuração específicas no sistema operacional para que a máquina virtual seja executada no Azure.

  1. No painel central do Gerenciador do Hyper-V, selecione a máquina virtual.

  2. Clique em Conectar para abrir a janela da máquina virtual.

  3. Desinstale o NetworkManager executando o seguinte comando:

    sudo rpm -e --nodeps NetworkManager
    

    Nota

    Se o pacote ainda não estiver instalado, este comando falhará com uma mensagem de erro. Esta mensagem é esperada.

  4. Crie um arquivo chamado network no /etc/sysconfig/ diretório que contém o seguinte texto:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. Crie um arquivo chamado ifcfg-eth0 no /etc/sysconfig/network-scripts/ diretório que contém o seguinte texto:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  6. Modifique as regras do udev para evitar a geração de regras estáticas para a(s) interface(s) Ethernet. Essas regras podem causar problemas ao clonar uma máquina virtual no Microsoft Azure ou no 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. Verifique se o serviço de rede é iniciado no momento da inicialização executando o seguinte comando:

    sudo chkconfig network on
    
  8. Instale python-pyasn1 executando o seguinte comando:

    sudo yum install python-pyasn1
    
  9. Modifique a linha de inicialização do kernel em sua configuração grub para incluir mais parâmetros do kernel para o Azure. Para fazer isso, abra "/boot/grub/menu.lst" em um editor de texto e certifique-se de que o kernel inclua os seguintes parâmetros:

    console=ttyS0 earlyprintk=ttyS0
    

    Essa configuração garante que todas as mensagens do console sejam enviadas para a primeira porta serial, o que pode ajudar o suporte do Azure com problemas de depuração.

    Além do acima, recomendamos remover os seguintes parâmetros:

    rhgb quiet crashkernel=auto
    

    A inicialização gráfica e silenciosa não é útil em um ambiente de nuvem onde queremos que todos os logs sejam enviados para a porta serial.

    A crashkernel opção pode ser deixada configurada, se desejado, mas observe que esse parâmetro reduz a quantidade de memória disponível na VM em 128 MB ou mais, o que pode ser problemático nos tamanhos menores da VM.

  10. Certifique-se de que o servidor SSH está instalado e configurado para iniciar no momento da inicialização. Este é geralmente o padrão.

  11. Instale o Agente Linux do Azure executando o seguinte comando. A última versão é 2.0.15.

    sudo yum install WALinuxAgent
    

    A instalação do pacote WALinuxAgent remove os pacotes NetworkManager e NetworkManager-gnome se eles ainda não tiverem sido removidos conforme descrito na etapa 2.

  12. Não crie espaço de permuta no disco do SO.

    O Agente Linux do Azure pode configurar automaticamente o espaço de permuta usando o disco de recurso local anexado à VM após o provisionamento no Azure. O disco de recurso local é um disco temporário e pode ser esvaziado quando a VM é desprovisionada. Depois de instalar o Agente Linux do Azure (consulte a etapa anterior), modifique os seguintes parâmetros em /etc/waagent.conf adequadamente:

    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. Execute os seguintes comandos para desprovisionar a máquina virtual e prepará-la para provisionamento no Azure:

    sudo waagent -force -deprovision
    sudo export HISTSIZE=0
    sudo logout
    
  14. Clique em Ação - Desligar no Gerenciador do Hyper-V>. Seu VHD do Linux agora está pronto para ser carregado no Azure.


Oracle Linux 7.0 e posterior

Alterações no Oracle Linux 7

Preparar uma máquina virtual Oracle Linux 7 para o Azure é semelhante ao Oracle Linux 6, no entanto, há várias diferenças significativas que merecem ser notadas:

  • O Azure suporta Oracle Linux com o Unbreakable Enterprise Kernel (UEK) ou o Red Hat Compatible Kernel. Oracle Linux com UEK é recomendado.
  • O pacote NetworkManager não entra mais em conflito com o agente Linux do Azure. Este pacote é instalado por padrão e recomendamos que não seja removido.
  • GRUB2 agora é usado como o bootloader padrão, então o procedimento para editar os parâmetros do kernel mudou (veja abaixo).
  • XFS é agora o sistema de arquivos padrão. O sistema de arquivos ext4 ainda pode ser usado, se desejado.

Etapas de configuração

  1. No Gerenciador do Hyper-V, selecione a máquina virtual.

  2. Clique em Conectar para abrir uma janela de console para a máquina virtual.

  3. Crie um arquivo chamado network no /etc/sysconfig/ diretório que contém o seguinte texto:

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. Crie um arquivo chamado ifcfg-eth0 no /etc/sysconfig/network-scripts/ diretório que contém o seguinte texto:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no
    
  5. Modifique as regras do udev para evitar a geração de regras estáticas para a(s) interface(s) Ethernet. Essas regras podem causar problemas ao clonar uma máquina virtual no Microsoft Azure ou no Hyper-V:

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    
  6. Verifique se o serviço de rede é iniciado no momento da inicialização executando o seguinte comando:

    sudo chkconfig network on
    
  7. Instale o pacote python-pyasn1 executando o seguinte comando:

    sudo yum install python3-pyasn1
    
  8. Execute o seguinte comando para limpar os metadados atuais do yum e instalar as atualizações:

    sudo yum clean all
    sudo yum -y update
    
  9. Modifique a linha de inicialização do kernel em sua configuração grub para incluir mais parâmetros do kernel para o Azure. Para fazer isso, abra "/etc/default/grub" em um editor de texto e edite o GRUB_CMDLINE_LINUX parâmetro, por exemplo:

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

    Isso também garantirá que todas as mensagens do console sejam enviadas para a primeira porta serial, o que pode ajudar o suporte do Azure com problemas de depuração. Ele também desativa as convenções de nomenclatura para NICs no Oracle Linux 7 com o Unbreakable Enterprise Kernel. Além do acima, recomenda-se remover os seguintes parâmetros:

       rhgb quiet crashkernel=auto
    

    A inicialização gráfica e silenciosa não é útil em um ambiente de nuvem onde queremos que todos os logs sejam enviados para a porta serial.

    A crashkernel opção pode ser deixada configurada, se desejado, mas observe que esse parâmetro reduzirá a quantidade de memória disponível na VM em 128 MB ou mais, o que pode ser problemático nos tamanhos menores da VM.

  10. Quando terminar de editar "/etc/default/grub" por acima, execute o seguinte comando para reconstruir a configuração grub:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  11. Certifique-se de que o servidor SSH está instalado e configurado para iniciar no momento da inicialização. Este é geralmente o padrão.

  12. Instale o Agente Linux do Azure e as dependências:

    sudo yum install WALinuxAgent
    sudo systemctl enable waagent
    
  13. Instale o cloud-init para lidar com o provisionamento

    sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
  14. Configurar 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. Configuração de swap. Não crie espaço de permuta no disco do sistema operacional.

    Anteriormente, o Agente Linux do Azure era usado automaticamente para configurar o espaço de permuta usando o disco de recurso local anexado à máquina virtual depois que a máquina virtual é provisionada no Azure. No entanto, isso agora é tratado pelo cloud-init, você não deve usar o Agente Linux para formatar o disco de recursos criar o arquivo de permuta, modificar os seguintes parâmetros de /etc/waagent.conf forma apropriada:

    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
    

    Se você quiser montar, formatar e criar swap, você pode:

    • Passe isso como uma configuração cloud-init toda vez que criar uma VM
    • Use uma diretiva cloud-init incorporada na imagem que fará isso sempre que a VM for criada:
    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. Execute os seguintes comandos para desprovisionar a máquina virtual e prepará-la para provisionamento no 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

    Se você estiver migrando uma máquina virtual específica e não quiser criar uma imagem generalizada, ignore a etapa de desprovisionamento.

  17. Clique em Ação - Desligar no Gerenciador do Hyper-V>. Seu VHD do Linux agora está pronto para ser carregado no Azure.

Próximos passos

Agora você está pronto para usar seu Oracle Linux .vhd para criar novas máquinas virtuais no Azure. Se esta for a primeira vez que você está carregando o arquivo .vhd no Azure, consulte Criar uma VM Linux a partir de um disco personalizado.