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

в 15:55, , рубрики: c++, виртуальные машины, операционные системы, Песочница, Программирование, разработка, метки: , , ,

Цели и задачи

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

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

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


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

  • Среда программирования 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 секунды.
Впечатляет, но улучшение не пропорционально увеличению производительности процессора.
Значит узким местом здесь явилась файловая подсистема, и возможно, повышение уровня до SATA3 дало бы ощутимое преимущество.

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

Автор: davlaterra

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js