Informazioni per le distribuzioni non approvateInformation for Non-Endorsed Distributions

Nota

Azure offre due modelli di distribuzione per creare e usare le risorse: Gestione risorse e la distribuzione classica.Azure has two different deployment models for creating and working with resources: Resource Manager and classic. In questo articolo viene illustrato l'utilizzo di entrambi i modelli, ma Microsoft indica che le distribuzioni più nuove utilizzano il modello di gestione delle risorse.This article covers using both models, but Microsoft recommends that most new deployments use the Resource Manager model.

Il contratto di servizio della piattaforma Azure si applica alle macchine virtuali che eseguono il sistema operativo Linux solo quando viene usata una delle distribuzioni approvate.The Azure platform SLA applies to virtual machines running the Linux OS only when one of the endorsed distributions is used. Tutte le distribuzioni di Linux disponibili nella raccolta immagini di Azure sono distribuzioni approvate con la configurazione richiesta.All Linux distributions that are provided in the Azure image gallery are endorsed distributions with the required configuration.

Tutte le distribuzioni eseguite in Azure dovranno soddisfare numerosi prerequisiti per poter essere eseguite correttamente sulla piattaforma.All distributions running on Azure will need to meet a number of prerequisites to have a chance to properly run on the platform. Questo articolo non è in alcun modo esaustivo in quanto ogni distribuzione è diversa. È persino possibile che, anche nel caso in cui tutti i criteri seguenti vengano soddisfatti, sia comunque necessario modificare in modo significativo il sistema Linux per garantirne il funzionamento corretto sulla piattaforma.This article is by no means comprehensive as every distribution is different; and it is quite possible that even if you meet all the criteria below you will still need to significantly tweak your Linux system to ensure that it properly runs on the platform.

Per questo motivo, è consigliabile iniziare, laddove possibile, con una delle distribuzioni approvate di Linux su Azure .It is for this reason that we recommend that you start with one of our Linux on Azure Endorsed Distributions when possible. Gli articoli seguenti forniscono le istruzioni per preparare le varie distribuzioni Linux approvate che sono supportate in Azure:The following articles will guide you through how to prepare the various endorsed Linux distributions that are supported on Azure:

La restante parte di questo articolo sarà incentrata sulle indicazioni generali per l'esecuzione della distribuzione Linux in Azure.The rest of this article will focus on general guidance for running your Linux distribution on Azure.

Note generali sull'installazione di LinuxGeneral Linux Installation Notes

  • Il formato VHDX non è supportato in Azure, solo nei VHD fissi.The VHDX format is not supported in Azure, only fixed VHD. È possibile convertire il disco in formato VHD tramite la console di gestione di Hyper-V o il cmdlet convert-vhd.You can convert the disk to VHD format using Hyper-V Manager or the convert-vhd cmdlet. Se si usa VirtualBox, ciò significa che è stato selezionato Dimensioni fisse anziché il valore predefinito allocato in modo dinamico durante la creazione del disco.If you are using VirtualBox this means selecting Fixed size as opposed to the default dynamically allocated when creating the disk.
  • Azure supporta solo macchine virtuali di generazione 1.Azure only supports generation 1 virtual machines. È possibile convertire una macchina virtuale di prima generazione dal formato VHDX al formato VHD ed espandendo in maniera dinamica in un disco di dimensioni prestabilite.You can convert a generation 1 virtual machine from VHDX to the VHD file format and from dynamically expanding to a fixed sized disk. Tuttavia non è possibile modificare la generazione di una macchina virtuale.But you can't change a virtual machine's generation. Per ulteriori informazioni, vedere Creare una macchina virtuale di prima o seconda generazione in Hyper-VFor more information, see Should I create a generation 1 or 2 virtual machine in Hyper-V?
  • La dimensione massima consentita per il disco rigido virtuale è 1023 GB.The maximum size allowed for the VHD is 1,023 GB.
  • Durante l'installazione del sistema Linux è consigliabile usare partizioni standard anziché LVM, spesso la scelta predefinita per numerose installazioni.When installing the Linux system it is recommended that you use standard partitions rather than LVM (often the default for many installations). In questo modo sarà possibile evitare conflitti di nome LVM con le macchine virtuali clonate, in particolare se fosse necessario collegare un disco del sistema operativo a un'altra macchina virtuale identica per la risoluzione dei problemi.This will avoid LVM name conflicts with cloned VMs, particularly if an OS disk ever needs to be attached to another identical VM for troubleshooting. È possibile usare LVM o RAID su dischi di dati.LVM or RAID may be used on data disks.
  • Per l'installazione di file system UDF è necessario il supporto di kernel.Kernel support for mounting UDF file systems is required. Al primo avvio in Azure la configurazione del provisioning viene passata alla macchina virtuale Linux tramite supporti di memorizzazione formattati con UDF, collegati al guest.At first boot on Azure the provisioning configuration is passed to the Linux VM via UDF-formatted media that is attached to the guest. È necessario che l'agente Linux di Azure possa montare il file system UDF per leggere la relativa configurazione ed eseguire il provisioning della macchina virtuale.The Azure Linux agent must be able to mount the UDF file system to read its configuration and provision the VM.
  • Le versioni di kernel Linux inferiori a 2.6.37 non supportano NUMA su Hyper-V con macchine virtuali di dimensioni maggiori.Linux kernel versions below 2.6.37 do not support NUMA on Hyper-V with larger VM sizes. Questo problema incide principalmente sulle distribuzioni precedenti che usavano il kernel upstream Red Hat 2.6.32. Il problema è stato risolto in RHEL 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 RHEL 6.6 (kernel-2.6.32-504). I sistemi che eseguono kernel personalizzati con versione precedente alla versione 2.6.37 o kernel basati su RHEL con versione precedente alla versione 2.6.32-504 devono impostare il parametro di avvio numa=off nella riga di comando del kernel in rub.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. Per altre informazioni, vedere l'articolo Red Hat KB 436883.For more information see Red Hat KB 436883.
  • Non configurare una partizione swap nel disco del sistema operativo.Do not configure a swap partition on the OS disk. L'agente Linux può essere configurato in modo da creare un file swap sul disco temporaneo delle risorse.The Linux agent can be configured to create a swap file on the temporary resource disk. Altre informazioni su questo argomento sono disponibili nei passaggi seguenti.More information about this can be found in the steps below.
  • Tutti i dischi rigidi virtuali devono avere dimensioni multiple di 1 MB.All of the VHDs must have sizes that are multiples of 1 MB.

Installazione dei moduli kernel senza Hyper-VInstalling kernel modules without Hyper-V

Azure viene eseguito nell'hypervisor Hyper-V, pertanto è necessario per Linux che alcuni moduli kernel siano installati per l'esecuzione in Azure.Azure runs on the Hyper-V hypervisor, so Linux requires that certain kernel modules are installed in order to run in Azure. Se si dispone di una macchina virtuale creata fuori da Hyper-V, i programmi di installazione di Linux potrebbero non includere i driver per Hyper-V nel disco RAM iniziale (initrd o initramfs), a meno che non rilevi di essere in esecuzione in un 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 it detects that it is running an a Hyper-V environment. Quando si usa un sistema di virtualizzazione diverso (ad esempio Virtualbox, KVM e così via) per preparare l'immagine Linux, potrebbe essere necessario ricreare initrd per assicurarsi che almeno i moduli kernel hv_vmbus e hv_storvsc siano disponibili sul disco RAM iniziale.When using a different virtualization system (i.e. Virtualbox, KVM, etc.) to prepare your Linux image, you may need to rebuild the initrd to ensure that at least the hv_vmbus and hv_storvsc kernel modules are available on the initial ramdisk. Questo è un problema noto, almeno nei sistemi basati sulla distribuzione upstream di Red Hat.This is a known issue at least on systems based on the upstream Red Hat distribution.

Il meccanismo per ricreare l'immagine initrd o initramfs può variare a seconda della distribuzione.The mechanism for rebuilding the initrd or initramfs image may vary depending on the distribution. Per la procedura appropriata, consultare la documentazione della distribuzione o il supporto.Please consult your distribution's documentation or support for the proper procedure. Di seguito è riportato un esempio di come ricreare l'immagine initrd tramite l'utilità mkinitrd :Here is one example for how to rebuild the initrd using the mkinitrd utility:

Innanzitutto, eseguire il backup dell'immagine initrd esistente:First, back up the existing initrd image:

# cd /boot
# sudo cp initrd-`uname -r`.img  initrd-`uname -r`.img.bak

Quindi, ricompilare initrd con i moduli kernel hv_vmbus e hv_storvsc:Next, 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`

Ridimensionamento dei dischi rigidi virtualiResizing VHDs

Le dimensioni virtuali delle immagini VHD su Azure devono essere allineate a 1 MB.VHD images on Azure must have a virtual size aligned to 1MB. Solitamente, i VHD creati usando Hyper-V sono già allineati correttamente.Typically, VHDs created using Hyper-V should already be aligned correctly. Se il disco rigido virtuale non è allineato correttamente, è possibile che venga visualizzato un messaggio di errore simile al seguente quando si tenta di creare un' immagine dal disco rigido virtuale:If the VHD is not aligned correctly then you may receive an error message similar to the following when you attempt to create an image from your VHD:

"The VHD http://<mystorageaccount>.blob.core.windows.net/vhds/MyLinuxVM.vhd has an unsupported virtual size of 21475270656 bytes. The size must be a whole number (in MBs).”

Per risolvere questo problema, è possibile ridimensionare la macchina virtuale usando la console di gestione di Hyper-V o il cmdlet Powershell Resize-VHD .To remedy this you can resize the VM using either the Hyper-V Manager console or the Resize-VHD Powershell cmdlet. Se l'ambiente è diverso da Windows, si consiglia di usare qemu-img per convertire (se necessario) e ridimensionare il disco rigido virtuale:If you are not running in a Windows environment then it is recommended to use qemu-img to convert (if needed) and resize the VHD.

Nota

Esiste un bug noto nelle versioni qemu-img > = 2.2.1 risultante in un disco rigido virtuale non formattato correttamente.There is a known bug in qemu-img versions >=2.2.1 that results in an improperly formatted VHD. Il problema è stato risolto in QEMU 2.6.The issue has been fixed in QEMU 2.6. Si consiglia di usare qemu-img 2.2.0 o versione precedente oppure di eseguire l'aggiornamento alla versione 2.6 o successiva.It is recommended to use either qemu-img 2.2.0 or lower, or update to 2.6 or higher. Riferimento: https://bugs.launchpad.net/qemu/+bug/1490611.Reference: https://bugs.launchpad.net/qemu/+bug/1490611.

  1. Il ridimensionamento diretto del disco rigido virtuale con strumenti quali qemu-img o vbox-manage può determinare un disco rigido virtuale che non può essere avviato.Resizing the VHD directly using tools such as qemu-img or vbox-manage may result in an unbootable VHD. Pertanto, è consigliabile convertire prima il VHD in un'immagine disco RAW.So it is recommended to first convert the VHD to a RAW disk image. Se l'immagine della VM è già stata creata come immagine disco RAW (questa è l'impostazione predefinita per alcuni hypervisor, ad esempio KVM), è possibile saltare questo passaggio:If the VM image was already created as 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. Calcolare le dimensioni richieste dell'immagine disco per assicurare che le dimensioni virtuali siano allineate a 1 MB.Calculate the required size of the disk image to ensure that the virtual size is aligned to 1MB. A questo scopo, può essere utile il seguente script bash shell.The following bash shell script can assist with this. Lo script usa "qemu-img info" per determinare le dimensioni virtuali dell'immagine disco, quindi calcola le dimensioni al successivo 1 MB:The script uses "qemu-img info" to determine the virtual size of the disk image and then calculates the size to the next 1MB:

    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))
    echo "Rounded Size = $rounded_size"
    
  3. Ridimensionare il disco RAW usando $rounded_size, come impostato nello script precedente:Resize the raw disk using $rounded_size as set in the above script:

    # qemu-img resize MyLinuxVM.raw $rounded_size
    
  4. A questo punto, convertire nuovamente il disco RAW in un disco rigido virtuale a dimensione fissa: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
    

    Oppure, con qemu versione 2.6+ includere l'opzione 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
    

Requisiti del kernel LinuxLinux Kernel Requirements

I driver di Linux Integration Services (LIS) per Hyper-V e Azure vengono forniti direttamente nel kernel Linux upstream.The Linux Integration Services (LIS) drivers for Hyper-V and Azure are contributed directly to the upstream Linux kernel. Per molte distribuzioni che includono una versione recente del kernel Linux (cioè 3.x) questi driver sono già disponibili; in alternativa, fornire versioni backport dei driver con i relativi kernel.Many distributions that include a recent Linux kernel version (i.e. 3.x) will have these drivers available already, or otherwise provide backported versions of these drivers with their kernels. Questi driver vengono aggiornati costantemente nel kernel upstream con nuove correzioni e funzionalità, pertanto, quando è possibile, è consigliabile eseguire una distribuzione approvata , che include tali correzioni e aggiornamenti.These drivers are constantly being updated in the upstream kernel with new fixes and features, so when possible it is recommended to run an endorsed distribution that will include these fixes and updates.

Se si esegue una variante di Red Hat Enterprise Linux versioni 6.0-6.3, è necessario installare i driver LIS più recenti per Hyper-V.If you are running a variant of Red Hat Enterprise Linux versions 6.0-6.3, then you will need to install the latest LIS drivers for Hyper-V. I driver sono disponibili a questo indirizzo.The drivers can be found at this location. Per quanto riguarda RHEL 6.4 e versioni successive (e distribuzioni derivate) i driver LIS sono già inclusi nel kernel e pertanto non sono necessari pacchetti di installazione aggiuntivi per eseguire tali sistemi su Azure.As of RHEL 6.4+ (and derivatives) the LIS drivers are already included with the kernel and so no additional installation packages are needed to run those systems on Azure.

Se è necessario un kernel personalizzato, è consigliabile usare una versione più recente del kernel (ad esempio 3.8 e versioni successive).If a custom kernel is required, it is recommended to use a more recent kernel version (i.e. 3.8+). Per le distribuzioni o i fornitori che gestiscono il proprio kernel, è consigliabile eseguire il backport ai driver LIS dal kernel upstream al kernel personalizzato.For those distributions or vendors who maintain their own kernel, some effort will be required to regularly backport the LIS drivers from the upstream kernel to your custom kernel. Anche se si esegue già una versione relativamente recente del kernel, è generalmente consigliabile tenere traccia di eventuali correzioni upstream nei driver LIS ed eseguirne il backport in base alle esigenze.Even if you are already running a relatively recent kernel version, it is highly recommended to keep track of any upstream fixes in the LIS drivers and backport those as needed. La posizione dei file di origine dei driver LIS è disponibile nel file MAINTAINERS nell'albero di origine del kernel Linux:The location of the LIS driver source files is available 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/

Come minimo, l'assenza delle seguenti patch causa problemi in Azure e quindi tali patch devono essere incluse nel kernel.At a very minimum, the absence of the following patches have been known to cause problems on Azure and so these must be included in the kernel. L'elenco non è esaustivo o completo per tutte le distribuzioni:This list is by no means exhaustive or complete for all distributions:

Agente Linux di AzureThe Azure Linux Agent

L' agente Linux di Azure (waagent) è necessario per eseguire correttamente il provisioning di una macchina virtuale Linux in Azure.The Azure Linux Agent (waagent) is required to properly provision a Linux virtual machine in Azure. È possibile scaricare la versione più recente, inviare problemi o inviare richieste pull all' archivio GitHub dell'agente Linux.You can get the latest version, file issues or submit pull requests at the Linux Agent GitHub repo.

  • L'agente Linux viene rilasciato con la licenza Apache 2.0.The Linux agent is released under the Apache 2.0 license. Molte distribuzioni forniscono già pacchetti RPM o Debian per l'agente, che pertanto può, in alcuni casi, essere installato e aggiornato con un livello minimo di impegno.Many distributions already provide RPM or deb packages for the agent, and so in some cases this can be installed and updated with little effort.
  • L'agente Linux di Azure richiede Python 2.6 o versioni successive.The Azure Linux Agent requires Python v2.6+.
  • Inoltre, l'agente richiede il modulo python-pyasn1,The agent also requires the python-pyasn1 module. che nella maggior parte delle distribuzioni viene fornito come pacchetto separato installabile.Most distributions provide this as a separate package that can be installed.
  • In alcuni casi l'agente Linux di Azure potrebbe non essere compatibile con NetworkManager.In some cases the Azure Linux Agent may not be compatible with NetworkManager. Molti dei pacchetti RPM/Debian forniti dalle distribuzioni configurano NetworkManager come in conflitto con il pacchetto waagent, pertanto disinstalleranno NetworkManager quando si installa il pacchetto dell'agente Linux.Many of the RPM/Deb packages provided by distributions configure NetworkManager as a conflict to the waagent package, and thus will uninstall NetworkManager when you install the Linux agent package.

Requisiti generali di sistema relativi a LinuxGeneral Linux System Requirements

  • Modificare la riga di avvio del kernel in GRUB o GRUB2 per includere i parametri seguenti.Modify the kernel boot line in GRUB or GRUB2 to include the following parameters. In questo modo si garantisce inoltre che tutti i messaggi della console vengano inviati alla prima porta seriale, agevolando così il supporto di Azure nella risoluzione dei problemi di debug:This will also ensure all console messages are sent to the first serial port, which can assist Azure support with debugging issues:

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

    In questo modo si garantisce inoltre che tutti i messaggi della console vengano inviati alla prima porta seriale, agevolando così il supporto di Azure nella risoluzione dei problemi di debug.This will also ensure all console messages are sent to the first serial port, which can assist Azure support with debugging issues.

    Inoltre, è consigliabile rimuovere i parametri seguenti, se esistenti:In addition to the above, it is recommended to remove the following parameters if they exist:

      rhgb quiet crashkernel=auto
    

    L'avvio grafico e l'avvio silenzioso non sono utili in un ambiente cloud se tutti i log devono essere inviati alla porta seriale.Graphical and quiet boot are not useful in a cloud environment where we want all the logs to be sent to the serial port. L'opzione crashkernel può essere configurata, ma si tenga presente che questo parametro ridurrà la quantità di memoria disponibile nella macchina virtuale di almeno 128 MB, il che potrebbe causare problemi con le macchine virtuali di dimensioni inferiori.The crashkernel option may be left configured if desired, but note that this parameter will reduce the amount of available memory in the VM by 128MB or more, which may be problematic on the smaller VM sizes.

  • Installazione dell'agente Linux di AzureInstalling the Azure Linux Agent

    L'agente Linux di Azure è necessario per eseguire il provisioning di un'immagine Linux su Azure.The Azure Linux Agent is required for provisioning a Linux image on Azure. Molte distribuzioni forniscono l'agente come pacchetto RPM o Debian (il pacchetto è in genere denominato "WALinuxAgent" or "walinuxagent").Many distributions provide the agent as an RPM or Deb package (the package is typically called 'WALinuxAgent' or 'walinuxagent'). È inoltre possibile installare l'agente manualmente seguendo la procedura indicata nella Guida all'agente Linux.The agent can also be installed manually by following the steps in the Linux Agent Guide.

  • Verificare che il server SSH sia installato e configurato per l'esecuzione all'avvio.Ensure that the SSH server is installed and configured to start at boot time. Questo è in genere il valore predefinito.This is usually the default.

  • Non creare l'area di swap sul disco del sistema operativo.Do not create swap space on the OS disk

    L'agente Linux di Azure può configurare automaticamente l'area di swap utilizzando il disco risorse locale collegato alla VM dopo il provisioning in 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. Si noti che il disco risorse locale è un disco temporaneo e potrebbe essere svuotato in seguito al deprovisioning della macchina virtuale.Note that the local resource disk is a temporary disk, and might be emptied when the VM is deprovisioned. Dopo aver installato l'agente Linux di Azure come illustrato nel passaggio precedente, modificare i parametri seguenti in /etc/waagent.conf in modo appropriato:After installing the Azure Linux Agent (see previous step), modify the following parameters in /etc/waagent.conf appropriately:

      ResourceDisk.Format=y
      ResourceDisk.Filesystem=ext4
      ResourceDisk.MountPoint=/mnt/resource
      ResourceDisk.EnableSwap=y
      ResourceDisk.SwapSizeMB=2048    ## NOTE: set this to whatever you need it to be.
    
  • Infine, eseguire i comandi seguenti per effettuare il deprovisioning della macchina virtuale:As a final step, run the following commands to deprovision the virtual machine:

      # sudo waagent -force -deprovision
      # export HISTSIZE=0
      # logout
    

    Nota

    Dopo l'esecuzione del comando "waagent -force -deprovision", su Virtualbox potrebbe essere visualizzato l'errore seguente: [Errno 5] Input/output error.On Virtualbox you may see the following error after running 'waagent -force -deprovision': [Errno 5] Input/output error. Questo messaggio di errore non è critico e può essere ignorato.This error message is not critical and can be ignored.

  • Arrestare la macchina virtuale e caricare il VHD in Azure.You will then need to shut down the virtual machine and upload the VHD to Azure.