«Лечение» поломавшихся разделов VMWare *.vmdk

Диски для виртуальных машин VMWare состоят из двух файлов:

  1. файл-образ диска (например: linux-flat.vmdk)
  2. файл-описание диска (например: linux.vmdk)

В случае если по каким-то причинам был удален или поврежден файл с описанием диска, для получения доступа к данным, его можно «востановить».

Алгоритм следующий:

1) Подключиться к хосту vSphere по SSH

2) Перейти в каталог, где содержится образ виртуалки и/или «поврежденных» виртуальны жесткий диск. Например:

# cd /vmfs/volumes/ssd3/linux

3) Узнать интерфейс подключения диска к виртуальной машине:

scsi0.present = "true"
scsi0.sharedBus = "none"
scsi1.present = "true"
scsi1.sharedBus = "virtual"
scsi1.virtualDev = "lsilogic"

Для примера берем, что диск у нас подключен к разьему scsi1.

4) Узнать размер виртуального жесткого диска:

# ls -l linux-flat.vmdk

-rw------- 1 root root 4294967296 Oct 11 12:30 linux-flat.vmdk

5) Используя vmkfstools создать временный раздел такого же размера:

# vmkfstools -c 4294967296 -a lsilogic -d thin temp.vmdk

Опции:

  • — указатель на размер раздела
  • -a — указатель на имя контроллера, для которого создается раздел
  • -d thin — указатель на то, что будет создан раздел нулевого размера, который заполняется по мере напонения диска данными (чтобы не занимать лишнее место на жестком/SSD диске сервера vSphere

6) Удалить файл temp-flat.vmdk

# rm temp-flat.vmdk

7) Переименовать файл temp.vmdk в необходимое для нас имя раздела. В нашем случае:

# mv temp.vmdk linux.vmdk

8) Открыть текстовым редактором файл linux.vmdk и заменить в нем в строке описания файл-образа диска текст на необходимый нам. В нашем случае это выглядит так:

Исходный файл:

RW 8388608 VMFS "temp-flat.vmdk"

Результирующий файл:

RW 8388608 VMFS "linux-flat.vmdk"

9) Проверить раздел диска системными утилитами сервера vSphere:

Для ESXi 5.0/5.1:

# vmkfstools -e filename.vmdk

For a complete chain, you see output similar to:
Disk chain is consistent

For a broken chain, you will see a summary of the snapshot chain and then an output similar to:
Disk chain is not consistent : The parent virtual disk has been modified since the child was created. The content ID of the parent virtual disk does not match the corresponding parent content ID in the child (18)

Для ESXi 3,5/4.x:

# vmkfstools -q filename.vmdk

For a complete chain, you see output similar to:
filename.vmdk is not an rdm

For a broken chain, you see output similar to:
Failed to open 'test-000001.vmdk' : The parent virtual disk has been modified since the child was created (18)

10) Наслаждаемся востановленными данными с раздела.

 
comments powered by Disqus