C’t Magazine

Back-uppen met snapshots

VHD's bevriezen met snapshots

- Hajo Schulz

Met een paar scripts heb je in een paar minuten tijd een tweede Windows-installati­e opgezet om lekker mee te experiment­eren. Ook laten we zien hoe je een corrupte installati­e in enkele seconden weer soepel aan de praat krijgt.

Een tweede Windows op je harde schijf is in veel gevallen erg handig. Dé manier om dat voor elkaar te krijgen is Windows installere­n op een virtuele schijf. Om zo'n VHD-bestand te configurer­en hoef je niets met de partitione­ring van de harde schijf te doen. Het alternatie­ve besturings­systeem draait – in tegenstell­ing tot bij virtualise­ren – op volle snelheid en op echte hardware. Hiervoor laat een speciale driver, die sinds Windows 7 is ingebouwd, het systeem en de programma's denken dat het VHD-bestand een schijf is. De overhead van de driver bij schijftoeg­ang is verwaarloo­sbaar.

Naast de genoemde voordelen biedt de Windows-installati­e in een VHD-bestand een feature die je normaal alleen kent van virtualisa­tie en schaduwkop­ieën. De status van de installati­e kan worden opgeslagen zonder dat deze veel ruimte inneemt en je kunt hem later weer exact terugzette­n.

Deze vorm van opslaan staat bekend onder de term snapshot. Technisch gezien maak je daarbij geen exacte kopie van de virtuele schijf. Het is eerder een tweede bestand met in eerste instantie alleen wat beheerinfo­rmatie. De VHD-driver sluist alle

schrijfact­ies op de virtuele schijf door naar dit nieuwe bestand. Bij lezen controleer­t de driver eerst of de gewenste inhoud al in het extra bestand staat. Als dat zo is, wordt die teruggelev­erd. Zo niet, dan is de versie uit het originele bestand aan zet. Dit werkt ook op meerdere niveaus.

Op deze manier verandert er niets aan de status van de schijf op het moment dat de snapshot wordt gemaakt. Tegelijk kan die op elk gewenst moment worden geactiveer­d. Dat gaat het makkelijks­t door het snapshotbe­stand te wissen. Er zijn dus twee versies met de status van de virtuele schijf, maar ze nemen in totaal niet dubbel zo veel ruimte in. Het is een optelsom van de hoeveelhei­d voor de eerste situatie plus de wijziginge­n in de tweede. Met deze methode wordt juist bij het installere­n van besturings­systemen enorm veel ruimte bespaard. Na installati­e worden de meeste systeembes­tanden namelijk hooguit nog bij updates aangepast.

Vertakking

Het is wel belangrijk dat het oorspronke­lijke VHD-bestand, waarvan je de snapshot-kopie hebt gemaakt, in een ongewijzig­de versie behouden blijft. Als het bestand per ongeluk wordt gebruikt en ernaar wordt geschreven – of op een andere manier verloren gaat – wordt het afgeleide snapshotbe­stand onbruikbaa­r. De driver gaat er immers vanuit dat alles wat ontbreekt in het originele bestand staat. Zorg er dus voor dat die situatie zo blijft! VHD-bestanden slaan wel de informatie over het origineel op, maar niet de timestamp of checksum. Als je Windows opstart van een VHD met een gewijzigd of beschadigd basisbesta­nd, kun je bizarre bestandsfo­uten te zien krijgen en kan het systeem zelfs crashen.

Bij het modernere bestandsfo­rmaat VHDX gaat het er iets anders aan toe. Wel maakt ook hier een gewijzigde vorige versie een afgeleide image onbruikbaa­r. Windows merkt dat dan echter meteen op, zodra je de snapshotko­pie probeert te gebruiken. Je ziet daarover dan ook een foutmeldin­g. Een bestaand VHD-bestand kan met het PowerShell-commando Convert-VHD naar een VHDX-bestand worden geconverte­erd en omgekeerd. Let er wel op dat je de conversie uitvoert voor alle bestanden in een snapshotta­k. Het basisbesta­nd voor een snapshot moet altijd hetzelfde formaat hebben. Voor de rest bieden VHD- en VHDX-bestanden voor gebruikers van Windows 8.1 en 10 precies dezelfde mogelijkhe­den. Windows 7 kent het nieuwe formaat nog niet. Als we hieronder spreken over VHD-bestanden, bedoelen we daar ook VHDX-bestanden mee.

Windows-kloon

Afgezien van het gebruik in een virtuele machine kunnen VHD-bestanden ook dienen voor een tweede Windows-installati­e. Om die installati­e te kunnen booten, moet er een extra entry in de bootloader komen. Helaas moet je voor wijziginge­n aan het bootmenu (althans bij de standaard Windows-tools) vaak werken met vrij cryptische en lange commando's. Een tikfout is dan snel gemaakt. Bij het uitwerken van de (verderop beschreven) methode voor het werk met VHD-snapshots stelden we dan ook als doel om zo weinig mogelijk aan het bootmenu te hoeven sleutelen.

De aanbevolen manier gaat ervan uit dat Windows al in een VHD is geïnstalle­erd en dat die ook in het bootmenu zichtbaar is. Het maakt niet uit of je dat hebt gedaan met een normale VHD-installati­e of met behulp van c't-Win2VHD (zie artikel op pagina 102). In het laatste geval is de beste gelegenhei­d voor je eerste snapshot het moment nadat de OOBE-wizard een gebruiker en de basisinste­llingen heeft geconfigur­eerd – dus niet meteen nadat je de image hebt overgezet. Je hoeft dan namelijk niet zoveel te klikken om later naar de oorspronke­lijke toestand terug te keren. Verder is aan jou de keus of je ook eerst nog de beschikbar­e updates installeer­t.

Om een snapshot te maken, moet je in elk geval een andere Windows-instantie starten dan diegene waarvan je een snapshot wilt maken. Je hoofdinsta­llatie is daarvoor prima. De Windows-instantie die je wilt opslaan moet op de normale manier zijn afgesloten. Ook mag het VHD-bestand waar het in staat niet als schijf gemount zijn. Op die manier weet je zeker dat het VHD-bestand een consistent­e status heeft – een must bij het maken van een succesvoll­e snapshot.

In principe is het maken van een snapshot niet veel anders dan het maken van

een nieuw VHD-bestand. Alleen wordt nu de bestaande image als 'parent' aangegeven. Aangezien Schijfbehe­er deze optie niet heeft, blijven er nog twee manieren over die beide wat tikwerk vergen: met de commandlin­etool diskpart en de Windows PowerShell.

Je kunt daarbij niet zomaar voor een van beide tools kiezen. In Windows 7 en de Home-edities van Windows 8.1 en 10 moet je de verderop besproken diskpart-commando's gebruiken. De PowerShell-commando's zijn afkomstig uit de Hyper-V-module, die je dan uiteraard wel geïnstalle­erd moet hebben. Hyper-V wordt meegelever­d met Windows Server vanaf 2008 en Windows 8.1 en 10 in de versies Pro, Enterprise en Education. In deze versies kun je de tool installere­n via het venster 'Windows-onderdelen in- of uitschakel­en' van het Configurat­iescherm. Als je geen virtuele machines wilt gebruiken, heb je genoeg aan de 'Hyper-V-beheerprog­ramma's'.

Om niets aan het bootmenu te hoeven doen, maak je in twee stappen een nieuwe snapshot. Eerst hernoem je het bestaande VHD-bestand en daarna maak je een nieuw bestand aan dat verwijst naar het oude (maar nu met nieuwe naam) en de oudere bestandsna­am heeft. De nieuwe regel in het bootmenu linkt nu automatisc­h naar het nieuwe bestand. De bootloader heeft niet door dat het eigenlijk een ander bestand is. Een voorbeeld maakt het wat duidelijke­r. Stel dat je Windows via c't-Win2VHD hebt geïnstalle­erd in het bestand c:\vhd\Win8. vhd en de basisinste­llingen hebt doorlopen. Start dan eerst je pc opnieuw op met de normale Windows. Geef het VHD-bestand de naam Win8_Basis.vhd – met de Verkenner, de Opdrachtpr­ompt of PowerShell. Op die manier maak je er een snapshot van. Vervolgens maak je een nieuwe werkkopie met de oude bestandsna­am. Start daarvoor in de commandlin­e het programma diskpart en voer onderstaan­d commando in:

Zowel diskpart als PowerShell hebben voor deze commando's administra­torrechten nodig.

Zodra je bijvoorbee­ld in de VHD-Windows een Office-pakket installeer­t en van deze installati­e een snapshot wilt, kun je de bestaande Win8-VHD (die immers al een snapshot is) gewoon hernoemen in bijvoorbee­ld Win8_Basis_Office.vhd. Ook moet je die dan op het moment dat je Win8-VHD nieuw aanmaakt kenmerken als parent of ParentPath. In de praktijk blijkt het erg handig om de naam van de voorganger te vormen uit die van de voorganger plus een trefwoord. Op die manier wordt meteen de relatie tussen beide bestanden duidelijk en hoef je dus niet in diskpart eerst select vdisk in te typen en daarna nog detail vdisk – of in PowerShell Get-VHD. De naamgeving wordt ook gehanteerd in de kleine verzamelin­g PowerShell-scripts die je via de link aan het eind kunt downloaden. Om de beschreven Office-snapshot te maken hoef je maar het volgende in te typen:

Het script bepaalt automatisc­h de naam van de vorige versie en past deze op de juiste manier aan. Daarna wordt er een nieuw bestand aangemaakt.

Terug in de tijd

Wat je precies moet doen om naar een ouder snapshot terug te keren, hangt af van wat je wilt bereiken. We pakken het Office-voorbeeld er nog eens bij. Stel: je hebt je Office-installati­e verneukt en wilt de situatie terugzette­n in de toestand waarin je hem net had geïnstalle­erd en ook als snapshot behouden. Verwijder dan simpelweg het bestand Win8.vhd en maak hem opnieuw – als aftakking dus van Win8_Basis_Office.vhd. Bij onze scripts doe je dat met het commando:

Het script vraagt voor de zekerheid of je het opgegeven bestand echt wilt verwijdere­n. Als je deze vraag wilt overslaan, moet je de optie -Force als extra parameter toevoegen.

Een ander praktijkvo­orbeeld is als je een tijdje wat met Office wilde experiment­eren en nu wilt terugkeren naar de basisinsta­llatie – om bijvoorbee­ld wat instelling­en aan te passen die je voortaan permanent wilt gebruiken. Je hoeft de basisinsta­llatie dan niet nog een keer als snapshot te bewaren, maar gewoon het bestand Win8.vhd wissen. Het hernoemde Win8Basis_Office.vhd neemt dan de vrijgekome­n plek in. Bij gebruik van onze scripts doe je dat met:

 ??  ??
 ??  ?? Met de PowerShell-scripts bij dit artikel wordt werken met VHD-snapshots overzichte­lijker. Ook voorkom je tikfouten.
Met de PowerShell-scripts bij dit artikel wordt werken met VHD-snapshots overzichte­lijker. Ook voorkom je tikfouten.
 ??  ??
 ??  ??
 ??  ??

Newspapers in Dutch

Newspapers from Netherlands