Віртуалізація - що робити, якщо пропав заголовки vmdk-диск віртуальної машини vmware vsphere,

Як знають всі адміністратори VMware vSphere, віртуальний диск віртуальної машини представляється як мінімум у вигляді двох файлів:

  • <имя ВМ>.vmdk - заголовний, він же індексний, він же файл-дескриптор віртуальго диска, який містить інформацію про геометрії диска, його тип та інші метадані
  • <имя ВМ>-flat.vmdk - безпосередньо диск з даними ВМ

Практика показує, що непоодинокі випадки, коли адміністратори VMware vSphere втрачають заголовки VMDK з деяких причин, іноді незрозумілим, і залишається тільки диск з даними ВМ (не дивно, адже в нього йде запис, він залочений).

Нижче наведена коротка процедура по відновленню дескрипторного VMDK-файлу для існуючого flat-VMDK, щоб відновити працездатність віртуальної машини. Докладну інструкцію можна прочитати в KB 1002511.

Для тих, хто не любить:

1. Визначаємо точний розмір в байтах VMDK-диска з даними (щоб геометрія нового створеного дескриптора йому відповідала):

ls -l <имя диска>-flat.vmdk

2. Створюємо новий віртуальний диск (цифри - це отриманий розмір в байтах, тип thin для економії місця, lsilogic - контролер):

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

3. Перейменовуємо дескрипторна VMDK-файл створеного диска в той файл, який нам потрібен для вихідного диска. Видаляємо щойно створений порожній диск даних, який вже не потрібен (temp-flat.vmdk).

4. Відкриваємо перейменований дескрипторна файл VMDK і міняємо виділені жирним рядки:

# Disk DescriptorFile
version = 1
CID = fb183c20
parentCID = ffffffff
createType = "vmfs"

# Extent description
RW 8388608 VMFS "vmdisk0-flat.vmdk"

# The Disk Data Base
#DDB

ddb.virtualHWVersion = "4"
ddb.geometry.cylinders = "522"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.adapterType = "lsilogic"
ddb.thinProvisioned = "1"

Тобто, міняємо просто ім'я flat VMDK-файлу і прибираємо рядок про те, що диск thin provisioned, якщо він у вас спочатку був flat.

Все - машину можна запускати.