Test Starwind vSAN

Starwind vSAN is een bekende speler op de markt van Hyper Converged Infrastructure. Hun oplossing voor vSAN zou ideaal zijn voor Dataline aangezien er geen dure VMWare licenties nodig zijn. Maar de vraag is natuurlijk hoe goed is Starwind vSAN? Als eens gekeken wordt naar de reviews dan zijn er veel bedrijven tevreden met Starwind vSAN. Om zeker te zijn wordt een test opstelling opgezet, hier wordt de performance, efficiëntie en kwaliteit van Starwind vSAN onder de loep genomen.

Opstelling

Als opstelling worden 2 desktop computers van Dataline gebruikt. Die worden dan uitgebreid met een gloed nieuwe snelle netwerkkaart (NIC) met 2 poorten (25 Gbps) en een 350 GB SSD.

Starwind heeft een 30 day free trial waarmee er een 2 node setup kan getest worden. Twee nodes is het absolute minimum dat nodig is om een vSAN te gebruiken. Met een node wordt hier een server bedoeld die de Starwind virtuele machine aan het draaien is. De setup die zal getest worden is de volgende.

In totaal zullen er 3 verbindingen nodig zijn op de nodes:

  • iSCSI/Heartbeat
  • Synchronisatie
  • Management

Het iSCSI/heartbeat en synchronisatie kanaal wordt gebruikt om data en commando's door te geven tussen de hosts. Deze verbindingen gebeuren best met de nieuwe netwerkkaart zodat de data zo snel mogelijk kan gesynchroniseerd worden. Management is bedoeld als aanspreekpunt voor het beheren van de ESXi host en virtuele machines.

Failover strategie

Bij het geval dat de 2 verbindingen tussen de nodes zou weg vallen dan is er een zogenaamde netwerk partitie, dit zorgt dat de nodes niet meer kunnen communiceren met elkaar en kan leiden tot een split brain scenario. Split brain kan zeer erge gevolgen hebben zoals het verliezen van data en het moet absoluut vermeden worden.

splitbrain

In deze situatie zal elke node naar zijn eigen storage schrijven. Zo ontstaan er data inconsistenties tussen de 2 nodes waardoor ze steeds meer van elkaar gaan verschillen. Uiteindelijk gaan ze zoveel met elkaar verschillen dat de data niet meer gesynchroniseerd kan worden.

Als ze moet hersteld worden van een split brain scenario, dan zal er een enkele node gekozen worden om verder op te werken. Alle wijzigingen van de andere nodes worden daardoor ongedaan gemaakt. Het risico van een split brain scenario moet daarom zo laag mogelijk zijn. Starwind vSAN geeft ons 2 manieren om zo'n scenario te vermijden.

Heartbeat

Er wordt een zogenaamde heartbeat verbinding opgesteld tussen nodes. Wanneer een node merkt dat de synchronisatie verbinding niet meer werkt tussen een partner node dan zal er een ping gestuurd worden via het heartbeat kanaal. Als de partner node antwoord dan zal Starwind de node blokkeren met een lagere prioriteit tot de synchronisatie verbinding terugkomt. Als de partner node niet antwoord dan gaat Starwind vSAN er vanuit dat die offline is. Starwind vSAN markeert de partner node dan als niet gesynchroniseerd.

heartbeat

Stel bijvoorbeeld dat er 2 nodes zijn zoals in de figuur en de data kan niet verzonden worden via de synchronisatie verbinding. Dan kunnen de 2 nodes niet gaan synchroniseren met elkaar. Via het heartbeat kanaal checkt de primary node de status van de 2 systemen. Het ziet dat beide systemen nog in sync zijn en zal de secundaire node blokkeren zodat het niet meer reageert op requests. De secundaire node check regelmatig de verbinding van het synchronisatie kanaal. Vanaf dat er terug verbinding is, zal het synchronisatie process terug starten en wordt de secundaire node weer actief.

Nadeel:

Indien alle verbindingen (heartbeat + synchronisatie) verbroken worden tussen de 2 hosts dan zal er een split brain situatie ontstaan. Starwind vSAN probeert dit probleem te minimaliseren door toe te laten dat de heartbeat verbinding over het management netwerk gaat. Starwind raad deze aanpak enkel aan wanneer er meerdere heartbeat verbindingen zijn.

To summarize, this kind of strategy is mostly applicable to the systems where you have enough network links that can be used as the additional heartbeat channels and are physically separated from the primary ones. Starwindopen in new window

Node majority

Een andere manier om split brain te gaan vermijden is door een Witness node te gaan toevoegen. Het is een gekende strategie en wordt ook door VMWare gebruikt. De witness houd informatie bij van beide nodes en wanneer de synchronisatie zou weg vallen dan zal de witness mee beslissen over welke node de primaire node is.

Om te beslissen wie de primaire node wordt zal er een stemming gedaan worden. De node met de meeste stemmen wordt dan de primaire node. Elke node zal voor zichzelf stemmen waardoor er geen meerderheid zal zijn, daarom moet er een derde node zijn om de knoop door te hakken. De witness zelf houd gewoon meta data bij en heeft dus zelf niet veel storage en resources nodig.

Stel bovenstaande configuratie wordt gebruikt en de synchronisatie valt weg. Dan zal de witness die verbonden is met beide nodes, een meerderheid vormen met de node die de meest relevante data heeft (in dit voorbeeld node 1). Daardoor zal node 2 gemarkeerd worden als niet gesynchroniseerd en zal die niet meer luisteren naar requests. Het grootte voordeel van deze aanpak is dat split brain zich niet meer kan voordoen, maar er is wel een extra node nodig.

Voordelen

  • Het split brain scenario is volledig uitgesloten
  • Een extra heartbeat verbinding is niet nodig

Nadelen

  • Voor een 2 node setup is een derde witness node nodig
  • Met 3 nodes mag er maar 1 failure voorkomen

Synchronisatie test

Om te kijken of de synchronisatie tussen de nodes gebeurt moet er eens gecontroleerd worden als de er degelijk gerepliceerd wordt over de nodes. Met een simpele test wordt dit gecontroleerd.

  1. Maak een bestand aan op één node.
  2. Sluiten de vm af
  3. Start dezelfde VM op de andere node
  4. Kijk of dit bestand ook op de andere node zich bevindt

Dit lukt zonder problemen en alles werkt zoals verwacht.

Fio

De manier waarop een workload zal gesimuleerd worden is door gebruik te maken van een Disk IO test tool genaamd fio. Het is een command line tool die zeer veel parameters heeft om te gaan testen. De gebruikte parameters zijn gebaseerd op een artikel van Oracle over het testen van Block storage. Oracleopen in new window.

Met fio worden IO operaties uitgevoerd om statistieken te verzamelen zoals:

  • Het aantal IOPS (Input/Output operaties per seconde)
  • De bandbreedte van de data stroom (in MB/s of GB/s)
  • Hoe snel de storage antwoord op IO requests (latency)

Het aantal IOPS is een zeer belangrijke statistiek. Databases zullen zeer veel kleine reads en writes gaan uitvoeren op een storage device. Daarom moet een database server best zo hoog mogelijk aantal IO operaties kunnen uitvoeren om efficient vele requests te kunnen vervolledigen.

Om de verschillende scenario's van de storage te controleren gaan er 4 soorten testen uitgevoerd worden:

  • Random reads
  • File random reads/writes
  • Random read/writes
  • Sequentiële reads

Alle testen worden rechtstreeks op de storage uitgevoerd behalve de file random reads/writes. Deze test zal IO operaties doen op een file. Het verschil met rechtstreeks werken is dat hier het besturingssysteem nog tussen komt. Er wordt dus verwacht dat deze test iets trager zullen zijn.

Performance testen

Storage is de traagste factor van elke computer, daarom is de performance van storage zeer belangrijk voor virtuele machines. Om te kijken of Starwind vSAN een goede optie zou zijn, moet er gecontroleerd worden hoe efficient Starwind omgaat met storage. Een heleboel factoren hebben invloed hebben op de performance van vSAN, dus het is belangrijk om verschillende opstellingen te testen en te kijken wat het beste optie is

Er zijn 3 scenario's die interessant zijn om te testen voor performance:

  • VM op lokale datastore
  • VM op vSAN datastore
  • VM moet werken via de remote host omdat lokale host niet gesynchroniseerd is.

De laatste test is belangrijk want deze stelt het scenario voor dat een lokaal storage device niet meer beschikbaar zou zijn. De virtuele machine zal dan over het netwerk IO operaties doen met behulp van iSCSI. Op deze manier zal de virtuele machine nooit down komen te staan.

Lokale Datastore

Er wordt een vm op de lokale datastore opgestart. Met deze opstelling zal de bandbreedte van IO operaties gelijk moeten zijn aan de snelheid van een SATA SSD wat ongeveer 350MB/s zou moeten zijn. In onderstaande figuur wordt het pad dat een IO request volgt eens gevisualiseerd.

Resultaten

IOPS performance testIOPS (reads)IOPS (writes)
Random Reads285k/
Random reads/writes70,9k70,9k
File random reads/writes69,4k69,3k
Sequential reads292k/
Throughput Performance TestsBW (Read)BW (Write)
Random Reads2468 MB/s/
Random reads/writes347 MB/s348 MB/s
File random reads/writes319 MB/s319 MB/s
Sequential reads2698 MB/s/
Latency Performance TestsTijd (µs)
Random Reads45,6 µs/
Random reads/writes109,69 µs51,20 µs

vSAN Datastore

Er wordt een vm op de vSAN datastore opgestart. Met deze opstelling zal nog steeds gebruikt gemaakt worden van de lokale SSD maar dan via de vSAN datastore. Dit zou enige overhead moeten creëren waardoor er wat lagere resultaten zullen behaalt worden. In onderstaande figuur wordt het pad dat een IO request volgt eens gevisualiseerd.

Resultaten

IOPS performance testIOPS (reads)IOPS (writes)
Random Reads202k/
Random reads/writes26,3k26,3k
File random reads/writes25,7k25,7k
Sequential reads251k/
Throughput Performance TestsBW (Read)BW (Write)
Random Reads2622 MB/s/
Random reads/writes289 MB/s290 MB/s
File random reads/writes271 MB/s300 MB/s
Sequential reads2210 MB/s/
Latency Performance TestsTijd (Read)Tijd (Write)
Random Reads109,12 µs/
Random reads/writes266,03 µs278,94 µs

Remote host

Deze keer wordt de Starwind vSAN node afgesloten op de host. Dit zorgt dat de vm geen toegang meer zal hebben tot de lokale SSD. De vm moet nu via de vSAN datastore IO operaties gaan uitvoeren op de andere host. Het zal dit doet doen aan de hand van iSCSI commando's. De iSCSI verbinding gaat over de nieuwe snelle netwerk kaart (25 Gbps), hierdoor zou er niet zo'n groot verschil mogen zijn ten opzichte van de vSAN datastore. In onderstaande figuur wordt het pad van IO request gevisualiseerd.

Resultaten

IOPS performance testIOPS (reads)IOPS (writes)
Random Reads222k/
Random reads/writes38,8k38,8k
File random reads/writes35,2k35,2k
Sequential reads265k/
Throughput Performance TestsBW (Read)BW (Write)
Random Reads3226 MB/s/
Random reads/writes276 MB/s277 MB/s
File random reads/writes329 MB/s330 MB/s
Sequential reads2662 MB/s/
Latency Performance TestsTijd (µs)
Random Reads110,83 µs/
Random reads/writes267,58 µs212,2 µs

Conclusie

Om uit deze testen een conclusie te halen worden de resultaten eens op een rij gezet.

Opmerking

In de testen hierboven zijn de resultaten van de random reads en sequential reads enorm groot. Zo groot zelf dat ze sneller zijn dan de SSD. Dit is mogelijks te wijten aan caching van de storage. Deze resultaten zullen om die reden niet meegerekend worden in de conclusie.

IOPS

In de onderstaande grafiek wordt gekeken naar het gemiddelde aantal IOPS voor elk scenario. Hier kan er gezien worden dat het aantal IOPS duidelijk hoger zal zijn wanneer een lokale datastore wordt gebruikt. Dit is logisch aangezien dat met een lokale datastore de IO requests sneller de SSD zullen bereiken.

Bandbreedte

Hier wordt gekeken naar de gemiddelde bandbreedte voor elk scenario. Het valt op dat er weinig verschil is tussen de verschillende methoden. Dit is te wijten aan het feit dat voor de bandbreedte test grotere blokken data worden opgevraagd. Dit zorgt dat er minder IO operaties moeten gebeuren waardoor het verschil tussen de 3 minder merkbaar is.

Latency

In de onderstaande grafiek wordt gekeken naar de tijd dat de SSD erover doet om een IO request te voldoen. Er is een duidelijk verschil namelijk dat requests op de lokale datastore sneller worden beantwoord. Net zoals bij de IOPS test zullen requests sneller de SSD bereiken met een lokale datastore.

Last Updated:
Contributors: benboydens, Ben Boydens