A közösség által támogatott és nem támogatott disztribúciókra vonatkozó információk

A következőkre vonatkozik: ✔️ Linux rendszerű virtuális gépek rugalmas méretezési ✔️ csoportjai

Az Azure platform SLA csak akkor vonatkozik a Linux operációs rendszert futtató virtuális gépekre, ha az egyik támogatott disztribúciót használják . Ezekhez a támogatott disztribúciókhoz az előre konfigurált Linux-rendszerképeket a Azure Marketplace biztosítjuk.

Az Azure-ban futó összes többi, nem Azure Marketplace disztribúciónak számos előfeltétele van. Ez a cikk nem lehet átfogó, mivel minden disztribúció más. Még ha megfelel is az alábbi feltételeknek, előfordulhat, hogy jelentősen módosítania kell a Linux rendszert ahhoz, hogy megfelelően fusson.

Ez a cikk a Linux-disztribúció Azure-ban való futtatására vonatkozó általános útmutatásra összpontosít.

Általános Linux telepítési megjegyzések

  1. A Hyper-V virtuális merevlemez (VHDX) formátuma az Azure-ban nem támogatott, csak rögzített VHD. A lemezt a Hyper-V Kezelővel vagy a Convert-VHD parancsmaggal konvertálhatja VHD formátumba. Ha VirtualBoxot használ, a lemez létrehozásakor az alapértelmezett (dinamikusan lefoglalt) méret helyett válassza a Rögzített méretet .

  2. Az Azure támogatja a Gen1 (BIOS rendszerindító) & Gen2 (UEFI rendszerindító) virtuális gépeket.

  3. A virtuális merevlemez maximális mérete 1023 GB.

  4. A Linux rendszer telepítésekor ajánlott standard partíciókat használni a Logikai kötetkezelő (LVM) helyett, amely számos telepítés esetében az alapértelmezett. A standard partíciók használatával elkerülhetők az LVM-névütközések a klónozott virtuális gépekkel, különösen akkor, ha a hibaelhárításhoz egy operációsrendszer-lemez csatlakozik egy másik azonos virtuális géphez. Az LVM vagy a RAID adatlemezeken is használható.

  5. Az UDF-fájlrendszerek csatlakoztatásához kerneltámogatás szükséges. Az Azure első indításakor a kiépítési konfiguráció a vendéghez csatolt UDF-formátumú adathordozóval továbbítja a Linux rendszerű virtuális gépnek. Az Azure Linux-ügynöknek csatlakoztatnia kell az UDF fájlrendszert a konfiguráció olvasásához és a virtuális gép üzembe helyezéséhez.

  6. A 2.6.37-esnél régebbi Linux kernelverziók nem támogatják a nagyobb virtuálisgép-méretekkel rendelkező Hyper-V-n futó NUMA-t. Ez a probléma elsősorban a régebbi disztribúciókat érinti a felső Red Hat 2.6.32-kernel használatával, és a Red Hat Enterprise Linux (RHEL) 6.6-os (kernel-2.6.32-504)-ben lett kijavítva. A 2.6.37-nél régebbi egyéni kerneleket vagy a 2.6.32-504-nél régebbi RHEL-alapú kerneleket futtató rendszereknek be kell állítaniuk a rendszerindítási paramétert numa=off a grub.conf kernel parancssorában. További információ: Red Hat KB 436883.

  7. Ne konfiguráljon felcserélési partíciót az operációsrendszer-lemezen. A Linux-ügynök konfigurálható úgy, hogy swapfájlt hozzon létre az ideiglenes erőforráslemezen, az alábbi lépésekben leírtak szerint.

  8. Az Azure összes virtuális merevlemezének 1 MB-ra (1024 × 1024 bájt) igazított virtuális méretnek kell lennie. Amikor nyers lemezről VHD-re konvertál, meg kell győződnie arról, hogy a nyers lemez mérete az átalakítás előtt 1 MB többszöröse, az alábbi lépésekben leírtak szerint.

  9. Használja a legújabb terjesztési verziót, csomagokat és szoftvereket.

  10. Felhasználók és rendszerfiókok, nyilvános kulcsok, bizalmas adatok, szükségtelen szoftverek és alkalmazások eltávolítása.

Kernelmodulok telepítése Hyper-V nélkül

Az Azure a Hyper-V hipervizoron fut, ezért a Linuxhoz bizonyos kernelmodulok futtatására van szükség az Azure-ban. Ha olyan virtuális géppel rendelkezik, amely a Hyper-V-n kívül lett létrehozva, előfordulhat, hogy a Linux-telepítők nem tartalmazzák a Hyper-V illesztőprogramjait a kezdeti ramdiskben (initrd vagy initramfs), kivéve, ha a virtuális gép azt észleli, hogy Hyper-V környezetben fut. Ha egy másik virtualizálási rendszert (például VirtualBoxot, KVM-et stb.) használ a Linux-rendszerkép előkészítéséhez, előfordulhat, hogy újra kell építenie az initrdet, hogy legalább a hv_vmbus és hv_storvsc kernelmodulok elérhetők legyenek a kezdeti ramdisken. Ez az ismert probléma a felsőbb rétegbeli Red Hat-disztribúción alapuló rendszerekre és esetleg más rendszerekre is igaz.

Az initrd vagy initramfs rendszerkép újraépítésének mechanizmusa az eloszlástól függően változhat. A megfelelő eljáráshoz tekintse meg a disztribúció dokumentációját vagy támogatását. Íme egy példa az initrd segédprogram használatával történő újraépítésére mkinitrd :

  1. A meglévő initrd rendszerkép biztonsági mentése:

    cd /boot
    sudo cp initrd-`uname -r`.img  initrd-`uname -r`.img.bak
    
  2. Építse újra a következő modulokat initrd és hv_storvsc kernelmodulokathv_vmbus:

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

Virtuális merevlemezek átméretezése

Az Azure-beli VHD-rendszerképek virtuális méretének 1 MB-hoz kell igazodnia. A Hyper-V használatával létrehozott virtuális merevlemezek általában megfelelően vannak igazítva. Ha a VHD nincs megfelelően igazítva, a következőhöz hasonló hibaüzenet jelenhet meg, amikor megpróbál létrehozni egy képet a VHD-ből.

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

Ebben az esetben méretezze át a virtuális gépet a Hyper-V Kezelő konzol vagy a Resize-VHD PowerShell-parancsmag használatával. Ha nem Windows-környezetben fut, javasoljuk, hogy használja qemu-img a VHD konvertálását (ha szükséges) és méretezze át.

Megjegyzés

A qemu-img =2.2.1 verzióiban >van egy ismert hiba, amely nem megfelelően formázott VHD-t eredményez. A problémát kijavítottuk a QEMU 2.6-ban. A 2.2.0-s vagy alacsonyabb, illetve a 2.6-os vagy újabb verzió használatát qemu-img javasoljuk.

  1. A VHD közvetlen átméretezése olyan eszközökkel, mint például qemu-img a nem üzemeltethető virtuális merevlemez, vagy vbox-manage az azt eredményezheti. Javasoljuk, hogy először konvertálja a VHD-t RAW lemezképpé. Ha a virtuálisgép-lemezkép RAW lemezképként lett létrehozva (egyes hipervizorok, például a KVM esetében ez az alapértelmezett), akkor kihagyhatja ezt a lépést.

    qemu-img convert -f vpc -O raw MyLinuxVM.vhd MyLinuxVM.raw
    
  2. Számítsa ki a lemezkép szükséges méretét, hogy a virtuális méret 1 MB-ra legyen igazítva. A következő Bash Shell-szkript a lemezkép virtuális méretének meghatározására, qemu-img info majd a következő 1 MB-ra számítja ki a méretet.

    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. Méretezze át a nyers lemezt a fent megadott módon $rounded_size .

    qemu-img resize MyLinuxVM.raw $rounded_size
    
  4. Most konvertálja vissza a RAW lemezt rögzített méretű VHD-vé.

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

    Vagy a 2.6 előtti qemu-verziók esetén távolítsa el a force_size beállítást.

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

Linux kernelkövetelményei

A Hyper-V és az Azure Linux Integration Services (LIS) illesztőprogramjai közvetlenül a felsőbb rétegbeli Linux-kernelhez kerülnek. Számos olyan disztribúció, amely tartalmazza a linuxos kernel legújabb verzióját (például 3.x), már elérhetők ezek az illesztőprogramok, vagy egyéb módon biztosítják ezeknek az illesztőprogramoknak a kernelekkel ellátott, visszajelentéssel ellátott verzióit. Ezek az illesztőprogramok folyamatosan frissülnek a felsőbb rétegbeli kernelben új javításokkal és funkciókkal, ezért ha lehetséges, javasoljuk, hogy futtasson egy támogatott disztribúciót , amely tartalmazza ezeket a javításokat és frissítéseket.

Ha a Red Hat Enterprise Linux 6.0-6.3-s verzióját futtatja, akkor telepítenie kell a Legújabb LIS-illesztőprogramokat a Hyper-V-hez. Az RHEL 6.4+ (és származékos) verzióktól kezdve a LIS-illesztőprogramok már szerepelnek a kernelben, így nincs szükség további telepítési csomagokra.

Ha egyéni kernelre van szükség, javasoljuk, hogy egy újabb kernelverziót (például 3.8+) válasszon. A saját kernelt karbantartó disztribúciók vagy szállítók esetében rendszeresen vissza kell jelentkeznie a LIS-illesztőprogramoknak a felsőbb rétegbeli kernelből az egyéni kernelbe. Még ha viszonylag friss kernelverziót is futtat, javasoljuk, hogy kövesse nyomon a LIS-illesztőprogramok felsőbb rétegbeli javításait, és szükség szerint adja vissza őket. A LIS-illesztőprogram forrásfájljainak helye a Linux kernel forrásfája MAINTAINERS fájljában van megadva:

    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/

A kernelnek a következő javításokat kell tartalmaznia. Ez a lista nem lehet teljes minden disztribúció esetében.

Az Azure Linux-ügynök

Az Azure Linux-ügynökwaagent kiépít egy Linux rendszerű virtuális gépet az Azure-ban. A legújabb verziót, fájlproblémákat vagy lekéréses kérelmeket a Linux-ügynök GitHub-adattárában szerezheti be.

  • A Linux-ügynök az Apache 2.0 licenc alatt jelenik meg. Számos disztribúció már biztosít RPM- vagy .deb-csomagokat az ügynök számára, és ezek a csomagok egyszerűen telepíthetők és frissíthetők.
  • Az Azure Linux-ügynökhöz a Python v2.6+-os verzióra van szükség.
  • Az ügynökhöz szükség van a python-pyasn1 modulra is. A legtöbb disztribúció külön csomagként biztosítja ezt a modult.
  • Bizonyos esetekben előfordulhat, hogy az Azure Linux-ügynök nem kompatibilis a NetworkManagerrel. A disztribúciók által biztosított RPM/deb csomagok közül sok konfigurálja a NetworkManagert ütközésként a waagent-csomaggal. Ezekben az esetekben a Rendszer eltávolítja a NetworkManagert a Linux-ügynökcsomag telepítésekor.
  • Az Azure Linux-ügynöknek a minimálisan támogatott verziónál vagy annál nagyobbnak kell lennie.

Megjegyzés

Győződjön meg arról, hogy az "udf" (cloud-init >= 21.2) és a "vfat" modulok engedélyezve vannak. Az udf modul blokkolása kiépítési hibát okoz, és a vfat-modul backlisting szolgáltatása kiépítési és rendszerindítási hibákat is okoz. A Cloud-init < 21.2 nem érintett, és nem igényli ezt a módosítást.

A Linux általános rendszerkövetelményei

  1. Módosítsa a kernel rendszerindítási sorát a GRUB-ban vagy a GRUB2-ben úgy, hogy az tartalmazza a következő paramétereket, hogy az összes konzolüzenet az első soros portra legyen elküldve. Ezek az üzenetek segíthetnek Azure-támogatás a problémák hibakeresésében.

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

    Azt is javasoljuk, hogy távolítsa el a következő paramétereket, ha léteznek.

    rhgb quiet crashkernel=auto
    

    A grafikus és csendes rendszerindítás nem hasznos olyan felhőkörnyezetekben, ahol minden naplót a soros portra szeretnénk küldeni. Szükség crashkernel esetén előfordulhat, hogy a beállítás konfigurálva marad, de vegye figyelembe, hogy ez a paraméter legalább 128 MB-tal csökkenti a virtuális gépen rendelkezésre álló memória mennyiségét, ami a kisebb virtuálisgép-méretek esetében problémás lehet.

  2. Miután befejezte az /etc/default/grub szerkesztését, futtassa a következő parancsot a grub konfigurációjának újraépítéséhez:

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  3. Adjon hozzá Hyper-V-modulokat initrd és initramfs utasításokhoz (Dracut).

  4. Initrd vagy initramfs Initramfs újraépítése

    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. Győződjön meg arról, hogy az SSH-kiszolgáló telepítve van, és úgy van konfigurálva, hogy indításkor induljon el. Ez a konfiguráció általában az alapértelmezett beállítás.

  6. Telepítse az Azure Linux-ügynököt. Az Azure Linux-ügynök szükséges egy Linux-rendszerkép Azure-beli kiépítéséhez. Számos disztribúció RPM- vagy .deb-csomagként biztosítja az ügynököt (a csomagot általában WALinuxAgentnek vagy walinuxagentnek nevezik). Az ügynök manuálisan is telepíthető a Linux-ügynök útmutatójának lépéseit követve.

    Telepítse az Azure Linux-ügynököt, a cloud-initet és más szükséges segédprogramokat a következő parancs futtatásával:

    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
    

    Ezután engedélyezze az ügynököt és a cloud-initet az összes disztribúción a következőkkel:

    sudo systemctl enable waagent.service
    sudo systemctl enable cloud-init.service
    
  7. Ne hozzon létre felcserélési helyet az operációsrendszer-lemezen. Az Azure Linux-ügynök automatikusan konfigurálhatja a helycserét a virtuális géphez az Azure-on való üzembe helyezés után csatlakoztatott helyi erőforráslemez használatával. A helyi erőforráslemez egy ideiglenes lemez, amely a virtuális gép megszüntetésekor kiüríthető. Az Azure Linux-ügynök telepítése után szükség szerint módosítsa a következő paramétereket a /etc/waagent.conf fájlban.

    ResourceDisk.Format=y
    ResourceDisk.Filesystem=ext4
    ResourceDisk.MountPoint=/mnt/resource
    ResourceDisk.EnableSwap=y
    ResourceDisk.SwapSizeMB=2048    ## NOTE: Set this to your desired size.
    
  8. A cloud-init konfigurálása a kiépítés kezeléséhez:

    1. A waagent konfigurálása a cloud-inithez:
      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
      
      Ha egy adott virtuális gépet migrál, és nem szeretne általános rendszerképet létrehozni, állítsa be Provisioning.Agent=disabled a /etc/waagent.conf konfigurációban.
    2. Csatlakoztatások konfigurálása:
      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. Az Azure-adatforrás konfigurálása:
      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. Ha konfigurálva van, távolítsa el a meglévő swapfile-t:
      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. Cloud-init naplózás konfigurálása:

    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. Konfiguráció felcserélése. Ne hozzon létre felcserélési helyet az operációsrendszer-lemezen. Korábban az Azure Linux-ügynök automatikusan konfigurálta a helycserét a virtuális géphez csatolt helyi erőforráslemez használatával, miután a virtuális gép kiépült az Azure-ban. Ezt azonban most már a cloud-init kezeli, nem szabad a Linux-ügynökkel formázni az erőforráslemezt a felcserélési fájl létrehozásához, és megfelelően módosítani a következő paramétereket a /etc/waagent.conf fájlban:

    ResourceDisk.Format=n
    ResourceDisk.EnableSwap=n
    

    Ha fel szeretné csatlakoztatni, formázni és létrehozni a felcserélést, a következőt teheti: 1. Adja meg ezt felhőbeli konfigurációként minden alkalommal, amikor létrehoz egy virtuális customdatagépet. Ez az ajánlott módszer. 2. Használjon a rendszerképbe sütött cloud-init direktívát, amely ezt a virtuális gép minden létrehozásakor meg fogja tenni.

           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. Megszüntetés.

    Figyelemfelhívás

    Ha egy adott virtuális gépet migrál, és nem szeretne általános rendszerképet létrehozni, hagyja ki a leépítési lépést. A waagent -force -deprovision+user parancs futtatása használhatatlanná teszi a forrásgépet. Ez a lépés csak általánosított rendszerkép létrehozására szolgál.

    Futtassa az alábbi parancsokat a virtuális gép megszüntetéséhez.

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

    Megjegyzés

    A Virtualboxon a következő hibaüzenet jelenhet meg a futtatás waagent -force -deprovision után.[Errno 5] Input/output error Ez a hibaüzenet nem kritikus, és figyelmen kívül hagyható.

  12. Állítsa le a virtuális gépet, és töltse fel a VHD-t az Azure-ba.

Következő lépések

Linux rendszerű virtuális gép létrehozása egyéni lemezről az Azure CLI-vel.