Выбор программного обеспечения виртуальной машины на Linux

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

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

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

5
05.06.2011, 00:38
2 ответа

Более профессиональные инструменты, например, VirtualBox (иначе xVM), и VMware поддерживают несколько снимков и "тонкого" клонирования.

VMware дополнительно имеет некоторое ограниченное 3D ускорение, интеграция с Eclipse, отлаживающим (позволяет Вам отладить приложения в VM снаружи VM), виртуальные сетевые функции, поддержка мультимонитора, и запишите/воспроизведите функциональность (полезный для отладки проблем параллелизма - записывает на том, какое ядро и в том, что последовательность любые инструкции выполняет).

VirtualBox и Виртуальная машина Ядра намного легче получить работу, потому что Вы не должны компилировать драйвер ядра. Они также оба свободны, в то время как VMware стоит ~ 190$. KVM является абсолютно открытым исходным кодом, в то время как только некоторые части VirtualBox.

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

Наконец, если Вы думаете о виртуализации набора серверов, рассматриваете основанную на гипервизоре ОС как Вашу базу, а не Linux, такой как ESXI VMware, HyperV Microsoft или Xen. Они обычно предлагают вещи как живая миграция, совместное использование памяти и отказоустойчивость, и имеют меньше служебное. Однако они обычно не могут использоваться от компьютера, на котором они работают, вместо этого полагаясь на удаленные инструменты управления, такие как vSphere или System Center. Все три из этих гипервизоров являются бесплатными. VMware заряжает приблизительно $3 тысячи для получения доступ ко всем хорошим функциям все же. Решения Microsoft и Xen полнофункциональны в бесплатном продукте. (Решение Microsoft doens't работает очень хорошо, если Вам не развернули Active Directory уже хотя),

4
27.01.2020, 20:38
  • 1
    VBox требует поддержки ядра, и та поддержка ядра уже не находится в ядре. Так, я думаю, что VirtualBox действительно требует компиляции модуля ядра. Я имею, конечно, кажутся ими. Я думаю, что само программное обеспечение компилирует его для Вас, все же. +1 для ответа, я думаю, что мы охватываем другие проблемы. –  Faheem Mitha 05.06.2011, 12:35
  • 2
    Кроме того, можно ли уточнить "несколько снимков и думать ли, клонируясь"? –  Faheem Mitha 05.06.2011, 12:46
  • 3
    @Faheem: различие - то, что драйвер VirtualBox обычно включается с большинством дистрибутивов Linux. Вы просто устанавливаете пакет, и Вы сделаны. Тонкое клонирование является способностью клонировать VM, не копируя все, что это - данные. Тонкий клон только хранит изменения между собой и независимо от того, что исходный клон был. Это означает, что тонкий клон может быть меньшим, чем просто копирование различных файлов, которые составляют VM. Несколько снимков являются способностью иметь больше чем один снимок за один раз - в произвольном дереве. –  Billy ONeal 05.06.2011, 12:54
  • 4
    @Faheem: Возможно, это изображение объясняет несколько снимков лучше? Каждый значок является снимком, и Вы можете к любому из них в любом моменте времени-> cjvandyk.com/blog/Lists/Photos/042308_1817_VMWareSnaps1.png –  Billy ONeal 05.06.2011, 12:56
  • 5
    @Billy: Спасибо за объяснения. Я предлагаю объединить их в основной ответ. –  Faheem Mitha 05.06.2011, 13:05

Вот несколько очевидных критериев, которые я рассматриваю с положить точки зрения.Отказ от ответственности: Я ничего действительно не знаю о виртуальных машинах, я просто использую их. У меня есть некоторый опыт с помощью Xen, VirtualBox, Контейнеров Linux, VMware и Linux-Vserver. VMware является собственным, другие - бесплатное программное обеспечение. Все они требуют специальной поддержки ядра. Linux Containers единственный, который поддерживается ядром магистрали.

На полезную статью Joe Brockmeier существуют примерно два отличающиеся из виртуализации. Тот, где существует абсолютный гость ОС, работающая сверху Вашего хоста ОС. Это называют hypervisor virtualization. Если гостем является также Unix, это означает, что гость выполняет другое ядро Unix от хоста. Дело обстоит так, даже если они - оба Linux или даже то же распределение. Второе - то, где гостевая виртуальная машина использует то же ядро в качестве хоста ОС. Это называют container-based virtualization. В дальнейшем я назову их hypervisors и containers если коротко.

Из тех я упомянул выше, Xen, VirtualBox, и VMware hypervisors, Контейнеры Linux и Linux-Vserver containers.

Очевидно, существуют компромиссы в этом. Основное различие - это для hypervisors, можно выполнить любую ОС, которая поддерживает аппаратные средства, т.е. можно запустить Windows в верхней части Linux. Для containers, ядро хоста, которое является единственной "ОС" в изображении действительно, делает изоляцию и управление ресурсами. В этом случае виртуальная машина является своего рода искусственной конструкцией, и абстракция может быть текучей, в том смысле, что виртуализация может быть менее, чем прекрасной, который может вызвать раздражающие проблемы. Например, можно найти, что выполнение сервиса на порт x в виртуальной машине вмешивается во что-то выполняемое на порте x в хосте.

Так, некоторые конкретные вопросы для рассмотрения, вернувшись к этим двум типам как возможные.

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

Рассматриваемое программное обеспечение требуют, чтобы ядро было исправлено, или оно исходно поддерживается ядром? Если это требует исправления, которое является главной оборотной стороной, поскольку это означает, что патчи должны быть сохранены в синхронизации с изменяющимся ядром. Если функциональность уже присутствует в ядре, что это не проблема. Конечно, некоторые виртуальные машины не требуют поддержки ядра и выполнения в пространстве пользователя. Существует относительно немного машин виртуализации, которые требуют специальной поддержки ядра и имеют ту поддержку в ядре магистрали. Только два, о которых я знаю, являются Контейнерами Linux (container), и KVM (hypervisor).

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

Является программное обеспечение виртуальной машины собственным или бесплатным программным обеспечением? Если это будет собственным, то это никогда не будет включаться в ядро Linux. Конечно, в зависимости от Вашей философии, можно найти одно предпочтительное по другому по идеологическим причинам.

Выполнение виртуализации. Как быстро это? Обычно containers быстрее, чем hypervisors, хотя разница не может быть значительной.

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

Уровень изоляции от остальной части системы. Некоторые виртуальные машины отличаются по этому. Идеально Вы не хотите виртуальную машину, знающую об или взаимодействующую с хост-системой или другими гостевыми системами всегда. По определению, hypervisors полностью изолируются. Уровень изоляции для containers варьируйтесь в зависимости от реализации. Реализации варьируются вполне значительно в этом отношении.

3
27.01.2020, 20:38
  • 1
    +1 - но не забывайте более низкие гипервизоры уровня как ESXI, HyperV и Xen. Они существенно отличаются по сравнению с решениями для виртуализации рабочей станции как Виртуальное Поле или VMware. –  Billy ONeal 05.06.2011, 12:25
  • 2
    @Billy: Спасибо за Ваш комментарий. Я не familar достаточно с гипервизорами для знания, какие различные типы существуют. Возможно, это - что-то, что Вы могли уточнить в Вашем ответе. –  Faheem Mitha 05.06.2011, 13:08
  • 3
    Неправильно. Существует поддержка XEN и KVM в ядре. И для материала как контейнеры существуют довольно близкие отношения (конфигурация ядра требуется). –  vonbrand 01.02.2013, 21:57

Теги

Похожие вопросы