Восстанавливаем виртуальную машину из снапшота

Виртуализация - это то, что сегодня используется не только на серверах, но и на обычных домашних компьютерах
Ответить
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Восстанавливаем виртуальную машину из снапшота

Сообщение RomA »

...Данный пост не столько инструкция по восстановления, сколько описание граблей при невнимательном подходе...

И было следующее...
обычный вечер пятницы и желание сделать снапшот виртуальной машины... Была нажата соответствующая кнопочка, и через минуту виртуалка перестала отвечать...

Введение:
Виртуальная машина выключена. не запускается - говорит нет жёского диска. Свойства виртуальной машины говорят что жёский диск равен 0.

Задача:
Починить и запустить машину

Подготовка:
1) делаем копию файлов машины - в процессе починки она мне пригодалась 2 раза, прежде чем всё получилось. Тут либо копируем через оснастки, либо шелом. Мне проще (см. пункт 2) сделать шелом - входим на сервер и

Код: Выделить всё

cd /vmfs/volumes/51474e08-38bf700a-109e-002618db1edc
tar -cf srv-zabbix.tar srv-zabbix
Что бы это всё сделалось быстрее я делал архивацию без сжатия.
2) практически невозможно работать со всем этим из MAC OS X - связь рвётся, архивы не распаковываются. А вот через винду архив 200 мегабайт копируется долго, но нормально.
3) Может быть стечение обстоятельств, может быть что-то ещё, но только через виндовый клиент сферы мне удалось запустить машину - через вебинтерфейс она пускать не хотела никак.

Решение задачи:
Делать будем на резервном сервере, ибо боевые сервера не место для эксперементов. Ни при каких обстоятельствах.Да.
Итак, у меня есть распакованный архив виртуальной машины на переносном диске. Подключаю его к ближайшему UNIX серверу (что бы быстрей) и копирую файлы на тестовый ESXi

Код: Выделить всё

roman$ scp /Volumes/ExtHDD/srv-zabbix/srv-zabbix/srv-zabbix.vmxf root@192.168.10.2:/vmfs/volumes/hdd4/srv-zabbix
Password: 
srv-zabbix.vmxf                                                                                                        100%  265     0.3KB/s   00:00    
roman$ scp /Volumes/ExtHDD/srv-zabbix/srv-zabbix/srv-zabbix.vmx root@192.168.10.2:/vmfs/volumes/hdd4/srv-zabbix
Password: 
srv-zabbix.vmx                                                                                                         100% 3291     1.6KB/s   00:02    
roman$ scp /Volumes/ExtHDD/srv-zabbix/srv-zabbix/srv-zabbix.vmsd root@192.168.10.2:/vmfs/volumes/hdd4/srv-zabbix
Password: 
srv-zabbix.vmsd                                                                                                        100%    0     0.0KB/s   00:00    
roman$ scp /Volumes/ExtHDD/srv-zabbix/srv-zabbix/srv-zabbix-flat.vmdk root@192.168.10.2:/vmfs/volumes/hdd4/srv-zabbix
Password: 
srv-zabbix-flat.vmdk                                                                                                   100%  200GB  17.8MB/s 3:11:49    
Дальше идёт на ESXi по ssh и смотрим что есть

Код: Выделить всё

# cd /vmfs/volumes/51474e08-38bf700a-109e-002618db1edc
# ls -l
drwxr-xr-x    1 root     root           420 Apr  4 04:29 srv-zabbix
Заходим в нашу виртуальную машину и смотрим что есть там

Код: Выделить всё

# cd srv-zabbix/
# ls -l
total 34799624
-rwxr-xr-x    1 root     root     214748364800 Apr  4 07:38 srv-zabbix-flat.vmdk
-rwxr-xr-x    1 root     root             0 Apr  4 07:06 srv-zabbix.vmsd
-rwxr-xr-x    1 root     root          3291 Apr  4 07:06 srv-zabbix.vmx
-rwxr-xr-x    1 root     root           265 Apr  4 07:05 srv-zabbix.vmxf
Дальше всё по инструкции
По сути мы уже получили размер файла, но на всякий случай выделим его, что бы был перед глазами

Код: Выделить всё

# ls -ltr *.vmdk
-rwxr-xr-x    1 root     root     214748364800 Apr  4 10:18 srv-zabbix-flat.vmdk
Дальше нам советую узнать какой диск подключен

Код: Выделить всё

# less *.vmx | grep -i virtualdev
ethernet0.virtualDev = "e1000"
pciBridge4.virtualDev = "pcieRootPort"
pciBridge5.virtualDev = "pcieRootPort"
pciBridge6.virtualDev = "pcieRootPort"
pciBridge7.virtualDev = "pcieRootPort"
И вот тут была первая моя ошибка - коллега, заметив что диск нулевой - отключил его от виртуальной машины, а я про это забыл. Потратил много времени ((( Итак, добавляем строчку про жёский диск в конфигурацию виртуальной машины

Код: Выделить всё

 # vi srv-zabbix.vmx
 scsi0.virtualDev = "lsilogic"
Ну а дальше всё по инструкции

Код: Выделить всё

# less *.vmx | grep -i virtualdev
ethernet0.virtualDev = "e1000"
pciBridge4.virtualDev = "pcieRootPort"
pciBridge5.virtualDev = "pcieRootPort"
pciBridge6.virtualDev = "pcieRootPort"
pciBridge7.virtualDev = "pcieRootPort"
scsi0.virtualDev = "lsilogic"
/vmfs/volumes/51474e08-38bf700a-109e-002618db1edc/srv-zabbix # ls -l *-flat.vmdk
-rwxr-xr-x    1 root     root     214748364800 Apr  4 10:18 srv-zabbix-flat.vmdk
/vmfs/volumes/51474e08-38bf700a-109e-002618db1edc/srv-zabbix # vmkfstools -c 214748364800 -a lsilogic -d thin temp.vmdk
Create: 100% done.
/vmfs/volumes/51474e08-38bf700a-109e-002618db1edc/srv-zabbix # ls -ltr *.vmdk
-rwxr-xr-x    1 root     root     214748364800 Apr  4 10:18 srv-zabbix-flat.vmdk
-rw-------    1 root     root           494 Apr  4 11:04 temp.vmdk
-rw-------    1 root     root     214748364800 Apr  4 11:04 temp-flat.vmdk
/vmfs/volumes/51474e08-38bf700a-109e-002618db1edc/srv-zabbix # rm temp-flat.vmdk
/vmfs/volumes/51474e08-38bf700a-109e-002618db1edc/srv-zabbix # mv temp.vmdk srv-zabbix.vmdk
осталось отредактировать файл

Код: Выделить всё

# vi srv-zabbix.vmdk
Редактируем:
1) правим название файла снапшота
2) правим версию виртуальной машины

Код: Выделить всё

# Extent description
RW 419430400 VMFS "srv-zabbix-flat.vmdk"
ddb.virtualHWVersion = "8"
Ну и удаляем

Код: Выделить всё

ddb.thinProvisioned = "1"
Сохраняем. Всё - можно запускать и пользовваеться

Краткая справка по работе в vi (ну нет там другого интерпретатора)
Запуск - vi Имя.Файла
Переход в режим редактирования - i
Выход из режима редактирования - esc
Удаление текушей строки - dd
Запись изменений - :w
Выход из программы - :q

Вывод:
1) не делайте снапшот, когда машина нагружена какими-то процессами
2) следите за действиями коллег, а не пропускайте мимо ушей
3) если что-то не получилось сделать через web-интерфейс - попробуйте сделать это другим способом (виндовая оснастка, консоль)

Литература:
http://kb.vmware.com/selfservice/micros ... Id=1002511
http://eddnet.org/?p=1349
Ответить