
У меня есть «набор» из 5 виртуальных машин, которые я хотел бы создать, все они — гостевые ОС Ubuntu Server 12.04, но с радикально разными программными стеками поверх ОС (один сервер — это «сервер сборки» с установленными на нем Subversion, Hudson и т. д.; другой сервер — это сервер приложений с JBoss и т. д.).
Установка и настройка Ubuntu Server занимает несколько часов. Если это вообще возможно, я бы хотел сделать это только один раз (чтобы получить «базовую» версию ОС, установленную на виртуальной машине), а затем скопировать эту «базу» на остальные 4. Таким образом я экономлю 2–3 часа на каждой машине и просто должен сосредоточиться на установке и настройке приложений для каждого сервера.
Когда я создаю виртуальную машину, я вижу три созданных файла:
my-vm.vbox
- Я предполагаю, что это виртуальная машина.my-vm.vbox-prev
- Понятия не имею, что это такое.my-vm.vdi
- Я предполагаю, что это тот самый диск, на котором установлена гостевая ОС (моя «база»).
К сожалению, я уже создал все 5 виртуальных машин и сейчас устанавливаю Ubuntu Server на первую из них, поэтому моя настройка выглядит следующим образом:
build-srv.vbox
,build-srv.vbox-prev
,build-srv.vdi
(VDI инициализирован, но в нем ничего нет)app-srv.vbox
,app-srv.vbox-prev
,app-srv.vdi
(то же самое, инициализировано, но без ничего внутри)- и т.д... (для всех 5)
Я занимаюсь установкой Ubuntu Server на сервере сборки ( build-srv
). Янадеясьчто как только я закончу, вся эта информация о конфигурации будет просто храниться в build-srv.vdi
. Теоретически, ядолженможно просто скопировать и вставить build-srv.vdi
на каждый из других серверов и поменять их соответствующие VDI, верно?
Я уверен, что мне также придется зайти в настройки виртуальной машины и как-то изменить VDI, но я даже не уверен, на правильном ли я пути.
Возможно ли то, что мне нужно? Если да, что мне нужно сделать, чтобы настроить каждую виртуальную машину с той же копией экземпляра ОС, в которой я сейчас нахожусь? Если нет, какие у меня есть варианты (кроме повторения той же двухчасовой установки для каждой виртуальной машины!)? Заранее спасибо!
решение1
Каждый файл VDI содержит идентификатор в форме UUID.
Virtualbox записывает эти UUID в базу данных и отказывается использовать VDI, который вы только что скопировали (но это нормально на другом компьютере, потому что он ничего не записывает об этом UUID).
Я знаю 2 метода:
- скопировать VDI (с помощью файлового менеджера или командной строки), затем использовать vboxmanage internalcommands sethduuid "path/yourdisk.vdi"
и у вас будет совершенно новый UUID для этого VDI
- или использовать Virtualbox mediamanager (в меню). Выберите диск, который вы хотите скопировать... и нажмите кнопку "копировать". Это сделает то же самое с легкостью
my-vm.vbox
- это XML-файл, описывающий VM. Вы можете открыть его с помощью текстового редактора или веб-браузераmy-vm.vbox-prev
- это резервная копия my-vm.vboxmy-vm.vdi
- это виртуальный диск
edit: эта copy
функция, похоже, присутствует только в Windows. На моем Linux-боксе ее нет, на моем Windows-боксе она есть
решение2
То, что вы, возможно, ищете, этомультиприсоединениережим диска — который можно применить после создания и настройки исходного образа диска. Затем вы можете использовать его в качестве ядра для нескольких виртуальных машин, и у каждой будет свой собственный образ разности на основе оригинала — копирование или клонирование не требуется. Пожалуйста, ознакомьтесь с документацией по адресу:http://www.virtualbox.org/manual/ch05.html#hdimagewrites