Mitä labrataan? – ScaleIO

Osallistuin alku vuodesta 2015 Cisco:n ja EMC:n yhteiselle roadshow:lle, jossa kiersimme seitsemässä paikassa julistamassa teknologiamessua. Minun osuuteni oli puhua ohjelmisto-ohjatusta tallennuksesta, tarkemmin ScaleIO ja ViPR -tuotteista. Puhujasta huolimatta esitykset herättivät paikoittain erittäin hyvää keskustelua, etenkin ScaleIO-viesti tuntui resonoivan hyvin. Yhdistetty arkkitehtuuri on kuuma aihe.

Kiertueen Top3 ScaleIO-kysymykset olivat:
1. Mitä verkkovaatimuksia ScaleIO:lla on?
2. Mitkä ovat yleisimmät käyttökohteet?
3. Minkälaista suorituskykyä ScaleIO:lla pystytään saavuttamaan?

Käyn vastaukset uudelleen lävitse

Verkkovaatimuskysymykseen on selkeä vastaus. ScaleIO toimii ethernet tai infiniband -verkoissa. Suositeltavaa on käyttää 10Gb Ethernet-verkkoa, koska 1Gb verkossa kaistanlaajuus muodostuu nopeasti pullonkaulaksi.

Kun halutaan todella korkeaa suorituskykyä, on infiniband oikea teknologia. Käyttökohteita ScaleIO:lla on monia. Itse lokeroin omaan päähäni ScaleIO:n ensisijaisesti korkean suorityskyvyn tuotteeksi, jolloin käyttökohteita ovat VDI, virtuaalisointiympäristöt, tietokantapalvelimet ja HPC-ympäristöt.

Toisaalta ScaleIO soveltuu mainiosti pienimuotoiseen testaus- ja labrakäyttöön. Nimensä perusteella skaalautuvuus on ScaleIO:n ”se juttu”.

ScaleIO:han on ohjelma, jolla palvelimien lokaalilevyistä muodostetaan jaettu tallennusverkko. ScaleIO:n mukana ei tule fyysisiä laitteita, joten suorituskyky ja käyttötarpeet määräytyvät sen mukaan, minkälaisia palvelimia on käytössä, kuinka monta niitä on, ja minkätyyppiset lokaalilevyt palvelimissa on.

Kun otetaan yhtälöön vielä verkon nopeus, niin suorituskykykysymyksiin ainut vastaus on tylsänkuuloinen; ”se riippuu”. On olemassa testejä joissa on saavutettu todella huimaavia suorituskykytuloksia. Itseäni kiinnosti löytää testi, missä olisi käytetty melko peruslaitteistoa, pienellä skaalalla, ja jossa lisäksi näkyisi vertailukykyisiä suorituskykytuloksia. Ikävä kyllä en löytänyt sellaista.

Kiertueen päätyttyä debatoin asiaa kollegojeni Mikon ja Henryn kanssa ideoiden polttopisteessä eli kahviautomaatin äärellä. Keskustelu sujui kutakuinkin näin:
”Joo, toi suorituskyky kysymys on paha koska SIO on ohjelma. Meiltä ei tule rautaa sen alle.”
”Olis kyllä hyvä, jos pystyttäisiin antamaan joku arvo mihin tuolla pääsee, esim. 1Gb verkossa, perusraudalla, ja pienellä setupilla. ”
”Niinpä…”
”No, tehdään oma testi!”

Synkronoimme kalenterit, käärimme hihat ja ryhdyimme toimeen. Testin tavoitteet olivat vesiselvät:
1. Tuottaa yleisesti saatavissa olevilla työkaluilla vertailukelpoisia tuloksia.
2. Testata SIO 1Gb verkossa.
3. Testata kasvaako SIO-suorituskyky lineaarisesti, kuten voimapiste esityksissä kuvataan.

Testisetuppimme oli tämä:

Meillä oli siis käytössä 6 kpl Intel NUC-laitetta, joissa jokaisessa 16 GB muistia, yksi sisäinen SSD-levy ja yksi 1Gb verkkoportti. Melko selkeä ja pieni kokoonpano. Ensimmäiseksi luotaisiin kolmen noodin SIO-klusteri, jossa ajetaan 30 minuutin kestoisia suorituskykytestejä käyttäen tähän tarkoitukseen erittäin hyvin soveltuvaa VMware:n I/O Analyzer:iä. Tämän jälkeen SIO-klusteri laajennetaan viiteen noodiin ja ajetaan lisää testejä. I/O Analyzer -koneet asennettiin ESX 2, 3 ja 4 -hosteille.

Ensimmäinen kierros: 
50/50 satunnainen luku/kirjoitus

Yllä tulos kolmen testerin ajosta kolmen noodin SIO-klusterissa.

Yllä olevista viiden noodin klusterin tuloksista suorituskyvyn kasvu on helppoa havaita.

Toinen kierros: 
50/50 testi yhdellä testerillä 5 noodin klusterissa

Seuraavaksi muutama testitulos viiden noodin klusterissa, eli vertaillaan miten tulokset eroavat, kun kuormaa tehdään yhdellä vs. kolmella koneella, sekä minkä tuloksen sama kone saa tässä skenaariossa.

50/50 testi kolmella testerillä 5 noodin klusterissa

Sama testi ajettiin kolmella kuormittajalla, eli alla oleva IOPS-luku on 1/3 kokonaistuloksesta. Fyysisten levyjen latenssi pysyi samana, noin 1 ms, joten latenssin kasvu selittyy verkon hidastumisella.

Kolmas kierros: 
Maksimi throughput

N.120MBps on varsin hyvä tulos 1Gb verkossa. Tulos oli lähes identtinen kaikissa kolmessa testerissä.

Jumbo framet olivat käytössä ja TCP-asetukset olivat optimoidut ohjeiden mukaisesti. Kokonaiskuorma kyllästytti verkon pahasti, mikä näkyy myös I/O Analyzer -koneiden latensseissa.

Maksimi IOPS

Kun kaistankäyttö on pientä, ScaleIO antaa 1Gb verkollakin isosti IOPS:eja.

Neljäs kierros: 
Virtuaalikoneen kloonaus

Noin 70GB virtuaalikoneen kloonaus kesti karvan alle puoli tuntia viiden noodin klusterissa.

vSphere tunnistaa SIO-levyt EMC:n kuitulevyinä. ScaleIO käyttää omaa protokollaansa, myös vSphere-ympäristössä versiosta 1.31 eteenpäin. VAAI primitiiveistä tuettuina ovat ATS ja Zero, klooni primitiivi ei ole tuettuna, tämän suhteen kannattaa kuitenkin pysyä kanavalla.

Johtopäätöksiä:
Kannataako ScaleIO toteuttaa 1Gb verkolla?

Lyhyesti: ei kannata.
POC-ympäristöä varten 1G voi olla riittävä. Testiympäristömme viiden noodin klusteri toimi hyvin. Kolmen noodin klusteri tukehtui täysin, kun sitä kuormitettiin kahdella tai kolmella testerillä. Yleisesti testitulokset olivat linjassa toistensa kanssa ja tukevat lineaarista skaalautuvuutta.

Nyt ei tarvitse kovin ankarasti miettiä, minkä ratkaisun valitsee alempiin ympäristöihin, jotka vaativat joustavaa, skaalautuvaa ja suorituskykyistä tallennusverkkoa, ja joka on tietysti myös vSphere 6 -yhteensopiva.

Carl Bergström.