Копирование работающего физического сервера в виртуальный ящик

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

  • dd, записывая весь жесткий диск в виде необработанного образа на моем компьютере и затем создавая VDI из необработанного изображения dd.
  • Установка той же версии Ubuntu, установка обновления и монтирование VDI локально и rsync файловой системы с сервера на подключенный VDI, создавая логическую копию сервера.

Решение rsync немного сложнее, но, похоже, экономит полосу пропускания и позволяет мне создавать «копию» сервера с немного другой конфигурацией (например, меньший диск).

Какой, по вашему мнению, лучший способ сделать это? Один из вышеперечисленных методов? Другой?

7
задан 28 December 2012 в 16:09

2 ответа

Использование rsync напрямую оказалось более проблематичным, чем я думал:

  1. Команда должна быть запущена от имени пользователя root на удаленной машине.
  2. Я не отключил удаленный вход в систему.
  3. Файловая система основана на LVM, и было очень сложно смонтировать фактический корневой раздел виртуальной машины изнутри LVM в файле VDI.

По этим причинам я завершил двухэтапный процесс:

  1. Скопируйте все файлы с удаленного компьютера на локальный хост-компьютер.
  2. Скопируйте файлы гостю.

Я наконец-то выбрал базовый tar, хотя мог бы использовать rdiffdir, предоставленный duplicity, чтобы сэкономить некоторую пропускную способность.

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

local$ ssh user@remote -R 3000:localhost:3000
loacl$ nc -l 3000 > filesystem.tar.gz
remote$ sudo tar -vcz / --exclude={/dev,/proc,/sys,/tmp} | nc localhost 3000

Это создало архив tar всей файловой системы на моем локальном хост-компьютере. Следующим шагом было распаковать его в гостевой системе:

guest$ cd /
guest$ nc -l 3000 | sudo tar -xvz
local$ nc guest_ip 3000 < filesystem.tar.gz 

В моем случае /etc/fstab ссылались на файловые системы по их UUID, поэтому мне пришлось обновить его с выводом guest$ sudo blkid. Мне также пришлось обновить сетевые настройки в /etc/udev/rules.d/70-persistent-net.rules (имена интерфейсов) и /etc/network/interfaces (IP-адреса).

0
ответ дан 28 December 2012 в 16:09

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

Установка сервера Ubuntu 10.04 в VDI только для того, чтобы иметь возможность копировать существующую установку, также на самом деле не нужна (но это может сэкономить часть полосы пропускания).

Позвольте мне предложить следующий подход:

  • Создать виртуальную машину с пустым виртуальным жестким диском нужного размера.
  • Загрузите виртуальную машину с любой live (Ubuntu) системой из файла .iso.
  • Разбейте жесткий диск (включите флаг загрузки и отформатируйте в той же файловой системе, что и на старом сервере).
  • Смонтируйте этот раздел в вашей среде.
  • Скопируйте все файлы со старого сервера в еще пустой раздел вашей виртуальной машины

    rsync -avze ssh user@host:/ /<mountpoint>
    
  • Установите Grub соответственно. Grub2 к MBR теперь заполненного диска VDI.

  • Перезагрузка.
0
ответ дан 28 December 2012 в 16:09

Другие вопросы по тегам:

Похожие вопросы: