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
Wanneer een sparse virtuele schijf de beschikbare fysieke ruimte op de hostdatastore volledig in beslag neemt, wordt de virtuele machine automatisch gepauzeerd om beschadiging te voorkomen. Er moet opslagruimte worden vrijgemaakt op de hostdatastore voordat de bewerkingen kunnen worden hervat. Elk platform benoemt deze status anders: ‘VM-stunned’ bij VMware en ‘paused-critical’ bij Hyper-V.
Ja. De procedure verschilt per platform: vmkfstools op VMware en de PowerShell-opdracht Convert-VHD op Hyper-V. Beide methoden moeten binnen een gepland onderhoudsvenster worden uitgevoerd, aangezien de conversie de volledige doelcapaciteit toewijst en op nul zet, wat tijdens de uitvoering zowel tijd als I/O-bewerkingen in beslag neemt.
Sparse schijven kunnen de databaseprestaties aanzienlijk beïnvloeden. De voortdurende updates van metagegevens leiden tot logische fragmentatie, wat bij database-workloads met hoge IOPS-waarden merkbaar zal zijn. In productieomgevingen van SQL Server wordt doorgaans gebruikgemaakt van ‘thick’ schijven die bij het aanmaken onmiddellijk op nul worden gezet; deze garanderen sequentiële leesprestaties en elimineren de ‘read-modify-write’-penaliteit op pariteitsarrays.
Een snapshot zet de bovenliggende virtuele schijf in een alleen-lezenstatus en maakt een nieuw sparse-deltabestand (VMware) of een AVHDX-verschilschijf (Hyper-V) aan om alle daaropvolgende wijzigingen vast te leggen. Als deze deltabestanden te lang worden bewaard, nemen ze aanzienlijk in omvang toe, en de opgebouwde groei legt een aanzienlijke druk op de beschikbare opslagcapaciteit.
Het verwijderen van een bestand binnen de gast verwijdert alleen de mapvermelding. De binaire data blijven binnen de virtuele geometrie aanwezig. Om die ruimte op de host vrij te maken, is een opslagterugwinningsproces vereist, met name UNMAP op VMware of Optimise-VHD op Hyper-V, om de gewiste blokken op nul te zetten en de bestandsgrootte op de host dienovereenkomstig te verkleinen.
Over de auteur

