How to Fix VirtualBox “Grain Table and Backup Grain Table Inconsistency” Error After Host Power Failure


10 views

When your host machine experiences a sudden power failure while running a VirtualBox VM, you might encounter this particularly nasty error during the next boot attempt:

Inconsistency between grain table and backup grain table

This typically occurs with Windows XP 32-bit guests running on 64-bit hosts, though it can theoretically happen with any guest OS when VirtualBox's dynamic storage structures get corrupted.

In VirtualBox's architecture, a grain table is a metadata structure that manages dynamic storage allocation in VDI (Virtual Disk Image) files. Think of it as:

  • A mapping table between virtual disk sectors and physical storage blocks
  • VirtualBox's equivalent of a file system allocation table
  • Critical for managing dynamically expanding disks

Before considering recreating the VM, try these repair methods:

Method 1: Virtual Media Manager Repair

First attempt automatic repair through VirtualBox's built-in tools:

VBoxManage modifyhd "path_to_vdi" --compact
VBoxManage modifymedium disk "path_to_vdi" --repair

Method 2: Clone the Damaged VDI

Create a working copy of the corrupted disk:

VBoxManage clonehd "old.vdi" "new.vdi" --variant Standard

Then create a new VM configuration using the cloned disk.

Method 3: Low-Level Disk Repair

For advanced users, try repairing the VDI structure directly:

# First get VDI header information
hexdump -C -n 1024 old.vdi | less

# Look for grain table offsets (typically around 0x200)
# Then attempt to manually copy backup grain table over primary
dd if=old.vdi of=old.vdi bs=1 seek= \
   count= conv=notrunc iflag=skip_bytes \
   skip=

To avoid grain table corruption:

  • Enable VM snapshots for critical VMs
  • Configure host UPS systems
  • Use VirtualBox's --autoreset off flag for important VMs
  • Consider switching to fixed-size disks for mission-critical systems

If the VM remains unbootable, these are your last-resort options:

  1. Mount the VDI on a Linux system using:
  2. sudo mount -t ntfs-3g -o ro,force,loop,offset=32256 disk.vdi /mnt/virtual_disk
    
  3. Extract critical data using forensic tools like testdisk
  4. Recreate the VM from scratch (last option)

When your VirtualBox guest (Windows XP 32-bit) fails to boot after a host (Windows 7 64-bit) power failure with the "inconsistency between grain table and backup grain table" error, you're dealing with a corrupted virtual disk structure. In VirtualBox's VMDK format, grain tables track disk block allocations - essentially a metadata layer that maps virtual disk blocks to physical storage.

Before attempting any repairs, make a complete backup of your VMDK file. Then try these methods in order:

# First attempt - basic repair
VBoxManage internalcommands repairhd "your_disk.vmdk"

# If that fails, try cloning the disk
VBoxManage clonehd "original.vmdk" "repaired.vmdk" --variant Standard

For stubborn cases where standard repair fails:

  1. Convert to VDI format (often bypasses corruption):
    VBoxManage clonehd "corrupt.vmdk" "clean.vdi" --format VDI
  2. Use qemu-img for low-level repairs:
    qemu-img check -r all corrupt.vmdk
    qemu-img convert corrupt.vmdk -O vmdk repaired.vmdk

Configure these settings in VirtualBox:

  • Enable write-back caching: VBoxManage storageattach "VMname" --storagectl "SATA" --port 0 --device 0 --type hdd --nonrotational on --discard on
  • Set up proper snapshot policies
  • Implement host UPS protection

If the VM remains unbootable but contains critical data:

# Mount the VMDK as a physical disk using OSFMount
# Then use data recovery tools like Photorec:
photorec /dev/sdX

The grain table error typically occurs when the host loses power during disk operations. VirtualBox 6.1+ includes better journaling to prevent this - consider upgrading if you frequently experience power interruptions.