Нужна ли разработчику виртуальная машина, и насколько

Источник: habrahabr
davlaterra

Цели и задачи


Для того, чтобы не сильно зависеть от железа, от апгрейдов, от всяких драйверов и иже с ними, хотелось бы перевести рабочую среду разработки, да и работы в целом, в виртуальномашинное русло.
Поднадоело тратить время и нервы на беконечные установки ОС и стандартного ПО, на резервирование и восстановление рабочей среды, на зависимость от плохого (быстро дряхлеющего/неохотно обновляемого) железа.
В общем то я и не прочь когда надо установить что-нибудь заново, при этом освежая свои знания о некоторых довольно редко устанавливаемых продуктах. Но как то не очень хочется растрачивать такие ценные ресурсы, как Время и Спокойствие. Со Временем у меня особые отношения - непримиримые.
Сказывается все это и на сроках выполнения некоторых производственных задач, которые в случае авралов и пожаров приходится делать и в дороге, и на коленке, и дома. Да и где угодно. При этом не желая тратить времени на создание и настройку среды для работы, или тратить его по минимуму.

Техническое задание


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


На ВМ должны быть доступны следующие инструменты:

  • Среда программирования Microsoft Visual Studio 6.0 SP5;
  • Среда программирования Microsoft Visual Studio 2008;
  • Сервер базы данных Oracle 11g;
  • Разные менее крупные инструменты разработчика С++;
  • Некоторые инструменты для работы с данными и кодом в БД Oracle;
  • Разные инструменты для просмотра, добавления и редактирования распространенного медиаконтента (документы, аудио и видео);
  • Инструменты для просмотра Интернет ресурсов и общения и обмена информацией онлайн (браузеры, месенджеры и т.п.);

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

Реализация


Было решено отлучить ВМ с установленной на нее рабочей средой от самих исходников и ресурсов рабочих проектов и личных данных. Последние были размещены на специальном зашифрованном томе с использованием ПО TrueCrypt 7.1. Это чтобы не приходилось всё время обновлять рабочую среду.
Установил, настроил под себя, и используй на здоровье. Изредка, может раз в 2-3 месяца, сбрасывай более-менее актуальный образ ВМ на свой мобильный носитель (обычно флешку). И все.

Исходники и персональные данные

Данный том для исходников и персональных данных шифруется алгоритмом AES, благо на современных процессорах его обработка производится на аппаратном уровне, и TrueCrypt не преминет воспользоваться этим обстоятельством. То есть шифрование на лету практически не отражается на считывании и записи данных на/с носителя. И скорость не страдает, и вы спокойны за сохранность и конфиденциальность ваших личных драгоценных байтов.
Данный том с исходниками и персональными данными копируется на флешку. с которой он при уходе домой монтируется, и обновленные данные синхронизируются с основным рабочим томом на компьютере. Таким образом у вас в кармане всегда находится актуальная версия ваших данных и исходников, которыми вы заведуете в проектах.
Размер тома выбран равным 14 ГБ, чтобы спокойно помещался на носитель размером 16 ГБ, и еще оставалось немного места для переноса всяких прочих файлов. Флешки такого размера в большом количестве продаются во многих магазинах, легки для использования и ношения с собой, а также вполне доступны по цене.

Рабочая среда на виртуальной машине

Для экспериментов я решил воспользоваться функционалом ПО "VirtualBox 4.2.6" от Oracle и "VMware Workstation 9.0.1" от VMware. Каждое из них уже давно разрабатывается, довольно устойчиво и имеет неплохую карму. Вдаваться в ньюансы, кто же из них "монстр", а кто "новичок", я не буду. Они оба прекрасно подходят для целей данного проекта.

Методом проб и ошибок форматом файлодиска для ВМ был выбран *.vmdk. Оба претендента поддерживают этот формат. Размер выбирался между мобильностью (носить ли с собой в кармане) и достаточным объемом (нужно установить ВСЁ, что необходимо). Объем не должен быть отдан в жертву мобильности, но и не должен заставлять ждать часы на копировании (пусть и редком). Таким образом мы придерживаемся основной цели по эффективному использованию времени.
В конечном итоге выбран объем 40 ГБ. Немного забегая вперед скажу, что после установки ВСЕХ нужных мне программ осталось места для будущего использования более 18 ГБ, что не могло не порадовать. Виртуальной машине отводилось 2.5 ГБ ОЗУ из 4-х доступных. Для использования назначен один процессор/одно ядро. Сетевая карта выбрана типа NAT.

Гостевой была выбрана Windows XP, как самая подходящая для моих целей, наиболее распространенная и наиболее наработанная мною ОС. Также она была выбрана из целей совместимости с со своими наработками и продуктами третьих сторон, используемых при работе со всякими внешними устройствами и многими более мелкими причинами.

Для эксперимента использовалась машина в офисе с "почти" стандартными на сегодня основными параметрами программистского компа:

  • Процессор Intel Core2Duo E6550 на 2.3 ГГц
  • Материнская плата Gygabyte на чипсете P35
  • ОЗУ 4 ГБ (2х2ГБ) DDR2 на 400 МГц
  • Жесткий диск Samsung 250GB 7200rpm SATA 2

Первым вариантом был проверен VirtualBox

Огромный плюс, что бесплатен и хорошо развивается.
Хрюша очень резво установилась, все драйвера встали по умолчанию.
Были выставлены общие папки для доступа из гостевой ОС. Каждая общая папка может быть подключена, как отдельный сетевой диск. В принципе неплохо, но я бы сказал, что если подключается много папок, то панель дисков становится очень громоздкой и неудобной. Вдобавок количество буковок для дисков не бесконечно.

Все необходимые инструменты установились без проблем.
Работа с инструментами для разработки - вполне шустро.
Просмотр медиаконтента, что есть довольно редкое дело - терпимо. Музыку слушать работе не мешает, ничто не тормозит. Просмотр видео в кач-ве Full HD, конечно же, заставляет систему все остальные задачи оставлять на потом.
Полная перекомпиляция моего проекта на C++ под IDE MS Visual Studio 2008 прошла за 45 секунд. Для чистоты эксперимента я посчитал третий из устроенных подряд ребилдов. Вне виртуалки такое действо занимало у меня примерно 38 секунд. Да, приходится немного заплатить. 7-ю секундами.

Вроде бы всё хорошо. Но!
Я использую месенджер Skype, давно и упорно. Думаю не надо объяснять необходимость использования месенджера, на котором у вас много контактов, многие жизненно необходимы для заработка хлеба насущного, и когда некоторые из них знают вас только по этому протоколу.
Так вот он упорно вылетал с необъяснимыми ошибками. Пробовалось всё. И разные версии Skype, и разные версии VirtualBox, и (для пущего эксперимента) разные гостевые ОС (разные типы Windows), и разные хостовые ОС (тоже разные типы Windows). Всё равно вылетает часто и неожиданно. Так не пойдет. Этот мессенджер мне нужен постоянно, для работы.
Пробовал устанавливать Skype в хостовой ОС. Неудобно…
Пробовал устанавливать заменители типа браузерной IM+. Нестабильно и неудобно…
Удобного и допустимого для моей ситуации решения не нашел. Может плохо искал.

Других явных минусов этого варианта не нашел.

Вторым вариантом был проверен VMware Workstation

Его я знаю очень давно, в смысле пользовался им немного, но узнал и поэкспериментировал впервые много лет назад.
Он платен, но в рамках моего эксперимента это не важно. Также хорош.
Построение ВМ, конечно же начал с нуля, НЕ используя уже готовый носитель. Эксперимент - дело святое, как сказал кто-то, совсем не без резона. Всё прекрасно установилось, только я не мог понять почему на гостевой ОС нет звука. То есть нет звуковой карты как аппаратной части. Мне потом один знающий этот продукт человек подсказал, что звучку надо добавлять ручками в свойствах ВМ.
Что же, вполне себе правильно, я считаю. По умолчанию в ВМ звук не очень то и востребован. Плюсик.

Перекомпиляция того же проекта MS VS 2008 заняла 42 секунды. Быстрее предыдущего варианта на 3 секунды. Неплохо.
Также проигрывание в фоне музыки, аналогично первому варианту, не имеет сколь-нибудь заметного воздействия на творческий процесс разработки. Просмотр видеоконтента тоже аналогичен первому варианту и при стандартных ненавороченных параметрах вполне комфортен, если не использовать суперкачественные нарезанные с BlueRay видеодорожки.

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

Вкушаем плоды


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

Скопировать на носитель получилось примерно за 20-22 минуты.
Дома скопировать на компьютер (тоже не первой свежести) получилось за 18-20 минут.
Учитываем, что на моем компьютере, и дома, и на работе, нет USB 3.0, хотя сам переносной диск такую фичу у себя на борту имеет. Понятно, что при наличии этого протокола скорость записи/чтения увеличилась бы примерно в два раза.

Опишу домашний комп для наглядности, вполне средненький. Немного слабее рабочего, но с немного разогнанным процессором вполне себе конкурирует с ним:

  • Процессор Intel Core2Duo E4500 на 2.2 ГГц (немного разогнана до 2,3)
  • Материнская плата MSI на чипсете G31
  • ОЗУ 4 ГБ (2х2ГБ) DDR2 на 400 МГц
  • Жесткий диск Samsung 1TB 7200rpm SATA 2

Давно хотел установить и опробовать на домашнем компьютере ОС Windows 8. Конечно же чисто в целях апробации и последующего удаления. Сказано - сделано.
Установил "восьмёрку". Вполне себе в тихом режиме, пришлось выбирать только региональные настройки вначале.
Не устанавливая ничего дополнительного (к счастью все драйвера ОС установила автоматически), был установлен только VMware.
Хотя и пришлось немного переназначить "Общие папки" в настройках ВМ, все таки дома количество и назначение дисков у меня немного отличаются, ничего другого, отнимающего мое столь драгоценное время, делать не пришлось. Отлично!

Запустил, расширил окно ВМ на весь экран и, вуаля! Я опять в своей рабочей среде. Только в добавку разрешение экрана автоматически самоурегулировалось.

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

Теперь апгрейдим железо, переходим на другую машину, да и что угодно. Без проблем.

Я очень рад.

Кстати. Мой братишка частично апгрейдил себе комп в это время, а ему нужна система помощнее, для рендеринга:

  • Процессор Intel Core i5 3570K на 3.4 ГГц (авторазгон до 3.8 по умолчанию)
  • Материнская плата Asus P8Z77-M на чипсете iZ77
  • ОЗУ 8 ГБ (2х4ГБ) DDR3 Corsair на 1600 МГц
  • Жесткий диск Samsung 1TB 7200rpm SATA 2

Установив и запустив на его машинке свою ВМ, я увидел скорость перекомпиляции моего C++- проекта в 22 секунды.
Впечатляет, хотя улучшение и не прямо пропорционально увеличению производительности процессора.
Значит в моем случае узким местом явилась файловая подсистема, и, возможно, замена жесткого диска на SSD и повышение уровня до SATA3 и дали бы ощутимое преимущество. Проверю на досуге.

Ну да ладно, ведь нет предела совершенству. Как утверждают.


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=32290