Why is my VMDK not working?

Fejl ved udvidelse af VMDK-disk? Her er løsningen

03/03/2015

Rating: 4.2 (10212 votes)

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.

Why did the disk extend operation fail?
The operation failed and I received the following error message: “Insufficient disk space on datastore. The disk extend operation failed. There is not enough space on the file system for the selected operation”. Don’t understand how this can be the case since there’s more than enough space on all the datastores to accommodate this request.
Indholdsfortegnelse

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?

  1. Sørg for, at den virtuelle maskine er helt slukket (ikke suspenderet).
  2. Naviger til den mappe på dit datastore, hvor den virtuelle maskines filer er gemt.
  3. 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`.

Why did the disk extend operation fail?
The operation failed and I received the following error message: “Insufficient disk space on datastore. The disk extend operation failed. There is not enough space on the file system for the selected operation”. Don’t understand how this can be the case since there’s more than enough space on all the datastores to accommodate this request.

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 ÆNDRES

Ret 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ÆRDI

Gem æ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
TypeDescriptor-fil (Tekstbaseret)Data-fil (Binær)
StørrelseMeget lille (typisk under 1 KB)Meget stor (Gigabytes til Terabytes)
IndholdMetadata, diskgeometri, ID'erRå diskdata (dit operativsystem og filer)
Kan redigeres?Ja, med stor forsigtighedNej, 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.

Go up