03/03/2015
At stå over for en fejl, hvor en virtuel maskine nægter at starte, kan være en nervepirrende oplevelse, især når det sker lige efter en tilsyneladende rutinemæssig opgave som at udvide en virtuel disk. En af de mest almindelige årsager til dette problem er en fejl under udvidelsesprocessen af en VMDK-fil. Dette kan efterlade disken i en inkonsekvent tilstand, hvor den virtuelle maskine ikke længere kan genkende eller få adgang til den. Men fortvivl ikke. I de fleste tilfælde er problemet ikke i selve datafilen, men i en lille konfigurationsfil, der kan rettes manuelt. Denne artikel vil guide dig igennem processen med at diagnosticere og reparere din VMDK-fil, så du kan få adgang til dine dyrebare data igen.

Forståelse af problemet: Hvad er en VMDK-fil egentlig?
Før vi dykker ned i løsningen, er det vigtigt at forstå, hvad vi arbejder med. En VMDK (Virtual Machine Disk) er det filformat, som VMware bruger til at repræsentere en virtuel harddisk. Mange tror, at det er én enkelt fil, men i de fleste konfigurationer består en virtuel disk af mindst to separate filer:
- [vm-navn]-flat.vmdk: Dette er den store fil, der indeholder alle de rå data – operativsystemet, programmerne og dine filer. Størrelsen på denne fil svarer til diskens kapacitet. Den må under ingen omstændigheder redigeres manuelt.
- [vm-navn].vmdk: Dette er en meget lille tekstfil, kendt som en descriptor-fil (eller header-fil). Den indeholder metadata om den virtuelle disk, såsom dens geometri (cylindre, hoveder, sektorer), hardwareversion, og vigtigst af alt, links til datafilen (-flat.vmdk) og eventuelle snapshots.
Når en operation som en diskudvidelse fejler eller afbrydes, kan denne descriptor-fil blive korrupt eller 'låst'. Hypervisoren læser denne fil for at forstå, hvordan den skal interagere med de rå data. Hvis oplysningerne i descriptor-filen er forkerte, vil den nægte at tilknytte disken til den virtuelle maskine, hvilket resulterer i, at VM'en ikke kan starte.
Den gyldne regel: Tag en backup FØR du gør noget andet
Inden du forsøger nogen form for reparation, er det absolut kritisk, at du tager en backup af din virtuelle maskines filer. At redigere konfigurationsfiler, selv små tekstfiler, indebærer altid en risiko. En simpel tastefejl kan potentielt gøre situationen værre og føre til permanent datatab. En backup er din forsikring.
Hvordan laver du en sikker backup?
- Sørg for, at den virtuelle maskine er helt slukket (ikke suspenderet).
- Naviger til den mappe på dit datastore, hvor den virtuelle maskines filer er gemt.
- Kopiér hele mappen med alle filer (.vmx, .vmdk, -flat.vmdk, .log osv.) til en anden, sikker placering. Det kan være et andet datastore, en netværksressource eller en ekstern harddisk.
Først når du har en komplet og sikker kopi af filerne, bør du fortsætte med de følgende trin.
Trin-for-trin guide: Reparation af descriptor-filen
Løsningen på dette problem involverer at redigere en specifik parameter i descriptor-filen, kendt som Parent ID eller PID. Når denne værdi er sat forkert, kan det forhindre disken i at blive indlæst. Vi skal nulstille den til en standardværdi, der fjerner denne 'lås'.
Trin 1: Find og identificer filerne
Brug din hypervisors filbrowser (f.eks. vSphere Client's Datastore Browser) til at navigere til din virtuelle maskines mappe. Find de to filer, vi diskuterede: den lille `[vm-navn].vmdk` og den store `[vm-navn]-flat.vmdk`.
Trin 2: Download og åbn descriptor-filen
Download den lille `[vm-navn].vmdk` fil til din lokale computer. Det er afgørende, at du åbner den med en ren teksteditor som Notepad (Windows), TextEdit (Mac i almindelig teksttilstand) eller mere avancerede editorer som Notepad++ eller VS Code. Brug IKKE programmer som Microsoft Word eller WordPad, da de kan tilføje skjult formatering, der vil ødelægge filen.
Trin 3: Rediger PID-værdien
Når du åbner filen, vil du se en række konfigurationslinjer. Kig efter en linje, der starter med `PID=`. Værdien efter lighedstegnet er sandsynligvis et andet tal eller en streng af tegn. Du skal ændre denne værdi til `ffffffff`.

Eksempel på, hvad du skal kigge efter:
# Disk DescriptorFile version=1 encoding="UTF-8" CID=a1b2c3d4 parentCID=ffffffff createType="vmfs" ...
PID=12345678 <-- DENNE LINJE SKAL ÆNDRESRet linjen, så den ser sådan ud:
# Disk DescriptorFile version=1 encoding="UTF-8" CID=a1b2c3d4 parentCID=ffffffff createType="vmfs" ...
PID=ffffffff <-- TIL DENNE VÆRDIGem ændringerne i filen og luk teksteditoren.
Trin 4: Upload den rettede fil
Gå tilbage til din datastore-browser. Upload den redigerede `[vm-navn].vmdk` fil tilbage til den oprindelige mappe. Systemet vil spørge, om du vil overskrive den eksisterende fil. Bekræft, at du vil gøre dette.
Trin 5: Test den virtuelle maskine
Nu er det tid til sandhedens time. Prøv at starte din virtuelle maskine. Hvis problemet skyldtes en forkert PID, skulle den virtuelle maskine nu starte op normalt. Du kan efterfølgende verificere, at diskudvidelsen er korrekt registreret i gæsteoperativsystemet.
Sammenligning af VMDK-filer
For at give et klart overblik er her en simpel tabel, der sammenligner de to centrale filer i en virtuel disk.
| Egenskab | [vm-navn].vmdk | [vm-navn]-flat.vmdk |
|---|---|---|
| Type | Descriptor-fil (Tekstbaseret) | Data-fil (Binær) |
| Størrelse | Meget lille (typisk under 1 KB) | Meget stor (Gigabytes til Terabytes) |
| Indhold | Metadata, diskgeometri, ID'er | Rå diskdata (dit operativsystem og filer) |
| Kan redigeres? | Ja, med stor forsigtighed | Nej, må aldrig redigeres manuelt |
Ofte Stillede Spørgsmål (OSS)
Er det virkelig sikkert at redigere denne fil?
Det er relativt sikkert, HVIS du har taget en backup først. Selve ændringen er minimal, men menneskelige fejl kan ske. Uden en backup risikerer du at forværre problemet. Med en backup kan du altid gendanne den oprindelige tilstand, hvis noget går galt.
Hvorfor lige `ffffffff`? Hvad betyder den værdi?
I denne sammenhæng fungerer `ffffffff` som en specialværdi, der indikerer 'ingen forælder' eller en nulstillet tilstand. Når en operation som en snapshot-oprettelse eller disk-kloning finder sted, bruges PID (Parent ID) til at linke en disk til dens forældre-disk. En fejl kan efterlade en ugyldig PID. Ved at sætte den til `ffffffff` fortæller vi hypervisoren, at den skal behandle disken som en selvstændig base-disk uden et defekt link til en forælder.
Hvad hvis rettelsen ikke virker?
Hvis din VM stadig ikke starter, kan problemet være mere komplekst. Her er et par ting, du kan undersøge:
- Disk Locks: Se efter filer med `.lck` endelsen i VM-mappen. Hvis VM'en er slukket, kan disse låsefiler slettes sikkert.
- Logfiler: Undersøg `vmware.log` filen i VM-mappen. Den indeholder detaljerede oplysninger om opstartsprocessen og vil ofte give præcise fejlmeddelelser, der kan pege dig i retning af årsagen.
- Snapshot-problemer: Fejlen kan være relateret til en brudt snapshot-kæde, hvilket er en mere avanceret reparation.
- Gendan fra backup: Hvis alt andet fejler, er din sikreste vej at gendanne hele den virtuelle maskine fra den backup, du tog i starten.
Konklusion
En fejlslagen diskudvidelse kan virke katastrofal, men løsningen er ofte overraskende simpel. Ved metodisk at følge ovenstående trin – backup, identifikation, redigering og test – kan du med stor sandsynlighed løse problemet ved at rette en enkelt linje i din VMDK's descriptor-fil. Husk altid at arbejde med omhu og at værdsætte vigtigheden af en god backup-strategi. Det er den bedste medicin mod datatab.
Hvis du vil læse andre artikler, der ligner Fejl ved udvidelse af VMDK-disk? Her er løsningen, kan du besøge kategorien Teknologi.
