ISP`s IT Аутсорсинг
Быстрый переход: Главная блога Главная сайта Форум
Если Вы чего то недопоняли или не нашли - задайте
вопрос на нашем форуме и мы попробуем Вам помочь.
Subnets.ru Регистрация IP и Автономных систем mega-net.ru

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

Давно хотели попробовать (модную нынче) виртуализацию, когда на одном физическом сервере располагается более одной системы и вот как раз такой случай.

На просторах тырнета с помощью гугла была найдена статейка «Ставим VirtualBox на FreeBSD без использования X11«, собственно хорошая статья для старта разборок с виртуализацией.

Приведу копию статьи с моими дополнениями после нее.

Текущая актуальная версия порта VirtualBox — 3.2.4. Начиная, с 3.1.0 версии порт разбит на два: virtualbox-ose-kmod (модули ядра) и virtualbox-ose (сам virtualbox).

 

В текущей версии порта решена проблема с установкой VirtualBox без X11 и со встроенным vnc сервером. Поэтому процесс установки сводится к стандартным действиям.
Действия по шагам:
# cd /usr/ports/net/libvncserver
# make
# make install
# cd /usr/ports/emulators/virtualbox-ose-kmod
# make
# make install

После этого ставим непосредственно VirtualBox:
# cd /usr/ports/emulators/virtualbox-ose
# make config

далее, выбираем нужные нам опции:

# make
# make install

Добавляем загрузку модуля VirtualBox и запуск скрипта для возможности работы адаптера виртульной машины в bridge-режиме (без нее — только NAT):
# echo ‘vboxdrv_load=»YES»‘ >> /boot/loader.conf
# echo ‘vboxnet_enable=»YES»‘ >> /etc/rc.conf

Чтобы лишний раз не перезагружаться, вручную грузим модуль и скрипт:
# kldload vboxdrv
# /usr/local/etc/rc.d/vboxnet start

Создание и настройка виртуальной машины

 

Создаем виртуальную машину (посмотреть все возможные ostype: VBoxManage list ostypes)

# VBoxManage createvm --name MicroXP --ostype WindowsXP --register --basefolder /usr/vbox

Задаем парамерты виртуалки (bridgeadapter1 указывает адаптер хоста, к которому привязываем виртуалку)

# VBoxManage modifyvm MicroXP --memory 512 --floppy disabled --audio none --nic1 bridged --bridgeadapter1 em0 --vram 4 --accelerate3d off --boot1 disk --acpi on --cableconnected1 on

Создаем жесткий диск, размер указывается в мегабайтах

# VBoxManage createhd --filename /usr/local/vbox/iso/MicroXP.vdi --size 1000 --register

Создаем контроллер на виртуалке

# VBoxManage storagectl MicroXP --name "IDE Controller" --add ide

Подключаем диск к контроллеру

# VBoxManage storageattach MicroXP --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /usr/local/vbox/MicroXP.vdi

Подключаем установочный образ к контроллеру

# VBoxManage storageattach MicroXP --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /usr/local/vbox/MicroXP-v0.82.iso

Устанавливаем загрузку с установочного образа

# VBoxManage modifyvm MicroXP --boot1 dvd

Далее, запускаем машину и указываем ей параметры vnc:

# VBoxHeadless -s MicroXP -n -m 5900 -o password

Подключаемся любым vnc-клиентом (например, RealVNC или UltraVNC) и ставим ОС.

—————————————————

Добавлено 24.01.2013

Внимание.

Virtualbox с версии 4.2 изменил работу виртуалок с VNC. Теперь вместо ключа -n нужно запускать так:

# VBoxManage setproperty vrdeextpack VNC
# VBoxManage modifyvm MicroXP --vrdeproperty VNCPassword=password
# VBoxManage modifyvm MicroXP --vrdeauthlibrary null
# VBoxManage modifyvm MicroXP --vrdeport 5900
# VBoxHeadless --startvm MicroXP

Ссылки:

—————————————————

Затем нужно поставить guest additions в виртуалку, без них vnc сервер иногда глючит:

# VBoxManage storageattach MicroXP --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /usr/local/lib/virtualbox/additions/VBoxGuestAdditions_3.2.4.iso

После этого, виртуальная машина готова к использованию.

Правда, несмотря на установленные guest additions, заставить работать курсор мыши мне не удалось.

—————————

Мои дополнения/заметки

Вышеописанным способом мне удалось установить две виртуальные машины с OS:

  1. FreeBSD 8.1 — в кач-ве сервера
  2. Windows XP — в кач-ве клиента

Запускать с vnc нужно тогда когда необходим доступ к консоли сервера, т.е. получается как удаленная KVM.
Если нужно просто запустить уже готовую и настроенную виртуальную машину, то пользуем:

# VBoxManage startvm MicroXP --type headless

Останавливаем виртуальную машину  через acpi:

# VBoxManage controlvm MicroXP acpipowerbutton

или более жестко:

# VBoxManage controlvm MicroXP poweroff

Выставляем hdd как загрузчик, послее того как установили OS:

# VBoxManage modifyvm MicroXP --boot1 disk

Отцепить установочный диск:

 # VBoxManage storageattach MicroXP —storagectl «IDE Controller» —port 1 —device 0 —medium none

Просмотр всех запущенных машин:

# VBoxManage list runningvms

Просмотр всех зарегистрированных машин:

# VBoxManage list vms

Просмотр информации о виртуальной машине:

# VBoxManage showvminfo MicroXP

Backup

Бекап виртуальных машин можно сделать через команду export, перед выполнением команды export необходимо выключить виртуалку или поставить сделать сохранение состояния:

Выключение:

# VBoxManage controlvm MicroXP poweroff
Сохранение состояния:
# VBoxManage controlvm MicroXP savestate

После чего можно выполнить export:

# VBoxManage export MicroXP -o /usr/WinXP.ovf

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

Недавно я заморочился над темой автоматического резервного копирование виртуальных машин Virtualbox, чтобы они сами ежедневно бекапились. Почитал в Инете каждый «во что горазд» делает. Кто то через export, кто то через clonehd, а кто то через snapshot.

Поразмыслив я для себя все же остановился на варианте с export. Для выполнения задачи резервного копирования виртуальных машин Virtualbox я накатал скрипт на PERL, который запихнул в /etc/crontab OS FreeBSD.

Кому интересно, то вот исходник скрипта для backup`а всех запущенных виртуальных машин: http://subnets.ru/files/virtualbox_backup.pl.txt

Что делает скрипт автоматического backup`а для virtualbox машин:

  • получает листинг всех запущенных виртуальных машин, которые и будут подвергаться бекапу
  • создает директорию для backup`а: /some/path/backup/год/месяц/день/имя_виртуальной_машины
  • создает в backup дире файл readme.txt куда помещает вывод команды showvminfo по бекапируемой виртуалке
  • выполняет savestate виртуальной машины
  • выполняет export виртуальной машины
  • выполняет запуск виртуальной машины
  • после завершения бекапирования всех запущенных машин, скрипт выполняет удаление папки с бекапом месячной давности

Import

Импорт виртуальных машин:
Может понадобиться или при восстановлении из backup`а или просто при переносе на другой физический сервер.
По умолчанию каталог для хранения виртуальных машин является home каталогом юзера под котором вы вошли в систему, чтобы изменить местоположение выполним:

# mkdir -p /usr/vbox/machines
# mkdir /usr/vbox/hdd
# VBoxManage setproperty machinefolder /usr/vbox/machines
# VBoxManage setproperty hdfolder /usr/vbox/hdd

Сначала проверим как оно импортнется:

# VBoxManage import /usr/WinXP.ovf --dry-run

Если все ОК, то теперь можно импортить:

# VBoxManage import /usr/WinXP.ovf

Отныне все виртуалки будут «жить» в каталоге /usr/vbox.

Добавить ещё сетевуху можно командой:

# VBoxManage modifyvm MicroXP --nic2 bridged --bridgeadapter2 vlan4 --cableconnected2 on

Этим мы добавили вторую сетевую карту, забриджевали её с vlan4 на реальном сервере.
Все последущие карты добавляются/изменяются/удаляются так же с указанием —nicX, где X это номер карты

Махнуть MAC-адрес на втором адаптере можно командой:

# VBoxManage modifyvm MicroXP --macaddress2 auto

MAC-адрес будет выбран автоматически, либо можно самому задать мак:

# VBoxManage modifyvm MicroXP --macaddress2 444444444444

Удалить любую сетевуху из виртуалки можно по её номеру, мы удалим вторую, которую создали выше:

# VBoxManage modifyvm MicroXP --nic2 none

Проблем или отличий в работе виртуальной машины и реальной я не заметил. Все работает как надо.

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

Например мы собирали тестовый стенд из 3-х виртуалок и гоняли на них BGP с использованием Quagga.

—————————

Добавлено 24.01.2013

Внимание. Virtualbox с версии 4.2 инсталит свои модули в папку с ядром /boot/kernel вместо папки /boot/modules:

# ls -la /boot/kernel/vbox*
-r-xr-xr-x  1 root  wheel  243579 24 янв 17:38 /boot/kernel/vboxdrv.ko
-r-xr-xr-x  1 root  wheel  639853 24 янв 17:38 /boot/kernel/vboxdrv.ko.symbols
-r-xr-xr-x  1 root  wheel    9075 24 янв 17:38 /boot/kernel/vboxnetadp.ko
-r-xr-xr-x  1 root  wheel   48281 24 янв 17:38 /boot/kernel/vboxnetadp.ko.symbols
-r-xr-xr-x  1 root  wheel   23080 24 янв 17:38 /boot/kernel/vboxnetflt.ko
-r-xr-xr-x  1 root  wheel   76126 24 янв 17:38 /boot/kernel/vboxnetflt.ko.symbols

Поэтому если вы апгрейднули версию Virtualbox и у вас полезли ошибки такого плана:

# /usr/local/etc/rc.d/vboxnet start
/usr/local/etc/rc.d/vboxnet: WARNING: Can't load vboxnetflt module.

А в /var/log/messages у вас появилось:

kernel: link_elf: symbol ng_free_item undefined

То вам необходимо:

  • выгрузить vboxdrv.ko если он загружен: # kldunload vboxdrv.ko
  • пересобрать virtualbox-ose-kmod
  • загрузить vboxdrv: # kldload vboxdrv.ko
  • # /usr/local/etc/rc.d/vboxnet start

Если и это не помогает, то нужно пересобрать ядро, а потом снова повторить вышеописанную процедуру.

Пересбор ядра:

# cd /usr/src
# make kernel KERNCONF=YOUR_KERNEL_NAME

И с этого момента не забывайте, что если вы по какой то причине пересобирали ядро, то вам нужно после этого пересобирать и virtualbox-ose-kmod.

Ссылки:

—————————

Ссылки

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА ! Пожалуйста, уважайте чужой труд.

Автор: Николаев Дмитрий (virus (at) subnets.ru)

 

Похожие статьи:

    Не найдено

Прочитано: 28 290 раз(а)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 3, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

комментариев 9

  1. bondit сказал:

    Спасибо за статью, у меня вопрос, я правильно понял что с хоста без установленных иксов управлять гостем не получится?

  2. admin сказал:

    Смотря что ты подразумеваешь под «управлять гостем». О чем именно ты ?

  3. bondit сказал:

    Не правильно выразился, имелось ввиду работать в госте.

  4. admin сказал:

    Все равно не понимаю вопроса. Причем тут иксы и работа в гостевой ОС.
    Смотря какую ось ты установишь в госте.
    Если это винда, то ответ как ты собираешся ей управлять без графического интерфейса у себя ?
    Если это *nix, где мона работать в консоле, то работай хоть из иксов, хоть без иксов.

  5. admin сказал:

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

  6. bondit сказал:

    Спасибо

  7. truf сказал:

    ребят, помогите кто понимает в vbox http://forum.lissyara.su/viewtopic.php?f=53&t=39609&p=348608#p348608
    настраиваю виртуалки всегда по вашей статье

  8. truf сказал:

    мой вопрос можно удалить, проблема решена там — же

  9. admin сказал:

    >ребят, помогите
    В блоге подобное обсуждать не очень удобно, создай топик на нашем форуме и приложи вывод vboxmanage showvminfo VMNAME

    >http://forum.lissyara.su/viewtopic.php?f=53
    Исходя из вывода ifconfig хостовой тачки и настроек и вывода ifconfig на виртуалке: ты кажись сетку попутал на em0 виртуалки. Она ж смотрит в 23 влан, а там 192.168.5.0/24 сетка, а на твоем скрине там реальник какой то болтается.

    >проблема решена
    именно это я и хотел предложить

Добавить комментарий

Вам следует авторизоваться для размещения комментария.