I denna artikel vill vi beskriva egenskaperna hos All Flash-arrayen AccelStor i samband med en av de mest populĂ€ra virtualiseringsplattformarna â VMware vSphere. SĂ€rskilt fokus lĂ€ggs pĂ„ de parametrar som kan maximera effekten av att anvĂ€nda ett sĂ„ kraftfullt verktyg som All Flash.

All Flash-arrayarna AccelStor NeoSapphire⹠Àr eller noders enheter baserade pÄ SSD-lagringslösningar med ett helt annat angreppssÀtt pÄ datalagring och tillgÄng genom anvÀndning av egen teknologi istÀllet för de mycket populÀra RAID-algoritmerna. Arrayen erbjuder blockÄtkomst för vÀrdar via Fibre Channel eller iSCSI-grÀnssnitt. För rÀttvisans skull bör det nÀmnas att modeller med iSCSI-grÀnssnitt ocksÄ har filÄtkomst som en trevlig bonus. Men i denna artikel fokuserar vi pÄ anvÀndning av blockprotokoll som Àr de mest presterande för All Flash.
Hela processen för implementering och efterföljande konfiguration av samarbetet mellan AccelStor-arrayen och VMware vSphere-systemet kan delas upp i flera steg:
- Implementering av anslutningstopologi och konfiguration av SAN-nÀtverket;
- Konfiguration av All Flash-arrayen;
- Konfiguration av ESXi-vÀrdar;
- Konfiguration av virtuella maskiner.
Som utrustning för exemplen anvĂ€ndes AccelStor NeoSapphireâą-array med Fibre Channel-grĂ€nssnitt och med iSCSI-grĂ€nssnitt. Som basprogramvara anvĂ€ndes VMware vSphere 6.7U1.
Innan implementeringen av de system som beskrivs i artikeln rekommenderas starkt att bekanta sig med dokumentationen frÄn VMware angÄende prestandafrÄgor ( ) och iSCSI-instÀllningar ()
Anslutningstopologi och konfiguration av SAN-nÀtverket
De huvudsakliga komponenterna i SAN-nÀtverket Àr HBA-adaptrar i ESXi-vÀrdarna, SAN-switchar och noder i arrayen. En typisk topologi för ett sÄdant nÀtverk ser ut sÄ hÀr:

Med termen Switch avses hÀr bÄde en sÀrskild fysisk switch eller en uppsÀttning switchar (Fabric), samt en delad enhet mellan olika tjÀnster (VSAN för Fibre Channel och VLAN för iSCSI). AnvÀndning av tvÄ oberoende switchar/Fabric möjliggör att eventuella felpunkter undvikes.
Direktanslutningar av vĂ€rdar till arrayen stöds, men rekommenderas starkt inte. Prestandan för All Flash-arrayer Ă€r tillrĂ€ckligt hög. För att uppnĂ„ maximal hastighet krĂ€vs det att alla portar i arrayen anvĂ€nds. DĂ€rför Ă€r det nödvĂ€ndigt att ha minst en switch mellan vĂ€rdarna och NeoSapphireâą.
TvÄ portar pÄ vÀrdens HBA Àr ocksÄ ett krav för att uppnÄ maximal prestanda och sÀkerstÀlla redundans.
Vid anvĂ€ndning av Fibre Channel-grĂ€nssnitt krĂ€vs zoninstĂ€llning för att undvika potentiella kollisioner mellan initiatorer och mĂ„l. Zoner byggs pĂ„ principen 'en initiatorport â en eller flera portar i arrayen'.
I fallet med anslutning via iSCSI, nÀr en switch delas med andra tjÀnster, Àr det absolut nödvÀndigt att isolera iSCSI-trafiken inom en separat VLAN. Det rekommenderas starkt att aktivera stöd för Jumbo Frames (MTU = 9000) för att öka storleken pÄ paketen i nÀtverket och dÀrmed minska mÀngden overheadinformation vid överföring. Det Àr viktigt att komma ihÄg att det krÀvs en Àndring av MTU-instÀllningen pÄ alla komponenter i nÀtverket i kedjan 'initiator-switch-mÄl' för korrekt funktion.
Konfiguration av All Flash-arrayen
Arrayen levereras till kunder med redan formade grupper . DÀrför behöver inga ÄtgÀrder vidtas för att sammanfoga lagringsenheter till en enhetlig struktur. Det rÀcker att skapa volymer i erforderlig storlek och antal.
För enkelhetens skull finns det en funktion för batchskapande av flera volymer av angiven storlek. Som standard skapas 'tunna' volymer, eftersom det gör att tillgÀngligt lagringsutrymme kan anvÀndas mer effektivt (bland annat tack vare stöd för Space Reclamation). Rent prestandamÀssigt Àr skillnaden mellan 'tunna' och 'tjocka' volymer inte mer Àn 1%. Men om det krÀvs för att 'fÄ ut all kapacitet' ur arrayen, kan vilken 'tunn' volym som helst konverteras till 'tjock'. Men det Àr viktigt att komma ihÄg att denna operation Àr oÄterkallelig.
DÀrefter mÄste man "publicera" de skapade volymerna och stÀlla in Ätkomstbehörigheter för dem frÄn vÀrdarna med hjÀlp av ACL (IP-adresser för iSCSI och WWPN för FC) samt fysisk uppdelning av arrayportar. För iSCSI-modeller görs detta genom att skapa ett Target.
För FC-modeller sker publiceringen genom att skapa en LUN för varje port i arrayen.
För att pÄskynda konfigurationsprocessen kan vÀrdarna grupperas. Om en flervÀgs FC HBA anvÀnds pÄ vÀrden (vilket oftast Àr fallet i praktiken), sÄ identifierar systemet automatiskt att portar frÄn denna HBA tillhör en och samma vÀrd tack vare WWPN som skiljer sig med ett enhet. För bÄda grÀnssnitten stöds ocksÄ batchskapande av Target/LUN.
En viktig observation vid anvÀndning av iSCSI-grÀnssnittet Àr att för volymer skapa flera targets samtidigt för att öka prestandan, eftersom kön pÄ targeten inte kan Àndras och kommer att bli en flaskhals.
Konfiguration av ESXi-vÀrdar
FrÄn ESXi-vÀrdar utförs grundlÀggande konfiguration enligt ett ganska förvÀntat scenario. Handlingsordning för iSCSI-anslutning:
- LÀgg till Software iSCSI Adapter (krÀvs inte om den redan har lagts till, eller vid anvÀndning av Hardware iSCSI Adapter);
- Skapa vSwitch genom vilken iSCSI-trafik kommer att passera, och lÀgga till fysiska uplink och VMkernel i den;
- LÀgga till adresser till Dynamic Discovery för arrayen;
- Skapa Datastore
NÄgra viktiga kommentarer:
- I allmÀnhet kan man faktiskt anvÀnda en redan existerande vSwitch, men i fallet med en separat vSwitch blir hanteringen av vÀrdinstÀllningarna betydligt enklare.
- Det Àr nödvÀndigt att separera Management-trafik och iSCSI pÄ separata fysiska lÀnkar och/eller VLAN för att undvika prestandaproblem.
- IP-adresser för VMkernel och motsvarande portar i All Flash-arrayen mÄste ligga inom samma subnÀt igen pÄ grund av prestandafrÄgor.
- För att sÀkerstÀlla redundans enligt VMware-regler mÄste vSwitch ha minst tvÄ fysiska uplink
- Om Jumbo Frames anvÀnds Àr det nödvÀndigt att Àndra MTU bÄde pÄ vSwitch och pÄ VMkernel
- Det Àr vÀrt att pÄminna om att enligt VMware-rekommendationerna för fysiska adaptrar som ska anvÀndas för iSCSI-trafik, Àr det nödvÀndigt att konfigurera Teaming and Failover. Specifikt ska varje VMkernal arbeta endast via en uplink, den andra uplinken ska stÀllas in pÄ unused. För redundans behöver man lÀgga till tvÄ VMkernal, var och en av dem ska arbeta via sin egen uplink.
VMkernel Adapter (vmk#)
Physical Network Adapter (vmnic#)
vmk1 (Storage01)
Aktiva adaptrar
vmnic2
OanvÀnda adaptrar
vmnic3
vmk2 (Storage02)
Aktiva adaptrar
vmnic3
OanvÀnda adaptrar
vmnic2
För anslutning via Fibre Channel krÀvs inga förhandsÄtgÀrder. Man kan direkt skapa en Datastore.
Efter skapandet av Datastore Àr det viktigt att verifiera att Round Robin-policy anvÀnds för vÀgar till Target/LUN för bÀsta prestanda.
Som standard föreslÄr VMware att denna policy anvÀnds med schemat: 1000 förfrÄgningar via den första vÀgen, följande 1000 förfrÄgningar via den andra vÀgen osv. Denna interaktion mellan vÀrden och en tvÄkontrollerad lagring kommer att vara obalanserad. DÀrför rekommenderar vi att stÀlla in Round Robin-policy = 1 via Esxcli/PowerCLI.
Parametrar
För Esxcli:
- Lista tillgÀngliga LUN
esxcli storage nmp device list
- Kopiera enhetsnamnet
- Ăndra Round Robin-policy
esxcli storage nmp psp roundrobin deviceconfig set âtype=iops âiops=1 âdevice=«Device_ID»
De flesta moderna applikationer Àr utformade för att utbyta stora datakaplar för att maximera bandbredden och minska belastningen pÄ processorn. DÀrför överför ESXi som standard in-/utfrÄgningar till lagringsenheten i portioner upp till 32767 KB. Men för vissa scenarier kan mindre portioner vara mer effektiva. För AccelStor-lager Àr de följande scenarierna:
- Den virtuella maskinen anvÀnder UEFI istÀllet för Legacy BIOS
- vSphere Replication anvÀnds
För sÄdana scenarier rekommenderas det att Àndra Disk.DiskMaxIOSize till 4096.
För iSCSI-anslutningar rekommenderas det att Ă€ndra Login Timeout-vĂ€rdet till 30 (standard 5) för att öka stabiliteten i anslutningen och stĂ€nga av fördröjningsbekrĂ€ftelser för överförda paket (DelayedAck). BĂ„da alternativen finns i vSphere Client: Host â Configure â Storage â Storage Adapters â Advanced Options för iSCSI-adaptern.
En viktig aspekt Àr antalet volymer som anvÀnds för datastore. Det Àr uppenbart att man för enkelhetens skull vill skapa en stor volym för hela lagringsutrymmet. Men att ha flera volymer och dÀrmed flera datastores har en positiv inverkan pÄ den totala prestandan (mer om köer nedan). DÀrför rekommenderar vi att skapa minst tvÄ volymer.
För inte sÄ lÀnge sedan rekommenderade VMware att begrÀnsa antalet virtuella maskiner pÄ en datastore för att uppnÄ maximal prestanda. Men nu, sÀrskilt med spridningen av VDI, Àr detta problem inte lÀngre sÄ pressande. Det avskaffar dock inte den gamla regeln - att distribuera virtuella maskiner som krÀver intensiv IO över olika datastores. För att bestÀmma det optimala antalet virtuella maskiner pÄ en volym finns det inget bÀttre Àn att utföra inom din infrastruktur.
Konfigurering av virtuella maskiner
Det finns inga speciella krav för konfiguration av virtuella maskiner, snarare Àr de ganska ordinÀra:
- AnvÀnd den senaste möjliga versionen av VM (kompatibilitet)
- Var försiktig med att stÀlla in storleken pÄ RAM nÀr virtuella maskiner placeras tÀtt, till exempel i VDI (eftersom en vÀxlingsfil av samma storlek som RAM skapas som standard vid start, vilket konsumerar nyttig kapacitet och pÄverkar den slutliga prestandan)
- AnvÀnd de mest prestandaeffektiva adapterversionerna: VMXNET 3 för nÀtverksadapter och PVSCSI för SCSI
- AnvÀnd disktyp Thick Provision Eager Zeroed för maximal prestanda och Thin Provisioning för att maximalt effektivisera lagringsutrymmet
- BegrÀnsa om möjligt arbetet för I/O-oviktiga maskiner med hjÀlp av Virtual Disk Limit
- Se till att installera VMware Tools
Kommentarer om köer
Kö (eller Outstanding I/Os) Àr antalet in-/utmatningsförfrÄgningar (SCSI-kommandon) som vÀntar pÄ behandling vid varje given tidpunkt för en specifik enhet/applikation. Vid överbelastning av kön uppstÄr fel QFULL, vilket i sin tur leder till en ökning av latensparametern. Vid anvÀndning av diskbaserade (spinnande) lagringssystem gÀller teoretiskt att ju högre kö, desto högre Àr deras prestanda. Men man bör inte överdriva, eftersom det lÀtt kan leda till QFULL. I fallet med All Flash-system Àr det Ä ena sidan nÄgot enklare; eftersom enheten har mycket lÀgre latens och dÀrför oftast inte krÀver separat justering av köernas storlek. à andra sidan, i vissa anvÀndningssituationer (kraftig obalans i IO-kraven för specifika virtuella maskiner, tester för maximal prestanda, etc.) kan det krÀvas att man Ätminstone förstÄr vilka vÀrden som kan uppnÄs, och viktigast av allt, vilka sÀtt som finns.
PÄ sjÀlva All Flash-enheten AccelStor finns det inga begrÀnsningar nÀr det gÀller volymer eller in-/utmatningsportar. Om sÄ behövs kan Àven en enda volym fÄ alla resurser frÄn enheten. Det enda begrÀnsningen för köer förekommer hos iSCSI-mÄl. Av just denna anledning angavs tidigare behovet av att skapa flera (idealiskt upp till 8 stycken) mÄl för varje volym för att övervinna denna begrÀnsning. LÄt oss ocksÄ pÄminna om att AccelStor-enheterna Àr mycket prestandainriktade lösningar. DÀrför bör alla grÀnssnittsportar i systemet anvÀndas för att uppnÄ maximal hastighet.
FrÄn ESXi-vÀrdens sida Àr situationen helt annorlunda. SjÀlva vÀrden tillÀmpar en praxis av likvÀrdig tillgÄng till resurser för alla deltagare. DÀrför finns det separata IO-köer för gÀstsoperativsystemet och HBA. Köerna till gÀstsoperativsystemet kombineras frÄn köerna till den virtuella SCSI-adaptern och den virtuella disken:

Kön till HBA beror pÄ den specifika typen/leverantören:

Den slutgiltiga prestandan för den virtuella maskinen kommer att bestÀmmas av det lÀgsta vÀrdet av ködjupet (Queue Depth limit) bland vÀrdens komponenter.
Tack vare dessa vÀrden kan vi utvÀrdera prestandaindikatorer som vi kan fÄ i en viss konfiguration. Till exempel vill vi veta den teoretiska prestandan för en virtuell maskin (utan koppling till blocket) med latens pÄ 0,5 ms. DÄ blir dess IOPS = (1 000/latens) * Outstanding I/Os (Queue Depth limit)
Exempel
Exempel 1
- FC Emulex HBA Adapter
- En VM pÄ datastore
- VMware Paravirtual SCSI Adapter
HÀr bestÀms Queue Depth limit av Emulex HBA. DÀrför blir IOPS = (1000/0,5)*32 = 64K
Exempel 2
- VMware iSCSI Software Adapter
- En VM pÄ datastore
- VMware Paravirtual SCSI Adapter
HÀr bestÀms Queue Depth limit av Paravirtual SCSI Adapter. DÀrför blir IOPS = (1000/0,5)*64 = 128K
Toppmodeller av All Flash-lagringslösningar frÄn AccelStor (till exempel ) kan uppnÄ en skrivprestanda pÄ 700K IOPS vid en blockstorlek pÄ 4K. Med en sÄdan blockstorlek Àr det uppenbart att en enda virtuell maskin inte kan belasta en sÄdan lagring. För detta krÀvs 11 (exempel 1) eller 6 (exempel 2) virtuella maskiner.
Som ett resultat av rÀtt konfiguration av alla beskrivna komponenter i det virtuella datacentret kan mycket imponerande resultat uppnÄs nÀr det gÀller prestanda.

4K Random, 70% LĂ€s/30% Skriv
I verkligheten Àr vÀrlden mycket mer komplex Àn vad som kan beskrivas med en enkel formel. PÄ en vÀrd finns alltid mÄnga virtuella maskiner med olika konfigurationer och krav pÄ IO. Dessutom hanterar vÀrdens processor in- och utdata, vars kapacitet inte Àr oÀnlig. SÄledes, för att avslöja den fulla potentialen hos i verkligheten krÀvs tre vÀrdar. Dessutom pÄverkar program som körs inuti de virtuella maskinerna resultaten. DÀrför föreslÄr vi för exakt sizing All Flash-lagringslösningar inom kundens infrastruktur pÄ aktuella uppgifter.
KĂ€lla: habr.com
