Переместите VMware ESXi VM в новое хранилище данных - сохраните тонкое выделение ресурсов

27

Я ищу хорошее решение проблемы среды VMware ESXi, где нет vCenter.

Каков наилучший способ перемещения виртуальной машины из одного хранилища данных в другое на одном хосте ESXi при сохранении тонкой подготовки VMDK?

Это автономный сервер, который был расширен с другим дисковым массивом / хранилищем данных. Я хотел бы переместить данные, содержащиеся в старом массиве, в новый.

Изменить: Размер хранилища данных назначения на самом деле меньше, чем источник. Мне не хватает места, чтобы скопировать толстый файл.

ewwhite
источник
Вы действительно думаете, что стоит переместить виртуальную машину в хранилище данных, на котором она слишком мала? Что происходит с каким-то мошенническим процессом, когда виртуальная машина решает использовать все пространство памяти?
Zoredache
В общем нет ... но это особый случай. ВМ не будет расти.
Ewwhite
Если виртуальная машина не будет расти, нет причин поддерживать ее в тонком состоянии.
Джим Б
Какая версия ESXi?
Джед Дэниелс
Это ESXi 5.
Ewwhite

Ответы:

21

Вы также можете использовать Файл -> Экспорт -> Экспорт шаблона OVF

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

johnshen64
источник
3
Предполагается, что версия 4.1 или новее, вам будет предложено использовать тонкий или толстый при импорте.
Джед Дэниелс
2
Ты получил это! Экспорт OVF в файл compresse sparse был быстрым и безболезненным. При импорте мне предоставили опцию тонкой или толстой заготовки, и импорт был быстрым; 5 минут для виртуальной машины 72 ГБ (используется 8 ГБ).
Ewwhite
3
FWIW, вы также можете сделать это из командной строки с помощью ovftool.
Джед Дэниелс
28

Просто нашел способ сделать это сам. Вот, надеюсь, простое руководство о том, как переместить виртуальную машину в новое хранилище данных, сохранив при этом тонкую подготовку во время передачи (что также сократит время передачи):

Пошаговое руководство по использованию vmkfstools в CLI

  1. Выключите ВМ
  2. (Необязательно) Объедините снимки, если это необходимо.
  3. Удалить ВМ из инвентаря vCenter
    • Щелкните правой кнопкой мыши виртуальную машину и выберите «Удалить из инвентаря». введите описание изображения здесь
  4. Включить SSH на машине ESXi
    • В клиенте vSphere выберите : Конфигурация -> Профиль безопасности -> Свойства (рядом с Сервисами) -> SSH (в списке) -> Параметры -> Пуск
  5. Войдите через SSH как root
  6. Подготовьте каталог в хранилище данных назначения
    • mkdir "/vmfs/volumes/destination_datastore/Some VM"
  7. Клонировать файлы .vmdk с помощью тонкой подготовки
    • vmkfstools -i "/vmfs/volumes/source_datastore/Some VM/Some VM.vmdk" -d thin "/vmfs/volumes/destination_datastore/Some VM/Some VM.vmdk"
  8. Скопируйте все оставшиеся файлы (избегая перезаписи файлов .vmdk)
    • find "/vmfs/volumes/source_datastore/Some VM" -maxdepth 1 -type f | grep -v ".vmdk" | while read file; do cp "$file" "/vmfs/volumes/destination_datastore/Some VM"; done
  9. Если вы не консолидировали моментальные снимки на шаге 2, возможно, существуют файлы снимков .vmdk delta, нам также необходимо скопировать их (это может занять некоторое время):
    • find "/vmfs/volumes/source_datastore/Some VM" -maxdepth 1 -type f | grep [0123456789][0123456789][0123456789][0123456789][0123456789][0123456789] | grep ".vmdk" | while read file; do cp "$file" "/vmfs/volumes/destination_datastore/Some VM"; done
  10. Закончив клонирование и копирование всех необходимых файлов, добавьте виртуальную машину из нового хранилища данных обратно в инвентарь.
    • В клиенте vSphere перейдите по ссылке : Конфигурация-> Хранение-> Обозреватель данных , щелкните правой кнопкой мыши хранилище данных назначения, в которое вы переместили виртуальную машину, и нажмите «Обзор хранилища данных». введите описание изображения здесь
  11. Перейдите к своей виртуальной машине и щелкните правой кнопкой мыши файл .vmx , затем нажмите «Добавить в инвентарь» введите описание изображения здесь
  12. Загрузите виртуальную машину, чтобы увидеть, работает ли она, и на вопрос, скопировали ли вы ее или переместили, просто ответьте, что вы скопировали ее. (Я не уверен, что это значит, но я думаю, что это связано, по крайней мере, с изменением MAC-адреса vNIC.) введите описание изображения здесь
  13. Если виртуальная машина загружается нормально, вы можете удалить ее из старого хранилища данных.
    • rm -rf "/vmfs/volumes/source_datastore/Some VM"

Примечание: протестировано только с ESXi 5

Иллюстрации бесстыдно скопированы из этого блога .

ohaal
источник
1
Это должно работать, но даже предоставлять информацию о том, как перемещать виртуальную машину со снимками, глупо. Скажите людям, чтобы они удалили все снимки, прежде чем пытаться сделать подобное
pauska
2
Пост @ ohaal выше, в esxi 5.5 u1, должен был изменить -print0 на -print, и это сработало как шарм! PS. Я бы проголосовал за это, но не представитель.
icereval
2
@ohaal проверен для работы на ESXi 6.7. Спасибо!
Эд горы
Есть ли причина для копирования любых других файлов, кроме .vmdk и .vmx? Если нет, вы можете превратить findлинию в простую cp.
Агустин Ладо
8

Проверьте этот ответ . Та же самая логика применяется в вашей ситуации, а именно эта цитата:

Он называется «Конвертер», но на самом деле он должен называться «Универсальный движок данных ОС». Впрочем, не так хорошо скатывается с языка.

Разница лишь в том, что хосты источника и назначения будут одинаковыми, но хранилища данных будут отличаться. Это означает, что файлы будут отправляться с хоста ESXi на конвертер, а затем обратно на хост. Было бы хорошо, если бы «Конвертер» был «умным» и знал, что это тот же хост. К сожалению, это стоит денег.

CAVEAT: преобразование виртуальной машины создаст новый MAC-адрес для любых сетевых адаптеров. Большинство гостевых ОС интерпретируют это как новое устройство.

Джоэл Э Салас
источник
1
Отличное замечание о MAC-адресах.
Джеймс Барнетт
3

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

Видар
источник
2
Это неверно проверено с помощью du -h .Thin стало толстым при копировании в уже созданную папку в том же хранилище данных. cp C* ../newdir
Роуэн Хокинс
0

Я хотел бы скопировать файл, а затем преобразовать в тонкий через vmkfstools.

Джим Б
источник
Размер хранилища данных назначения на самом деле меньше исходного. У меня недостаточно места, чтобы скопировать толстый файл.
Ewwhite
В этом случае копирование и восстановление не будут работать, но вы также можете использовать vmkfstools для клонирования его непосредственно в место назначения. Это также сократит время, необходимое для его передачи, так как оно не переносит лишние гигабайты в ноль. Мой ответ содержит подробности о том, как это сделать.
ohaal