Optimalizace virtuálního počítače s Linuxem v Azure
Vytvoření virtuálního počítače s Linuxem je snadné z příkazového řádku nebo z portálu. V tomto kurzu se ukáže, jak zajistit, že jste ho nastavili pro optimalizaci výkonu na Microsoft Azure platformě. Toto téma používá virtuální počítač s Ubuntu Serverem, ale můžete také vytvořit virtuální počítač s Linuxem pomocí vlastních imagí jako šablon.
Požadavky
V tomto tématu se předpokládá, že už máte funkční předplatné Azure (bezplatnou zkušební verzi registrace) a už jste v předplatném Azure zř naskládli virtuální počítač. Před vytvořením virtuálního počítače se ujistěte, že máte nainstalované nejnovější rozhraní příkazového řádku Azure CLI a jste přihlášeni ke svému předplatnému Azure pomocípříkazu az login.
Disk s operačním systémem Azure
Po vytvoření virtuálního počítače s Linuxem v Azure jsou k tomuto virtuálnímu počítači přidružené dva disky. /dev/sda je váš disk s operačním systémem, /dev/sdb je dočasný disk. Hlavní disk s operačním systémem (/dev/sda) nepoužívejte pro nic kromě operačního systému, protože je optimalizovaný pro rychlou dobu spuštění virtuálního počítače a neposkytuje dobrý výkon pro vaše úlohy. Chcete k virtuálnímu počítači připojit jeden nebo více disků, abyste měli trvalé a optimalizované úložiště pro vaše data.
Přidání disků pro velikost a cíle výkonnosti
Na základě velikosti virtuálního počítače můžete připojit až 16 dalších disků na disky řady A, 32 disků na discích řady D a 64 na počítači G-Series – každý o velikosti až 32 TB. Podle potřeby přidáte další disky podle svých požadavků na místo a IOps. Každý disk má cíl výkonu 500 IOps pro standard Storage a až 20 000 IOps na disk pro Premium Storage.
Pokud chcete dosáhnout nejvyšších vstupně-výstupních operací za Premium Storage, na kterých je jejich nastavení mezipaměti nastavené na ReadOnly nebo None, musíte při připojování systému souborů v Linuxu zakázat bariéry. Překážky nepotřebujete, protože zápisy do Premium Storage disky jsou pro tato nastavení mezipaměti odolné.
- Pokud používáte refsfs, pomocí
barrier=none
možnosti připojení zakažte bariéry (pokud chcete povolit bariéry, použijtebarrier=flush
). - Pokud používáte ext3/ext4,
barrier=0
pomocí možnosti připojení zakažte bariéry (pokud chcete povolit bariéry, použijtebarrier=1
). - Pokud používáte XFS, pomocí možnosti připojení zakažte bariéry
nobarrier
(pokud chcete povolit bariéry, použijte možnostbarrier
).
Důležité informace o nespravovaném účtu úložiště
Výchozí akcí při vytváření virtuálního počítače pomocí Azure CLI je použití Azure Spravované disky. Tyto disky jsou zpracovávány platformou Azure a nevyžadují žádné přípravy ani umístění pro jejich uložení. Nespravované disky vyžadují účet úložiště a mají určité další požadavky na výkon. Další informace o spravovaných discích najdete v tématu Přehled služby Azure Managed Disks. Následující část popisuje důležité informace o výkonu pouze v případě, že používáte nespravované disky. Výchozím a doporučeným řešením úložiště je opět použití spravovaných disků.
Pokud vytvoříte virtuální počítač s nespravovanými disky, ujistěte se, že připojujete disky z účtů úložiště umístěných ve stejné oblasti jako váš virtuální počítač, abyste zajistili blízkost a minimalizovali latenci sítě. Každý účet úložiště Standard má maximálně 20 000 IOps a kapacitu o velikosti 500 TB. Toto omezení funguje na přibližně 40 často využíných disků, včetně disku s operačním systémem i všech datových disků, které vytvoříte. Pro Premium Storage účtů neexistuje žádný limit maximálního počtu IOps, ale existuje limit velikosti 32 TB.
Při práci s vysokými úlohami IOps a pro své disky jste zvolili Standard Storage, možná budete muset disky rozdělit mezi několik účtů úložiště, abyste se ujistili, že jste nenasáhne limitu 20 000 IOps pro účty Standard Storage. Váš virtuální počítač může obsahovat kombinaci disků z různých účtů úložiště a typů účtů úložiště, abyste dosáhli optimální konfigurace.
Dočasný disk virtuálního počítače
Ve výchozím nastavení vám Azure při vytváření virtuálního počítače poskytne disk s operačním systémem (/dev/sda) a dočasný disk (/dev/sdb). Všechny další disky, které přidáte, se zobrazí jako /dev/sdc, /dev/sdd, /dev/sde atd. Všechna data na dočasném disku (/dev/sdb) nejsou odolná a určitá událost, jako je změna velikosti virtuálního počítače, opětovné nasazení nebo údržba, vynutí restartování virtuálního počítače. Velikost a typ dočasného disku souvisí s velikostí virtuálního počítače, kterou jste zvolili v době nasazení. Všechny virtuální počítače velikosti Premium (DS, G a DS_V2 series) jsou dočasné jednotky zálohované místním diskem SSD, který nabízí další výkon až 48 000 IOps.
Oddíl pro prohození Linuxu
Pokud je váš virtuální počítač Azure z image Ubuntu nebo CoreOS, můžete k odeslání cloudové konfigurace do cloud-init použít CustomData. Pokud jste nahráli vlastní image Linuxu , která používá cloud-init, nakonfigurujete také prohození oddílů pomocí cloud-init.
Ke správě prohození pro všechny image, které jsou zřízené a podporované pomocí cloud-init, nemůžete použít soubor /etc/waagent.conf . Úplný seznam imagí najdete v tématu Použití cloud-init.
Nejjednodušší způsob, jak spravovat prohození pro tyto image, je provést tyto kroky:
Ve složce /var/lib/cloud/scripts/per-boot vytvořte soubor s názvem create_swapfile.sh:
$ sudo touch /var/lib/cloud/scripts/per-boot/create_swapfile.sh
Přidejte do souboru následující řádky:
$ 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
Poznámka
Hodnotu můžete změnit podle potřeby a na základě dostupného místa na disku prostředku, které se liší v závislosti na velikosti použitého virtuálního počítače.
Vytvořte spustitelný soubor:
$ sudo chmod +x /var/lib/cloud/scripts/per-boot/create_swapfile.sh
Pokud chcete vytvořit odkládací soubor, spusťte skript hned za posledním krokem:
$ sudo /var/lib/cloud/scripts/per-boot/./create_swapfile.sh
V případě imagí bez podpory cloud-init mají image virtuálních počítačů nasazené z Azure Marketplace s operačním systémem integrovaný linuxový agent virtuálního počítače. Tento agent umožňuje virtuálnímu počítače pracovat s různými službami Azure. Za předpokladu, že jste nasadili standardní image z Azure Marketplace, budete muset správně nakonfigurovat nastavení linuxového odkládacího souboru:
Vyhledejte a upravte dvě položky v souboru /etc/waagent.conf . Řídí existenci vyhrazeného odkládacího souboru a velikost odkládacího souboru. Parametry, které je potřeba ověřit, jsou a ResourceDisk.EnableSwap
. ResourceDisk.SwapSizeMB
Pokud chcete povolit správně povolený disk a připojené odkládací soubory, ujistěte se, že parametry mají následující nastavení:
- ResourceDisk.EnableSwap=Y
- ResourceDisk.SwapSizeMB={velikost v MB pro splnění vašich potřeb}
Po provedení změny je potřeba restartovat waagent nebo restartovat virtuální počítač s Linuxem, aby se tyto změny odrážely. Víte, že změny byly implementovány a free
že při použití příkazu k zobrazení volného místa byl vytvořen odkládací soubor. Následující příklad obsahuje 512MB odkládací soubor vytvořený v důsledku úpravy souboru waagent.conf :
azuseruser@myVM:~$ free
total used free shared buffers cached
Mem: 3525156 804168 2720988 408 8428 633192
-/+ buffers/cache: 162548 3362608
Swap: 524284 0 524284
Algoritmus plánování V/V pro Premium Storage
V linuxovém jádru 2.6.18 se výchozí algoritmus plánování V/V změnil z Deadline na CFQ (zcela algoritmus spravedlivého řazení do fronty). V případě vstupně-výstupních vzorů náhodného přístupu je mezi CFQ a deadlineem zanedbatelný rozdíl ve výkonu. U disků SSD, u kterých je vzor V/V disku převážně sekvenční, může přepnutí zpět na algoritmus NOOP nebo Deadline dosáhnout lepšího výkonu V/V.
Zobrazení aktuálního plánovače V/V
Použijte následující příkaz:
cat /sys/block/sda/queue/scheduler
Zobrazí se následující výstup, který označuje aktuální plánovač.
noop [deadline] cfq
Změna aktuálního zařízení (/dev/sda) algoritmu plánování V/V
Použijte následující příkazy:
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
Poznámka
Použití tohoto nastavení pro /dev/sda samotné není užitečné. Nastavte na všech datových discích, kde sekvenční V/V převládá vzor V/V.
Měl by se zobrazit následující výstup, který značí, že soubor grub.cfg byl úspěšně znovu sestaven a že výchozí plánovač byl aktualizován na NOOP.
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
Pro rodinu distribuce Red Hat potřebujete pouze následující příkaz:
echo 'echo noop >/sys/block/sda/queue/scheduler' >> /etc/rc.local
Ubuntu 18.04 s jádrem vyladěným v Azure používá plánovače I/O s více frontou. V tomto scénáři none
je vhodným výběrem místo noop
. Další informace najdete v tématu Plánovače V/V Ubuntu.
Použití softwarového pole RAID k dosažení vyšších V/V operací
Pokud vaše úlohy vyžadují více IOps, než dokáže poskytnout jeden disk, musíte použít konfiguraci softwarového pole RAID s více disky. Vzhledem k tomu, že Azure již provádí odolnost disku na místní vrstvě prostředků infrastruktury, dosáhnete nejvyšší úrovně výkonu z konfigurace prokládání RAID-0. Zř vytvářejte a vytvářejte disky v prostředí Azure a připojte je k virtuálnímu počítači s Linuxem před dělením, formátováním a připojením jednotek. Další podrobnosti o konfiguraci softwarového nastavení RAID na virtuálním počítači s Linuxem v Azure najdete v dokumentu Konfigurace softwarového pole RAID v Linuxu .
Jako alternativu k tradiční konfiguraci RAID se také můžete rozhodnout nainstalovat Správce logických svazků (LVM) a nakonfigurovat několik fyzických disků na jeden prokládaný logický svazek úložiště. V této konfiguraci se čtení a zápisy distribuují na více disků obsažených ve skupině svazků (podobně jako RAID0). Z důvodů výkonu budete pravděpodobně chtít pročíst logické svazky, aby čtení a zápisy využíly všechny připojené datové disky. Další podrobnosti o konfiguraci prokládaného logického svazku na virtuálním počítači s Linuxem v Azure najdete v dokumentu Konfigurace LVM na virtuálním počítači s Linuxem v Azure .
Další kroky
Nezapomeňte, že stejně jako u všech diskuzí o optimalizaci je potřeba provést testy před a po každé změně, abyste změřit dopad změny. Optimalizace je proces krok za krokem, který má různé výsledky napříč různými počítači ve vašem prostředí. To, co funguje pro jednu konfiguraci, nemusí fungovat pro ostatní.
Některé užitečné odkazy na další zdroje informací: