Share via


Linux rendszerű virtuális gép optimalizálása az Azure-ban

A Linux rendszerű virtuális gép (VM) létrehozása a parancssorból vagy a portálról könnyen elérhető. Ez az oktatóanyag bemutatja, hogyan állíthatja be úgy, hogy optimalizálja a teljesítményét a Microsoft Azure platformon. Ez a témakör Ubuntu Server rendszerű virtuális gépet használ, de linuxos virtuális gépeket is létrehozhat saját rendszerképekkel sablonként.

Előfeltételek

Ez a témakör feltételezi, hogy már rendelkezik működő Azure-előfizetéssel (ingyenes próbaverziós regisztráció), és már kiépített egy virtuális gépet az Azure-előfizetésében. A virtuális gép létrehozása előtt győződjön meg arról, hogy az Azure CLI legújabb telepítve van, és be van jelentkezve az Azure-előfizetésbe az az loginhasználatával.

Azure operációsrendszer-lemez

Miután létrehozott egy Linux rendszerű virtuális gépet az Azure-ban, két lemez van társítva hozzá. A /dev/sda az operációsrendszer-lemez, a /dev/sdb pedig az ideiglenes lemez. Ne használja a fő operációsrendszer-lemezt (/dev/sda) az operációs rendszer kivételével bármihez, mivel a virtuális gép gyors rendszerindítási ideje van optimalizálva, és nem biztosít megfelelő teljesítményt a számítási feladatok számára. Egy vagy több lemezt szeretne a virtuális géphez csatolni az adatok állandó és optimalizált tárolásához.

Lemezek hozzáadása a méret- és teljesítménycélok számára

A virtuális gép mérete alapján legfeljebb 16 további lemezt csatolhat egy A sorozathoz, 32 lemezt egy D sorozathoz és 64 lemezt egy G-sorozatú géphez – ezek mérete akár 32 TB is lehet. Szükség szerint további lemezeket adhat hozzá a tárhelyre és az IOps-követelményekre. Minden lemez Standard Storage esetén 500 IOps, lemezenként pedig 20 000 IOps-Premium Storage.

Ha a legnagyobb IOps-értékeket szeretné elérni Premium Storage lemezeken, ahol a gyorsítótár-beállítások olvasásra vagy Nincsre vannak állítva, le kell tiltania a korlátokat a fájlrendszer Linuxon való csatlakoztatása közben. Nincs szükség akadályra, mivel a Premium Storage lemezekre való írások tartósak a gyorsítótár beállításainál.

  • ReiserFS használata esetén tiltsa le a korlátokat a csatlakoztatási lehetőséggel barrier=none (a korlátok engedélyezéséhez használja a következőt: barrier=flush)
  • Ha ext3/ext4-et használ, tiltsa le a korlátokat a csatlakoztatási lehetőséggel barrier=0 (a korlátok engedélyezéséhez használja a következőt: barrier=1)
  • XFS használata esetén tiltsa le a korlátokat a csatlakoztatási nobarrier lehetőséggel (a korlátok engedélyezéséhez használja a kapcsolót)barrier

Nemmanaged storage account considerations

Amikor az Azure CLI-vel hoz létre virtuális gépet, az alapértelmezett művelet az Azure Managed Disks. Ezeket a lemezeket az Azure platform kezeli, és nincs szükség előkészítésre vagy tárolásra. A nemmanaged lemezekhez tárfiókra van szükség, és további teljesítménybeli megfontolásokat is figyelembe kell venni. További információ a felügyelt lemezekről: Azure Managed Disks – áttekintés. A következő szakasz csak akkor ismerteti a teljesítménybeli szempontokat, ha nem használt lemezeket használ. Az alapértelmezett és ajánlott tárolási megoldás a felügyelt lemezek használata.

Ha nem használt lemezekkel rendelkező virtuális gépet hoz létre, győződjön meg arról, hogy a virtuális gépével azonos régióban található tárfiókok lemezei vannak csatlakoztatva a közelség és a hálózati késés minimalizálása érdekében. Minden Standard szintű tárfiók legfeljebb 20 000 IOps-kapacitással és 500 TB-os kapacitással rendelkezik. Ez a korlát körülbelül 40 nagy mértékben használt lemezre van oszlik, beleértve az operációsrendszer-lemezt és az Ön által létrehozott adatlemezeket is. A Premium Storage esetében nincs maximális IOps-korlát, de a méretkorlát 32 TB.

Ha magas IOps-számítási feladatokkal foglalkozik, és a Standard Storage-t választotta a lemezekhez, előfordulhat, hogy fel kell osztania a lemezeket több tárfiókra, hogy biztosan ne érte el a Standard Storage-fiókokra vonatkozó 20 000 IOps-korlátot. A virtuális gép több különböző tárfiókból és tárfióktípusból származó lemezt is tartalmazhat az optimális konfiguráció elérése érdekében.

A virtuális gép ideiglenes meghajtója

A virtuális gépek létrehozásakor az Azure alapértelmezés szerint biztosít Önnek egy operációsrendszer-lemezt (/dev/sda) és egy ideiglenes lemezt (/dev/sdb). Minden további hozzáadt lemez /dev/sdc, /dev/sdd, /dev/sde és így tovább. Az ideiglenes lemezen (/dev/sdb) lévő összes adat nem tartós, és elveszhet, ha bizonyos események, például a virtuális gépek átméretezése, ismételt üzembe állása vagy karbantartása újraindítja a virtuális gépet. Az ideiglenes lemez mérete és típusa az üzembe helyezéskor kiválasztott virtuálisgép-mérethez kapcsolódik. Az összes prémium szintű virtuális gép (DS, G és DS_V2 sorozat) az ideiglenes meghajtót egy helyi SSD-re használja a 48 ezer IOps-os további teljesítmény érdekében.

Linux felcserélési partíció

Ha az Azure-beli virtuális gép Ubuntu- vagy CoreOS-rendszerképből van, a CustomData használatával felhőalapú konfigurációt küldhet a cloud-initnek. Ha cloud-init-t használó egyéni Linux-rendszerképet töltött fel, akkor a felcserélési partíciókat is konfigurálja a cloud-init használatával.

Az /etc/waagent.conf fájllal nem kezelheti a felcserélést a cloud-init által kiépített és támogatott összes rendszerképre. A rendszerképek teljes listáját a Using cloud-init (A cloud-init használata) cikk tartalmazza.

Ezeknek a rendszerképeknek a felcserélését a legegyszerűbben a következő lépésekben lehet kezelni:

  1. A /var/lib/cloud/scripts/per-boot mappában hozzon létre egy create_swapfile.sh nevű fájlt:

    $ sudo touch /var/lib/cloud/scripts/per-boot/create_swapfile.sh

  2. Adja hozzá a következő sorokat a fájlhoz:

    $ sudo vi /var/lib/cloud/scripts/per-boot/create_swapfile.sh

    #!/bin/sh
    if [ ! -f '/mnt/swapfile' ]; then
    fallocate --length 2GiB /mnt/swapfile
    chmod 600 /mnt/swapfile
    mkswap /mnt/swapfile
    swapon /mnt/swapfile
    swapon -a ; fi
    

    Megjegyzés

    Az értéket szükség szerint és az erőforráslemezen rendelkezésre álló szabad terület alapján módosíthatja, amely a használt virtuálisgép-mérettől függően változik.

  3. A fájl végrehajtható fájlként való létrehozása:

    $ sudo chmod +x /var/lib/cloud/scripts/per-boot/create_swapfile.sh

  4. A felcserélési fájl létrehozásához hajtsa végre a szkriptet közvetlenül az utolsó lépés után:

    $ sudo /var/lib/cloud/scripts/per-boot/./create_swapfile.sh

A cloud-init támogatását nem támogató rendszerképek esetén a virtuális gépről üzembe helyezett virtuálisgép-Azure Marketplace virtuális gép Linux-ügynöke integrálva van az operációs rendszerrel. Ez az ügynök lehetővé teszi a virtuális gép számára a különböző Azure-szolgáltatásokkal való interakciót. Feltételezve, hogy a virtuális gépről üzembe helyezett egy standard Azure Marketplace, a következőket kell megtennie a Linux felcserélési fájl beállításainak helyes konfigurálása érdekében:

Keresse meg és módosítsa az /etc/waagent.conf fájl két bejegyzését . Ők irányítják a dedikált felcserélési fájl meglétét és a felcserélési fájl méretét. Az ellenőriznie kell a következő paramétereket: ResourceDisk.EnableSwap és ResourceDisk.SwapSizeMB

Egy megfelelően engedélyezett lemez és csatlakoztatott felcserélési fájl engedélyezéséhez győződjön meg arról, hogy a paraméterek a következő beállításokkal rendelkezik:

  • ResourceDisk.EnableSwap=Y
  • ResourceDisk.SwapSizeMB={méret MB-ban az igényeinek megfelelően}

A módosítás után újra kell indítania a waagentet, vagy újra kell indítania a Linux rendszerű virtuális gépet, hogy tükrözze ezeket a módosításokat. Tudja, hogy a módosítások végre vannak hajtani, és a free szabad terület a paranccsal egy felcserélési fájl létrejött. Az alábbi példában egy 512 MB-os felcserélési fájl lett létrehozva a waagent.conf fájl módosítása eredményeként:

azuseruser@myVM:~$ free
            total       used       free     shared    buffers     cached
Mem:       3525156     804168    2720988        408       8428     633192
-/+ buffers/cache:     162548    3362608
Swap:       524284          0     524284

I/O ütemezési algoritmus Premium Storage

A 2.6.18-as Linux kernel esetén az alapértelmezett I/O-ütemezési algoritmus Deadline értékről CFQ-ra (Teljesen igazságos várólista-algoritmus) változott. Véletlenszerű hozzáférésű I/O-minták esetében elhanyagolható különbség van a CFQ és a Deadline teljesítménybeli különbségei között. Az SSD-alapú lemezeknél, ahol a lemez I/O-mintája nagyrészt szekvenciális, a NOOP vagy a Deadline algoritmusra való visszaváltás jobb I/O-teljesítményt érhet el.

Az aktuális I/O-ütemező megtekintése

Használja az alábbi parancsot:

cat /sys/block/sda/queue/scheduler

A következő kimenetet láthatja, amely az aktuális ütemezőt jelzi.

noop [deadline] cfq

Az I/O-ütemezési algoritmus aktuális eszközének (/dev/sda) módosítása

Az alábbi parancsokat használja:

azureuser@myVM:~$ sudo su -
root@myVM:~# echo "noop" >/sys/block/sda/queue/scheduler
root@myVM:~# sed -i 's/GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"/g' /etc/default/grub
root@myVM:~# update-grub

Megjegyzés

Ez a beállítás csak a /dev/sda esetén nem hasznos. Az összes olyan adatlemezen beállítható, ahol a szekvenciális I/O az I/O-minta meghatározója.

A következő kimenetnek kell látsza, amely azt jelzi, hogy a grub.cfg fájl sikeresen újra lett építve, és hogy az alapértelmezett ütemező NOOP-ként lett frissítve.

Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.13.0-34-generic
Found initrd image: /boot/initrd.img-3.13.0-34-generic
Found linux image: /boot/vmlinuz-3.13.0-32-generic
Found initrd image: /boot/initrd.img-3.13.0-32-generic
Found memtest86+ image: /memtest86+.elf
Found memtest86+ image: /memtest86+.bin
done

A Red Hat disztribúciós családhoz csak a következő parancsra van szükség:

echo 'echo noop >/sys/block/sda/queue/scheduler' >> /etc/rc.local

Az Azure által hangolt kernelű Ubuntu 18.04 többsoros I/O-ütemezőket használ. Ebben az esetben a none a megfelelő választás a helyett noop. További információ: Ubuntu I/O Schedulers.

Magasabb I/Ops-műveletek elérése szoftveres RAID használatával

Ha a számítási feladatok több IOps-t igényelnek, mint amennyit egyetlen lemez biztosítani tud, több lemez szoftveres RAID-konfigurációját kell használnia. Mivel az Azure már a helyi hálórétegben is elvégzi a lemez rugalmasságát, a RAID-0 csíkozási konfigurációval a legmagasabb szintű teljesítményt érheti el. Lemezeket hozhat létre és hozhat létre az Azure-környezetben, majd csatlakoztathatja őket a Linux rendszerű virtuális géphez a meghajtók particionálása, formázása és csatlakoztatása előtt. A linuxos virtuális gépen az Azure-ban a szoftverES RAID beállításának konfigurálásával kapcsolatos további részleteket a Configuring Software RAID on Linux (Szoftveres RAID konfigurálása Linux rendszeren) dokumentumban talál.

A hagyományos RAID-konfiguráció alternatívájaként a Logikaikötet-kezelő (LVM) telepítésével több fizikai lemezt is konfigurálhat egyetlen csíkozott logikai tárolókötetbe. Ebben a konfigurációban az olvasások és az írások a kötetcsoportban található több lemezre vannak elosztva (a RAID0-hez hasonlóan). Teljesítménybeli okokból valószínű, hogy olyan csíkozást szeretne a logikai kötetek között, hogy az olvasások és írások az összes csatlakoztatott adatlemezt használják. A csíkozott logikai kötetEk Azure-beli Linux rendszerű virtuális gépen való konfigurálásával kapcsolatos további részleteket az LVM konfigurálása Linux rendszerű virtuális gépen az Azure-ban dokumentumban talál.

Következő lépések

Ne feledje, mint minden optimalizálási beszélgetés esetén, minden módosítás előtt és után is el kell végeznie teszteket, hogy mérje a változás hatását. Az optimalizálás egy lépésenként lekért folyamat, amely különböző eredményeket ad a környezet különböző gépei között. Előfordulhat, hogy az egyik konfigurációhoz nem megfelelő a többi konfiguráció.

Néhány hasznos hivatkozás további forrásokra: