Uw vraag direct beantwoorden : 030-7600700

Menu Hide

Opdracht direct aanmelden

Samenvatting: Sparse virtuele schijven worden naar behoefte uitgebreid in plaats van dat hun volledige omvang vooraf wordt gereserveerd. In deze handleiding wordt uitgelegd hoe dit toewijzingsmechanisme werkt, worden de structurele verschillen tussen het Virtual Machine Disk (VMDK)-formaat van VMware en het Virtual Hard Disk (VHDX)-formaat van Hyper-V vergeleken, wordt onderzocht hoe elk formaat zich gedraagt bij implementatie op een RAID-array, en worden de beschikbare opties voor de recovery besproken wanneer er sprake is van beschadiging van een sparse-bestand.

Elke virtualisatie-implementatie kampt met dezelfde operationele afweging. Royale toewijzing biedt ruimte voor groei, maar laat fysieke capaciteit onbenut. Conservatieve toewijzing waarborgt opslagefficiëntie, maar de beschikbare ruimte raakt snel op. Het sparse-formaat lost deze beperking op.

Een sparse virtuele schijf neemt slechts de ruimte in beslag die het gastbesturingssysteem erop heeft geschreven. Een schijf van 100 GB met een besturingssysteem van 20 GB neemt ongeveer 20 GB opslagruimte in de datastore in beslag, waardoor de rest beschikbaar blijft voor andere virtuele machines. De voordelen van deze aanpak zijn aanzienlijk. De nadelen zijn eveneens aanzienlijk, en beide worden duidelijk wanneer de opslaglaag uitvalt.

Inzicht in de werking van het sparse-formaat en de risico’s die hiermee gepaard gaan, is daarom essentieel voor elke beheerder die verantwoordelijk is voor het beheer van virtuele infrastructuur.

Wat is een virtueel schijfformaat?

Een virtueel schijfformaat is een bestand, of soms een kleine verzameling bestanden, dat de hypervisor aan een gastbesturingssysteem presenteert als een fysiek apparaat. Het gastbesturingssysteem herkent een SCSI- of SATA-controller. De schijf is in wezen een container die zich binnen een groter hostbestandssysteem bevindt, een detail dat transparant blijft voor de gast en geen kennis op gastniveau vereist.

Elk element dat een fysieke schijf bevat, bevindt zich binnen die container: partitietabellen, master boot records, bestandssystemen en gebruikersdata. De opslaglocatie verschilt per platform. VMware plaatst deze bestanden op het Virtual Machine File System (VMFS), terwijl Hyper-V gebruikmaakt van NTFS of het Resilient File System (ReFS). Ongeacht het platform bepaalt het formaat hoe de lees- en schrijfbewerkingen van de gast worden vertaald naar daadwerkelijke bewerkingen op de onderliggende fysieke schijf.

Wat is een sparse-indeling?

Een ‘sparse’-schijf wijst opslagruimte dynamisch toe en claimt pas ruimte op de array wanneer de gast data naar schrijft. Dit staat in contrast met een ‘thick-provisioned’-schijf, ook wel een ‘flat’-schijf genoemd, die bij het aanmaken de volledige toegewezen capaciteit claimt en elk blok op de array op nul zet voordat er gastdata binnenkomen.

Een korte toelichting op de terminologie is hier op zijn plaats. Sparse en thin provisioning verwijzen naar hetzelfde onderliggende concept: capaciteit wordt op aanvraag toegewezen en breidt zich uit naarmate data zich opstapelen. Wanneer in discussies „sparse versus thin provisioning“ wordt vergeleken, wordt doorgaans het sparse-formaat van de ene leverancier afgezet tegen het thin-formaat van een andere leverancier, in plaats van dat er twee verschillende toewijzingsstrategieën worden beschreven. Het onderscheid dat daadwerkelijk van belang is voor capaciteitsplanning, is dat tussen sparse of thin provisioning enerzijds en thick of flat provisioning anderzijds.

Hoe wijzen sparse-schijven ruimte toe op aanvraag?

Wanneer een gasttoepassing een schrijfbewerking uitvoert, onderschept de hypervisor deze, bepaalt de logische locatie voor die data, voegt deze toe aan het einde van het hostbestand en werkt een interne metadatatabel bij om de logische sector van de gast te koppelen aan de nieuwe fysieke offset. Logische blokken nemen zelden een aaneengesloten fysieke volgorde in, wat een inherent gevolg is van toewijzing op aanvraag.

Wanneer een bestand in de gast wordt gewist, krimpt het bijbehorende hostbestand niet. De hypervisor markeert de onderliggende blokken als beschikbaar voor overschrijving, maar er is een afzonderlijk terugwinningsproces nodig voordat die ruimte op de host wordt vrijgegeven.

Sparse VMDK (VMware)

In een VMware-productieomgeving bestaat een sparse VMDK uit twee componenten: een tekstdescriptorbestand dat de schijfgeometrie specificeert, en een of meer extent-bestanden die de binaire data bevatten. Vanuit de descriptor loopt een keten van verwijzingen via de grain-directory en de grain-tabellen naar de gegevensblokken zelf, die ‘grains’ worden genoemd. Standaard is elke grain 64 KB groot.

In productieomgevingen bestaan er twee varianten. Monolithische sparse consolideert alle data in één aaneengesloten bestand en vormt de standaardconfiguratie voor de meeste productiesystemen. Gesplitste sparse verdeelt de schijf in segmenten van 2 GB en wordt uitsluitend behouden voor achterwaartse compatibiliteit met verouderde bestandssystemen die geen grote afzonderlijke bestanden kunnen verwerken.

Sparse VHD/VHDX (Hyper-V)

Het equivalent van Microsoft heeft een aanzienlijke generatiewisseling ondergaan. Het verouderde VHD-formaat is beperkt tot een capaciteit van 2 TB. VHDX heeft deze limiet verhoogd tot 64 TB en heeft een Block Allocation Table geïntroduceerd om de data-status in de gehele structuur bij te houden.

Een bijkomend kenmerk van VHDX is relevant voor opslagplanning. De fysieke sectoromvang is afgestemd op 4 KB, wat overeenkomt met de specificatie van moderne schijven met geavanceerd formaat en de schrijfversterking vermindert. De blokgrootte verwijst naar de opslageenheid die VHDX gebruikt telkens wanneer het wordt uitgebreid, en is standaard ingesteld op 32 MB op dynamische schijven. Grotere blokken vereisen minder overhead aan metagegevens, maar worden in grovere stappen uitgebreid. Microsoft beveelt aan dit getal te verlagen tot 1 MB voor Linux-gasten.

Vergelijking tussen sparse- en flat/raw-formaat

Flat-schijven reserveren de volledige capaciteit op het moment van aanmaak. Een flat-schijf van 50 GB neemt onmiddellijk 50 GB aan datastore-ruimte in beslag, ongeacht de opslagruimte die binnen de gast wordt gebruikt. De hypervisor zet elk blok tijdens de aanmaak op nul, wat verklaart waarom het inrichten van een grote flat-schijf tijdrovend is.

De operationele implicaties van het sparse-formaat zijn daarentegen als volgt:

  • Het aanvankelijke ruimteverbruik blijft minimaal en neemt pas toe naarmate data wordt geschreven.
  • De implementatie verloopt snel, aangezien de fase waarin blokken op nul worden gezet, niet nodig is.
  • De overhead aan metadata is hoger vanwege voortdurende updates van de toewijzingstabel.
  • De logische fragmentatie binnen het bestandssysteem van de host neemt in de loop van de tijd geleidelijk toe.
  • Ongebruikte fysieke capaciteit blijft beschikbaar voor andere workloads.

De volgende tabel geeft een overzicht van het verschil tussen de sparse- en de flat-indeling:

Functiecategorie Sparse-formaat (dynamisch) Vlak formaat (vast)
Initieel opslaggebruik Minimaal; neemt toe bij schrijfbewerkingen Maximaal; de totale toegewezen grootte
Overhead van metagegevens Hoog; constante updates van de toewijzingstabel Laag; de toewijzing is statisch
Toewijzingssnelheid Snel; schrijft uitsluitend metadata Traag; vult elk blok met nullen
Risico op fragmentatie Hoog; breidt zich organisch uit Laag; aaneengesloten toewijzing

Hoe werken sparse schijven samen met RAID?

De meeste virtuele machines in productie draaien op RAID-arrays in plaats van op afzonderlijke schijven, en het is op deze arrays dat de uitbreiding van sparse-bestanden meetbare prestatieverliezen begint te veroorzaken.

Naarmate een sparse-bestand groeit, vraagt de hypervisor nieuwe blokken aan bij het bestandssysteem van de host, waarna de RAID-controller deze over de array verdeelt. Op een pariteitsarray zoals RAID 5 of RAID 6 zet elke kleine schrijfbewerking in een sparse-bestand een lees-wijzig-schrijfcyclus in gang: de stripe wordt gelezen, de pariteit wordt opnieuw berekend en het resultaat wordt teruggeschreven. Sparse-bestanden breiden zich in kleine stappen uit, en wat zich in de loop van de tijd opstapelt, is een continue stroom van willekeurige schrijfbewerkingen.

Na langdurig productiegebruik raakt een sparse-bestand verspreid over de RAID-stripes. Een enkele sequentiële leesbewerking binnen de gast kan op hardwareniveau neerkomen op tientallen willekeurige leesbewerkingen. Opslagbeheerders stemmen doorgaans drie waarden op elkaar af om dit effect tot een minimum te beperken, namelijk de clustergrootte van de gast, de blokgrootte van de hypervisor en de fysieke RAID-stripegrootte. Wanneer deze parameters niet op elkaar zijn afgestemd, overlappen schrijfbewerkingen elkaar en neemt de overhead toe. De grootste problemen doen zich voor wanneer de onderliggende RAID-array in kwaliteit achteruitgaat.

Wanneer het sparse-formaat gegevensverlies veroorzaakt

Dezelfde metadatastructuren die dynamische toewijzing mogelijk maken, brengen ook specifieke storingsmodi met zich mee.

  • Crash tijdens het schrijven: Een sparse-bestand voegt nieuwe data toe aan het einde en werkt de toewijzingstabellen in een afzonderlijke stap bij. Als de host tussen deze twee handelingen de stroomtoevoer verliest, blijven de gegevens fysiek aanwezig op de schijf, terwijl de hypervisor geen koppeling heeft om er toegang toe te krijgen. Dit zijn verweesde gegevens, en het herstellen ervan vereist werkzaamheden op sectorniveau. 
  • Beschadiging van de header: Zodra de grain-directory onleesbaar wordt, markeert de hypervisor de gehele virtuele schijf als ongeldig, en weigert de machine op te starten.
  • Verbroken snapshotketen: Het mechanisme verschilt per leverancier, met delta-VMDK’s bij VMware en AVHDX-differentiëringsschijven bij Hyper-V, maar voor beide geldt hetzelfde principe: elke snapshot is een ‘thin’ sparse-bestand waarin de wijzigingen worden vastgelegd die sinds de bovenliggende snapshot zijn aangebracht. Als één schakel wordt verbroken, raakt alles daaronder de weg kwijt.

Een aangetaste fysieke RAID verergert deze logische storingen aanzienlijk. Een mislukte herbouw van een reeds gefragmenteerd sparse-bestand leidt tot gelijktijdige fysieke sectorschade en logische fragmentatie. Standaardcontroles van het bestandssysteem binnen de gast zijn in dergelijke gevallen zinloos, aangezien het hostbestand zelf al defect is geraakt.

Hoe kunt u data herstellen van sparse virtuele schijven?

Een defecte virtuele machine is geen probleem dat met een routinecontrole van de schijf kan worden opgelost. De opslaggeometrie is gefragmenteerd over de host, en de interne toewijzing van de virtuele container moet opnieuw worden opgebouwd voordat de bestanden van het gastbesturingssysteem daarbinnen zelfs maar kunnen worden onderzocht.

Als de header van het sparse-bestand beschadigd is, moet een technicus de hex-gegevens handmatig analyseren om de overgebleven fragmenten van de bloktoewijzing te lokaliseren en deze opnieuw in kaart te brengen tot een samenhangende geometrie. Pas dan kunnen de ruwe gebruikersgegevens worden geëxtraheerd.

Indien de onderliggende fysieke array is ingestort, mag een RAID-herstel niet worden geforceerd. Dit maakt de schade compleet: nieuwe pariteitsgegevens die over een gefragmenteerd sparse-bestand worden geschreven, wissen elke resterende logische toewijzing. In plaats daarvan dient elke schijf eerst op het niveau van de ruwe sectoren te worden gekloond, waarbij de beschadigde toestand ongewijzigd blijft voor analyse. Dit is de aanpak die bij Stellar Gegevensherstel wordt gevolgd; het bedrijf past reverse-engineeringmethoden toe die in het eigen R&D-laboratorium zijn ontwikkeld om gefragmenteerde virtuele bestandssystemen te ontleden, zelfs wanneer de host-headers ontbreken. Fysiek beschadigde schijven worden behandeld in ISO 27001-gecertificeerde Klasse 100-cleanrooms, zodat de platen tijdens werkzaamheden aan de leeskoppen nooit in contact komen met de buitenlucht.

Conclusie: een goed uitgevoerde recovery-service voor virtuele schijven

Het verlies van een kritieke virtuele server behoort tot de meest veeleisende storingsscenario’s in IT-operaties. De recovery is zelden een kwestie van het toepassen van één enkele tool of procedure. Een grondig begrip van de manier waarop sparse-bestanden data toewijzen en beheren, vormt de basis voor een gestructureerd, methodisch hersteltraject.

Het inschakelen van de juiste vakkundigheid in een zo vroeg mogelijk stadium is bepalend voor de omvang van de data die kunnen worden teruggewonnen. Voorbarige pogingen tot herstel en ondoordachte ingrepen veroorzaken vaak onomkeerbare schade aan de structuren waarvan de recovery afhankelijk is.

Uw virtuele server bevat data die uw business niet kan veroorloven te verliezen. Probeer niet zelf een herstel uit te voeren. Neem eerst contact op met de virtualisatiespecialisten van Stellar Data Recovery. Zij beoordelen uw beschadigde datastore en adviseren de juiste recovery-strategie voor uw VMDK- of VHD-omgeving.

Wilt u meer weten over virtualisatie, opslagbeheer en de recovery? Bekijk deze gerelateerde handleidingen om uw kennis van technologieën voor virtuele machines en best practices voor de recovery te verdiepen.

Veelgestelde vragen

76% van de mensen vond dit Kennisbank nuttig

Over de auteur

  • The Hague Security Delta
  • ISO 9001:2015-gecertificeerd
  • MKB Innovative
  • MVO Nederland
Laat u terugbellen