Myymalat pieni

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.