1

Перенос виртуальной машины ESXi с тонкими (thin) дисками

Posted by admin on 01.03.2013 in VMWare |

При переносе виртуальной машины на другой хост возникает проблема распухания тонких (thin) дисков. Т.к. не предусмотрено возможности непосредственного копирования из одного хранилища (DataStore) в другое, приходится сначала копировать куда-нибудь в промежуточное место (к себе или на сервер), а потом копировать на новое место. Уже при копировании “к себе” «тонкие» диски начинают занимать «толстое» место. Т.е. диски типа thin становятся дисками типа thick. Вроде бы логично, ведь NTFS не поддерживает такого понятия как тонкие (thin) диски, но вместе с тем и очень неприятно.

Есть другой вариант — не копировать файлы, а сконвертировать виртуальную машину бесплатным конвертером от разработчика. Но тут возникают другие неприятности:

— При конвертировании включенной машины, после переезда она просто НЕ запустилась. Пробовал разные несколько раз.
— При конвертировании выключенной машины (как части VM инфраструктуры) есть возможность в опциях диска поменять его тип на тонкий (по умолчанию конвертер преобразует диск в толстый). Но тогда новая машина теряет сетевые адаптеры, создает новые адаптеры с новыми именами и, соответственно, с динамическим адресом. А я, например, переношу контроллер. Я же не хочу, чтобы у меня контроллер запустился с динамическим адресом.

Была идея найти способ копировать непосредственно с одного vmfs DataStore на другое без участия виндовых систем (и, правда, без гарантии результата). Но саппорт VMWare убил эту надежду, четко заявив, что

всякий раз, когда thin (тонкий) диск перемещается или копируется в другое хранилище (data store) он будет сконвертирован в thick (толстый) диск

Таким образом, задача переноса виртуальной машины с тонкими дисками из одного хоста на другой сводится к конвертации перенесенного толстого диска обратно в тонкий. Конвертации, к сожалению нет, но способ сконвертировать — есть.

Действия по шагам

Здесь все команды будут на конкретном примере, с именами конкретных каталогов и файлов. Обе виртуальные машины оказались одинаковой версии VMWare ESXi 5.0.0 (469512) (5.1 или 5.0 с апдейтами пока не использовались из-за ограничений по памяти на бесплатных лицензиях VMWare), и сами версии виртуальных машин тоже совпадают (8). Так что конвертация не требуется. Переносим виртуальную машину DC01 с тонким диском с хоста 2.28 на 0.72

1. Копируем каталог виртуальной машины DC01 с DataStore хоста 2.28 на сетевой ресурс «\\FSA\RK\2.28» (это оказалось довольно быстро)

2. Копируем каталог «\\FSA\RK\2.28\DC01» в корень DataStore хоста 0.72 (это оказалось на удивление долго)

Пока идет копирование выполняем пункты 3, 4 и подготовительную часть пятого

3. Включаем доступ по SSH на хосте 0.72. Для этого в vSphere Client, подключенном к ESXi хосту 0.72, ставим курсор в корне дерева виртуальных машин. Далее: закладка Configuration — раздел Software — пункт Security Profile — группа Services — ссылка Properties

Включаем SSH на ESXi VMWare

В появившемся окне выбираем пункт SSH, жмем кнопку Options. Здесь, по желанию, можно переключить политику запуска, либо просто запустить сервис кнопкой Start, если не планируется пользоваться этим доступом часто.

4. Скачиваем и устанавливаем PuTTy, если еще не установлена. Запускаем её и настраиваем подключение к хосту 0.72 по его IP адресу на порт по умолчанию — 22. Убеждаемся, что можем залогиниться на ESXi хост под административным логином. Это значит, что командная строка должна заканчиваться знаком диеза «#». Если в конце командной строки символ «$» или что-то другое, то у вас нет административных полномочий. Лучше всего заходить под логином root, который создается при установке гипервизора ESXi. Если PuTTy используется впервые, то просто необходимо поиграться. Вот команды, которые нам понадобятся:

ls — список файлов в текущей директории,
cd — смена директории,
du -ah — содержание директории с размерами,
vmkfstools — а это самое главное, ради чего мы здесь.

5. Конвертируем диск из thick в thin.

Даже если наша виртуальная машина еще не скопирована полностью, можно пока с помощью PuTTy подключиться к хосту ESXi, перейти в каталог новой виртуальной машины:

Для начала глянем список каталогов:

ls

видим здесь «vmfs». Можно последовательно проваливаться вглубь, добираясь до каталога новой виртуальной машины командами ls и cd, или сразу перейти в него:

cd vmfs/volumes/Stor1/dc01

Здесь «Stor1» — имя хранилища (в общем случае, может быть другое), «dc01» — каталог переносимой виртуальной машины. ВАЖНО соблюдать регистр, это не Windows!

Как уже упоминалось выше, диск нельзя просто сконвертировать, но можно его клонировать, указав при этом тип нового диска. А после клонирования подменить, удалив старый толстый (thick), и, переименовав в его имя новый тонкий (thin). Сначала посмотрим содержимое каталога:

du -ah

Листинг:

/vmfs/volumes/50211bb7-07e64d8b-0699-e839352c03eb/dc01 # du -ah
54.0G   ./dc01-flat.vmdk
1.0M    ./dc01.nvram
0       ./dc01.vmdk
0       ./dc01.vmsd
8.0k    ./dc01.vmx
0       ./dc01.vmxf
3.0M    ./vmware-1.log
1.0M    ./vmware.log
54.0G   .

Здесь каталог виртуальной машины выглядит не так как в GUI. Самый большой файл размером 50 Гб, который, видимо, и содержит данные перенесенного толстого диска, имеет имя dc01-flat.vmdk. Такой файл напрочь отсутствует в каталоге, если смотреть на него средствами GUI — Datastore Browser. Там файлом виртуального диска является dc01.vmdk, который, как оказалось имеет почти нулевой размер; это текстовый «конфигурационный» файл, указывающий на dc01-flat.vmdk.

Однако, для команды клонирования нужно использовать именно «титульное» имя файла — dc01.vmdk

vmkfstools –i dc01.vmdk thin.vmdk -d thin

Здесь dc01.vmdk — имя файла клонируемого диска, thin.vmdk — имя файла для нового тонкого диска (оно может быть произвольным).

Операция клонирования заняла меньше 10 минут. Теперь нужно переименовать файлы дисков:
— dc01.vmdk —> dc01-big.vmdk (старому толстому диску даем новое придуманное имя, либо просто сразу удаляем его, если рука не дрогнет),
— thin.vmdk —> dc01.vmdk (новому тонкому диску даем старое имя, о котором «знает» наша виртуальная машина).

Переименовать диски через GUI в Datastore Browser на клиенте ESXi не удастся. Считается, что переименование дисков может нарушить работу виртуальных машин.

Нельзя переименовать диск ESXi

Но за то без проблем прямо здесь же можно удалить диск. Для переименования используем все ту же консоль SSH в PuTTy:

vmkfstools –E dc01.vmdk dc01-big.vmdk
vmkfstools –E thin.vmdk dc01.vmdk

В промежутках между командами переименования и клонирования я еще из любопытства запускал ls. Вот результат:

/vmfs/volumes/50211bb7-07e64d8b-0699-e839352c03eb/dc01 # vmkfstools -i dc01.vmdk thin.vmdk -d thin
Destination disk format: VMFS thin-provisioned
Cloning disk ‘dc01.vmdk’…
Clone: 100% done.
/vmfs/volumes/50211bb7-07e64d8b-0699-e839352c03eb/dc01 # du -ah
54.0G   ./dc01-flat.vmdk
1.0M    ./dc01.nvram
0       ./dc01.vmdk
0       ./dc01.vmsd
8.0k    ./dc01.vmx
0       ./dc01.vmxf
3.0M    ./vmware-1.log
1.0M    ./vmware.log
19.9G   ./thin-flat.vmdk
0       ./thin.vmdk
73.9G   .
/vmfs/volumes/50211bb7-07e64d8b-0699-e839352c03eb/dc01 # vmkfstools -E dc01.vmdk dc01-big.vmdk
/vmfs/volumes/50211bb7-07e64d8b-0699-e839352c03eb/dc01 # du -ah
54.0G   ./dc01-big-flat.vmdk
1.0M    ./dc01.nvram
0       ./dc01-big.vmdk
0       ./dc01.vmsd
8.0k    ./dc01.vmx
0       ./dc01.vmxf
3.0M    ./vmware-1.log
1.0M    ./vmware.log
19.9G   ./thin-flat.vmdk
0       ./thin.vmdk
73.9G   .
/vmfs/volumes/50211bb7-07e64d8b-0699-e839352c03eb/dc01 # vmkfstools -E thin.vmdk dc01.vmdk
/vmfs/volumes/50211bb7-07e64d8b-0699-e839352c03eb/dc01 # du -ah
54.0G   ./dc01-big-flat.vmdk
1.0M    ./dc01.nvram
0       ./dc01-big.vmdk
0       ./dc01.vmsd
8.0k    ./dc01.vmx
0       ./dc01.vmxf
3.0M    ./vmware-1.log
1.0M    ./vmware.log
19.9G   ./dc01-flat.vmdk
0       ./dc01.vmdk
73.9G   .

После переименования можно клавишей DEL в Datastore Browser удалить старый толстый диск, его сразу видно по размеру; или сначала проверить работоспособность перенесенной виртуалки, а потом уже удалять.

Удаляем диск ESXi

Удаляем диск ESXi

Здесь же в Datastore Browser правой кнопкой мыши щелкаем по файлу dc01.vmx и выбираем пункт Add to Inventiry. Теперь можно запускать перенесенную виртуальную машину, но лучше сначала глянуть её параметры, проверить, все ли на месте. В частности, мне пришлось в свойствах сетевого адаптера выбрать для него сеть из выпадающего списка, состоящего всего из одного пункта. Просто на прежнем хосте сеть называлась по-другому, и здесь машина её не увидела.

До:

Проверяем в ESXi сеть

После:

Подключаем сеть в ESXi

Запускаем. При первом запуске перенесенной виртуальной машины появляется окно с вопросом, что это за машина, скопирована она или перенесена. На сколько я понимаю, для скопированной машины ESXi изменяет её параметры, чтобы избежать присутствия в сети двух совершенно одинаковых машин, но мне то это не нужно, напротив желательно сохранить все в точности, как на оригинале. Поэтому, отвечаем, что машина перенесена.

Виртуальная машина ESXi на другом хосте

Проверяем, работает. Вот вроде бы и все, но НЕТ!

ВАЖНО. На прежнем хосте (2.28) либо удалить совсем, с диска, либо убрать из Inventory, либо просто отключить автозапуск перенесенной машины при включении питания хоста. Мали ли что, чтобы накладки не получилось, когда они вдруг окажутся запущены одновременно. Соответственно, на новом хосте (0.72) настроить автозапуск новой машины.

Примечание

Для платной лицензии видел в сети такой рецепт сжатия тонкого диска:

1) Очистить диск в операционной системе (я использовал sdelete)
2) сделать svmotion thin —-> thick eaged zeroed
3) сделать svmotion thick eaged zeroed —-> thin

Сам не проверял.

Метки:

1 Comment

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

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

Copyright © 2011-2017 Сисадминские будни All rights reserved.
Любое воспроизведение материалов сайта возможно только с активной ссылкой на admsoft.ru.