Миграция с виртуальной машины (ВМ) на физическую систему


124

Aka: Как я могу преобразовать .vdi или .vmdk в реальную установку на физическом диске?

Возможно ли / возможно ли выполнить установку виртуальной машины Ubuntu на физическую машину? Если возможно, насколько сложно это будет выполнить и какие шаги мне нужно предпринять, чтобы подготовиться к миграции.

Я хотел бы провести некоторое тестирование на виртуальной машине и, если она сработает, перенести эту систему на физическое оборудование вместо переустановки всего. Это возможно?


Ответы:


98

Да, это возможно. Это даже не что трудно, он просто занимает некоторое время, в Ubuntu LiveCD, липкие обратно-пластик, и внешний USB - диск (если вы не имеете более одного внутренних дисков).

Предварительный шаг: преобразовать диск во что-нибудь полезное

И VMWare, и VirtualBox (среди прочих) используют форматы дисков, которые плохо поддаются записи непосредственно на диск. Вы можете, но я лично чувствую, что сначала удобнее написать его в промежуточный стандартный образ. Вы можете сделать это из вашей текущей системы, не загружаясь с LiveCD.

  • Загрузите терминал и запустите:

    cd /media/wherever-the-image-is/
    
    # for VMWare
    sudo apt-get install qemu-kvm
    qemu-img convert your-vmware-disk.vmdk -O raw disk.img
    
    # For VirtualBox
    VBoxManage clonehd your-virtualbox-disk.vdi disk.img --format RAW
    
  • Переместитесь /media/wherever-the-image-is/disk.imgтуда, куда вы не собираетесь писать. Если вы планируете записать его на тот диск, на котором он в данный момент находится, вам нужно поместить его на отдельный внутренний диск или, в худшем случае, на внешний диск.

  • Следующие инструкции предполагают, что вы переместили его /media/dave/disk.img( daveэто внешний USB-диск)

  • Прежде чем приступить к серьезным работам, убедитесь, что у вас есть резервные копии . Это клише, но это опечатка, и есть реальная возможность, что вы уничтожите свою систему. Предположим, что все пойдет не так и будьте готовы. CloneZilla может помочь вам сделать целые резервные копии диска, если у вас есть место для хранения этих данных.

Запишите образ на свой собственный диск

Вы хотите сделать что-то вроде этого. Это предполагает, что вы собираетесь перезаписать весь диск. Если вы хотите выполнить установку вместе с Windows, не следуйте этим инструкциям! Пропустить после пуль.

  • Загрузитесь с Ubuntu Live CD и нажмите «Попробовать Ubuntu».

  • Смонтируйте место, где хранится образ vmdk (например, внешний USB-диск как /media/dave). Вы не установите место , где вы хотите написать.

  • Тогда мы идем на работу:

    sudo dd if=/media/dave/disk.img of=/dev/sdX
    

    Вы хотите заменить sdXправильный путь к целевому диску. sudoПустой пароль, просто нажмите кнопку возврата.

  • Затем вы можете открыть gpartedили что-то еще, и вы должны увидеть свой раздел Ubuntu, сидящий на диске. Вы должны быть в состоянии расширить его.

Запишите образ на диск вместе с другой операционной системой

Это, возможно, совершенно безопасный способ ведения дел. Идея очень похожа, за исключением того, что вы делаете правильную установку Ubuntu, а затем просто синхронизируете файлы из disk.img.

  • На этот раз ваш LiveCD должен быть той же версией Ubuntu, что и ваша виртуальная установка. Загрузитесь с Live CD и снова нажмите «Установить».

  • Следуйте инструкциям установщика, переделайте вещи так, как считаете нужным. Примерно через 10 минут вы будете установлены, и он попросит вас перезагрузиться. Не перезагружайся. Не имеет значения, случайно ли вы это сделали, просто убедитесь, что вы вернулись в LiveCD для следующих инструкций.

  • Смонтируйте раздел новой установки и внешний диск, на котором вы сохранили disk.imgранее (просто дважды щелкните их в nautilus).

  • Смонтируйте ваш disk.img ISO в терминал:

    sudo mkdir /media/oldinstall
    sudo mount -o loop /media/dave/disk.img /media/oldinstall
    

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

    «Подпись NTFS отсутствует. Не удалось смонтировать '/ dev / loop0': неверный аргумент. У устройства '/ dev / loop0', похоже, нет действительной NTFS."

    Файл .img иногда содержит основную загрузочную запись и таблицу разделов перед фактическим разделом, который вы, возможно, захотите смонтировать. Следовательно, вам необходимо выяснить смещение требуемого раздела. Для этого можно использовать расставался инструмент. Для примера посмотрите ответ sisco311 в этой ссылке http://ubuntuforums.org/archive/index.php/t-1576011.html.

    Итак, если вы определили, что смещение равно «xxx», вы можете смонтировать раздел с помощью

    sudo mount -o loop,offset=xxx /media/dave/disk.img /media/oldinstall
    
  • Оттуда вы можете либо выбрать файлы Cherry-Pick, либо просто скопировать все поверх вашей новой установки Ubuntu, используя что-то вроде:

    sudo rsync /media/oldinstall/ /media/my-new-install/
    
  • Перезагрузитесь, и вы должны встретиться со своей старой установкой VMWare, но на голом железе. Если у вас возникают неприятные проблемы с загрузкой , вы можете исправить это, вернувшись к Live CD, исправляя ошибки и исправляя ошибки .


7
Вы знаете инструмент, который делает это автоматически?
the_drow

1
Для установок в Windows / VirtualBox VBoxManage internalcommands converttoraw your-virtualbox-disk.vdi /dev/sdXкоманда все равно будет работать. Все, что нужно, это перейти на CD Program Files\Oracle\VirtualBoxперед запуском первой команды.
Aust

2
@ Я сомневаюсь, что /dev/sdXэто правильная цель в Windows. AFAIK это будет \\Device\Harddisk0или что-то вроде этого.
Данатела

3
VBoxManage internalcommands converttoraw your-virtualbox-disk.vdi /dev/sdXне работает В Linux это дает ошибку: VBoxManage: error: Cannot create destination file "/dev/sdX": VERR_ALREADY_EXISTS. Необходимо VBoxManageсначала использовать команду для отправки изображения. Затем используйте DD, чтобы поместить образ на физический диск.
Л.Д. Джеймс

8

Может быть, это не совсем то, что вы просите, но это может выполнить то, что вы хотите сделать.

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

Вы можете использовать действительно аккуратную программу резервного копирования под названием Déjà Dup .

Информация от программного центра Ubuntu:

Déjà Dup - это простой инструмент для резервного копирования. Он скрывает сложность резервного копирования «Правильный путь» (зашифрованный, удаленный и обычный) и использует дублирование в качестве бэкэнда.

Функции:

  • Поддержка локальных, удаленных или облачных резервных копий, таких как Amazon S3 или Rackspace Cloud Files

  • Надежно шифрует и сжимает ваши данные

  • Инкрементное резервное копирование, позволяющее восстанавливать из любой конкретной резервной копии

  • Графики регулярного резервного копирования

  • Хорошо интегрируется в ваш рабочий стол GNOME

введите описание изображения здесь

Вы будете сделаны менее чем за два часа!

удачи!


1
Звучит просто. Можно ли подтвердить, что это действительно так работает?
Матенг

среди прочего .... UID (номера пользователей) может быть другим в тот момент.
Томачи

5

Попробуйте UDPCast

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

Процедура изложена ниже.

Поскольку у вас есть файл vmdk, в вашем распоряжении может быть рабочая станция VMWare, даже полная виртуальная машина, к которой подключен vmdk. Запустите вашу виртуальную машину с этим конкретным подключенным vmdk, но вместо обычной загрузки используйте PartedMagic liveCD для загрузки.

Когда LiveCD запущен, перейдите в главное меню и найдите UDPCast Disk Cloning. Его диалоги не требуют пояснений (см. Скриншот) Начальный экран UDPCast Disk Cloning

После выбора этой виртуальной машины senderвы должны выбрать, какой диск вы хотите транслировать (используя нотацию Unix, например / dev / sda).

После того, как вы начали sender, вам также нужно начать receiver. Поскольку у вас есть физический жесткий диск, я полагаю, у вас также есть полный компьютер с этим жестким диском. То же самое и здесь: вам нужно запустить liveCD, UDPCast Disk Cloningвыбрав receiverэто время и соответствующий физический жесткий диск.

Стоит отметить, что вы должны принять все необходимые меры для обеспечения сетевого подключения между вашей виртуальной машиной и физическим оборудованием. Вы должны принять необходимые меры предосторожности, если ваш vmdk содержит личные данные, поскольку его содержимое будет эффективно передаваться по вашей сети. Другое дело, что ваш целевой жесткий диск должен иметь не меньшую емкость, чем емкость вашего vmdk. Это очевидно, но также стоит отметить, что ваше изображение размещено один на один на целевом жестком диске, и вам необходимо выполнить подходящие операции с gparted или чем-то подобным, чтобы использовать большую емкость нового жесткого диска.


Хочу отметить, что этот метод действительно прост и относительно прост в исполнении. А именно, единственный подготовительный шаг, который вам нужно сделать, это подготовить ваш LiveCD с UDPCast на нем или любым другим LiveCD, которого достаточно для загрузки и запуска UDPCast. Если у вас есть некоторый виртуальный образ HD, вы определенно использовали его на виртуальной машине, которая уже настроена и готова, с другой стороны, вы подготовили свою физическую систему, и она также готова к выполнению задачи.
PF4Public

Более того: UDPCast может быть запущен напрямую из PXE. udpcast.linux.lu/bootloader.html#pxe
PF4Public

4

Если у вас установлен VirtualBox, вы можете преобразовать файл VDI (образ диска VirtualBox) в формат IMG с помощью VBoxManageкоманды, а затем скопировать на физический диск, например

VBoxManage clonehd --format RAW file.vdi file.img

Затем вы можете использовать ddкоманду для копирования файла в физический раздел:

dd if=./file.img of=/dev/<partition_here>

Примечание: используйте sudo, если требуется. Будьте внимательны при указании правильного устройства в / dev.


0

Если у вас есть новый физический диск, подключенный к машине, на которой находится виртуальный диск виртуальной машины, вы можете преобразовать VDI в физический без промежуточного преобразования, что, вероятно, сэкономит кучу времени и дискового пространства. Предполагается, что ваш физический диск такой же или больше максимального размера виртуального диска. В моем случае целью было преобразовать VDI в ZFS zol, но подход должен быть одинаковым с любым блочным устройством.

Сначала создайте файл VMDK, указывающий на ваше блочное устройство:

VBoxManage internalcommands createrawvmdk -filename physical.vmdk -rawdisk /dev/sdX

Затем (с выключенной виртуальной машиной!) Вы можете клонировать VDI в VMDK:

VBoxManage clonemedium --existing virtual.vdi physical.vmdk

Это займет некоторое время ... Когда это будет сделано, вы можете удалить файл VMDK, поскольку он использовался только в качестве указателя для VirtualBox для поиска физического устройства.

В моем случае новый zvol был точно такого же размера, как и виртуальный диск. Учитывая, что ваш физический диск, вероятно, отличается, вам нужно использовать какой-то механизм изменения размера раздела, чтобы заполнить весь диск. Gparted или что-то, возможно. Вы должны быть в состоянии указать это на физическом устройстве / dev / sdX, пока оно еще подключено к машине с виртуальной машиной, чтобы вам не приходилось прибегать к загрузочным компакт-дискам на физическом хосте.

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

В случае , если вы хотите продолжать использовать физический диск с VirtualBox, держать VMDK вокруг, и использовать VBoxManage storageattachдля подключения к виртуальной машине.


Похоже, что это работает, но данные как-то повреждаются, и ОС не загружается должным образом.
Сардж Борщ
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.