Виртуализация из консоли с помощью VirtualBox


== Преамбула ==

Офис в котором я сейчас работаю, достаточно маленький - у нас всего 40 компьютеров, 
2 локальных сети (проводная и wifi) и совсем нет сисадмина, т.к. для таких маленьких 
организаций, я считаю, он в принципе не нужен. Есть директор в моём лице, который 
немного понимает в компьютерах и умеет справедливо (с помощью squidGuard и pipes) 
раздавать интернет для нуждающихся и не очень. С сервером у нас ничего не происходит 
и работает он как космонавт на орбите - автономно. Я даже пароли к нему забываю - 
поэтому они у меня где-то записаны. Машинка кстати, совсем не мощная - лошадка-пони 
в виде Intel P6, а может и P5. На ней подняты разнообразные сервисы и конечно - 
автоматические бэкапы, так что если умрёт - не жалко, поставим другую. Но она не 
умирает уже 2 года, хотя электрики издеваются над ней время от времени.


== Амбула ==

Друзья-партнеры отдали в пользование двухпроцессорный сервер HP XEON DL360XXX с 4 Гб 
памяти на борту. На первый взгляд - зверь-красавец. Жаль, что дисков вставлено 
только 2 из 4-х возможных и те по 60-70 Гб. Да и свободных портов в патч-панели не 
было - оставшиеся несколько занимали сетевые принтеры. В результате, один принтер 
сделали несетевым, подключив сервер на его место. Оставался только вопрос - что с 
ним делать. Заменить "пони" на этого красавца - нет времени, да и пока работает себе 
машинка - нет необходимости что-то менять. Все и так идеально. Поэтому к новому 
серверу подключили терабайтные USB-диски, которые валялись у нас без дела и 
назначили файлопомойкой на базе Gentoo. Генту, к слову, ставилась с флешки из stage3 
- так как и описано в другой моей статье, обязательно почитайте. Но, всё же, сделать 
такой аппарат файлопомойкой было жестоко - у меня душа ночами плакала, когда я 
думал, что 99% вычислительных ресурсов сервака жили в состоянии idle.


== Идея ==

Поскольку у нас много программистов, потребляющих вычислительные ресурсы, как 
бегемоты сено, я решил сделать из HP-сервера сразу несколько виртуальных машин - 
предназначенных для тестирования и разработок, разгружающих девелоперские машины, и 
без того загруженные всяким добром по горлышко. Для этой цели был использован 
VirtualBox - известный эмулятор, особенно удобный еще и тем, что может работать без 
Gnome и KDE - просто из командной строки. Установка тривиальна - описывать не буду, 
а вот процесс работы с виртуальными машинами опишу более подробно. Итак.

$ VBoxManage createvm -name "Free" -register
$ VBoxManage modifyvm "Free" -memory "512MB" -acpi on -boot1 dvd -nic1 nat -nictype1 82540EM -vrdp on -vrdpport 35000
$ VBoxManage createvdi -filename "/home/vm/Free.vdi" -size 4000 -register
$ VBoxManage modifyvm "Free" -hda "/home/vm/Free.vdi"
$ VBoxManage modifyvm "Free" -dvd /home/igor/7.0-RELEASE-i386-disc1.iso

Теперь построчное объяснение. Прежде всего заходим в систему по SSH под некоторым 
специально выделенным логином. Логин специально выделен потому, что VirtualBox до 
сих пор не умеет разделять одну виртуальную машину между группой пользователей и 
стабильно работает только под конкретным логином. Так что проще отдать программистам 
один логин на всех. Либо каждому - свой, но и тогда машины у них будут разные, если, 
конечно, они самостоятельно занимаются установками своих виртуальных машин. Далее по 
пунктам:

* 1 = Строка очевидная. Просто регистрирует виртуальную машину.
* 2 = Задает параметры виртуальной машины. Память, aspi, dvd, network и vrdp -
      это возможность подключения к машине по RDP-протоколу.
* 3 = Создает диск заданного объема для виртуальной машины
* 4 = Подключает диск к виртуальной машине
* 5 = Подключает iso-образ с установочным диском угадайте какой системы.


== Работа ==

Работать очень просто. Запускаем:

$ VBoxHeadless -s "Free" &

Стопорим:

$ VBoxManage controlvm "Free" poweroff

Конечно, стопорить так не желательно. Правильнее - после запуска подключиться к 
серверу (к настоящему серверу) по RDP на порт 35000 и получить управление 
виртуальной машиной "как бы" в физическом терминале. Оттуда и установить, и 
настроить, и выключить. Наш монстр легко понятул целых 3 одновременно включенных 
виртуальных машины, даже без намеков на какие-либо тормоза. Таким образом, в сети 
появились еще 3 компьютера, отданные на растерзание злобным программерам. Конечно, 
когда-нибудь, когда наша лошадка загнется от старости, мы сделаем из коня хороший 
шлюз, но пока его участь - виртуализация.