Informações para distribuições não endossadasInformation for Non-endorsed Distributions

O SLA (contrato de nível de serviço) da plataforma do Azure aplica-se a máquinas virtuais com o sistema operacional Linux somente quando uma das distribuições endossadas é usada com os detalhes da configuração especificados neste artigo.The Azure platform SLA applies to virtual machines running the Linux OS only when one of the endorsed distributions is used. Para essas distribuições endossadas, as imagens do Linux pré-configuradas são fornecidas no Azure Marketplace.For these endorsed distributions, pre-configured Linux images are provided in the Azure Marketplace.

Todas as distribuições em execução no Azure têm vários pré-requisitos.All distributions running on Azure have a number of prerequisites. Este artigo pode não ser abrangente, pois cada distribuição é diferente.This article can't be comprehensive, as every distribution is different. Mesmo que você atenda a todos os critérios abaixo, talvez seja necessário ajustar significativamente o sistema Linux para que funcione corretamente.Even if you meet all the criteria below, you may need to significantly tweak your Linux system for it to run properly.

É recomendável iniciar com uma das distribuições endossadas do Linux no Azure.We recommend that you start with one of the Linux on Azure Endorsed Distributions. Os artigos a seguir mostram como preparar as várias distribuições endossadas do Linux com suporte no Azure:The following articles show you how to prepare the various endorsed Linux distributions that are supported on Azure:

Este artigo concentra-se na orientação geral para executar a distribuição do Linux no Azure.This article focuses on general guidance for running your Linux distribution on Azure.

Notas de instalação gerais do LinuxGeneral Linux Installation Notes

  • O formato VHDX (disco rígido virtual para Hyper-V) não tem suporte no Azure, apenas VHD fixo.The Hyper-V virtual hard disk (VHDX) format isn't supported in Azure, only fixed VHD. Você pode converter o disco para o formato VHD usando o Gerenciador do Hyper-V ou o cmdlet Convert-VHD .You can convert the disk to VHD format using Hyper-V Manager or the Convert-VHD cmdlet. Se você estiver usando o VirtualBox, selecione Tamanho fixo em vez do padrão (alocado dinamicamente) ao criar o disco.If you're using VirtualBox, select Fixed size rather than the default (dynamically allocated) when creating the disk.
  • O Azure dá suporte a máquinas virtuais Gen1 (inicialização do BIOS) & Gen2 (inicialização UEFI).Azure supports Gen1 (BIOS boot) & Gen2 (UEFI boot) Virtual machines.
  • O tamanho máximo permitido para o VHD é 1.023 GB.The maximum size allowed for the VHD is 1,023 GB.
  • Ao instalar o sistema Linux, é recomendável usar partições padrão em vez do LVM (Gerenciador de Volume Lógico), que é o padrão para muitas instalações.When installing the Linux system we recommend that you use standard partitions, rather than Logical Volume Manager (LVM) which is the default for many installations. Usar partições padrão evitará conflitos de nome do LVM com VMs clonadas, especialmente se um disco de SO já estiver conectado a outra VM idêntica para solução de problemas.Using standard partitions will avoid LVM name conflicts with cloned VMs, particularly if an OS disk is ever attached to another identical VM for troubleshooting. LVM ou RAID podem ser usados nos discos de dados.LVM or RAID may be used on data disks.
  • O suporte do kernel para a montagem de sistemas de arquivos UDF é necessário.Kernel support for mounting UDF file systems is necessary. Na primeira inicialização no Azure, a configuração de provisionamento é passada para a VM do Linux usando a mídia em formato UDF anexada ao convidado.At first boot on Azure the provisioning configuration is passed to the Linux VM by using UDF-formatted media that is attached to the guest. O agente Linux do Azure deve montar o sistema de arquivos UDF para ler a configuração e provisionar a VM.The Azure Linux agent must mount the UDF file system to read its configuration and provision the VM.
  • As versões do kernel do Linux anteriores à 2.6.37 não são suporte para NUMA no Hyper-V com tamanhos de VM maiores.Linux kernel versions earlier than 2.6.37 don't support NUMA on Hyper-V with larger VM sizes. Esse problema afeta principalmente distribuições mais antigas usando o kernel do Red Hat 2.6.32, e foi corrigido no RHEL (Red Hat Enterprise Linux) 6.6 (kernel-2.6.32-504).This issue primarily impacts older distributions using the upstream Red Hat 2.6.32 kernel, and was fixed in Red Hat Enterprise Linux (RHEL) 6.6 (kernel-2.6.32-504). Sistemas que executam kernels personalizados anteriores a 2.6.37 ou com base em RHEL anteriores a 2.6.32-504 devem definir o parâmetro de inicialização numa=off na linha de comando do kernel em grub.conf.Systems running custom kernels older than 2.6.37, or RHEL-based kernels older than 2.6.32-504 must set the boot parameter numa=off on the kernel command line in grub.conf. Para obter mais informações, consulte o KB 436883 do Red Hat.For more information, see Red Hat KB 436883.
  • Não configure uma partição de permuta no disco do sistema operacional.Don't configure a swap partition on the OS disk. O agente do Linux pode ser configurado para criar um arquivo de permuta no disco de recursos temporário, conforme descrito nas etapas a seguir.The Linux agent can be configured to create a swap file on the temporary resource disk, as described in the following steps.
  • Todos os VHDs no Azure devem ter um tamanho virtual alinhado a 1 MB.All VHDs on Azure must have a virtual size aligned to 1 MB. Ao converter de um disco bruto em VHD, será necessário garantir que o tamanho do disco bruto seja um múltiplo de 1 MB antes da conversão, conforme descrito nas etapas a seguir.When converting from a raw disk to VHD you must ensure that the raw disk size is a multiple of 1 MB before conversion, as described in the following steps.

Instalação dos módulos de kernel sem Hyper-VInstalling kernel modules without Hyper-V

O Azure é executado no Hipervisor Hyper-V, portanto, o Linux exige que determinados módulos do kernel sejam executados no Azure.Azure runs on the Hyper-V hypervisor, so Linux requires certain kernel modules to run in Azure. Se você tiver uma VM que foi criada fora do Hyper-V, os instaladores do Linux talvez não incluam os drivers do Hyper-V no ramdisk inicial (initrd ou initramfs), exceto se a VM detectar que está em execução em um ambiente Hyper-V.If you have a VM that was created outside of Hyper-V, the Linux installers may not include the drivers for Hyper-V in the initial ramdisk (initrd or initramfs), unless the VM detects that it's running on a Hyper-V environment. Ao usar um sistema de virtualização diferente (como VirtualBox, KVM e assim por diante) para preparar a imagem do Linux, talvez seja necessário recompilar o initrd para que pelo menos os módulos de kernel hv_vmbus e hv_storvsc estejam disponíveis no ramdisk inicial.When using a different virtualization system (such as VirtualBox, KVM, and so on) to prepare your Linux image, you may need to rebuild the initrd so that at least the hv_vmbus and hv_storvsc kernel modules are available on the initial ramdisk. Esse problema conhecido é para sistemas com base na distribuição anterior do Red Hat e, possivelmente, em outros.This known issue is for systems based on the upstream Red Hat distribution, and possibly others.

O mecanismo para recriar a imagem initrd ou initramfs pode variar dependendo da distribuição.The mechanism for rebuilding the initrd or initramfs image may vary depending on the distribution. Consulte a documentação da distribuição ou suporte para o procedimento adequado.Consult your distribution's documentation or support for the proper procedure. Aqui está um exemplo para recompilar o initrd usando o utilitário mkinitrd:Here is one example for rebuilding the initrd by using the mkinitrd utility:

  1. Faça o backup da imagem initrd existente:Back up the existing initrd image:

    cd /boot
    sudo cp initrd-`uname -r`.img  initrd-`uname -r`.img.bak
    
  2. Recompile o initrd com os módulos do kernel hv_vmbus e hv_storvsc:Rebuild the initrd with the hv_vmbus and hv_storvsc kernel modules:

    sudo mkinitrd --preload=hv_storvsc --preload=hv_vmbus -v -f initrd-`uname -r`.img `uname -r`
    

Redimensionando VHDsResizing VHDs

As imagens de VHD no Azure devem ter um tamanho virtual alinhado para 1MB.VHD images on Azure must have a virtual size aligned to 1 MB. Normalmente, os VHDs criados usando o Hyper-V estão alinhados corretamente.Typically, VHDs created using Hyper-V are aligned correctly. Se o VHD não estiver alinhado corretamente, você poderá receber uma mensagem de erro semelhante à seguinte ao tentar criar uma imagem do VHD.If the VHD isn't aligned correctly, you may receive an error message similar to the following when you try to create an image from your VHD.

  • O VHD http: / / <mystorageaccount> . blob.Core.Windows.net/VHDs/MyLinuxVM.VHD tem um tamanho virtual sem suporte de 21475270656 bytes.The VHD http://<mystorageaccount>.blob.core.windows.net/vhds/MyLinuxVM.vhd has an unsupported virtual size of 21475270656 bytes. O tamanho deve ser um número inteiro (em MBs).The size must be a whole number (in MBs).

Nesse caso, redimensione a VM usando o console do Gerenciador Hyper-V ou o cmdlet do PowerShell Resize-VHD.In this case, resize the VM using either the Hyper-V Manager console or the Resize-VHD PowerShell cmdlet. Se você não estiver executando em um ambiente Windows, é recomendável usar qemu-img para converter (se necessário) e redimensionar o VHD.If you aren't running in a Windows environment, we recommend using qemu-img to convert (if needed) and resize the VHD.

Observação

Há um bug conhecido em qemu-img versões >=2.2.1 que resulta em um VHD formatado incorretamente.There is a known bug in qemu-img versions >=2.2.1 that results in an improperly formatted VHD. O problema foi corrigido na versão QEMU 2.6.The issue has been fixed in QEMU 2.6. É recomendável usar qemu-img 2.2.0 ou inferior, ou 2.6 ou superior.We recommend using either qemu-img 2.2.0 or lower, or 2.6 or higher.

  1. Redimensionar o VHD diretamente, usando ferramentas como qemu-img ou vbox-manage pode resultar em um VHD incapaz de ser inicializado.Resizing the VHD directly using tools such as qemu-img or vbox-manage may result in an unbootable VHD. É recomendável primeiro converter o VHD em uma imagem de disco RAW.We recommend first converting the VHD to a RAW disk image. Se a imagem da VM foi criada como uma imagem de disco RAW (o padrão para alguns hipervisores como KVM), você poderá pular esta etapa.If the VM image was created as a RAW disk image (the default for some hypervisors such as KVM), then you may skip this step.

    qemu-img convert -f vpc -O raw MyLinuxVM.vhd MyLinuxVM.raw
    
  2. Calcule o tamanho necessário da imagem de disco para que o tamanho virtual seja alinhado a 1 MB.Calculate the required size of the disk image so that the virtual size is aligned to 1 MB. O script de shell bash a seguir usa qemu-img info para determinar o tamanho virtual da imagem do disco e, em seguida, calcula o tamanho para o próximo 1 MB.The following bash shell script uses qemu-img info to determine the virtual size of the disk image, and then calculates the size to the next 1 MB.

    rawdisk="MyLinuxVM.raw"
    vhddisk="MyLinuxVM.vhd"
    
    MB=$((1024*1024))
    size=$(qemu-img info -f raw --output json "$rawdisk" | \
    gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
    
    rounded_size=$(((($size+$MB-1)/$MB)*$MB))
    
    echo "Rounded Size = $rounded_size"
    
  3. Redimensione o disco bruto usando $rounded_size como definido acima.Resize the raw disk using $rounded_size as set above.

    qemu-img resize MyLinuxVM.raw $rounded_size
    
  4. Agora, converta o disco RAW novamente em um VHD de tamanho fixo.Now, convert the RAW disk back to a fixed-size VHD.

    qemu-img convert -f raw -o subformat=fixed -O vpc MyLinuxVM.raw MyLinuxVM.vhd
    

    Ou, com a versão 2.6+ do qemu, inclua a opção force_size.Or, with qemu version 2.6+, include the force_size option.

    qemu-img convert -f raw -o subformat=fixed,force_size -O vpc MyLinuxVM.raw MyLinuxVM.vhd
    

Requisitos do kernel do LinuxLinux Kernel Requirements

Os drivers LIS (Serviços de Integração do Linux) para Hyper-V e Azure são obtidos diretamente no kernel upstream do Linux.The Linux Integration Services (LIS) drivers for Hyper-V and Azure are contributed directly to the upstream Linux kernel. Muitas distribuições que incluem uma versão recente do kernel do Linux (como 3.x) já possuem esses drivers disponíveis ou, caso contrário, fornecem versões portadas desses drivers com seus kernels.Many distributions that include a recent Linux kernel version (such as 3.x) have these drivers available already, or otherwise provide backported versions of these drivers with their kernels. Esses drivers são constantemente atualizados no kernel upstream com novas correções e recursos, portanto, quando possível, é recomendável a execução de uma distribuição endossada que inclui essas correções e atualizações.These drivers are constantly being updated in the upstream kernel with new fixes and features, so when possible we recommend running an endorsed distribution that includes these fixes and updates.

Se você estiver executando uma variante do Red Hat Enterprise Linux versões 6.0 a 6.3, será necessário instalar os últimos drivers LIS para Hyper-V.If you're running a variant of Red Hat Enterprise Linux versions 6.0 to 6.3, then you'll need to install the latest LIS drivers for Hyper-V. Começando com o RHEL 6.4+ (e derivados), os drivers LIS já estão incluídos no kernel e, portanto, nenhum pacote de instalação adicional é necessário.Beginning with RHEL 6.4+ (and derivatives) the LIS drivers are already included with the kernel and so no additional installation packages are needed.

Se um kernel personalizado for necessário, é recomendável uma versão recente do kernel (como 3.8+).If a custom kernel is required, we recommend a recent kernel version (such as 3.8+). No caso das distribuições ou dos fornecedores que mantêm seus próprios kernels, será necessário reverter os drivers LIS do kernel upstream para seu kernel personalizado.For distributions or vendors who maintain their own kernel, you'll need to regularly backport the LIS drivers from the upstream kernel to your custom kernel. Mesmo se você já estiver executando uma versão do kernel relativamente recente, é recomendável controlar todas as correções upstream nos drivers LIS e fazer a reversão conforme necessário.Even if you're already running a relatively recent kernel version, we highly recommend keeping track of any upstream fixes in the LIS drivers and backport them as needed. Os locais dos arquivos de origem do driver LIS são especificados no arquivo MAINTAINERS na árvore de origem do kernel do Linux:The locations of the LIS driver source files are specified in the MAINTAINERS file in the Linux kernel source tree:

    F:    arch/x86/include/asm/mshyperv.h
    F:    arch/x86/include/uapi/asm/hyperv.h
    F:    arch/x86/kernel/cpu/mshyperv.c
    F:    drivers/hid/hid-hyperv.c
    F:    drivers/hv/
    F:    drivers/input/serio/hyperv-keyboard.c
    F:    drivers/net/hyperv/
    F:    drivers/scsi/storvsc_drv.c
    F:    drivers/video/fbdev/hyperv_fb.c
    F:    include/linux/hyperv.h
    F:    tools/hv/

Os seguintes patches devem ser incluídos no kernel.The following patches must be included in the kernel. Esta lista não pode ser completa para todas as distribuições.This list can't be complete for all distributions.

O agente Linux do AzureThe Azure Linux Agent

O agente Linux do Azure waagent provisiona uma máquina virtual do Linux no Azure.The Azure Linux Agent waagent provisions a Linux virtual machine in Azure. Você pode obter a última versão, verificar os problemas com arquivos ou enviar solicitações de pull no repositório GitHub do agente Linux.You can get the latest version, file issues, or submit pull requests at the Linux Agent GitHub repo.

  • O agente Linux consta na licença do Apache 2.0.The Linux agent is released under the Apache 2.0 license. Muitas distribuições já fornecem pacotes RPM ou. deb para o agente, e esses pacotes podem ser facilmente instalados e atualizados.Many distributions already provide RPM or .deb packages for the agent, and these packages can easily be installed and updated.
  • O agente Linux do Azure requer Python v2.6+.The Azure Linux Agent requires Python v2.6+.
  • Além disso, o agente requer o módulo python-pyasn1.The agent also requires the python-pyasn1 module. A maioria das distribuições fornece esse módulo como um pacote separado a ser instalado.Most distributions provide this module as a separate package to be installed.
  • Em alguns casos, é possível que o agente Linux do Azure não seja compatível com o NetworkManager.In some cases, the Azure Linux Agent may not be compatible with NetworkManager. Muitos dos pacotes RPM/DEB fornecidos pelas distribuições configuram NetworkManager como um conflito para o pacote waagent.Many of the RPM/deb packages provided by distributions configure NetworkManager as a conflict to the waagent package. Nesses casos, ele irá desinstalar o NetworkManager quando você instalar o pacote do agente Linux.In these cases, it will uninstall NetworkManager when you install the Linux agent package.
  • O agente Linux do Azure deve estar na ou acima da versão mínima com suporte.The Azure Linux Agent must be at or above the minimum supported version.

Requisitos gerais do sistema LinuxGeneral Linux System Requirements

  1. Modifique a linha de inicialização do kernel no GRUB ou no GRUB2 para incluir os seguintes parâmetros, de modo que todas as mensagens do console sejam enviadas para a primeira porta serial.Modify the kernel boot line in GRUB or GRUB2 to include the following parameters, so that all console messages are sent to the first serial port. Essas mensagens podem ajudar o suporte do Azure a depurar quaisquer problemas.These messages can assist Azure support with debugging any issues.

    console=ttyS0,115200n8 earlyprintk=ttyS0,115200 rootdelay=300
    

    Além disso, é recomendável remover os seguintes parâmetros, se existirem.We also recommend removing the following parameters if they exist.

    rhgb quiet crashkernel=auto
    

    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.Graphical and quiet boot isn't useful in a cloud environment, where we want all logs sent to the serial port. A opção crashkernel pode ser deixada configurada, se necessário, mas observe que esse parâmetro reduz a quantidade de memória disponível na VM em pelo menos 128 MB, o que pode ser problemático para tamanhos de VM menores.The crashkernel option may be left configured if needed, but note that this parameter reduces the amount of available memory in the VM by at least 128 MB, which may be problematic for smaller VM sizes.

  2. Instale o Agente Linux do Azure.Install the Azure Linux Agent.

    O agente Linux do Azure é necessário para garantir o provisionamento de uma imagem Linux no Azure.The Azure Linux Agent is required for provisioning a Linux image on Azure. Muitas distribuições fornecem o agente como um pacote RPM ou. deb (o pacote é normalmente chamado de WALinuxAgent ou WALinuxAgent).Many distributions provide the agent as an RPM or .deb package (the package is typically called WALinuxAgent or walinuxagent). Você também pode seguir as etapas descritas no Guia do agente Linuxpara instalar o agente manualmente.The agent can also be installed manually by following the steps in the Linux Agent Guide.

  3. Certifique-se de que o servidor SSH está instalado e configurado para iniciar no tempo de inicialização.Ensure that the SSH server is installed, and configured to start at boot time. Essa configuração geralmente é a padrão.This configuration is usually the default.

  4. Não crie espaço de troca no disco do sistema operacional.Don't create swap space on the OS disk.

    O Agente Linux do Azure pode configurar automaticamente o espaço de permuta usando o disco de recurso local que é anexado à VM após o provisionamento no Azure.The Azure Linux Agent can automatically configure swap space using the local resource disk that is attached to the VM after provisioning on Azure. O disco de recurso local é um disco temporário e pode ser esvaziado quando a VM é desprovisionada.The local resource disk is a temporary disk, and might be emptied when the VM is deprovisioned. Depois de instalar o Agente Linux do Azure (etapa 2 acima), modifique os seguintes parâmetros em /etc/waagent.conf conforme necessário.After installing the Azure Linux Agent (step 2 above), modify the following parameters in /etc/waagent.conf as needed.

        ResourceDisk.Format=y
        ResourceDisk.Filesystem=ext4
        ResourceDisk.MountPoint=/mnt/resource
        ResourceDisk.EnableSwap=y
        ResourceDisk.SwapSizeMB=2048    ## NOTE: Set this to your desired size.
    
  5. Execute os seguintes comandos para desprovisionar a máquina virtual.Run the following commands to deprovision the virtual machine.

    sudo waagent -force -deprovision
    export HISTSIZE=0
    logout
    

    Observação

    No Virtualbox você pode ver o seguinte erro após executar waagent -force -deprovision que informa [Errno 5] Input/output error.On Virtualbox you may see the following error after running waagent -force -deprovision that says [Errno 5] Input/output error. Essa mensagem de erro não é crítica e pode ser ignorada.This error message is not critical and can be ignored.

  • Desligar a máquina virtual e carregar o VHD no Azure.Shut down the virtual machine and upload the VHD to Azure.