Интерфейс паравиртуализации virtualbox

Объяснение настроек VirtualBox, влияющих на производительность

Интерфейс паравиртуализации virtualbox

Привет.

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

Я сделал видео ролик, в котором коротко и ясно всё объяснил.

Для тех, кому удобно воспринимать информацию в текстовом варианте, я привожу текст из видео.

Всем привет, вы смотрите канал LinuxComp.

Сейчас я бы хотел рассказать вам о том как правильно настраивать VirtualBox для получения максимальной производительности. Мне нужно было использовать виртуалку с виндой для работы с софтом от Adobe.

 А как вы знаете, таким программам много железа не бывает. При создании виртуалки в её настройках можно изменять множество каких-то непонятных параметров. Вот я и решил разобраться, для чего они нужны. И о них я расскажу в этом видео.

Моя цель — добиться максимального ускорения виртуализации. Итак, поехали.

Заставка.

В качестве гостевой ОС я буду использовать windows 7 64 bit. Именно эта ось мне подходит больше всего. Весь адобовский софт давно делают только 64 битным, а семёрка — последняя винда, для которой нормально поддерживается режим интеграции экрана в VirtualBox. Это тоже очень интересная тема, но об этом мы можем поговорить отдельно.

Там где необходимо, я буду отмечать особенности настроек для виртуализации других операционок. Свою виртуалку я уже создал и настроил, её я трогать не буду. Я продемонстрирую настройку и создание заново на другой виртуалке.

Итак, запускаем VirtualBox, нажимаем кнопку создать. Вводим имя машины. Оно ни на что не влияет, а просто используется для вашего удобства. Я назову свою машинку w7-demo.

В поле тип нужно выбрать тип гостевой системы. Хоть это и не обязательно, я всё же советую здесь указать реальный тип, поскольку тогда интерфейс паравиртуализации будет выбран автоматически. Об этом я расскажу позже в этом видео. Также укажите версию и разрядность винды. Вам же самим будет удобнее распознавать машину по иконке.

Двигаемся дальше. Здесь нужно указать объём оперативы для виртуалки. Тут зависит от ваших задач. Мне нужно дать ей как можно больше оперативы, поэтому я сдвигаю ползунок направо. Но, как вы видите, под шкалой есть цветовая маркировка. Заезжать на жёлтую или красную полосу я не советую, потому что тогда поплохеет уже вашему хосту. У меня получается около 5 гигабайт.

Двигаемся дальше. Нужно выбрать виртуальный жесткий диск. Если у вас его ещё нет, выбираем «создать новый». Дальше нужно выбрать его тип. Здесь обязательно указывайте именно VDI. Это родной формат для виртуалбокса. VHD и VMDK – это форматы для виртуалокvmware и virtual pc. Их использование приведёт к падению производительности, особенно отvirtual pc.

Следующий важный момент — выбор между динамическим и фиксированным диском. В принципе, опять же, зависит от ваших задач. Если вам калькулятор на виртуалке запускать, то для удобства можете выбрать и динамический. Но мне нужна максимальная производительность, поэтому я выбираю Фиксированный.

Имя можете оставить такое же как у виртуалки, оно ни на что не влияет. Размер указывайте исходя из рассчёта, что сама винда займёт 20 гигов + ваши программы и + ваши документы, если будете хранить их на том же диске. Для своей виртуалки я выделил 35 гигибайт. Но сейчас для демонстрации я не буду создавать большой жёсткий диск.

Всё, виртуальная машина создана. Теперь нам надо перейти к её настройкам. Нажимаем настроить.

В принципе на вкладке общее вы разберётесь, здесь ничего сложного нет. Если надо, включайте общий буфер обмена.

Переходим к самому главному. Вкладка система.

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

Дальше — чипсет. Тут есть два варианта: PIIX3 и ICH9. Какой выбирать и что это вообще значит? Здесь нужно выбирать в зависимости от гостевой ОС. Например, если вы хотите использовать MAC гостя, то нужно выбирать ICH9. Однако, если вы выберете ICH9 для семёрки, то у вас будут фризы. Я это уже выяснил, прочитав сообщения на некоторых форумах. Так что для windows 7 выбираем PIIX3.

Где брать информацию по настройке? Проще всего в поисковиках. Ещё есть встроенное руководство, которое можно открыть из меню Справка. Оно на английском языке и не всегда исчерпывающе описывает настройки, но всё равно очень полезно.

Также оно есть в виде сайта в интернете. Но что ещё интересно, я нашёл сайт, где эта справка очень точно переведена на русский. Находится она правда на каком-то левом сайте, но тем не менее, вам может быть полезно.

Ссылку я оставлю в описании.

Дальше у нас идёт манипулятор курсора. Тут есть три варианта: PS/2 мышь, usb планшет и usb мультитач планшет. Вариант PS/2 мышь не требует эмуляции usb контроллеров, но он больше подходит для древних осей.

Я бы не советовал его выбирать, так как при этом режиме, даже если установлены дополнения гостевой ОС, виртуалка больше нагружается. Большинство людей захотят выбрать здесь usb планшет.

Ну, а если у вас есть какие-то специальные устройства, можете выбрать usb мультитач-планшет. Я выбираю именно его, потому что у моего ноутбука есть тачскрин.

Что у нас дальше?

Включить I/O APIC. Что это такое? APIC — это контроллер прерываний, который используется на современных материнских платах. Эту галочку нужно ставить, если вы хотите дать виртуалке несколько ядер процессора, а также её требуется включать для 64 битных гостей. Соответственно я её ставлю.

Следующая галочка отвечает за режим загрузки. Помните, я рассказывал, как я устанавливал семёрку на реалку в режиме загрузки UEFI? Для неё обязательно требовалось включать CSM модуль. И связано это с тем, что семёрка не умеет работать с новым способом видеовывода в UEFI — GOP (Graphics Output Module). То есть в том случае был не совсем чистый UEFI режим. Но то было на реалке.

Здесь я опять наступил на те же грабли. На VirtualBox эта галочка включает чистый UEFI режим. Семёрку так даже установить не получится. Я нашёл инфу на официальном форуме, Оракл о данной проблеме знают, но у проблемы низкий приоритет. Вот с 2014 года ничего и не сдвинулось с места. Ну и пофигу, пусть будет загружаться в режиме BIOS. На производительность машины это не влияет.

Дальше идёт параметр «Часы в системе UTC». По хорошему, здесь должна стоять галочка, т.к. нормальные системы ожидают в этом счётчике именно мировое время. Но микрософты у нас особенные.

Нафига им тайм зоны? Лучше фигачить локалтайм в system clock. Кто ставил себе винду в дуалбуте, тот знает о чём я говорю.

Там нужно либо линукс подстраивать под закидоны винды, либо, что более правильно и надёжно — отредактировать реестр винды, чтобы она воспринимала систем клок как мировое время.

Но опять же, это было на реалке. Здесь нам по сути это не важно. Можно снять галочку, тогда системные часы хоста (настроенные на мировое время) будут восприниматься виндой как локальное время. И вам не придётся лезть в её реестр, и время будет отображаться правильно. А на производительность это не повлияет.

Переходим на вкладку Процессор. В зависимости от задач, которые вы собираетесь выполнять на виртуалке, выделяйте нужное количество процессоров. Мне для обработки видео надо как можно больше, но как и в случае с оперативной памятью, перегибать здесь нельзя. У меня четырёхъядерный процессор, 2 ядра я даю виртуалке.

Дальше идёт опция «Предел загрузки ЦПУ». Здесь можно ограничить процессорное время, которое гостевая система сможет использовать ядро процессора. Это может понадобиться если у вас много виртуалок на одном хосте. Я естественно выставляю 100 %.

Следующая опция у нас — это PAE/NX. Она отвечает за то, будет ли виртуальной машине предоставлен доступ к функции расширения физических адресов (Physical Address Extension). Если у вас 32-битный процессор, то с помощью PAE вы сможете адресовать больше 4 Gb.

NX — это специальный бит в таблице доступа к памяти, который не позволяет выполнять данные из памяти как код, что позволяет защищаться от атак типа переполнения буфера. Если вам интересно разобраться в этом, я оставлю интересную ссылочку в описании, которую я нашёл, можете посмотреть. http://blog.nandaka.

io/what-is-nx-bit/ https://forums.virtualbox.org/viewtopic.php?f=3&t=56528

Если у вас не какая-нибудь специальная защищённая ОС, и она может загружаться без PAE/NX, значить вам эта функция не нужна. Я её выключаю.

Так, с этим разобрались. Переходим на вкладку Ускорение.

Интерфейс паравиртуализации. Что это такое и какой выбирать? Давайте пройдёмся по списку и я вам расскажу какой для чего.

Выбирать его нужно в зависимости от вашей гостевой ОС.

  • Вариант «Отсутствует» нужно выбирать в случае, если вы хотите скрыть от гостевой ОС, что она работает в виртуальной машине.
  • Вариант «Совместимый» специально выбирать не надо, он сделан для поддержки виртуальных машин, которые были созданы в VirtualBox ранее пятой версии.
  • Вариант «Минимальный» нужно выбирать для гоствых систем Mac OS.
  • Вариант «Hyper-V» — для гостевых Windows систем.
  • Вариант «KVM» — для гостевых систем Linux.

А изначально здесь установлен интерфейс «По умолчанию». Это значит, что нужный интерфейс будет выбран в зависимости от типа гостевой системы автоматически. Именно поэтому я говорил, чтобы вы правильно указывали тип системы при создании виртуалки. Я тип указал правильно, поэтому здесь я оставляю вариант «По умолчанию».

Осталось два параметра: VT-x/AMD-V и Nested Paging.

Здесь вам нужно смотреть, поддерживает ли ваш процессор функции аппаратной виртуализации. Как вариант, можете узнать это на сайте intel или AMD. Но мне проще узнать это сразу из командной строки.

Набираем команду lscpu и ищем нужные флаги. Для процессоров intel ищите флаг vmx, а для amd — флаг svm. Если вы нашли их, можете радоваться, ваш процессор поддерживает VT-x или AMD-V.

В этом случае разумеется включайте галочку в настройках виртуалки.

И чтобы дополнительно ускорить работу с памятью, нужно вулючить Nested Paging. По описаниям, которые я читал, это существенно влияет на производительность.

Чтобы узнать, поддерживает ли ваш процессор Nested Paging (тик Rapid Virtualization Indexing — RVI), посмотрите есть ли у проца нужный флаг. Для intel это флаг EPT, а для amd — NPT. У меня этот флаг есть, соответственно я галочку в настройках включаю.

Переходим к настройкам дисплея.

Параметр память определяет сколько памяти будет у виртуального графического адаптера в гостевой ОС. Здесь я выставляю максимальное значение.

Ну и наконец 3d и 2d ускорение для гостей. К сожалению, даже если вы включите эти опции, под виртуалбоксом добиться такой же производительности как на реальном железе нельзя. Но включение этих опций позволит хоть как-то ускорить видео рендер.

Если вы их включаете, то когда гостевое приложение будет делать вызовы OpenGL или DirectX, virtualbox вместо медленного программного рендеринга будет пытаться использовать рендеринг аппаратными средствами хоста. Разумеется, вы должны установить дополнения гостевой ОС.

Но при их установке не ставьте экспериментальный драйвер Direct3D. У вас будет три варианта. Первый — не ставить вообще, что я и советую. Второй — поставить упрощенный драйвер Direct3D, но это бесполезено, он не влияет на ускорение. И третий вариант — поставить полный драйвер Direct3D.

Если его поставить и включить 3D ускорение, то After Effects будет вываливаться с ошибкой hardware blitpipe engaged при запуске. Так что можете на это время не тратить, я его уже потратил за вас.

Я бы хотел ещё попробовать пробросить видеокарту в виртуалку, чтобы отдать её винде. Но это надо делать на десктопе. У меня на ноутбуке к сожалению карточка от nVidia c технологией Optimus.

То есть даже если мне удастся пробросить её по PCI, она всё равно не будет работать. Если кто не знает, Optimus — это такие неполноценные видюхи, которые рассчитаны лишь на ускорение интеловской интеграшки, а отдельно они работать не могут.

Под виртуалкой, как вы понимаете, интеловской карты нет.

Ладно, давайте перейдём к категории Носители.

Здесь я хочу обратить ваше внимание на тип контроллера для вашего виртуального диска. Скорее всего он у вас сразу будет sata, но лучше проверьте это. Главное, чтобы он не был ide, потому что они медленнее и не поддерживают асинхронный ввод/вывод. В virtualbox он поддерживается также на SCSI и SAS контроллерах. На обычном ноутбуке выбирать эти контроллеры нет смысла.

Теперь что касается пункта Кеширование ввода/вывода. Надо его включать или нет? Это зависит от того, как вы работаете с данными. Если у вас на виртуалке будут запущены какие-то критические сервисы и вам ни в коем случае нельзя потерять данные, то не включайте.

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

Ещё может быть проблема с подвисаниями хоста если гость будет слишком много кешировать. Тут сами уже рассчитывайте возможности хоста и решайте.

Я почитал один блог в интернете, где чувак пишет, что у него не было никаких проблем: при включенном кешировании скорость операций возрасла в разы, а никаких потерь данных не было даже когда он хард-резетил свой ноутбук. https://www.electricmonk.nl/log/2016/03/14/terrible-virtualbox-disk-performance/

Если у вас твердотельник, поставьте галочку Твердотельный накопитель, тогда гость не будет пытаться дефрагментировать данные. Галочку с горячей заменой я не ставлю, так как это у нас будет системный накопитель, т.е. диск C.

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

Какой по всему этому можно сделать вывод? Вывод такой: поскольку Adobe не замечает нас, нам приходится вот так изворачиваться с виртуалками. Производительность здесь будет конечно хуже, чем в реалке.

Но мне этот вариант сейчас подходит: я могу что-нибудь простенькое наклепать в Ae, экспортировать и тут же смонтажить в kdenlive на linux.

Ну ещё при доработке kdenlive можно посматривать как там у них сделано.

Если нужно серьёзно поработать с эффектами, то тогда придётся всё-таки дуалбутиться…

На этом всё. Надеюсь я помог вам в настройке VirtualBox. Если видео было вам полезно, оцените лайком, мне будет приятно.

Источник: https://blog.linuxcomp.ru/2017/05/virtualbox.html

Выбор интерфейса паравиртуализации в Virtualbox для максимальной производительности

Интерфейс паравиртуализации virtualbox

Здравствуйте, уважаемые посетители. Не так давно вышла новая версия Oracle VM VirtualBox, где добавили возможность выбора интерфейса паравиртуализации для виртуальной машины. Данная функция преподносится как возможность повышения производительности гостевой операционной системы.

Меня этот момент очень сильно заинтересовал.

В особенности заинтересовало то, как сказывается на работе гостевой ОС выбор разных интерфейсов, а также то, какой именно интерфейс паравиртуализации нужно выбирать для обеспечения максимального быстродействия гостевой операционной системы Windows 7 x64.

Операционные системы Windows, начиная с Windows 7, поддерживают интерфейс Microsoft — Hyper-V, так что вполне логично, что для работы гостевой ОС Windows 7 x64 нужно выбирать именно его.

Тем не менее, мне захотелось узнать, как будет влиять на производительность гостевой ОС каждый из доступных в VirtualBox интерфейсов паравиртуализации.

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

На данный момент, для виртуальной машины можно выбрать один из доступных интерфейсов: совместимый, минимальный, Hyper-v, KVM или же отключить его вовсе:

Интерфейсы паравиртуализации, доступные для выбора в Oracle VM VirtualBox В справке к VirtualBox указано, что большинство современных ОС Windows и ОС на базе ядра Linux поддерживают один или несколько интерфейсов паравиртуализации и как правило, для использования паравиртуализации не требуется дополнительное программное обеспечение (включая в том числе и дополнение для гостевых ОС VirtualBox Guest Additions).

Помимо этого, в справке можно найти краткое описание интерфейсов. Минимальный указывается как необходимый для операционных систем Mac OS X. KVM — рекомендуется для гостевых ОС на базе ядра Linux.

Hyper-V — поддерживается операционными системами Microsoft, начиная с Windows 7, соответственно для них и рекомендуется его использовать, а также для ОС FreeBSD.

Методика тестирования

В качестве операционной системы хоста использовалась Windows 7 x64, эта же версия использовалась в качестве гостевой ОС. Версия VirtualBox — последняя на момент написания поста — 5.0.2. Для тестирования мною была создана отдельная виртуальная машина со следующими настройками:

Настройки виртуальной машины

Как видите, я выделил виртуальной машине 2000 МБ памяти из имеющихся 4 ГБ и все четыре процессорных ядра. Помимо этого, включил 2D и 3D ускорение видео, всё для того, чтобы гостевая ОС Windows 7 x64 чувствовала себя как можно лучше.

Для измерения производительности использовались следующие программы: Intel linpack x64, тест производительности, встроенный в программу 7-zip x64, AIDA64 — тест быстродействия оперативной памяти, Xvid4PSP — кодек x264 64-bit.

Тестирование производилось следующим образом: я запускал виртуальную машину с определённым интерфейсом паравиртуализации, выполнял последовательно все тесты, сохраняя результаты. После виртуальная машина отключалась и запускалась вновь, но уже с другим интерфейсом, при этом все остальные настройки оставались неизменными.

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

При этом отмечу, что все процессы, кроме необходимых для работы ОС, были остановлены как в гостевой, так и в операционной системе хоста, дабы нивелировать влияние посторонних факторов на результаты теста.

Intel linpack x64

Первый выполнявшийся тест — бенчмарк Intel linpack x64. В настройках бенчмарка был указан объём теста 10000 уравнений, тест запускался пятикратно, на графике отображён усреднённый результат пяти тестов (Average) и максимальный (Maximal) зафиксированный результат в GFlops:

Результаты тестирования Intel linpack x64

Как видим, между хостом и гостевыми ОС наблюдается значительный разрыв в производительности. Наилучший результат показал интерфейс паравиртуализации Hyper-V — 32,58 GFlops в среднем и 33,31 GFlops максимум, отставание производительности по сравнению с хостом составило — 10%.

Однако разница между Hyper-V и остальными интерфейсами, кроме KVM, совершенно незначительная.

Низкие результаты при работе ОС с интерфейсом KVM обусловлены тем, что производительность значительно падала через несколько минут после запуска ОС, несмотря на то, что в первые минуты её работы, она практически не отличалась от других интерфейсов — это можно определить по максимальному зафиксированному результату с интерфейсом KVM — 32,74 GFlops. Аналогичные провалы производительности были получены и в других тестах, при работе гостевой ОС с активированным интерфейсом KVM.

7-zip x64

Тест производительности в программе 7-zip запускался вручную пятикратно. Результаты всех пяти тестов были усреднены для большей точности:

Результаты тестирования 7-zip x64

Лучший результат опять показывает Hyper-V — 9097 MIPS. При этом разница в производительности между ним и хостом уже более существенная, чем в предыдущем тесте — 16%. Остальные интерфейсы, кроме KVM, дали результат не сильно отличающийся друг от друга.

AIDA64 — тест быстродействия оперативной памяти

Следующий тест — быстродействие оперативной памяти в программе AIDA64 уже более интересен. Тестирование выполнялось путём трёхкратного запуска бенчмарка, полученные результаты усреднены. На диаграмме отображены результаты теста по трём параметрам — чтение, запись и копирование в оперативной памяти:

Результаты тестирования AIDA64 — memory benchmark

Из результатов видно, что все интерфейсы, кроме KVM показали производительность уровня хоста.

Что самое интересное, лучший результат показала ОС при работе как раз таки с отключенным интерфейсом паравиртуализации (Read, Copy), впрочем, разница соверешенно незначительна — менее трёх процентов.

Примечательно, что результаты при работе ОС с интерфейсом Hyper-V получились более низкими по сравнению с отключенным интерфейсом паравиртуализации, а также совместимым и минимальным. Как бы там ни было, разница не столь существенная.

Кодирование видеофрагмента кодеком x264 64-bit

Для тестирования использовалась программа Xvid4PSP, версия 5.10.330.0_(2013-03-21)_rc33.1.Кодирование осуществлялось 64-bit версией кодека x264.

фрагмент для кодирования — видеозапись с цифровой камеры, закодированная кодеком MJPEG, длительность 62 секунды.

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

Результаты тестирования — кодирование видеофрагмента кодеком x264 64-bit Кодирование видео уже более приближено к реальной работе, нежели синтетические тесты быстродействия, посему эти результаты лично для меня наиболее интересны. Быстрее всего выполнил кодирование конечно же хост, всего за 86 секунд.

На втором месте по скорости — Hyper-V, кодирование выполнено за 134 секунды, что более чем в полтора раза дольше, но тем не мнее значительно быстрее, чем результаты при работе с другими интерфейсами.

Для сравнения, разница в производительности между Hyper-V, совместимым и минимальным интерфейсами, составила целых 7 процентов, что уже можно назвать существенной разницей.

Результаты этих тестов подтвердили, что для работы гостевой ОС Windows 7 x64 необходимо использовать интерфейс паравиртуализации Hyper-V для достижения максимальной скорости работы. Но, вместе с тем, показали, что разница в производительности будет не всегда значительной.

На этом завершаю, спасибо за внимание!

Источник: https://sandyfoto.ru/vybor_interfeysa_paravirtualizatsii_v_virtualbox_dlya_maksimalnoy_proizvoditelnosti.html

Опыт использования виртуализации на VirtualBox

Интерфейс паравиртуализации virtualbox
Несколько лет назад я начал разбираться с вируализацией, и у меня получились своего рода путевые заметки, которые я сейчас оформил и выкладываю сюда. Никаких откровений тут не будет, статья адресована начинающим админам. Задача которую я здесь решаю состоит в том, чтобы виртуализовать уже имеющиеся не виртуальные сервера на Linux и FreeBSD.

Причины, по которым я тогда выбрал VirtualBox

Причины представлены ниже:

  • Простота использования
  • Отличное руководство, подробно описывающее все аспекты работы VirtualBox
  • Наличие отличных графического, консольного и web-интерфейса
  • Возможность предоставления доступа к консоли гостевой ОС про протоколу RDP
  • Удобство использования

Полное руководство пользователя VirtualBox доступно на сайте производителя.

Причины, по которым я не выбрал бы его сейчас

  • Отсутствие хороших web-морд.

    Имеющийся web-интерфейс, несмотря на то, что он позволяет совершать с виртуальными машинами большинство требуемых действий (создание, снимки, удаление, создание виртуальных сетей), и реализован очень качественно, обладает следующими ограничениями:

    • Не позволяет назначать права на виртуальные машины (предоставления доступа разработчиками по списку только к своим машинам)
    • Не позволяет управлять несколькими физическими серверами из одной панели управления
    • Не отображает статистику по загрузке сервера
    • Пишется сторонними разработчиками, не имеющими отношения к VirtualBox, в их свободное время, из-за чего вызывает опасение возможность прекращения его развития
  • Более медленная работа при большом количестве запущенных виртуальных машин по сравнению с KVM.
  • Оговорка в лицензии

Подготовка ОС для работы с виртуальными машинами

VirtualBox можно установить практически на любую ОС, однако стабильная работа и все его возможности (например, RDP-подключение к консоли гостевой системы) доступны только на Линуксе, поэтому был выбран Debian Linux.

Для самого VirtualBox специальной настройки ОС не требуется, достаточно выделить отдельный раздел для хранения образов дисков гостевых систем и образов установочных дисков для чистой установки гостевых систем. Однако для управления VirtualBox через Веб-интерфейс (phpvirtualbox) требуется веб-сервер (выбран Apache 2) и PHP 5.

В Debian конфигурация по умолчанию PHP 5 и Apache 2 удовлетворяет требованиям phpvirtualbox, специальным образом настраивать ничего не нужно. Описание конфигурации сервера для виртуалок:

  • cервер имеет имя virtbox.site и адрес 10.0.0.7 (кстати, поищите почему не нужно использовать .

    local)

  • Раздел для хранения образов гостевых ос создан на отдельном жестком диске и примонтирован в /srv/vdi
  • Установлены пакеты Apache 2 и PHP 5: virtbox# apt-get install apache2 php5

Установка phpvirtualbox

Для Virtualbox существует бесплатный web-интерфейс, реализованный на PHP и использующий встроенную в virtualbox службу удаленного управления virtualbox web service. Устанавливаем phpvirtualbox:

1. На сайте разработчика смотрим последнюю версию и скачиваем ее на сервер:

virtbox# cd /var/www && wget phpvirtualbox.googlecode.com/files/phpvirtualbox-4.1-7.zip 2. Распаковываем:

virtbox# unzip phpvirtualbox-4.1-7.zip

3. Конфигурируем:

virtbox# cd phpvirtualbox-4.1-7.zip && cp config.php-example config.php && vim config.php

4. Прописываем адрес сервера, на котором работает VirtualBox, для удаленных подключений с помощью встроенного в VirtualBox RDP-plugin:

var $consoleHost = '10.0.0.7';

Внимание! Для успешных подключений на сервере должны быть открыты входящие порты, по умолчанию начиная с 3389 (TCP), по одному порту на гостевую систему. 5. Настраиваем virtualbox web service, для чего создаем файл /etc/vbox/vbox.cfg со следующим содержанием:

VBOXWEB_USER='vbox' VBOXWEB_HOST=127.0.0.1

VBOXWEB_LOGFILE=/srv/log/vboxwebservice

6. Запускаем virtualbox web service, перед этим нужно убедиться в том, что файл /srv/log/vboxwebservice доступен для чтения и записи пользователю vbox:

/etc/init.d/vboxweb-service start.

phpvirtualbox теперь доступен по адресу virtbox.site/phpvirtualbox.

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

Создание виртуальных машины через web-интерфейс достаточно очевидно, нужно нажать в phpvirtualbox кнопку New и следовать инструкциям мастера. Ниже приводится выработанный опытным путем список настроек гостевых систем, достаточный для нормальной работы гостевых Linux и FreeBSD.

  1. System
    1. Base Memory: 512 MB
    2. Processor(s): 1
    3. Enable PAE/NX: NO — эмуляция поддержки работы с более чем 4 ГБ памяти для 32-битных систем как правило не нужна
    4. Chipset: PIIX3 — в руководстве ничего не сказано про зависимость быстродействия от типа эмулируемого чипсета, поэтому выбираем по умолчанию
    5. Extended features
      1. Enable IO APIC — без включенной эмуляции APIC некоторые клонированные сервера работать не будут
      2. Hardware clock in UTC time — как правило гостевые системы ожидают системное время в формате UTC, и эта опция отвечает за передачу гостевой ОС времени в UTC, а не в Local time сервера.
      3. Display: 2 MB — минимально возможное значение, при установке этого значения в 1 MB rdp-подключения работать не будут. При создании новых машин можно оставить значение по умолчанию, предлагаемое phpvirtualbox.
      4. Storage: где нужно создать образ диска
  2. Network
    1. Debian: Virtio — Debian с помощью гостевых расширений умеет понимать, что она работает в виртуальной машине, и использовать виртуальную сетевую карту, что дает очень большой выигрыш в производительности
    2. FreeBSD: Intep PRO/1000 MT Server network card — для FreeBSD гостевого драйвера сетевой карты нет, поэтому выбираем эмуляцию самой быстрой карты из доступных. Во FreeBSD устройство называется em0.
  3. Serial ports: Disabled
  4. USB: Disabled
  5. Shared Folders: None — возможность VirtualBox предоставлять доступ гостевой системе к файлам хост-системы как правило не нужна, проще воспользоваться scp или sftp

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

Управление через веб-интерфейс

Управление виртуальными машинами через web-интерфейс тривиально, достаточно выделить нужную машину в phpvirtualbox и выбрать в интерфейсе требуемое действие, например Start, Stop (безусловное выключение, отправка сигнала о нажатии кнопки выключения питания, перезагрузка, сохранение состояние гостевой системы с возможностью впоследствии откатить ее состояние и приостановка работы гостевой системы с сохранением ее памяти на диск и возможностью впоследствии загрузки памяти с диска и продолжения работы). По щелчку на гостевой системе правой кнопкой машины доступны операции ее настроек, удаления, просмотра логов и т.д. Также стоит отметить возможность подключения к консоли гостевой системы, что аналогично подключению к реальной машине мыши и клавиатуры. Для этого нужно выделить нужную гостевую систему, выбрать вкладку Console в phpvirtualbox, задать размер экрана (для текстовых режимов работы гостевых ОС достаточно 800х600), нажать Connect и щелкнуть мышью по клиенту удаленного подключения (в котором выводится содержимое консоли гостевой системы). Управлять гостевой системой можно с момента включения.

Управление через консоль

Для управления гостевыми система в VirtualBox используются утилиты VBoxManage и VBoxHeadless, подробное описание которых доступно в руководстве.

Запускать команды нужно от пользователя vbox, под которым работает сам VrtualBox, в случае запуска от другого пользователя или root VirtualBox не сможет найти файлы конфигурации виртуальных машин, которые хранятся в домашней директории пользователя Vbox, и выдаст ошибку. Для перехода под пользователя vbox нужно сказать:

su -s /bin/bash vbox

Оболочку нужно указывать явно, потому что по умолчанию у пользователя vbox стоит оболочка /bin/false. Ниже для примера приведены команды для включения, выключения и работы с образами дисков. 1. Запуск группы гостевых систем (можно сделать автоматическим при включении и перезагрузке сервера):

for M in test1 test2 test3 ; do VBoxManage startvm $M –type=headless ; sleep 30 ; done

Если не указывать sleep 30 некоторые машины могут не запуститься из-за очень интенсивного чтения с жесткого диска сервера при запуске и некоторые гостевые системы решат, что у них ошибка чтения с жесткого диска. 2. Выключение группы гостевых систем (можно сделать автоматическим при включении и перезагрузке сервера):

for M in test1 test2 test3 ; do VBoxManage controlvm $M acpipowerbutton ; sleep 30 ; done

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

VBoxManage createhd –variant Fixed –size 20000 –format vdi –filename test

4. Преобразование образа диска из формата VirtualBox в формат, понятный другим виртуальным машинам:

VBoxManage internalcommands converttoraw test1.vdi test1.raw

Подключение через RDP

К консоли виртуальных машин можно подключиться через RDP. В Windows нужно открыть Пуск->Все программы->Стандартные->Подключение к удаленному рабочему столу и указать адрес virtbox.test и порт, сопоставленный конкретной гостевой системе, который можно посмотреть в phpvirtualbox.

Для удобства использования в параметрах подключения можно указать разрешение экрана 1024х768, тогда окно с подключением не будет занимать весь экран и перехватывать системные сочетания клавиш, такие как Alt+Tab.

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

Для включения этой настройки нужно в настройках виртуальной машины в phpvirtualbox в разделе Display на вкладке Remote Display установить галочку Allow Multiple Connections.

Создание снимков гостевых систем

Снимки дают возможность сохранения состояния гостевых систем и возврата к этому состоянию по требованию.

Что это означает на практике?

  • Можно попробовать различные запросы к базе данных на гостевой системе с возможностью после каждого запроса восстанавливать начальное системы
  • Можно попробовать различные конфигурации взаимодействия сервисов на гостевой системе без необходимости вручную откатывать изменения во многих конфигурационных файлах в случае получения нерабочей системы
  • И наконец это иногда удобный инструмент создания резервных копий, который позволяет сделать полный снимок рабочей машины и восстановить ее полностью за минимальное количество административных действий. Внимание! Не делайте этого с продукционными машинами.

При создании снимка гостевой системы занимаемое ею место на диске фактически не увеличивается, дополнительный объем будут занимать только измененные по сравнению с уже существовавшим образом диска гостевой машины данные. Например, если будет изменен файл /etc/rc.conf, измененная копия будет записана отдельно.

Для создания снимка через phpvirtualbox нужно:

  • Выделить гостевую систему, с которой нужно сделать снимок
  • Перейти на вкладку «Snapshots»
  • Нажать кнопку «Take Snapshot» (с изображением фотоаппарата)

Источник: https://habr.com/ru/post/142963/

Поделиться:
Нет комментариев

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

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.