Как настроить виртуальные машины?
В последнее время шум виртуализации достиг своего рабочего места, где разработчики тестируют виртуальные машины на своих компьютерах. Ранее я слышал от нескольких разных разработчиков о настройке виртуальной машины на своих настольных компьютерах, чтобы поддерживать чистую среду разработки.
На рынке существует множество программных продуктов Virtual Machine:
Мне интересно узнать, как эффективно использовать виртуализацию в своей работе. Мой вопрос: как вы используете виртуальные машины для повседневной разработки и по какой причине?
Ответы
Ответ 1
Я только что построил настоящую мускулистую машину дома, чтобы сразу запустить несколько виртуальных машин. Мой случай, вероятно, экстремален, но вот моя логика для этого.
Тестирование
Когда я тестирую, особенно настольное приложение, я обычно создаю несколько виртуальных машин, по одному для каждой платформы, на которой должно работать мое программное обеспечение (Windows 2000/XP/Vista и т.д.). Если доступны 32 и 64 бита, я также создаю один из них. Я также играю с настройками аппаратного обеспечения VM (например, большим количеством ОЗУ, небольшой оперативной памяти, 1 ядром, 2 ядрами и т.д.). Я нашел много маленьких ошибок таким образом, что определенно сделал бы это в дикой природе, если бы я не использовал этот подход.
Этот подход также позволяет легко играть с различными сценариями программного обеспечения (что произойдет, если пользователь, устанавливающий программу, не имеет .NET 3.5 sp1? Что произойдет, если у него нет компонента XXX? и т.д.
Разработка
Когда я разрабатываю, у меня есть одна виртуальная машина, на которой запущены мои серверы баз данных (SQL2000/2005/2008). Это по двум причинам. Во-первых, это более реалистично. В рабочей среде ваше приложение, вероятно, не работает в том же поле, что и db. Почему бы не воспроизвести его при разработке? Кроме того, когда я не разрабатываю (помните, что это тоже моя домашняя машина), мне действительно нужно, чтобы все эти службы баз данных работали? Да, я могу включить и выключить их вручную, но гораздо проще включить виртуальную машину.
Клиенты
Если я хочу показать клиенту какую-то веб-работу, которую я сделал, я могу разместить только одну виртуальную машину в DMZ, и он может войти в виртуальную машину и играть с веб-проектом, а остальная часть моей сети/компьютера безопасен.
Совместимость
Vista64 теперь является моей главной машиной. Любое устаревшее аппаратное/программное обеспечение, которое у меня есть, не будет хорошо работать с этой ОС. Мое решение - иметь Windows XP 32 как виртуальную машину для всех этих элементов.
Ответ 2
Здесь что-то еще не упоминалось.
Всякий раз, когда проект переходит в режим технического обслуживания (aka abandonded), я создаю виртуальную машину со всеми инструментами, библиотеками и исходным кодом, необходимым для создания проекта. Таким образом, если я вернусь к нему через год, я не стану бить в попку с помощью каких-либо обновленных инструментов или библиотек на моей рабочей станции.
Ответ 3
Когда я начал работу с моей текущей компанией, большинство сотрудников службы поддержки /dev/PM запустили Virtual PC с 1-3 виртуальными машинами на своем рабочем столе для тестирования.
Через несколько месяцев я собрал предложение, и теперь мы используем сервер VMware ESXi, на котором запущен пул виртуальных машин (все на 24/7) с разными средами для нашего персонала поддержки, чтобы проверить проблемы клиентов и воспроизвести проблемы. У нас есть виртуальные машины Windows 2000/XP/Vista с установленными каждым из установленных в Microsoft Office 2000/2002/2003/2007 (таким образом, 12 виртуальных машин) плюс несколько более общих тестовых виртуальных машин, некоторые серверы 2003/2008, работающие под управлением Citrix, Terminal Services и т.д. В принципе большую часть времени, когда мы сталкиваемся с новой конфигурацией клиента, которую нам нужно отлаживать, и, вероятно, у других клиентов также есть такая конфигурация, я настрою для нее виртуальную машину. (например, мы используем только три 64-битных виртуальных машины на данный момент - в основном это 32 бит)
Кроме того, тот же сервер запускает виртуальную машину XP, которую я использую для создания отладки установщика (InstallShield, WiX) (VS 2005) и локализации (Lingobit), а также второй виртуальной машины, которую наши разработчики используют для автоматического тестирования (TestComplete).
Утилита разработки и установки была выделена с более высоким приоритетом и оба настроены как виртуальные машины с двумя процессорами с памятью 1 Гб. Остальные виртуальные машины имеют одинаковый приоритет и оперативную память 256-1 ГБ.
Все работает на двухъядерном четырехъядерном процессоре Xeon с 8 ГБ оперативной памяти с ESXi и аппаратным RAID (4x1Tb RAID10)
По сравнению с инвестициями в 2,5 тыс. долл. мы увеличили производительность в 10 раз (представьте себе время простоя, в то время как нехватка поддержки устанавливает более старую версию офиса на рабочем столе для репликации проблемы с клиентом или время, которое я не могу использовать мой рабочий стол, потому что мы строим инсталляторы). Следующим шагом будет удвоить объем оперативной памяти до 16 ГБ, поскольку мы добавим больше голодающего сервера Server 2008 и виртуальных машин Vista.
У нас все еще есть нечетная виртуальная машина на наших настольных компьютерах (например, у меня есть локализованные версии Windows, Ubuntu и Windows 7 под управлением VMware Workstation), но обычно используемые в основном конфигурации были выгружены на выделенный сервер, все подключаются дистанционно. Многое, намного проще.
Ответ 4
Виртуализация (с моментальными снимками или непостоянными дисками) действительно полезна для тестирования установки программного обеспечения в известной чистой конфигурации (т.е. ничего не осталось от предыдущих ошибок на вашем программном обеспечении).
Ответ 5
Наличие вашей коробки разработки в одном файле (с виртуальной машиной) значительно облегчит резервное копирование и восстановление , если возникнет проблема.
Кроме этого, вы также можете переносить свой переносимый блок разработки на разных машинах, так как вы не ограничены на той конкретной конкретной машине, на которой вы обычно работаете.
Не только это, но вы можете протестировать в разных операционных системах сразу, с одной ОС, установленной в каждом файле виртуальной машины, который у вас есть.
Поверьте мне, это сэкономит немало хлопот при выполнении заданий, о которых я упоминал выше.
Ответ 6
Другим приятным вариантом использования виртуальных машин является создание виртуальной сети машин. Например, вы можете выводить машины, на которых работают разные уровни стека приложений, каждый из которых работает в своей собственной виртуальной машине. Подумайте об этом как о дентальном центре бедного человека.
Эти виртуальные машины также могут быть доступны в вашей физической сети, поэтому вы можете использовать RDP или аналогичный, чтобы получить с ними сеанс удаленного терминала.
У вас может быть многообещающая машина (много памяти), работающая с этими виртуальными машинами, в то время как вы получаете доступ к ним удаленно с другого компьютера, такого как ноутбук, или на какой машине у вас есть лучший экран.
Ответ 7
Я использую VM под Windows для запуска Linux. Несмотря на то, что уже существует версия emacs для Windows, использование ее в Linux по какой-то причине кажется более приятным.
Ответ 8
Поддержание закрытых компьютеров
У меня сложилась ситуация, когда школы в моем регионе закрыты, но их финансовая система должна поддерживаться на срок до 2 лет, чтобы обеспечить оплату всех невыплаченных счетов. Раньше это выполнялось, поддерживая аппаратное обеспечение из законсервированных школ, у которых были проблемы:
- Это потратило скудные аппаратные ресурсы и заняло много физического пространства.
- Должностные лица финансов должны были физически присутствовать на оборудовании для работы в каждой системе.
Сегодня я размещаю каждую законсервированную школу на своей виртуальной коробке внутри одного физического хоста. Доступ к каждой отдельной системе осуществляется с помощью rdp на IP-номер хоста, но с его собственным номером порта и исходной безопасностью каждой школы.
Сотрудники по финансам теперь могут работать в законсервированных школах без необходимости путешествовать туда, где они физически расположены, в серверной комнате больше физического пространства, и резервное копирование всех законсервированных школ сразу является простым автоматическим процессом.
С каждой законсервированной школой в своем собственном vbox нет никакого способа перекрестного заражения данными между системами. Кроме того, для перераспределения также освобождается аппаратное обеспечение на многие тысячи долларов.
Виртуализация представляется идеальным решением этой проблемы.
Ответ 9
Я использовал подход виртуализации с использованием VMWare Server, когда перед нами стояла задача проверить кластерную среду WebSphere Application Server. После настройки сервера VMWare я создал новую виртуальную машину и выполнил все установки программного обеспечения, которые мне понадобятся, такие как WebSphere App Server, Oracle, WebSphere Commerce и т.д., После чего я выключу виртуальную машину и скопирую изображение виртуального жесткого диска на два разных файлы, один в качестве клонов VM и другой в качестве резервной копии.
Создал новую виртуальную машину и присвоил один из копируемых образов дисков, так что теперь я получил две системы, которые позволили мне протестировать один и тот же сценарий кластерной среды. Я сделал моментальный снимок виртуальной машины через VMware, и если бы я разобрался с любыми действиями, я бы отменил изменения моментального снимка, сделав тем самым переход к предыдущему состоянию и увеличив свою производительность, вместо того, чтобы узнать, что делать. Образ резервного диска также можно использовать, если мне нужно вернуться в очень старое состояние, вместо того, чтобы начинать с нуля.
Функциональность моментальных снимков, которая существует как в VMWare, так и в Microsoft Virtual PC/Server, достаточно хороша, чтобы рассматривать виртуализацию для сценариев, где вы думаете, что можете нарушать изменения, которые, возможно, не так легко вернуть.
Ответ 10
Из того, что я знаю, нет ничего похожего на Parallels на Mac, а скорее на работу вместо тестирования.
Интеграция (с "когерентностью", ваша виртуальная машина не работает "в окне" вашей хост-системы, все программы в гостевой системе имеют соответствующее окно в системе хоста) великолепна и позволяет вам заполнять все (ВСЕ!) пробелы:
У моего коллеги он настроил Outlook (нет ничего похожего на Outlook для MacOsX) в Windows, когда он нажимает на ссылку "mailto:" на веб-странице, просматривая Firefox на Mac!
В другом направлении, если он отправит PDF-документ, он дважды щелкнет вложение в Outlook (в Windows), которое открывает PDF файл в PDF-Viewer Mac-buildin.
VirtualBox также предлагает эту возможность разделения окон (по крайней мере, когда Windows работает в VM на Linux), что действительно полезно для работы.
Для тестирования и т.д., конечно, нет ничего похожего на чисто разделяемую среду.
Ответ 11
У нас есть физический сервер, предназначенный для размещения виртуальных машин в нашей среде разработки. Виртуальные машины регулярно поднимаются и срываются и используются для тестирования программного обеспечения в известных стандартных операционных средах.
Также очень полезно, когда мы хотим, чтобы приложение запускалось в домене, который отличается от среды разработки.
Кроме того, организация, над которой я работаю, находится на стадии планирования, чтобы создать большую виртуальную полигоновую площадку. Это будет большая сетка машин, сидящих на собственной сети, и все внутренние сотрудники организаций, подрядчики и сторонние поставщики смогут поставить свое программное обеспечение для тестирования до внедрения в производственную среду. Виртуальные машины будут отображать физические машины в рабочей среде.
Звучит здорово, но все немного скептически: это правительственная организация... Бюрократия и бюрократия, вероятно, превратят это в большую трату времени и денег.
Ответ 12
Если мы используем виртуальную машину (vpc 2007, Virtual Server 2005, приложение VMWare и т.д.)
1. Мы можем запускать несколько операционных систем (windows98,2000, XP, Vista, Windows Server 2003,2008, Windows 7/linux/solaris) на одном сервере
2. Мы можем снизить затраты на оборудование и пространство для центров обработки данных
3. Мы можем снизить затраты на электроэнергию и охлаждение переменного тока.
4. Мы можем уменьшить ресурс администратора,
5. Мы можем уменьшить стоимость приложения
6. Мы можем запускать сервер ADS/DNS/DHCP/Exchange/SQL/Sharepoint/файловый сервер... и т.д.