V tomto článku bych chtěl hovořit o zvláštnostech fungování All Flash polí AccelStor s jednou z nejpopulárnějších platforem pro virtualizaci – VMware vSphere. Konkrétně bych se chtěl zaměřit na parametry, které pomohou dosáhnout maximálního efektu při využívání tak silného nástroje, jako je All Flash.

All Flash pole AccelStor NeoSapphire™ jsou nebo uzlová zařízení založená na SSD úložištích s principiálně odlišným přístupem k realizaci koncepce ukládání dat a organizaci přístupu k nim pomocí vlastní technologie místo velmi populárních algoritmů RAID. Pole poskytují blokový přístup pro hostitele prostřednictvím rozhraní Fibre Channel nebo iSCSI. Je spravedlivé poznamenat, že modely s rozhraním ISCSI mají také jako příjemný bonus souborový přístup. Ale v rámci tohoto článku se zaměříme na použití blokových protokolů jako nejvýkonnějších pro All Flash.
Celý proces nasazení a následného nastavení spolupráce pole AccelStor a virtualizačního systému VMware vSphere lze rozdělit do několika fází:
- Realizace topologie připojení a nastavení SAN sítě;
- Nastavení All Flash pole;
- Nastavení hostitelů ESXi;
- Nastavení virtuálních strojů.
Pro příklady byly použity pole AccelStor NeoSapphire™ s rozhraním Fibre Channel a s rozhraním iSCSI. Jako základní software bylo použito VMware vSphere 6.7U1.
Před nasazením systémů popisovaných v článku se důrazně doporučuje prostudovat dokumentaci od VMware týkající se výkonu ( ) a nastavení iSCSI ()
Topologie připojení a nastavení SAN sítě
Hlavními komponenty SAN sítě jsou HBA adaptéry v hostitelích ESXi, SAN switche a uzly pole. Typická topologie takové sítě by vypadala takto:

Pod termínem Switch se zde rozumí jak samostatný fyzický switch, tak soubor switchů (Fabric) a zařízení sdílené mezi různými službami (VSAN v případě Fibre Channel a VLAN v případě iSCSI). Použití dvou nezávislých switchů/Fabric vyloučí možnou jednotlivou chybovou sdílenou lokalitu.
Přímé připojení hostitelů k poli, ačkoli je podporováno, se rozhodně nedoporučuje. Výkon All Flash polí je dostatečně vysoký. A pro maximální rychlost je třeba využít všechny porty pole. Proto je přítomnost alespoň jednoho přepínače mezi hostiteli a NeoSapphire™ nezbytná.
Přítomnost dvou portů u HBA hostitele je rovněž povinným požadavkem pro dosažení maximálního výkonu a zajištění odolnosti vůči poruchám.
V případě použití rozhraní Fibre Channel je nutná konfigurace zónování, aby se předešlo možným kolizím mezi iniciátory a cíli. Zóny se vytvářejí na principu "jeden port iniciátora – jeden nebo více portů pole".
Pokud je však použito připojení přes iSCSI a sdílený přepínač s jinými službami, je nutné izolovat iSCSI provoz uvnitř samostatného VLAN. Také se silně doporučuje povolit podporu Jumbo Frames (MTU = 9000) pro zvětšení velikosti paketů v síti a tím snížit množství ovládacích informací při přenosu. Je však důležité pamatovat na to, že pro správné fungování je potřeba změnit parametr MTU na všech komponentách sítě v řetězci "iniciátor-přepínač-cíl".
Konfigurace All Flash pole
Pole je dodáváno zákazníkům již se vytvořenými skupinami . Proto není potřeba žádných akcí k sloučení uložišť do jedné struktury. Stačí pouze vytvořit svazky požadované velikosti a v potřebném množství.
Pro pohodlí je k dispozici funkce hromadného vytváření několika svazků daného objemu. Ve výchozím nastavení jsou vytvářeny "tenké" svazky, protože to umožňuje efektivněji využít dostupný prostor na ukládání (včetně podpory Space Reclamation). Z hlediska výkonu rozdíl mezi "tenkými" a "tlustými" svazky nepřesahuje 1%. Pokud však je potřeba "vytáhnout maximum" z pole, lze vždy konvertovat libovolný "tenký" svazek na "tlustý". Je však důležité pamatovat, že tato operace je nevratná.
Dále je potřeba «publikovat» vytvořené svazky a nastavit k nim přístupová práva ze strany hostitelů pomocí ACL (IP adresy pro iSCSI a WWPN pro FC) a fyzického rozdělení podle portů pole. Pro iSCSI modely se to provádí vytvořením cíle.
Pro FC modely publikace probíhá vytvořením LUN pro každý port pole.
Pro urychlení procesu nastavení lze hostitele sdružovat do skupin. Pokud je na hostiteli použita víceportová FC HBA (což se v praxi nejčastěji děje), systém automaticky rozpozná, že porty takové HBA patří k jednomu hostiteli díky WWPN, který se liší o jednotku. Také pro oba rozhraní je podporováno hromadné vytváření cíle/LUN.
Důležitým poznatkem v případě využití rozhraní iSCSI je vytvoření více cílů pro svazky, aby se zvýšila výkonnost, protože frontu na cíli nelze změnit a fakticky se stane úzkým místem.
Nastavení hostitelů ESXi
Z pohledu hostitelů ESXi se základní nastavení provádí podle zcela očekávaného scénáře. Postup pro iSCSI připojení je následující:
- Přidat Software iSCSI Adapter (není potřeba, pokud byl již přidán, nebo v případě použití Hardware iSCSI Adapter);
- Vytvoření vSwitch, přes který bude procházet iSCSI provoz, a přidání do něj fyzických uplinků a VMkernel;
- Přidání do Dynamic Discovery adres pole;
- Vytvoření Datastore
Některé důležité poznámky:
- Obecně lze samozřejmě použít i již existující vSwitch, ale v případě samostatného vSwitch bude správa nastavení hostitele výrazně jednodušší.
- Je nutné oddělit správu provozu a iSCSI na samostatných fyzických linkách a/nebo VLAN, aby se předešlo problémům s výkonem.
- IP adresy VMkernel a odpovídajících portů All Flash pole by měly být ve stejné podsíti opět z důvodu výkonových otázek.
- Aby byla zajištěna odolnost podle pravidel VMware, musí mít vSwitch alespoň dva fyzické uplinky.
- Pokud se používají Jumbo Frames, je nutné změnit MTU jak u vSwitch, tak u VMkernel.
- Není od věci připomenout, že podle doporučení VMware je nutné provést nastavení Teaming and Failover pro fyzické adaptéry, které budou používány pro práci s iSCSI provozem. Konkrétně by každý VMkernel měl fungovat pouze přes jeden uplink, druhý uplink by měl být převeden do režimu unused. Pro vysokou dostupnost je třeba přidat dva VMkernel, přičemž každý z nich bude pracovat přes svůj uplink.
VMkernel Adapter (vmk#)
Physical Network Adapter (vmnic#)
vmk1 (Storage01)
Aktivní adaptéry
vmnic2
Nepoužité adaptéry
vmnic3
vmk2 (Storage02)
Aktivní adaptéry
vmnic3
Nepoužité adaptéry
vmnic2
Pro připojení přes Fibre Channel nejsou vyžadovány žádné úvodní akce. Můžete rovnou vytvořit Datastore.
Po vytvoření Datastore je třeba zajistit, že se používá politika Round Robin pro cesty k Target/LUN jako nejvýkonnější.
Ve výchozím nastavení VMware předpokládá používání této politiky podle schématu: 1000 požadavků prostřednictvím prvního path, následujících 1000 požadavků prostřednictvím druhého path atd. Takové interakce hostitele se dvouřídicovým polem bude nevyvážené. Proto doporučujeme nastavit parametr Round Robin policy = 1 pomocí Esxcli/PowerCLI.
Parametry
Pro Esxcli:
- Zobrazit dostupné LUN
esxcli storage nmp device list
- Kopírovat název zařízení
- Změnit politiku Round Robin
esxcli storage nmp psp roundrobin deviceconfig set —type=iops —iops=1 —device=«Device_ID»
Většina moderních aplikací je navržena pro výměnu datových paketů velké velikosti, aby se maximalizovalo využití šířky pásma a snížila zátěž centrálního procesoru. Proto ESXi ve výchozím nastavení odesílá požadavky na I/O zařízení v porcích až do 32767 KB. Pro některé scénáře však bude efektivnější výměna menšími porcemi. V případě polí AccelStor to jsou následující scénáře:
- Virtuální stroj používá UEFI místo Legacy BIOS
- Používá se vSphere Replication
Pro takové scénáře se doporučuje změnit hodnotu parametru Disk.DiskMaxIOSize na 4096.
Pro iSCSI připojení se doporučuje změnit parametr Login Timeout na 30 (ve výchozím nastavení 5) pro zvýšení stability připojení a vypnout zpoždění potvrzení přenášených paketů DelayedAck. Obě možnosti se nacházejí v vSphere Client: Host → Configure → Storage → Storage Adapters → Advanced Options pro iSCSI adaptér.
Dostatečně jemným momentem je počet používaných svazků pro datastore. Je jasné, že pro usnadnění správy vzniká touha vytvořit jeden velký svazek na celé úložiště. Nicméně existence několika svazků a tím pádem datastore má pozitivní vliv na celkový výkon (podrobněji o frontách níže v textu). Proto doporučujeme vytvoření alespoň dvou svazků.
Ještě relativně nedávno doporučovala VMware omezit počet virtuálních strojů na jednom datastore opět s cílem dosáhnout co nejvyšší možné výkonu. Nicméně nyní, zvlášť s rozšířením VDI, tento problém již není tak akutní. Ale to neodstraňuje staré pravidlo — rozdělovat virtuální stroje vyžadující intenzivní IO mezi různé datastore. Pro určení optimálního počtu virtuálek na jeden svazek není nic lepšího než provést v rámci své infrastruktury.
Nastavení virtuálních strojů
Při nastavování virtuálních strojů nejsou žádné zvláštní požadavky, spíše jsou celkem běžné:
- Použití maximálně možné verze VM (kompatibilita)
- Opatrně zadávat velikost RAM při těsném umístění virtuálních strojů, například v VDI (protože při spuštění se vytváří stránkovací soubor odpovídající velikosti RAM, což spotřebovává užitečnou kapacitu a ovlivňuje konečný výkon)
- Používat nejvýkonnější adaptér a verze z pohledu IO: síťový typ VMXNET 3 a SCSI typ PVSCSI
- Používat typ disku Thick Provision Eager Zeroed pro maximální výkon a Thin Provisioning pro maximálně efektivní využití úložného prostoru
- Pokud je to možné, omezit provoz strojů, které nejsou kritické k IO, pomocí Virtual Disk Limit
- Nutně nainstalovat VMware Tools
Poznámky k frontám
Fronta (nebo Outstanding I/Os) je počet požadavků na vstup/výstup (SCSI příkazů), které čekají na zpracování v daný okamžik u konkrétního zařízení/aplikace. V případě přeplnění fronty se vyskytují chyby QFULL, což se nakonec projevuje ve zvýšení parametru latence. Při použití diskových (spindle) systémů ukládání teoreticky platí, že čím vyšší je fronta, tím vyšší je jejich výkon. Nicméně, zneužívat to není moudré, protože se snadno můžete dostat k QFULL. V případě All Flash systémů je to na jednu stranu jednodušší: pole má latence řádově nižší, a proto většinou není potřeba samostatně regulovat velikost front. Na druhou stranu, v některých scénářích použití (silný odstup v požadavcích na IO pro konkrétní virtuální stroje, testy maximálního výkonu atd.) je třeba, pokud ne měnit parametry front, alespoň chápat, jakých hodnot lze dosáhnout, a co je nejdůležitější, jakými cestami.
Na samotném All Flash poli AccelStor neexistují žádná omezení týkající se svazků nebo portů vstup/výstup. V případě potřeby může dokonce jediný svazek získat všechny prostředky pole. Jediným omezením na fronty jsou iSCSI cíle. Právě z tohoto důvodu bylo výše uvedeno, že je potřeba vytvořit několik (ideálně až 8 kusů) cílů na každý svazek pro překonání tohoto limitu. Také opakujeme, že pole AccelStor jsou velmi výkonná řešení. Proto by měly být využity všechny rozhraní porty systému pro dosažení maximální rychlosti.
Z pohledu hostitele ESXi je situace zcela jiná. Samotný hostitel aplikuje praxi rovnoprávného přístupu k prostředkům pro všechny účastníky. Proto existují samostatné fronty IO pro hostitelský OS a HBA. Fronty pro hostitelský OS se kombinují z front k virtuálnímu SCSI adaptéru a virtuálnímu disku:

Fronta k HBA závisí na konkrétním typu/výrobci:

Konečný výkon virtuálního stroje bude určen nejnižší hodnotou ukazatele fronty (Queue Depth limit) mezi komponentami hostitele.
Díky těmto hodnotám můžeme vyhodnotit výkonnostní ukazatele, které můžeme získat v určité konfiguraci. Například chceme zjistit teoretickou výkonnost virtuálního stroje (bez souvislosti s blokem) s latencí 0,5 ms. Pak její IOPS = (1,000/latency) * Outstanding I/Os (Queue Depth limit)
Příklady
Příklad 1
- FC Emulex HBA Adaptér
- Jeden VM na datastore
- VMware Paravirtual SCSI Adaptér
Zde Queue Depth limit určuje Emulex HBA. Proto IOPS = (1000/0.5)*32 = 64K
Příklad 2
- VMware iSCSI Software Adaptér
- Jeden VM na datastore
- VMware Paravirtual SCSI Adaptér
Zde Queue Depth limit určuje již Paravirtual SCSI Adaptér. Proto IOPS = (1000/0.5)*64 = 128K
Nejlepší modely All Flash polí AccelStor (například ) jsou schopny poskytovat výkon 700K IOPS při zápisu s blokem 4K. Při takové velikosti bloku je zcela zřejmé, že jediný virtuální stroj není schopen zatížit takové pole. K tomu budou potřeba 11 (pro příklad 1) nebo 6 (pro příklad 2) virtuálních strojů.
V důsledku toho, při správném nastavení všech popsaných komponent virtuálního datacentra, lze dosáhnout velmi působivých výsledků v oblasti výkonu.

4K Random, 70% Read/30% Write
Ve skutečnosti je reálný svět mnohem složitější, aby ho bylo možné popsat jednoduchým vzorcem. Na jednom hostiteli se vždy nachází mnoho virtuálních strojů s různými konfiguracemi a požadavky na IO. A zpracování vstupu/výstupu zajišťuje procesor hostitele, jehož výkon není nekonečný. Tak, aby se plně využil potenciál téže v praxi bude potřeba tří hostitelů. Plus aplikace, které běží uvnitř virtuálních strojů, vnášejí své korekce. Proto pro přesné sizing doporučujeme All Flash polí v rámci infrastruktury zákazníka na skutečných aktuálních úlohách.
Zdroj: habr.com
