Friday, April 16, 2010

Defragmentimine ei ole virtuaalkeskkonnas mõistlik

IT valdkonna vanad olijad mäletavad veel, kui tähtsal kohal oli arvuti kiiruse tagamisel kõvaketta defragmentimine, et parandada ketta kiirust. Kaasaegsetesse Windows süsteemidesse on kettahoolduse tarkvara sisse ehitatud ja regulaarne kettahooldus väldib ketta fragmenteerumisest tulenevat kiiruse kadu. Lisaks on paljud kaasaegsed arvutid juba flash ‘ketastega’, kus fragmenteerumine mingit mõju ei avalda.

Sellegi poolest on tekkinud tarkvaratootjaid, kes tahavad defragmentimist rakendada ka virtuaalmasinates. Kindlasti leidub vastuargumente, kuid üldiselt arvan, et virtuaalmasinate defragmentimine on ebamõistlik.

Oma arvamuse juurde toon järgmised põhjendused.

Õhukesed kettad. Enamik tänapäevaseid virtuaalmasinaid on tehtud nn. õhukeste ketastega. Virtuaalmasina kettafail on täpselt nii suur, kui palju on sinna andmeid salvestatud. Kui ketta suuruseks on märgitud näiteks 10 TB, aga sinna on salvestatud vaid 2 GB andmeid, on õhuke ketas natuke üle 2 GB suur. Õhukesed kettad on tavapraktika, kuna virtuaalmasin planeeritakse pikema perioodi peale ja selle loogilist suurust on hiljem ebamugav muuta. Kui õhukest ketast nüüd defragmentida, siis paisub see ketas kohe 10 TB peale ja salvestussüsteemis ei pruugi sellist ruumi valmis olla. Mitmed defragmentimist puudutavad käsitlused toovad argumendina välja tühja ruumi kokku koondamise – õhukestel ketastel aga tühja ruumi salvestussüsteemi mõttes ei ole.

Loogiline salvestus. Tegelikult enamik virtuaalsüsteeme otse kettale ei kirjuta. Serveri külge on ühendatud spetsiaalselt andmesalvestuseks ehitatud süsteem, milles toimib oma salvestamise ja lugemise algoritm. Sellistes süsteemides ei pruugi serveri arvates eraldi asetsevad sektorid üldse eraldi olla, vaid on kettale paigutatud ühte kohta vastavalt andmete kasutusajaloole. Selliste süsteemide puhul võib lühikeses perspektiivis, kuni salvestussüsteem ‘ringi õpib’, virtuaalmasin hoopis aeglasem olla.

Virtuaalsed töölauad. Virtuaalse töölaua keskkond luuakse kasutajatele selliselt, et ühest ‘kuldkoopiast’ tehakse kasutajatele osalised kloonid. Erinevus kuldkoopia ja kasutaja virtuaalmasina vahel on vaid nendes osades, mida kasutaja enda jaoks muutnud on või profiiliga kaasa tuleb. Sellegi poolest eraldatakse kasutajale õhuke ketas, mille loogiline suurus on identne kuldkoopia mahuga. Näiteks tehakse Windows 7 VDI installatsioon, kus kettamaht on 25 GB. Serverist eraldatakse 500-le kasutajale virtuaalsed töökohad, kusjuures iga kasutaja profiili suurus on 1 GB. Seega läheb kokku kasutusse 525 GB pinda. Kui nüüd aga kõik need virtuaalmasinad defragmentida, ulatub vajalik kettapind kohe 12,5 TB-ni. Lisaks tohutule andmemahule, mida nii on vaja hoida, saavad serverid ka ülisuure defragmentimise koormuse. Defragmentimisest saadav kiiruse võit on saavutatav ka paari ketta lisamisega, mis vähendab nii ostukulu kui ka hilisemat elektrikulu.

Jagatud ressurss. Tavaliselt on ühel serveril 15 ja enam virtuaalserverit; virtuaalseid töökohti tavaliselt aga 30 ja enam. Kui nüüd ühes virtuaalmasinas ketas defragmentida, saab sinna tõesti järjestada salvestusplokkidega failid. Kahjuks ei ole see virtuaalmasin serveris üksi. Kui see virtuaalmasin tahab kettalt midagi lugeda, tahavad ka teised 14 virtuaalmasinat midagi lugeda. Nii kaob täielikult ära igasugune defragmentimisest saadav kiiruse võit, sest vahepeal teenindatakse ka teisi virtuaalmasinaid ja loetakse andmeplokke erinevatest asukohtadest, mitte järjest.

Kokkuvõte: virtuaalsüsteemid on tavaliselt tugevalt konsolideeritud selliselt, et riistvara ressurss maksimaalselt ära kasutada. Igasugune defragementimine paneb virtuaalkeskkonnale mõttetu koormuse. Salvestussüsteemi mõne ketta juurde ostmine annab odavamalt ja mugavamalt jõudluse kasvu, mida on defragmentimisega võimalik saavutada.