Воссановление файла с описанием виртуального диска

Автор НаРазДва, 02 Июля 2018, 17:29

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

НаРазДва

Руководство от VMWare, которое помогло восстановить работоспособность сервера. Перевод с помощью гугла и корректировки.

Восоздание диска виртуальной машины с отсутствующим дескриптором  файла

Ремарка: Был удален важный файл, например, назовем его «виртуальный_диск.vmdk» и другие нужные файлы для функционирования виртуальной маашины в среде ESXi VMWare, что не позволило запустить виртуалку после перезагрузки ESXi сервера. Но оказывается остался файл «виртуальный_диск-flat.vmdk» - вот этот файл и есть хранилище файловых систем виртуальной машины, при запущенной виртуалке, файл блокируется и его удалить невозможно.


Основные этапы

Примечание. VMware рекомендует попытаться восстановить отсутствующий файл дескриптора из резервных копий, если это возможно. Если это невозможно, приступайте к воссозданию файла дескриптора диска виртуальной машины. Этот метод не может использоваться для воссоздания файла дескриптора зашифрованного диска.


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

1. Определите размер плоского файла в байтах.
2. Создайте новый пустой виртуальный диск того же размера, что и оригинал. Это служит базовым примером, который модифицируется на последующих этапах.

Примечание. Этот шаг имеет решающее значение для обеспечения правильной геометрии диска.

3. Переименуйте файл дескриптора (также называемый заголовочным файлом) вновь созданного диска в соответствии с именем исходного виртуального диска.
4. Измените содержимое переименованного файла дескриптора для ссылки на плоский файл.
5. Удалите оставшийся временный плоский файл вновь созданного диска, поскольку он не требуется.

Примечание. Эта процедура не будет работать на виртуальных дисках, настроенных с помощью vmware паравиртуального контроллера SCSI на виртуальной машине, поскольку виртуальная машина может не загрузиться. Однако есть сообщения, что если используется Para-виртуализированный SCSI-контроллер, новый файл дескриптора также может быть обновлен с помощью ddb.adapterType = pvscsi, заменяющего ddb.adapterType = lsilogic в файле дескриптора.  От себя замечу, что это очень важное замечание, у меня как раз таки был на виртуалкепаравиртуальный контроллер SCSI дисков. На вновь созданной виртуалке я выбрал «LSI Logic Parallel» и после загрузки centos 7.4 выпадала в такой осадок:


НаРазДва

02 Июля 2018, 17:35 #1 Последнее редактирование: 02 Июля 2018, 17:41 от НаРазДва
Подробные шаги

Чтобы создать диск виртуальной машины:
1. Войдите в терминал хоста ESXi / ESX
2. Перейдите в каталог, содержащий диск виртуальной машины, с отсутствующим файлом дескриптора, используя команду:

    # cd /vmfs/volumes/myvmfsvolume/mydir

Заметки:
   

  • Если вы используете версию ESXi, вы можете обращаться к файлам и каталогам и изменять их с помощью vSphere Client Datastore Browser или утилиты vifs, входящей в состав CLS vSphere. Для получения дополнительной информации см. Раздел Выполнение операций файловой системы в документации по интерфейсу командной строки vSphere.

  •    
  • Если вы используете VMware Fusion, по умолчанию для файлов виртуальной машины является папка home/Documents/Virtual Machines.localized/virtual_machine/, где home - это ваша домашняя папка, а virtual_machine - это имя виртуальной машины.




3. Определите тип контроллера SCSI, который использует виртуальный диск, изучив файл конфигурации виртуальной машины (.vmx), если он конечно есть, в моем случае он был тоже удален. Контроллер идентифицируется строкой scsi # .virtualDev, где # - номер контроллера. К виртуальной машине может быть подключено несколько контроллеров и контроллеров, таких как lsisas1068 (который является контроллером LSILogic SAS), lsilogic или buslogic. В этом примере используется lsilogic:


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


4. Определите и запишите точный размер файла -flat с помощью команды, аналогичной:

    # ls -l виртуальный_диск-flat.vmdk

    -rw------- 1 root root 4294967296 Oct 11 12:30 виртуальный_диск-flat.vmdk

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

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

Команда использует эти флаги:

       
Цитировать-c size

Размер виртуального диска

       
Цитировать-a virtual_controller

Был ли виртуальный диск настроен для работы с BusLogic, LSILogic (для lsilogic и lsilogic SAS), Paravirtual или IDE:
Используйте lsilogic для типа виртуального диска "lsilogic" и "lsisas1068"

       
Цитировать-d thin

Это создает диск в тонко-подготовленном формате.

Примечание. Чтобы сэкономить дисковое пространство, мы создаем диск в thin-подготовленном формате, используя тонкий тон. Получающийся thin-файл потребляет минимальное пространство (1 МБ) вместо того, чтобы сразу принять емкость, указанную с помощью ключа -c.

В результате создаются файлы temp.vmdk и temp-flat.vmdk.

6. Удалите temp-flat.vmdk, поскольку он не нужен. Выполните команду:
   
   # rm -i temp-flat.vmdk

7. Переименуйте temp.vmdk в имя, которое требуется для соответствия потерянному файлу .flat (или виртуальный_диск.vmdk, в этом примере):

   # mv -i temp.vmdk виртуальный_диск.vmdk

8. Отредактируйте файл дескриптора, используя текстовый редактор «vi» (vi виртуальный_диск.vmdk, в этом примере)

В разделе «Описание уровня»,

Цитировать# Disk DescriptorFile
version=1
encoding="UTF-8"
CID=086bba1f
parentCID=ffffffff
isNativeSnapshot="no"
createType="vmfs"

# Extent description, здесь надо откорретировать сслыку на flat файл виртуального диска
RW 115343360 VMFS "виртуальный_диск-flat.vmdk"

# The Disk Data Base
#DDB

ddb.adapterType = "lsilogic"
ddb.geometry.cylinders = "7179"

Найдите и удалите строку ddb.thinProvisioned = "1", если исходный .vmdk не был тонким диском. Если бы это было так, сохраните эту строку. Используйте команду «Shift + zz» для сохранения и выхода из редактора «vi».

9. Чтобы проверить целостность цепочки дисков, запустите эту команду в файле дескриптора диска:

    Для ESXi 6.0 и 5.x:

    # vmkfstools -e filename.vmdk

Для полной цепочки вы увидите положительный результат, похожий на:
    Disk chain is consistent

Для поврежденной цепочки вы видите сводку потомков моментальных снимков, а затем вывод, аналогичный:
   
ЦитироватьFor a broken chain, you 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)


После создаем новую виртуальную машину, и прикрепляем к ней восстановленный виртуальный диск, после загрузки могут слететь сетевые интерфейсы, на пример, у меня интерфейс для локальной сети переименовался и пришлось корректировать данную неувязку и с сетевыми скриптами для загрузки и цеточки iptables.