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-файла» и размер), но и данные, так как вменяемого содержимого найти и восстановить не удалось.

 

Запись опубликована в рубрике VMware с метками . Добавьте в закладки постоянную ссылку.

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

  1. philzy говорит:

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

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

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

  2. Андрей Вахитов говорит:

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

  3. philzy говорит:

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

  4. A.Vakhitov говорит:

    В этом случае 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 — ??????? ?? ????? ???????? ?????? ? ?????, ??? ??? ???? ???? ????? ?????? ?????????.

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

  6. Андрей Вахитов говорит:

    Руслан, пробовали без редактирования файла text1.txt обратно записывать?
    text1.txt чем редактировали?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *