Virtualizacija i (de)fragmentacija

Generacije informatičara stasale su - i ostarjele :o) - uz imperativ o defragmentiranju datotečnih sustava tvrdog diska jer tom se jednostavnom operacijom ova komponenta računala performansno optimizira. Naučili smo da će vremenom doći do fragmentacije i na datotečnom sustavu pod Linuxom, iako on pametnije od Windowsa raspoređuje podatke na diskove pod svojom kontrolom.

Virtualizacija servera i desktopa donijela nam je, pored brojnih velikih prednosti, i nekoliko nevolja. Jedna od tih nevolja je fragmentiranost datoteka na nekoliko razina:

1. datotečni sustav unutar virtualnog diska (virtualne mašine)
2. virtualni disk na fizičkom disku hosta
3. alokacijski blokovi u virtualnom disku

Do opisanih fragmentacija dolazi neovisno o hipervizoru, dakle, nevažno je radimo li sa VMwareovim ESXi ili Microsoftovim Hyper-V. Budući da slijedi par konkretnih primjera, držat ćemo se Hyper-V virtualizatora. Ovaj odabir potencira općeprisutnost Desetke koja raspolaže kvalitetnim Hyper-V modulom pa je zainteresiranima lako ponešto vlastoručno isprobati. Usput, nedavno smo podigli par Linux VM-ova na Desetkinom Hyper-V u članku na adresi https://sysportal.carnet.hr/node/1638.

Često prisutne dvojbe oko smislenosti izvođenja defragmentacije unutar virtualnog diska (virtualne mašine) – „nema za to potrebe kad su fizički diskovi pod kontrolom virtualizacijskog hosta, a podaci su stvarno na njima“ - VMware je eliminirao jasnim iskazom u svojim vodičima za administriranje ESXi hostova, prilažemo slikovni dokaz.


U javno dostupnoj dokumentaciji o Hyper-V Microsoft nije tako eksplicitan, ali o značaju (de)fragmentacije na Windows platformi dovoljno nam govori činjenica što je u Task Scheduleru svih novijih serverskih i desktop Windows edicija prisutan posao optimizacije diska, defaultno se pokreće jednom tjedno. Naredna slika je skinuta sa Desetke.



Vrijedni ljudi su empirijski dokazali važnost defragmentiranja datotečnih sustava unutar virtualnh mašina: usnimljeno je kako gostujući operativni sustav za svaki dio fragmentirane datoteke kojom se trenutno bavi prosljeđuje diskovnom kontroleru hosta zaseban nalog za pristup toj datoteci. Znači, ako je predmetna datoteka raspršena na 50 lokacija unutar virtualnog diska, kontroler hosta će zaprimiti 50 naredbi koje mora obraditi, iako je možda na fizičkom disku hosta ta ista datoteka nefragmentirana. Pa kad ovako navali tridesetak virtualnih mašina po jednom hostu, a datoteka je i na fizičkom disku fragmentirana, izgledno je usporenje diskovnog podsustava kao cjeline. Što se u praksi i dešava, dakako.

Drugi je oblik fragmentacije raskomadanost virtualnog diska na datotečnom sustavu hosta. Kako znamo, svako virtualno računalo nalazi se u barem jednoj višegigabajtnoj datoteci, njen tip je vhdx (jasno, rabimo li Hyper-V). Pri tome, Hyper-V ima sljedeći algoritam kreiranja virtualnog diska:

a) Ako za potrebe virtualne mašine kreiramo disk fiksne veličine, Hyper-V će se potruditi stvoriti kontinuiranu, nerascjepkanu vhdx datoteku bilo gdje na ciljnoj particiji fizičkog diska. Čak i kad je datotečni sustav ciljne particije fragmentiran, ako igdje postoji dovoljno prostora za kreiranje cjelovite vhdx datoteke, Hyper-V će to učiniti.

b) Odaberemo li za virtualnu mašinu dinamički (ili diferencijalni) disk, a datotečni sustav ciljne particije pod kontrolom hosta je fragmentiran, i taj dinamički disk bit će fragmentiran. To će se desiti čak i ako ta ista particija ima dovoljno kontinuiranog prostora za prihvat virtualnog diska. Raskomadanost dinamičkog diska postat će uočljiva odmah nakon instalacije operativnog sustava, Windows ili Linux.

Narednom slikom ilustriramo iskaze pod a) i b), slijedi pojašnjenje prikazane situacije:

  • uočavamo da je datotečni sustav particije na kojoj držimo virtualne diskove dobrano fragmentiran
  • zelena ploča u izvještaju Auslogicsovog Disk Defraga reprezentira svježe kreiran fiksni disk veličine 160 GB i on je, kako vidimo, cjelovit;
  • po cijeloj particiji raštrkani crveni kvadrati predstavljaju  upravo kreiran dinamički disk testwin.vhdx, maksimalne veličine 40 GB
  • trenutno je u testniwin.vhdx samo Windows Server 2012 a datoteka je već raskomadana u 12 dijelova na datotečnom sustavu hosta, bit će tih dijelova i više kako dodajemo podatke u taj disk;
  • u izvještaju Powershell naredbe get-vhd d:\testniwin\testniwin.vhdx vidimo da je testniwin.vhdx i interno fragmentiran 6% (nije tu riječ o fragmentiranosti datotečnog sustava tog diska nego o fragmentaciji alokacijskih blokova, o tome nešto kasnije).




Hyper-V se ovako „šlampavo“ odnosi naspram dinamičkih diskova zato što nisu predviđeni za performansno zahtjevne okoline poput produkcijske, njih rabimo u razvoju i testu, kad se ujedno gleda i kako minimizirati zauzeće (čitaj: trošak) tehničkih resursa. Kakogod, ovaj tip fragmentacije datotečnog sustava rješavamo defragmentacijom na razini hosta, znači, upogonit ćemo Windows Defrag ili neki drugi programčić te namjene. Benefiti su općepoznati: optimizacija indexa u Master File Table NTFS particije, optimizacija rada diskovnih glava za čitanje i pisanje te, u konačnici, ubrzavanje I/O operacija diskovnog podsustava kao cjeline. Što je uistinu veliki dobitak kad se prisjetimo da su mehanički diskovi uvjerljivo najsporija komponenta modernog računala.

Treći oblik fragmentacije najmanje nam je važan jer je izražen kod dinamičkih diskova. Ipak, bolje je za njega znati nego ne znati kad već postoji, pored toga, može se pojaviti i kod diskova fiksne veličine na particiji s izrazito fragmentiranim datotečnim sistavom.

Dakle, sada govorimo o fragmentaciji alokacijskih blokova unutar virtualnog diska. U slučaju testniwin.vhdx to je onih 6% prisutnih u prozoru Powershella na gornjoj slici, pored stavke FragmentationPercentage. Virtualni disk je u stvari složena softverska tvorba, prepuna kontrola, indeksa i blokova razne namjene jer je apsolutni prioritet osigurati postojanost virtualnog računala i svih vrsta podataka koji se u njemu nalaze. Vrijednost parametra „FragmentationPercentage“ u korelaciji je sa  raskomadanošću vhdx datoteke na disku hosta ali nipošto se ne radi o još jednom indikatoru istog stanja. U rečeno se lako uvjerimo defragmentiranjem vhdx datoteke na disku hosta – FragmentationPercentage će pokazivati istu vrijednost. Ta je situacija prisutna na nižoj slici utoliko što je, nakon primjene Auslogicsovog Defraga na razini hosta, dinamički disk win12r2u1.vhdx sada kontinuiran, ali su mu alokacijski blokovi ostali fragmentirani. Niti defragmentiranje datotečnog sustava u virtualnoj mašini neće promijeniti ovu situaciju jer se rascjepkani podatkovni blokovi nalaze ispod NTFS-a.



Kako parametar FragmentationPercentage svesti na poželjnu nulu? Hyper-V server ima par spasonosnih rješenja ali mi rabimo Hyper-V Desetke pa nam je raspoloživo samo jedno. Utoliko, slijedimo niz: Hyper-V Manager > New > Hard Disk te uključenjem opcije Copy the contents of the specified virtual hard disk podesimo da se dinamički disk poput win12r2u1.vhdx kopira u dinamički win12r2u1-B.vhdx. Nakon toga dobijamo ovu situaciju:



FragmentationPercentage je na nuli, HURRAAA :-) ... ali ups!... novi disk je gadno rascjepkan na datotečnom sustavu hosta. :-( Nema nam druge, moramo sada  defragmentirati novokreirani vhdx na razini hosta, potom ga kroz Hyper-V Manager postaviti kao novu virtualnu mašinu. Svakako, ovakav postupak postaje poprilična gnjavaža ako na isti način sređujemo više virtualnih mašina, ali prisjetimo se, fragmentiranost virtualnih diskova i alokacijskih blokova izbjeći ćemo, ili barem svesti na zanemarivi minimum, ako na prethodno optimiziranoj particiji fizičkog diska stvaramo diskove fiksne veličine.

Kategorije: 
Vote: 
0
No votes yet