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:
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
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.
A fájl végrehajtható fájlként való létrehozása:
$ sudo chmod +x /var/lib/cloud/scripts/per-boot/create_swapfile.sh
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: