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

7

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

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

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

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

    
задан Guy 28.12.2012 в 12:09
источник

2 ответа

3

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

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

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

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

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

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

local$ ssh [email protected] -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-адреса).

    
ответ дан Guy 29.12.2012 в 19:33
источник
2

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

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

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

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

    rsync -avze ssh [email protected]:/ /<mountpoint>
    
  • Установите Grub соответственно. Grub2 в MBR уже заполненного VDI-диска.

  • Reboot.
ответ дан Takkat 28.12.2012 в 13:18