Linux előkészítése az Azure-beli képalkotáshoz
Figyelemfelhívás
Ez a cikk az End Of Life (EOL) állapotú Linux-disztribúcióra, a CentOS-ra hivatkozik. Fontolja meg a használatát, és ennek megfelelően tervezze meg. További információ: CentOS End Of Life útmutató.
A következőkre vonatkozik: ✔️ Linux rendszerű virtuális gépek rugalmas méretezési ✔️ csoportjai
Az Azure platform szolgáltatásiszint-szerződése (SLA) csak a Linux operációs rendszert futtató virtuális gépekre vonatkozik, ha ön az egyik támogatott disztribúciót használja. A támogatott disztribúciókhoz az Azure Marketplace előre konfigurált Linux-rendszerképeket biztosít. További információk:
- Támogatott Linux-disztribúciók az Azure-ban
- A Linux és a nyílt forráskódú technológiák támogatása az Azure-ban
Az Azure-ban futó összes többi disztribúció, beleértve a közösség által támogatott és a nem támogatott disztribúciókat is, előfeltételekkel rendelkezik.
Ez a cikk a Linux-disztribúció Azure-on való futtatásának általános útmutatásával foglalkozik. Ez a cikk nem lehet átfogó, mert minden disztribúció más. Még akkor is, ha megfelel a cikkben leírt összes feltételnek, előfordulhat, hogy jelentősen módosítania kell a Linux rendszert ahhoz, hogy megfelelően fusson.
Általános Linux telepítési megjegyzések
Az Azure nem támogatja a Hyper-V virtuális merevlemez (VHDX) formátumot. Azure-támogatás csak rögzített VHD-t. A lemezt a Hyper-V Manager vagy a Convert-VHD parancsmag használatával konvertálhatja VHD formátumba. Ha VirtualBoxot használ, a lemez létrehozásakor az alapértelmezett (dinamikusan lefoglalt) helyett válassza a Rögzített méret lehetőséget.
Azure-támogatás Gen1 (BIOS boot) és Gen2 (UEFI boot) virtuális gépeket.
A virtuális fájlfoglalási tábla (VFAT) kernelmodulját engedélyezni kell a kernelben.
A virtuális merevlemez maximális mérete 1023 GB.
A Linux rendszer telepítésekor javasoljuk, hogy a Logikai kötetkezelő (LVM) helyett standard partíciókat használjon. Sok telepítés esetében az LVM 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 egy operációsrendszer-lemez egy másik azonos virtuális géphez csatlakozik a hibaelhárításhoz. Adatlemezeken használhatja az LVM-et vagy a RAID-et .
A felhasználó által definiált függvények (UDF) fájlrendszereinek 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ón keresztül 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.
A 2.6.37-nél korábbi Linux kernelverziók nem támogatják a nem egységes memóriahozzáférést (NUMA) a nagyobb virtuálisgép-méretekkel rendelkező Hyper-V-n. Ez a probléma elsősorban a felsőbb rétegbeli Red Hat 2.6.32-kernelt használó régebbi disztribúciókat érinti. A javítás a Red Hat Enterprise Linux (RHEL) 6.6 -ban (kernel-2.6.32-504) történt.
A 2.6.37-nél régebbi egyéni kerneleket vagy 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.Ne konfiguráljon felcserélési partíciót az operációsrendszer-lemezen. Konfigurálhatja a Linux-ügynököt egy felcserélési fájl létrehozására az ideiglenes erőforráslemezen, a cikk későbbi részében leírtak szerint.
Az Azure összes virtuális merevlemezének 1 MB-ra (1024 x 1024 bájt) igazított virtuális méretnek kell lennie. Amikor nyers lemezről VHD-re konvertál, győződjön meg arról, hogy a nyers lemez mérete az átalakítás előtt 1 MB többszöröse, a cikk későbbi részében leírtak szerint.
Használja a legfrissebb terjesztési verziót, csomagokat és szoftvereket.
Távolítsa el a felhasználókat és a rendszerfiókokat, a nyilvános kulcsokat, a bizalmas adatokat, a szükségtelen szoftvereket és alkalmazásokat.
Feljegyzés
A Cloud-init 21.2-es vagy újabb verziója eltávolítja az UDF-követelményt. A modul engedélyezése nélkül udf
azonban a CD-ROM nem fog csatlakoztatni a kiépítés során, ami megakadályozza az egyéni adatok alkalmazását. A megkerülő megoldás a felhasználói adatok alkalmazása. Az egyéni adatokkal ellentétben azonban a felhasználói adatok nincsenek titkosítva. További információ: Felhasználói adatformátumok a cloud-init dokumentációjában.
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 a Hyper-V-n kívül létrehozott virtuális géppel rendelkezik, előfordulhat, hogy a Linux-telepítők nem tartalmazzák a Hyper-V illesztőprogramjait a kezdeti RAM-lemezen (initrd vagy initramfs), hacsak a virtuális gép nem észleli, hogy Hyper-V környezetben fut.
Ha egy másik virtualizálási rendszert (például VirtualBoxot vagy KVM-et) 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
hv_storvsc
kezdeti RAM-lemezen elérhetőek legyenek a kernelmodulok. Ez az ismert probléma a felsőbb rétegbeli Red Hat-disztribúción alapuló rendszerekre és esetleg másokra is igaz.
Az initrd vagy initramfs rendszerkép újraépítésének mechanizmusa az eloszlástól függően változhat. Tekintse meg a terjesztési dokumentációt vagy a megfelelő eljárás támogatását. Íme egy példa az initrd segédprogram használatával történő újraépítésére mkinitrd
:
A meglévő initrd rendszerkép biztonsági mentése:
cd /boot sudo cp initrd-`uname -r`.img initrd-`uname -r`.img.bak
Az initrd újraépítése az és
hv_storvsc
ahv_vmbus
kernelmodulok használatával: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-ben létrehozott virtuális merevlemezek általában megfelelően vannak igazítva. Ha a VHD nincs megfelelően igazítva, a következő példához hasonló hibaüzenet jelenhet meg, amikor a VHD-ből próbál képet létrehozni:
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 Manager konzol vagy a Resize-VHD PowerShell parancsmag használatával. Ha nem Windows-környezetben fut, javasoljuk, hogy a VHD konvertálását (ha szükséges) és átméretezését használja qemu-img
.
Feljegyzés
A QEMU 2.2.1-es verziójának qemu-img-ben és néhány későbbi verzióban ismert hiba található, amely helytelenül formázott VHD-t eredményez. A probléma a QEMU 2.6-ban lett kijavítva. Javasoljuk, hogy a 2.2.0-s vagy korábbi verziót vagy a 2.6-os vagy újabb verziót használja.
A VHD közvetlen átméretezése olyan eszközökkel, mint
qemu-img
vbox-manage
például a kikötés nélküli virtuális merevlemez. Javasoljuk, hogy először konvertálja a VHD-t nyers lemezképgé az alábbi kód használatával.Ha a virtuálisgép-rendszerkép nyers lemezképként lett létrehozva, kihagyhatja ezt a lépést. A virtuálisgép-rendszerkép nyers lemezképként való létrehozása az alapértelmezett néhány hipervizorban, például a KVM-ben.
sudo qemu-img convert -f vpc -O raw MyLinuxVM.vhd MyLinuxVM.raw
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-rendszerhéj-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"
A nyers lemez átméretezése a következő használatával
$rounded_size
:sudo qemu-img resize MyLinuxVM.raw $rounded_size
Konvertálja vissza a nyers lemezt rögzített méretű VHD-vé:
sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc MyLinuxVM.raw MyLinuxVM.vhd
Vagy a QEMU 2.6 előtti verziói esetén távolítsa el a
force_size
következő lehetőséget:sudo qemu-img convert -f raw -o subformat=fixed -O vpc MyLinuxVM.raw MyLinuxVM.vhd
Linux kernelkövetelmények
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 tartalmaz egy újabb Linux-kernelverziót (például 3.x), már elérhetőek ezek az illesztőprogramok, vagy más módon biztosítják ezeknek az illesztőprogramoknak a háttérrendszerverzióit a kernelekkel.
A LIS-illesztőprogramok folyamatosan frissülnek a felsőbb rétegbeli kernelben új javításokkal és funkciókkal. Ha lehetséges, javasoljuk, hogy futtasson egy támogatott disztribúciót , amely tartalmazza ezeket a javításokat és frissítéseket.
Ha az RHEL 6.0-6.3-ás verzióját futtatja, telepítenie kell a Hyper-V legújabb LIS-illesztőprogramjait. Az RHEL 6.4+-tól (és származékaitól) kezdve a LIS-illesztőprogramok már benne vannak a kernelben, így nincs szükség további telepítési csomagokra.
Ha egyéni kernelre van szükség, javasoljuk a legújabb kernelverziót (például 3.8+). A saját kernelt karbantartó disztribúciók vagy szállítók esetében rendszeresen vissza kell adnia a LIS-illesztőprogramokat a felsőbb rétegbeli kernelből az egyéni kernelbe.
Még ha már viszonylag új kernelverziót futtat, javasoljuk, hogy kövesse nyomon a LIS-illesztőprogramok minden felsőbb rétegbeli javítását, és szükség szerint végezze el a visszaküldésüket. A LIS-illesztőprogram forrásfájljainak helyei a Linux kernel forrásfában található MAINTAINERS fájlban vannak 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 virtuális gép aktív kernelének tartalmaznia kell a következő javításokat. Ez a lista nem lehet teljes az összes disztribúció esetében.
- ata_piix: a lemezek alapértelmezés szerint halasztása a Hyper-V-illesztőprogramokra
- storvsc: Az átvitt csomagok fiókja a RESET elérési úton
- storvsc: kerülje a WRITE_SAME használatát
- storvsc: A WRITE SAME letiltása RAID- és virtuális gazdagépadapter-illesztőprogramokhoz
- storvsc: NULL mutató elreferencia javítása
- storvsc: a gyűrű pufferhibái I/O-rögzítést eredményezhetnek
- scsi_sysfs: védelem a __scsi_remove_device kettős végrehajtása ellen
Azure Linux-ügynök
Az Azure Linux-ügynök (waagent
) kiépít egy Linux rendszerű virtuális gépet az Azure-ban. A legújabb verziójú, jelentéssel kapcsolatos problémákat vagy lekéréses kérelmeket a Linux-ügynök GitHub-adattárában kaphatja meg.
Íme néhány szempont az Azure Linux-ügynök használatához:
- A Linux-ügynök az Apache 2.0 licenc alatt jelenik meg. Számos disztribúció már .rpm vagy .deb csomagokat biztosít az ügynök számára. Ezeket a csomagokat egyszerűen telepítheti és frissítheti.
- Az Azure Linux-ügynökhöz a Python 2.6+-os verzióra van szükség.
- Az ügynöknek szüksége van a modulra
python-pyasn1
is. A legtöbb disztribúció külön csomagként biztosítja ezt a modult a telepítéshez. - Bizonyos esetekben előfordulhat, hogy az Azure Linux-ügynök nem kompatibilis a NetworkManagerrel. A disztribúciók által biztosított számos csomag (.rpm vagy .deb) konfigurálja a NetworkManagert ütközésként a
waagent
csomaghoz. Ezekben az esetekben az ügynök 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.
Feljegyzés
Győződjön meg arról, hogy a modulok és vfat
a udf
modulok engedélyezve vannak. A udf
modul letiltása kiépítési hibát fog okozni. A modul letiltása kiépítési vfat
és rendszerindítási hibákat is okozhat. A Cloud-init 21.2-es vagy újabb verziója az UDF megkövetelése nélkül is kiépítheti a virtuális gépeket, ha mindkét feltétel létezik:
- A virtuális gépet nyilvános SSH-kulcsokkal és nem jelszavakkal hozta létre.
- Nem adott meg egyéni adatokat.
A Linux általános rendszerkövetelményei
Módosítsa a rendszermag rendszerindító sorát a GRUB-ban vagy a GRUB2-ben, 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 hibá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 felhőkörnyezetekben, ahol minden naplót a soros portra szeretne küldeni. Szükség esetén meghagyhatja a
crashkernel
beállítást konfigurálva, de ez a paraméter legalább 128 MB-kal csökkenti a virtuális gépen rendelkezésre álló memória mennyiségét. Kisebb virtuálisgép-méretek esetén a rendelkezésre álló memória csökkentése problémás lehet.Miután befejezte a szerkesztést /etc/default/grub, futtassa a következő parancsot a GRUB-konfiguráció újraépítéséhez:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Adja hozzá az initramfs Hyper-V modult a következő használatával
dracut
:cd /boot sudo cp initramfs-<kernel-version>.img <kernel-version>.img.bak sudo dracut -f -v initramfs-<kernel-version>.img <kernel-version> --add-drivers "hv_vmbus hv_netvsc hv_storvsc" sudo grub-mkconfig -o /boot/grub/grub.cfg sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Adja hozzá a Hyper-V modult az initrdhez a következő használatával
mkinitramfs
:cd /boot sudo cp initrd.img-<kernel-version> initrd.img-<kernel-version>.bak sudo mkinitramfs -o initrd.img-<kernel-version> <kernel-version> --with=hv_vmbus,hv_netvsc,hv_storvsc sudo update-grub
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.
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 meghívják
WALinuxAgent
vagywalinuxagent
. Az ügynököt manuálisan is telepítheti az Azure Linux-ügynök útmutatójának lépéseit követve.Feljegyzés
Győződjön meg arról, hogy a modulok és
vfat
audf
modulok engedélyezve vannak. Az eltávolításuk vagy letiltásuk kiépítési vagy rendszerindítási hibát fog okozni. A Cloud-init 21.2-es vagy újabb verziója eltávolítja az UDF-követelményt.Telepítse az Azure Linux-ügynököt, a cloud-initet és más szükséges segédprogramokat az alábbi parancsok egyikének futtatásával.
Használja ezt a parancsot Red Hat vagy CentOS esetén:
sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons
Használja ezt a parancsot az Ubuntu/Debian esetében:
sudo apt install walinuxagent cloud-init cloud-utils-growpart gdisk hyperv-daemons
Használja ezt a parancsot az SUSE-hoz:
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:
sudo systemctl enable waagent.service sudo systemctl enable cloud-init.service
Ne hozzon létre felcserélési helyet az operációsrendszer-lemezen.
Az Azure Linux-ügynök vagy a cloud-init használatával konfigurálhatja a helycserét a helyi erőforráslemezen keresztül. Ez az erőforráslemez az Azure-beli üzembe helyezés után csatlakozik a virtuális géphez. A helyi erőforráslemez ideiglenes lemez, és a virtuális gép megszüntetésekor kiüríthető. Az alábbi blokkok bemutatják a felcserélés konfigurálását.
Ha az Azure Linux-ügynököt választja, 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.
Ha a cloud-initet választja, konfigurálja a cloud-initet a kiépítés kezeléséhez:
sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/g' /etc/waagent.conf 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
Ha a cloud-initet a felcserélési terület formázására és létrehozására szeretné konfigurálni, két lehetősége van:
- Adja át a cloud-init konfigurációt minden alkalommal, amikor virtuális gépet hoz létre.
customdata
Ezt a módszert javasoljuk. - A lemezképen egy cloud-init direktívával konfigurálhatja a felcserélési területet minden alkalommal, amikor a virtuális gép létrejön.
Hozzon létre egy .cfg-fájlt a felcserélési terület cloud-init használatával történő konfigurálásához:
echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' | sudo tee -a /etc/systemd/system.conf cat << EOF | sudo tee /etc/cloud/cloud.cfg.d/00-azure-swap.cfg #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
- Adja át a cloud-init konfigurációt minden alkalommal, amikor virtuális gépet hoz létre.
A cloud-init konfigurálása a kiépítés kezeléséhez:
A cloud-init konfigurálása
waagent
:sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/g' /etc/waagent.conf 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
Ha egy adott virtuális gépet migrál, és nem szeretne általánosított rendszerképet létrehozni, állítsa be
Provisioning.Agent=disabled
a /etc/waagent.conf konfigurációban.Csatlakoztatások konfigurálása:
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
Az Azure-adatforrás konfigurálása:
echo "Allow only Azure datasource, disable fetching network setting via IMDS" cat << EOF | sudo tee /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg datasource_list: [ Azure ] datasource: Azure: apply_network_config: False EOF
Ha konfigurált egyet, távolítsa el a meglévő felcserélési fájlt:
if [[ -f /mnt/resource/swapfile ]]; then echo "Removing swapfile" #RHEL uses a swap file by default swapoff /mnt/resource/swapfile rm /mnt/resource/swapfile -f fi
Cloud-init naplózás konfigurálása:
echo "Add console log file" cat << EOF | sudo tee -a /etc/cloud/cloud.cfg.d/05_logging.cfg # 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
Futtassa az alábbi parancsokat a virtuális gép kivonásához.
Figyelemfelhívás
Ha egy adott virtuális gépet migrál, és nem szeretne általánosított rendszerképet létrehozni, hagyja ki a leépítési lépést. A parancs
waagent -force -deprovision+user
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.sudo rm -f /var/log/waagent.log sudo cloud-init clean sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0
A VirtualBoxon a futtatás
waagent -force -deprovision
után hibaüzenet jelenhet meg.[Errno 5] Input/output error
Ez a hibaüzenet nem kritikus, és figyelmen kívül hagyhatja.Á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 használatával