Myymalat pieni

28.11.2010

Snapshotit Hyper-V serverissä osa 2/2

Kategoria: Virtualisointi — Avainsanat: , , , , — Timo Haapavuori @ 20.18

Johtuen Hyper-V:n käyttämästä tekniikasta snapshotin ottaminen on erittäin nopeaa, sillä mitään tietoa ei missään vaiheessa kopioida mihinkään.Käytössä oleva virtuaalinen kiintolevy vain lukitaan. Snapshottien ottaminen on monissa tilanteissa perusteltua ja järkevää, mutta  niitä ei tulisi säilyttää turhaan. Snapshottien ottoon liittyy myös suorituskykyongelmia, sillä levyn käsittely monimutkaistuu ja virtuaalilevy pirstoutuu eri kohtiin isäntäkoneen fyysistä levyä.

Snapshotien ottaminen ja poistaminen onnistuvat virtuaalikoneen ollessa käynnissä.  Poistaminen näkyy Hyper-V:n hallinnassa välittömästi. Teknisesti delta-tiedostolle ei kuitenkaan tehdä mitään virtuaalisen koneen ollessa käynnissä, vaan deltatiedoston käyttäminen jatkuu edelleen. Toisin sanoen  poistaminen ei vapauta delta-tiedoston käyttämää levytilaa, vaan muutoksia kirjoitetaan edelleen samaan delta-tiedostoon.

Jos virtuaalikone on sammuksissa, kun snapshot poistetaan tai jos  se on poistettu koneen ollessa käynnissä,  virtuaalikoneen sammutuksen jälkeen Hyper-V konsolista nähdään status kohdassa ”merge” ja prosenttilukema. Tässä vaiheessa Hyper-V serveri yhdistää alkuperäisen virtuaalisen kiintolevyn tiedot ja delta-tiedoston tiedot  toisiinsa. Jos taas snapshoteja on otettu useita,  tarkoittaa yhden snapshotin poistaminen  käytännössä delta-tiedostojen yhdistämistä. Jos delta-tiedosto on pieni, eli sitä on yleensä käytetty vain vähän aikaa, yhdistelyprosessi sujuu varsin nopeasti. Jos taas snapshotin tuottama delta-tiedosto on ollut käytössä pitkään ja näin ollen delta-tiedosto on kasvanut jo suureksi,  yhdistely voi kestää varsin kauan. Tähän on siis hyvä varautua jo etukäteen.

Mikäli virtuaalikone käynnistetään ennen yhdistelyn valmistumista,  Hyper-V jatkaa delta-tiedoston käyttämistä edelleen ja delta-tiedoston ja snapshotin yhdistely jatkuu vasta kun virtuaalikone sammutetaan seuraavan kerran. Henkilökohtaisesti suosin yhdistelyprosessin suorittamista loppuun yhdellä kerralla, jos se vain on mahdollista.

Virtuaalisille kiintolevyille on tyypillistä, että niitä on helppoa kasvattaa suuremmiksi. Mikäli virtuaalikoneesta on snapshot otettuna ja kiintolevyä yritetään kasvattaa,  Hyper-V Manager suostuu kasvattamaan kiintolevyä aivan samalla tavalla kuin se tekee kiintolevyn kohdalla, josta ei ole snapshottia otettuna. Tässä onkin erittäin suuri vaaran paikka. Snapshotatun koneen virtuaalisen kiintolevyn kasvattaminen aiheuttaa kuitenkin sen, että virtuaalisen kiintolevyn ja deltatiedoston välinen yhteys menetetään ja kaikki tieto, joka on muodostettu snapshotin ottamisen jälkeen, on tässä yhteydessä menetetty. Microsofin virallinen ohje kuuluu, että tälläisessa tilanteessa järjestelmän tiedot tulee palauttaa varmistuksista.

Vaikka Hyper-V:ssä kiintolevyä kavatetaessa onkin maininta, että snapshotattua kiintolevyä ei saa laajentaa, tuo mainintaa jää erittäin helposti huomaamatta ja kun levyn laajennus on valmistunut, ovat katastrofin ainekset  olemassa kun havaitaan, että virtuaalikone ei toimikaan enää. Hyvin harvassa ympäristössä backupit ovat reaaliaikaisia ja aivan liian monessa ympäristössä tietojen palauttamista ei ole testattu. Tilanteessa, jossa käyttäjä törmää edellä kuvatun kaltaiseen ongelmaan,  on vaarana että aiheutunut vahinko on vieläkin suurempi, jos käyttäjä hätäännyttyään aloittaa koko virtuaalikoneen asentamisen alusta.

Jos Hyper-V:n hallintaan käytetään Microsoftin maksullista Microsoft System Center Virtual Machine Manager (SCVMM) tuotetta, on SCVMM Hyper-V Manageria sen verran kehittyneempi, että sillä kiintolevyn laajennus ei onnistu, mikäli virtuaalikoneesta on snapshotti otettuna. Tämä toiminnallisuus saattaa jossain tilanteissa maksaa helposti SCVMM:n hinnan takaisin, vaikkakin voisi kuvitella Microftin kehittävän myös Hyper-V Manager hallintaa nykyisestä siten, että kuvatun kaltainen tilanne ei olisi mahdollinen myöskään silloin kun käytössä ei ole SCVMM.

Hyper-V:n snapshotit ovat monessa asiassa erittäin tervetullut ominaisuus, mutta snapshottien käyttäminen ilman laajempaa ymmärrystä niiden toiminnasta, voi johtaa moniin ei toivottuihin tilanteisiin. Tulevissa kirjoituksissani tulen käsittelemään virtualisointia ja IT infraa laajemminkin ja pyrin nostamaan esille asioita, jotka jäävät helposti käyttäjältä huomaamatta.

21.11.2010

Snapshotit Hyper-V serverissä, osa 1/2

Kategoria: Virtualisointi — Avainsanat: , , , , — Timo Haapavuori @ 21.56

Microsoftin virtualisointialusta Hyper-V on kasvattanut suosiotaan tasaisesti tuotteen julkaisusta lähtien, joka tapahtui 2008. Hyper-V serverissä on ominaisuuksia, joista osa on kilpailijoitaan parempia, osa huonompia. Varsin monet ominaisuudet virtualisointialustoissa ovat  samankaltaisia riippumatta siitä, onko kyseessä Microsoftin, Citrixin, VMWaren, tai jonkin muun valmistajan toteuttama ratkaisu.

Hyper-V serverissä snapshottien ottaminen onnistuu varsin helposti, eikä niiden ottaminen vaadi käytännössä minkäänlaista perehtymistä Hyper-V:n taustalla olevaan tekniikkaan. Microsoftin ajatushan monessa asiassa onkin tehdä tuotteistaan varsin helppokäyttöisiä. Hyper-V:stä otettavat snapshotit ovat kuitenkin senkaltainen toiminnallisuus, että käyttäjän tulisi tietää varsin hyvin snapshotien taustalla oleva tekniikka.Muutoin käyttäjä törmää lähes varmasti myöhemmin erilaisiin ongelmiin. Ongelmat ovat usein senkaltaisia, että niiden syyseuraussuhde voi olla myös käyttäjälle hankalasti hahmotettavissa, ellei snapshotien käyttämä tekniikka ole käyttäjälle millään tavalla tuttua.

Tässä kirjoituksessa tarkoitukseni on käydä läpi Hyper-V servereissä snapshot toiminallisuus ja nostaa esiin asioita jotka tyypillisesti aiheuttavat käyttäjille ongelmia. Hyper-V serverissä voidaan käyttää kolmenlaisia virtuaalisia kiintolevyjä.Tämän lisäksi voidaan käyttää suoraan isäntäkoneessa olevaa kiintolevyä virtuaalikoneelle, mutta tähän toiminnallisuuteen en tässä kirjoituksessa paneudu. Kolme erilaista virtuaalikiintolevytyyppiä ovat fixed, dynamic ja differential tyyppiset vhd-levyt.

Fixed kiintolevyllä tarkoitetaan vhd-levyä, jossa levyn luontihetkellä isäntäkoneesta varataan koko kiintolevyn kokoa vastaava tila. Jos siis kiintolevyn koko on 20 gigaa,  Hyper-V luo vhd-päätteisen tiedoston, jonka koko on 20 gigaa. Dynaaminen levy puolestaan tarkoittaa sitä, että vhd-levyä luotaessa koko kiintolevyn kooksi määritettyä tilaa ei vielä varata, vaan vhd-tiedosto kasvaa sitä mukaa kun levyä todellisuudessa käytetään. Dynaamisia levyjä käytetään tyypillisesti testausympäristöissä, jolloin levytilaa saattaa olla saatavilla rajoitetusti. Differentiaali levyt ovat kolmas ja vähiten käytetty virtuaalinen kiintolevy tyyppi. Differentiaalilevyssä idea on, että alkuperäinen vhd levy lukitaan.Tämän jälkeen samaa differentiaalilevyä voidaan käyttää useammallekin virtuaaliselle tietokoneelle, sillä differentiaali levyn vhd tiedosto lukitaan ja kaikki muutokset kirjoitetaan tämän jälkeen erillisiin delta-tyyppisiin tiedostoihin.

Snapshotin ottaminen Hyper-V serverissä muuttaa käytössä olevan vhd-levyn käytännössä differentiaalilevyksi. Käytössä ollut vhd levy lukitaan ja muutokset levyllä kirjoitetaan delta-tiedostoon. Aina uuden snapshotin ottaminen lukitsee edellisen delta-tiedoston ja muodostaa jälleen uuden delta-tiedoston. Tämä tarkoittaa käytännössä sitä, että jos tietokoneessa käytetään ennen muuta fixed tyyppisiä kiintolevyjä, niin kiintolevy, jonka koko on esimerkiksi 100 gigaa ja josta on käytössä esimerkiksi 20 gigaa, jää 80 gigaa varattua levytilaa  käytännössä hyödyntämättä kokonaan, koska muutoksia ei tehdä snapshotin ottamisen jälkeen enää alkuperäiseen vhd-tiedostoon, vaan deltatiedostoon. Tämä puolestaan johtaa hyvin nopeasti ongelmiin kiintolevytilan käytössä.Kyseiselle virtuaalikoneelle varattu tila pysyy edelleen varattuna, mutta sitä ei enää käytännössä käytetä, vaan kaikki muutokset tallennetaan delta-tiedostoon. Ongelmia muodostuu myös dynaamisten levyjen kanssa, sillä vaikka dynaamisissa levyissä tilaa ei vielä olekaan varattu enempää kuin sitä on siihen mennessä ehditty käyttämään, niin tämän vhd-tiedoston lukitseminen ja delta-tiedoston luominen lisää levytilan kulutusta, koska kaikki tiedot joudutaan jatkossa peilaamaan lukitun vhd-tiedoston ja delta-tiedoston välillä.

Kuten jo aiemmin mainitsin,  jokainen uusi snapshot lukitsee snapshotia edeltävän tilanteen. Käyttäjä jolle Hyper-V:n snapshotien taustalla oleva tekniikka ei ole entuudestaan tuttua, tulee helposti ottaneeksi lukuisia snapshottia aina uudestaan ja uudestaan poistamatta edellisiä jo tarpeettomaksi käyneitä snapshoteja. Levytilaongelmaa ei yleensä tässä kohtaa huomaa, sillä snapshotin ottaminen sillä hetkellä ei kuluta levytilaa käytännössä lainkaan. Jokainen uusi snapshot luo aina uuden delta-tiedoston ja kaikkien delta-tiedostojen ja alkuperäisen lukitun vhd-tiedoston välillä säilyy relaatio. Tyypillistä onkin, että mitä useampia snapshoteja samasta virtuaalikoneesta otetaan, niin levytilan suhteellinen kulutus kasvaa, koska delta-tiedostojen ja alkuperäisen vhd-levyn välinen relaatio on säilytettävä. Onhan käyttäjän voitava palata mihin tahansa ottamaansa snapshotiin.

Jatkan snapshot tekniikan taustalla olevan tekniikan käsittelyä seuraavassa kirjoituksessani noin viikon kuluttua. Seuraavassa kirjoituksessani tuon esille ongelman, joka liittyy snapshotatun virtuaalisen kiintolevyn laajentamiseen ja kuinka tämä voi helposti johtaa tietojen tuhoutumiseen.