VMware Workstation vmdk cid chain – заметки про восстановление

Ранее на блоге уже писалось про устройство снимков VMware VI 3,5.

На самом деле, статья актуальна до сих пор – на данный момент структура снимков в vSphere 6 (VI3,5->vSphere4.x->vSphere 5.x->vSphere 6.0) осталась неизменной: каждому виртуальному диску соответствует два файла: vm_name.vmdk (дескриптор) и vm_name-flat.vmdk (файл с “сырыми” данными).

Если портится второй файл – вам прямая дорога к резервным копиям. Если портится дескриптор – то что-то еще можно сделать.

Дескриптор выглядит примерно так:

version=1
encoding=”UTF-8″
CID=8798f6ac
parentCID=ffffffff
isNativeSnapshot=”no”
createType=”vmfs”

# Extent description
RW 134217728 VMFS “win8_vm-flat.vmdk”

# The Disk Data Base
#DDB

ddb.adapterType = “lsilogic”
ddb.deletable = “true”
ddb.geometry.cylinders = “8354”
ddb.geometry.heads = “255”
ddb.geometry.sectors = “63”
ddb.longContentID = “ab5f695248b48671a2f034408798f6ac”
ddb.thinProvisioned = “1”
ddb.toolsVersion = “9354”
ddb.uuid = “60 00 C2 9f c0 a4 0d d2-37 da f0 95 16 7a cf 68”
ddb.virtualHWVersion = “8”

Соответственно, нам нужны CID и parentCID. При наличии у ВМ снапшотов, они должны ссылаться на предыдущий диск, то есть их parentCID должен совпадать с CID “предыдущего диска”.

Формат виртуального диска для VMware Workstation немного другой – оба файла объединены в один. В начале файла – дескриптор, дальше – сырые данные.

В результате, достаточно геморройно проверять CID-цепь, а исправлять ее еще более геморройно (так как вам может потребоваться отредактировать 50ГБ файл) 🙂

Гугл подсказал, что есть достаточно простенькие утилитки – dsfo.exe и dsfi.exe.

Работать с ними вот так:
Достать дескриптор и выгрузить в текстовый файл desc.txt
dsfo “C:\test-area\test.vmdk” 512 1024 “C:\test-area\desc.txt” 

Поместить исправленный дескриптор обратно в VMDK
dsfi”C:\test-area\test.vmdk” 512 1024 “C:\test-area\desc.txt”

После этого с помощью UFS Recovery можно по очереди подключить все снапшоты и попробовать “собрать все данные”.

Правда, в моем случае пользователь удалил один из промежуточных vmdk-дисков, после чего восстановил его утилитой undelete (с windows-машины).

Увы, в этом файле был поврежден не только дескриптор (имя “flat-файла” и размер), но и данные, так как вменяемого содержимого найти и восстановить не удалось.

 

6 thoughts on “VMware Workstation vmdk cid chain – заметки про восстановление”

  1. UFS – барахло! Лучше GetDataBack или пишем мне и я дам – DMDE.

    Для esxi:
    http://www.diskinternals.com/vmfs-recovery/
    Берем кошерный вариант в торрентах и восстанавливаем удаленное, потом в шашки CIDами играем!

    А еще лучше делать бэкапы. С ними сон крепче, нервы в порядке и вообще появляется уверенность в завтрашнем дне 🙂

  2. Фил, а GetDataBack или DMDE умеют из нескольких файлов собирать данные?
    Или сначала собираем цепь, а потом запускаем эту штуку внутри виртуалки?

  3. Сложный момент.
    Лучше собирать цепь, наверное.
    Иначе на восстановлении будет куча дублей и множество всякого нечитаемого хлама.

  4. В этом случае UFS может оказаться удобнее, так как она умеет работать с VMDK и с их дельтами. Как минимум, для Workstation (и этого режима vmdk – monolithic sparse, если не ошибаюсь, в котором в одном vmdk файле и дескриптор, и данные).
    В общем-то, я ее именно в этом контексте и упомянул.

    Впрочем, с CID-цепью все равно надо играться – UFS ИИ внутри себя не имеет.

  5. Попробовал воспользоваться утилитами dsfo и dsfi.
    dsfo отработала на отлично, но при попытке загрузить дескриптор обратно возникли проблемы.
    Ввожу команду:
    dsfi “F:\Backup\PSR-2017-04-05\Clone of TD\Windows Server 2008 R2 x64-cl4-000001.vmdk” 512 1024 “F:\Backup\PSR-2017-04-05\Clone of TD\text1.txt”

    Получаю в консоли:
    F:\Backup\PSR-2017-04-05\Clone of TD\Windows Server 2008 R2 x64-cl4-000001.vmdk – ??????? ?? ????? ???????? ?????? ? ?????, ??? ??? ???? ???? ????? ?????? ?????????.

    Буду благодарен любой помощи.

Leave a Reply

Your email address will not be published. Required fields are marked *