Informace o podporovaných a neschválené distribuci komunity

Platí pro: ✔️ Flexibilní škálovací sady virtuálních počítačů s Linuxem ✔️

Smlouva SLA platformy Azure se vztahuje na virtuální počítače s operačním systémem Linux pouze v případě, že se použije jedna z doporučených distribucí . Pro tyto schválené distribuce jsou předkonfigurované image Linuxu poskytovány v Azure Marketplace.

Všechny ostatní distribuce spuštěné v Azure, které nejsou Azure Marketplace, mají řadu požadavků. Tento článek nemůže být komplexní, protože každá distribuce se liší. I když splňujete všechna níže uvedená kritéria, možná budete muset systém Linux výrazně upravit, aby mohl správně běžet.

Tento článek se zaměřuje na obecné pokyny pro spouštění distribuce Linuxu v Azure.

Obecné poznámky k instalaci Linuxu

  1. Formát virtuálního pevného disku Hyper-V (VHDX) se v Azure nepodporuje, pouze pevný virtuální pevný disk. Disk můžete převést na formát VHD pomocí Správce Technologie Hyper-V nebo rutiny Convert-VHD . Pokud používáte VirtualBox, vyberte při vytváření disku pevnou velikost místo výchozí (dynamicky přidělené).

  2. Azure podporuje virtuální počítače Gen1 (spouštění SYSTÉMU BIOS) & Gen2 (spouštění UEFI).

  3. Maximální povolená velikost virtuálního pevného disku je 1 023 GB.

  4. Při instalaci systému Linux doporučujeme používat standardní oddíly, nikoli správce logických svazků (LVM), což je výchozí pro mnoho instalací. Použití standardních oddílů zabrání konfliktům názvů LVM s klonovanými virtuálními počítači, zejména pokud je disk s operačním systémem někdy připojený k jinému identickému virtuálnímu počítači pro řešení potíží. LVM nebo RAID lze použít na datových discích.

  5. Je nutná podpora jádra pro připojení systémů souborů UDF. Při prvním spuštění v Azure se konfigurace zřizování předává virtuálnímu počítači s Linuxem pomocí média formátovaného uživatelem definovaného uživatelem, které je připojené k hostu. Agent Azure Linux musí připojit systém souborů UDF ke čtení jeho konfigurace a zřízení virtuálního počítače.

  6. Verze jádra Linuxu starší než 2.6.37 nepodporují technologii NUMA v Hyper-V s většími velikostmi virtuálních počítačů. Tento problém má primárně vliv na starší distribuce používající jádro Red Hat 2.6.32 a opraveno v systému Red Hat Enterprise Linux (RHEL) 6.6 (jádro-2.6.32-504). Systémy, na kterých běží vlastní jádra starší než 2.6.37 nebo jádra založená na RHEL starší než 2.6.32-504, musí nastavit spouštěcí parametr numa=off na příkazovém řádku jádra v grub.conf. Další informace najdete v tématu Red Hat KB 436883.

  7. Nenakonfigurujte prohození oddílu na disku s operačním systémem. Agent Linuxu je možné nakonfigurovat tak, aby na dočasném disku prostředku vytvořil prohození souboru, jak je popsáno v následujících krocích.

  8. Všechny virtuální pevné disky v Azure musí mít virtuální velikost zarovnanou na 1 MB (1024 × 1024 bajtů). Při převodu z nezpracovaného disku na virtuální pevný disk je nutné před převodem zajistit, aby velikost nezpracovaného disku byla násobek 1 MB, jak je popsáno v následujících krocích.

  9. Používejte nejaktuálnější verzi distribuce, balíčky a software.

  10. Odeberte uživatele a systémové účty, veřejné klíče, citlivá data, nepotřebný software a aplikaci.

Instalace modulů jádra bez Technologie Hyper-V

Azure běží na hypervisoru Hyper-V, takže Linux vyžaduje, aby se v Azure spouštěly určité moduly jádra. Pokud máte virtuální počítač vytvořený mimo Hyper-V, nemusí instalační program Linuxu obsahovat ovladače pro Hyper-V do počátečního disku ramdisku (initrd nebo initramfs), pokud virtuální počítač nerozpozná, že je spuštěný v prostředí Hyper-V. Při použití jiného virtualizačního systému (například VirtualBox, KVM atd.) k přípravě image Linuxu možná budete muset znovu sestavit initrd, aby byly na počátečním disku ramdisku k dispozici alespoň hv_vmbus a moduly jádra hv_storvsc. Tento známý problém se týká systémů založených na nadřazené distribuci Red Hatu a případně i u jiných.

Mechanismus opětovného sestavení image initrd nebo initramfs se může lišit v závislosti na distribuci. Projděte si dokumentaci k distribuci nebo podporu správného postupu. Tady je jeden příklad opětovného sestavení initrd pomocí mkinitrd nástroje:

  1. Zálohujte existující image initrd:

    cd /boot
    sudo cp initrd-`uname -r`.img  initrd-`uname -r`.img.bak
    
  2. Znovu sestavte initrd moduly hv_vmbus a hv_storvsc moduly jádra:

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

Změna velikosti virtuálních pevných disků

Image virtuálního pevného disku v Azure musí mít virtuální velikost zarovnanou na 1 MB. Virtuální pevné disky vytvořené pomocí Technologie Hyper-V jsou obvykle správně zarovnané. Pokud není virtuální pevný disk správně zarovnaný, může se při pokusu o vytvoření image z virtuálního pevného disku zobrazit chybová zpráva podobná následující.

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).

V tomto případě změňte velikost virtuálního počítače pomocí konzoly Správce Technologie Hyper-V nebo rutiny PowerShellu pro změnu velikosti virtuálního pevného disku . Pokud nepoužíváte prostředí Windows, doporučujeme použít qemu-img k převodu (v případě potřeby) a změně velikosti virtuálního pevného disku.

Poznámka

Ve verzích >qemu-img =2.2.1 je známá chyba, která vede k nesprávnému formátování VHD. Problém byl opraven v QEMU 2.6. Doporučujeme použít verzi qemu-img 2.2.0 nebo nižší nebo 2.6 nebo vyšší.

  1. Změna velikosti virtuálního pevného disku přímo pomocí nástrojů, jako je qemu-img například nebo vbox-manage může vést k nebooovatelnému virtuálnímu disku. Doporučujeme nejprve převést virtuální pevný disk na image disku RAW. Pokud se image virtuálního počítače vytvořila jako image disku RAW (výchozí hodnota některých hypervisorů, jako je KVM), můžete tento krok přeskočit.

    qemu-img convert -f vpc -O raw MyLinuxVM.vhd MyLinuxVM.raw
    
  2. Vypočítejte požadovanou velikost image disku tak, aby byla virtuální velikost zarovnaná na 1 MB. Následující skript prostředí Bash používá qemu-img info k určení virtuální velikosti image disku a pak vypočítá velikost na další 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. Změňte velikost nezpracovaného disku podle $rounded_size nastavení výše.

    qemu-img resize MyLinuxVM.raw $rounded_size
    
  4. Teď převeďte disk RAW zpět na pevný virtuální pevný disk.

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

    Nebo s qemu verze 2.6+ uveďte force_size možnost.

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

Požadavky na jádro Linuxu

Ovladače linuxových integračních služeb (LIS) pro Hyper-V a Azure se přispívají přímo do nadřazeného jádra Linuxu. Mnoho distribucí, které obsahují nedávnou verzi jádra Linuxu (například 3.x), mají tyto ovladače k dispozici již nebo jinak poskytují backportované verze těchto ovladačů s jejich jádry. Tyto ovladače se neustále aktualizují v upstreamovém jádru novými opravami a funkcemi, takže pokud je to možné, doporučujeme spustit schválenou distribuci , která obsahuje tyto opravy a aktualizace.

Pokud používáte variantu Red Hat Enterprise Linux verze 6.0 až 6.3, budete muset nainstalovat nejnovější ovladače LIS pro Hyper-V. Počínaje RHEL 6.4+ (a deriváty) jsou ovladače LIS již součástí jádra a proto nejsou potřeba žádné další instalační balíčky.

Pokud je potřeba vlastní jádro, doporučujeme nejnovější verzi jádra (například 3.8+). Pro distribuce nebo dodavatele, kteří udržují vlastní jádro, budete muset pravidelně backportovat ovladače LIS z upstreamového jádra do vlastního jádra. I když už používáte relativně nedávnou verzi jádra, důrazně doporučujeme sledovat všechny upstreamové opravy v ovladačích LIS a podle potřeby je backportovat. Umístění zdrojových souborů ovladačů LIS jsou zadána v souboru MAINTAINERS ve stromu zdroje jádra Linuxu:

    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/

Do jádra musí být zahrnuty následující opravy. Tento seznam nelze dokončit pro všechny distribuce.

Agent Azure Linuxu

Agent waagentAzure Linux zřídí virtuální počítač s Linuxem v Azure. Nejnovější verzi, problémy se soubory nebo žádosti o přijetí změn můžete odeslat v úložišti GitHub agenta Linuxu.

  • Agent Linuxu se vydává pod licencí Apache 2.0. Řada distribucí již poskytuje balíčky RPM nebo .deb agenta a tyto balíčky je možné snadno nainstalovat a aktualizovat.
  • Agent Azure Linux vyžaduje Python verze 2.6+.
  • Agent také vyžaduje modul Python-pyasn1. Většina distribucí poskytuje tento modul jako samostatný balíček, který se má nainstalovat.
  • V některých případech nemusí být agent Azure Linux kompatibilní se službou NetworkManager. Mnoho balíčků RPM/deb poskytovaných distribucemi konfiguruje NetworkManager jako konflikt s balíčkem waagent. V těchto případech odinstaluje NetworkManager při instalaci balíčku agenta Linuxu.
  • Agent Azure Linux musí mít minimální podporovanou verzi nebo vyšší.

Poznámka

Ujistěte se, že jsou povolené moduly udf (cloud-init >= 21.2) a vfat . Blokování modulu udf způsobí selhání zřizování a backlisting modulu vfat způsobí selhání zřizování i spouštění. Cloud-init < 21.2 není ovlivněn a nevyžaduje tuto změnu.

Obecné požadavky na systém Linux

  1. Upravte spouštěcí řádek jádra v GRUB nebo GRUB2 tak, aby obsahoval následující parametry, aby se všechny zprávy konzoly odesílaly na první sériový port. Tyto zprávy můžou pomoct podpora Azure laděním jakýchkoli problémů.

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

    Pokud existují, doporučujeme odebrat také následující parametry.

    rhgb quiet crashkernel=auto
    

    Grafické a tiché spouštění není užitečné v cloudovém prostředí, kde chceme, aby se všechny protokoly odesílaly na sériový port. Možnost crashkernel může být v případě potřeby nakonfigurovaná, ale všimněte si, že tento parametr snižuje množství dostupné paměti virtuálního počítače o alespoň 128 MB, což může být problematické pro menší velikosti virtuálních počítačů.

  2. Po dokončení úprav /etc/default/grub spusťte následující příkaz, který znovu sestaví konfiguraci grubu:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  3. Přidejte moduly Hyper-V jak initrd, tak initramfs (Dracut).

  4. Opětovné sestavení initrd nebo initramfs Initramfs

    cp /boot/initramfs-$(uname -r).img /boot/initramfs-[latest kernel version ].img.bak 
    dracut -f -v /boot/initramfs-[latest kernel version ].img  [depending on the version of grub] 
    grub-mkconfig -o /boot/grub/grub.cfg 
    grub2-mkconfig -o /boot/grub2/grub.cfg 
    

    Initrd

    mv /boot/[initrd kernel] /boot/[initrd kernel]-old 
    mkinitrd /boot/initrd.img-[initrd kernel]-generic /boot/[initrd kernel]-generic-old 
    update-initramfs -c -k [initrd kernel] 
    update-grub 
    
  5. Ujistěte se, že je server SSH nainstalovaný a nakonfigurovaný tak, aby se spustil při spuštění. Tato konfigurace je obvykle výchozí.

  6. Nainstalujte agenta Azure s Linuxem. Agent Azure Linux se vyžaduje pro zřízení image Linuxu v Azure. Mnoho distribucí poskytuje agenta jako RPM nebo balíček .deb (balíček se obvykle nazývá WALinuxAgent nebo walinuxagent). Agenta je také možné nainstalovat ručně podle kroků v příručce agenta pro Linux.

    Spuštěním následujícího příkazu nainstalujte agenta Azure Linuxu, cloud-init a další nezbytné nástroje:

    Redhat/Centos

    sudo yum install -y [waagent] cloud-init cloud-utils-growpart gdisk hyperv-daemons
    

    Ubuntu/Debian

    sudo apt install walinuxagent cloud-init cloud-utils-growpart gdisk hyperv-daemons
    

    Suse

    sudo zypper install python-azure-agent cloud-init cloud-utils-growpart gdisk hyperv-daemons
    

    Potom povolte agenta a cloud-init ve všech distribucích pomocí:

    sudo systemctl enable waagent.service
    sudo systemctl enable cloud-init.service
    
  7. Nevytvávejte místo prohození na disku s operačním systémem. Agent Azure Linuxu může po zřízení v Azure automaticky nakonfigurovat místo prohození pomocí místního disku prostředku připojeného k virtuálnímu počítači. Místní disk prostředku je dočasný disk a může být vyprázdněn při zrušení zřízení virtuálního počítače. Po instalaci agenta Azure Pro Linux upravte podle potřeby následující parametry v souboru /etc/waagent.conf.

    ResourceDisk.Format=y
    ResourceDisk.Filesystem=ext4
    ResourceDisk.MountPoint=/mnt/resource
    ResourceDisk.EnableSwap=y
    ResourceDisk.SwapSizeMB=2048    ## NOTE: Set this to your desired size.
    
  8. Nakonfigurujte cloud-init pro zpracování zřizování:

    1. Konfigurace waagentu pro cloud-init:
      sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/g' /etc/waagent.conf
      sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf
      sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
      
      Pokud migrujete konkrétní virtuální počítač a nechcete vytvořit generalizovanou image, nastavte Provisioning.Agent=disabled ji /etc/waagent.conf v konfiguraci.
    2. Konfigurace připojení:
      echo "Adding mounts and disk_setup to init stage"
      sed -i '/ - mounts/d' /etc/cloud/cloud.cfg
      sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg
      sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg
      sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
      
    3. Konfigurace zdroje dat Azure:
      echo "Allow only Azure datasource, disable fetching network setting via IMDS"
      cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF
      datasource_list: [ Azure ]
      datasource:
         Azure:
           apply_network_config: False
      EOF
      
    4. Pokud je nakonfigurovaný, odeberte existující stránkovací soubor:
      if [[ -f /mnt/resource/swapfile ]]; then
      echo "Removing swapfile" #RHEL uses a swapfile by defaul
      swapoff /mnt/resource/swapfile
      rm /mnt/resource/swapfile -f
      fi
      
  9. Konfigurace protokolování cloud-init:

    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
    
  10. Prohození konfigurace Nevytvádřujte místo prohození na disku operačního systému. Dříve agent Azure Linux automaticky nakonfiguroval místo prohození pomocí disku místního prostředku připojeného k virtuálnímu počítači po zřízení virtuálního počítače v Azure. To ale teď zpracovává cloud-init, není nutné použít agenta Pro Linux k naformátování disku prostředku vytvořit prohození soubor, upravit následující parametry v souboru /etc/waagent.conf odpovídajícím způsobem:

    ResourceDisk.Format=n
    ResourceDisk.EnableSwap=n
    

    Pokud chcete připojit, formátovat a vytvořit prohození, můžete provést jednu z těchto možností: 1. Tuto možnost předejte jako konfiguraci cloud-init pokaždé, když vytvoříte virtuální počítač prostřednictvím customdata. Jedná se o doporučený způsob. 2. Použijte direktivu cloud-init upečenou do image, která to provede při každém vytvoření virtuálního počítače.

           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"]
             - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"]
           EOF
    
         ```
    
    
  11. Zrušení zřízení.

    Upozornění

    Pokud migrujete konkrétní virtuální počítač a nechcete vytvořit generalizovanou image, přeskočte krok zrušení zřízení. Spuštění příkazu waagent -force -deprovision+user vykreslí zdrojový počítač nepoužitelný, tento krok je určený pouze k vytvoření generalizované image.

    Spuštěním následujících příkazů zrušte zřízení virtuálního počítače.

    # sudo rm -f /var/log/waagent.log
    # sudo cloud-init clean
    # waagent -force -deprovision+user
    # rm -f ~/.bash_history
    # export HISTSIZE=0
    # logout
    

    Poznámka

    Ve službě Virtualbox se může po spuštění waagent -force -deprovision[Errno 5] Input/output errorzobrazit následující chyba . Tato chybová zpráva není kritická a je možné ji ignorovat.

  12. Vypněte virtuální počítač a nahrajte virtuální pevný disk do Azure.

Další kroky

Vytvořte virtuální počítač s Linuxem z vlastního disku pomocí Azure CLI.