Trying to clone vmdk file fails with error: read passed end of file
search cancel

Trying to clone vmdk file fails with error: read passed end of file

book

Article ID: 311062

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

Symptoms:
  • The virtual machine has snapshots and has run out space on the Datastore.
  • Trying to clone vmdk file fails with this error
    read passed end of file
  • You are unable to clone the virtual machine.


Environment

VMware ESX 4.0.x
VMware ESXi 4.0.x Installable
VMware ESXi 3.5.x Embedded
VMware ESX Server 3.5.x
VMware ESXi 4.0.x Embedded
VMware ESXi 3.5.x Installable

Resolution

This issue occurs if the virtual machine is running on a snapshot that is corrupt and needs to be discarded. If the virtual machine was in the Delete all Snapshots process other snapshots in the chain could also be affected.
To resolve this issue, locate the available snapshots and revert to a snapshot that is not corrupted by following the procedure below:
Note: It is assumed you do not have backup of the virtual machine and this is the last resort to save the data. If you do have a backup of the virtual machine you can restore the backup and perform cloning using that data.
  1. Determine the snapshots that chain has and the sequence of the snapshots.

    For example:
    Base Disk: VMname.vmdk
    VMname-000002.vmdk
    VMname-000003.vmdk
    VMname-000004.vmdk
    VMname-000005.vmdk
    VMname-000006.vmdk
    VMname-000007.vmdk


    Important: The chain may not have files in numerical sequence.

  2. Repeat the process of cloning the virtual disk skipping one snapshot every time until the operation completes successfully.

    For example:
    # vmkfstools -i VMname-000007.vmdk clone.VMname.vmdk
    fails
    # vmkfstools -i VMname-000006.vmdk clone.VMname.vmdk
    fails
    # vmkfstools -i VMname-000005.vmdk clone.VMname.vmdk
    success

    Warning:
    Skipping snapshots may lead to data loss.

  3. If the virtual machine was not consolidating snapshots you can see the date of the snapshot that the virtual machine will revert to, from the modification dates of the *-delta* files.

    For example:
    # ls -l *flat*
    -rw------- 1 root root 42949672960 Apr 10 10:50 VMname-flat.vmdk
    -rw------- 1 root root 72960 Apr 11 10:50 VMname-000002-delta.vmdk
    -rw------- 1 root root 672960 Apr 12 10:50 VMname-000003-delta.vmdk
    -rw------- 1 root root 672960 Apr 13 10:50 VMname-000004-delta.vmdk
    -rw------- 1 root root 672960 Apr 14 10:50 VMname-000005-delta.vmdk
    -rw------- 1 root root 672960 Apr 16 10:50 VMname-000006-delta.vmdk
    -rw------- 1 root root 672960 Apr 17 10:50 VMname-000007-delta.vmdk

    Cloning from VMname-000005-delta.vmdk the virtual machine will revert to Apr 14.