Vbox
Статья устарела! Актуальная информация тут
https://wiki.office.etersoft.ru/Vbox
Система централизованного доступа к виртуальным машинам VBox
Данный комплект программ позволяет организовать централизованный сервер с множеством виртуальных машин и обеспечить доступ к нему клиентам локальной сети. Клиенты подключаются либо через протокол SSH (X forwarding), либо с помощью NX к главному серверу, на котором содержатся виртуальные машины. После запуска все виртуалки выполняются на сервере, клиенты же получают графическое окно машины.
Преимущество данного подхода по сравнению с содержанием множества виртуальных машин состоит в централизованном хранении, возможности использования машин на слабых компьютерах, а благодаря использованию протокола NX - экономии траффика по сравнению с простым запуском машин по SSH.
Установка сервера
Для начала вам потребуется установить сам VirtualBox (пакеты можно найти на официальном сайте). Вам так же потребуется установленный и настроенный RX-сервер для того, чтобы пользователи могли получить доступ к графической части vbox. Подробнее смотрите на этой странице.
После настройки RX на сервере и установки VirtualBox, установите так же пакет vbox-server отсюда. В вашей системе появится специальный пользователь vboxuser, от имени которого будут выполняться все виртуальные машины. Сразу после установки задайте для него пароль и добавьте его в группу vboxusers:
passwd vboxuser usermod -G vboxusers vboxuser
Виртуальные машины будут храниться в каталоге /var/lib/vbox/home/.
Для того, чтобы другие пользователи имели возможность запускать виртуальные машины от имени vboxuser, добавьте в ваш /etc/sudoers такую строку:
#includedir /etc/sudo.d
Залогиньтесь в систему от имени vboxuser и запустите команду VirtualBox. Выполните первые настройки программы.
Конфигурационные файлы находятся в каталоге /etc/vbox сервера. В файле /etc/vbox/vbox.conf прописаны параметры для соединения по умолчанию:
VBOX_USER="vboxuser" # имя пользователя, от которого выполняются виртуальные машины VBOX_HOST="virtualbox" # имя хоста сервера, измените значение на IP или другое имя, если требуется в вашей сети VBOX_SSH_PORT="22" # порт подключения по SSH для пользователей виртуальных машин и vboxuser`а VBOX_SSH_OPTIONS="-C -o CompressionLevel=3" # опции соединения ssh VBOX_NXCLIENT="nxclient" # имя клиента для nx (для клиентов) VBOX_NXCLIENT_CONFIG="/etc/vbox/vbox.nxs" # путь к конфигу клиента NX, этот файл выкачивается клиентами при первом запуске VBOX_PROTOCOL="nx" # протокол по умолчанию, nx или ssh DHCP_HOST="server" # имя хоста dhcp-сервера DHCP_SSH_PORT="32" # порт dhc-сервера для ssh DHCP_CONFIG="/etc/dhcp/dhcpd.d/192.168.0.0.conf" # путь к конфигу dhcp на соответствующем сервере, необходим для получения сетвеой информации о виртуалках.
В файле /etc/vbox/vbox.nxs описаны параметры соединения по протоколу NX. Соответствующие секции отредактируйте (для изменения сетевого имени сервера или порта ssh).
Вам так же потребуется настроить DNS и DHCP для удобства работы с виртуальными машинами в сети. Одноименные пользователи сервера virtualbox должны иметь доступ и к серверу DHCP (с таким же именем и паролем). Хотя вообще, можно использовать ssh-ключи (рекомендуется).
Настройка клиентов
На клиенте сгенерируйте ключи ssh и скопируйте их на сервер dhcp и virtualbox:
ssh-keygen -t dsa ssh-copy-id virtualbox ssh-copy-id vboxuser@virtualbox ssh-copy-id server
На каждого клиента установите пакет vbox-client. Затем выполните первый запуск программы:
vbox
Эта команда скачает все конфигурационные файлы для клиента с сервера, по умолчанию - virtualbox. Если в вашей сети используемые параметры отличается от тех, что стоят по умолчанию, вы можете запустить клиента с установленными переменными окружения имени хоста и порта:
env VBOX_HOST="my-vbox-server" VBOX_SSH_PORT="32" vbox
Далее программа попытается соединиться с сервером согласно параметрам конфигурации. Запущенная без параметров, она выведет главное окно программы VirtualBox, где вы можете выбрать и запустить любую из доступных виртуальных машин.
Использование параметров командной строки
Команда vbox имеет несколько параметров, краткую справку по которым вы можете получить, запустив vbox -h.
Параметр --list выводит список всех доступных на данный момент виртуальных машин:
vbox --list
По умолчанию vbox соединяется с сервером virtualbox по протоколу NX (параметр --nx). Доступна так же связь с помощью протокола SSH (параметр --ssh), в случае, если NX не работает. Например, показ главного окна программы вызывается так:
vbox --ssh
Для удаленной работы с виртуальными машинами существует ряд параметр, которые позволяют запускать, останавливать, перезагружать и сохранять состояние виртуальных машин. Машины запускаются без графического окна, к ним можно получить доступ либо через ssh, либо через удаленный дисплей. Каждая виртуальная машина имеет уникальный идентификатор - UUID, служащий для доступа к виртуальной машине. Для этого так же можно использовать имя машины.
Команда start позволяет запустить виртуальную машину в фоновом режиме:
vbox start UUID
Команда stop останавливает виртуальную машину отключением питания. Команду следует использовать осторожно, так как она приводит к результату, аналогичному выдергиванию штепселя из розетки:
vbox stop UUID
Команда restart вызывает перезагрузку, аналогичную резету для машины:
vbox restart UUID
Команда sleep сохраняет статус виртуальной машины на текущем месте (т.е. со всеми выполняющимися программами). Похоже на suspend to ram, только работает вне ядра машины:
vbox status UUID
При использовании виртуальных машин следует помнить несколько правил.
- Невозможно запустить в headless-режиме машины, если ранее их состояние было сохранено из графического сеанса. Это ошибка VirtualBox.
- Если вам понадобилась именно сохраненная машина, есть два решения проблемы. Первое - восстановите сеанс самостоятельно из графики или спишитесь с тем, кто работал с машиной последним. Второй вариант, грозящий потерей данных - вы сбрасываете состояние машины командой stop. Результат равносилен выдергиванию компьютера из розетки.
Инструкция по установке новой ОС в VirtualBox
Новую виртуальную машину проще всего создать из графической оболочки VirtualBox.
- Нажимаете кнопку "Создать". Следуете инструкциям "Мастера установки ВМ".
- Свойства машины задаются следующим образом:
- "Сеть->Тип подключения" должен быть тип "Сетевой мост" и "Имя: eth0" (или тот интерфейс, которым virtualbox соединяется с внешним миром).
- Устанавите ОС.
- Сетевые настройки машина должна получать по DHCP.
- После завершения установки ОС нужно поставить драйвера для виртуального оборудования. Это делается через виртуальный CD-диск, который монтируется через меню окна машины: "Устройства->Установить дополнения гостевой ОС".
- В конфигурационный файл DNS и DHCP серверов добавьте информацию о новом хосте с определенным MAC-адресом (посмотреть его можно в свойствах машины). Запись для конфигурации DHCP должна выглядеть следеющем образом:
host vm-name { hardware ethernet XX:XX:XX:XX:XX:XX; fixed-address 192.168.0.200; } # virtualbox systems
Запись должна быть выполнена в одну строку и содержать обязательный комментарий "virtualbox systems".
Удалённое использование VBox
Для использования виртуальных машин извне, достаточно стандартного vbox и ssh-доступа на пограничную машину из интернета (роутер вашей сети).
Сначала нужно пробросить порт из внутренней сети на локальную машину через интернет:
ssh -L localhost:2222:virtualbox:22 office
Затем запустите vbox с такими параметрами (в другой консоли, не по ssh-соединению, созданному выше):
env VBOX_HOST=localhost VBOX_SSH_PORT=2222 vbox
Затем исправьте в файле ~/.config/vbox.conf параметры соединения в соответствии с описанными выше (хост localhost, порт 2222). Для соединения через NX отредактируйте и файл ~/.nx/config/vbox.nxs длс задания хоста и порта подключения (соединение с NX идет по тому же порту, что и ваш проброшенный SSH). Так же можете пробросить порт для соединения с dhcp-сервером вашей локальной сети.
Автоматический запуск ВМ
Для автоматического (при загрузке сервера virtualbox) предусмотрен скрипт /etc/rc.d/init.d/vboxmachines. Он запускает от имени специального пользователя (vboxuser) виртуальные машины, по умолчанию описанные в файле /etc/vbox/vboxmachines.list. В этом файле должны быть записаны UUID машин, по одному на строчку, которые будут обрабатываться скриптом. Кроме того, существует конфигурационный файл скрипта - /etc/vbox/vboxmachines.conf. В нем можно описать различные параметры для запуска виртуальных машин. Ниже приведен список параметров со значениями по-умолчанию.
Пользователь, от имени которого будет запущена виртуальная машина:
VBOX_USER="vboxuser" # пользователь, от имени которого будет запущена виртуальная машина VBOX_MACHINES_LIST="/etc/vbox/vboxmachines.list" # список UUID для запускаемых виртуальных машин VBOX_SHUTDOWN_ACTION="acpipowerbutton" # действие для останова виртуальных машин. Основные полезные действия: acpipowerbutton, savestate, poweroff
VBOX_SHUTDOWN_TIMEOUT="30" # таймаут выключения машин
Для действий, которые лишь посылают сигнал для завершения машине, таких, как acpipowerbutton, нужен этот параметр. Он обозначает максимально время, которого виртуальная машина может отреагировать на сигнал завершения. По истечении этого срока статус виртуальной машины сохраняется и скрипт продолжает свою работу. Скрипт всегда ожидает завершения действия.
Скрипт поддерживает стандартные параметры.
Запуск всех машин:
# /etc/init.d/vboxmachines start
Останов всех машин:
# /etc/init.d/vboxmachines stop
Перезапуск машин:
# /etc/init.d/vboxmachines restart
Вывод списка запущенных машин:
# /etc/init.d/vboxmachines status
Автоматический запуск групп ВМ
Для группового управления автоматическим запуском ВМ скрипт /etc/init.d/vboxmachines принимает дополнительный аргумент - имя группы (например, GROUPNAME). Групповой запускт виртуальных машин описывается в файле /etc/sysconfig/vboxmachines.d/GROUPNAME.list. Конфигурационный файл группы - /etc/vboxmachines.d/GROUPNAME.conf.
Список UUID для группы виртуальных машин именем GROUPNAME:
VBOX_MACHINES_LIST="/etc/vbox/vboxmachines.d/GROUPNAME.list"
Настройки для групп виртуальных машин аналогичны настройкам глобального списка.
Скрипт поддерживает стандартные параметры.
Запуск всех машин группы:
# /etc/init.d/vboxmachines start GROUPNAME
Останов всех машин группы:
# /etc/init.d/vboxmachines stop GROUPNAME
Перезапуск машин группы:
# /etc/init.d/vboxmachines restart GROUPNAME
Вывод списка запущенных машин группы:
# /etc/init.d/vboxmachines status GROUPNAME