Современный мир информационных технологий немыслим без Виртуализации "всего на свете" - серверов, операционных систем(ОС), сетевых плат(NIC-карт)-(Xsigo), дисковых массивов(NAS,RAID)-(HDS - Hitachi Data Systems).
Однако, мало кто задумывается над тем, что именно привнесла виртуализация в современный IT, и в чём на самом деле её недостатки, а где именно - достоинства.

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

Кроме того, широко обсуждается "мобильность" целой гостевой ОС, то есть возможность миграции(или переноса) по локальной или глобальной сети целой виртуальной машины(или аналога физического сервера), представленной в случае виртуализации в виде всего одного файла .VMDK, правда размером более чем несколько гигабайт. А что именно даёт такая мобильность?
Кроме достоинств, связанных с DR(Disaster Recovery-восстановление после пожара,стихийного бедствия) и BackUp(восстановление на случай кратковременного сбоя), сопряжена такая мобильность и с риском потери именно той актуальной копии данных, которая может понадобиться в любой момент. Другими словами, можно запутаться где именно что - поскольку копий виртуального сервера стало более одной, неизвестно в чём отличие одной от другой, и где наиболее "свежая". Тот, кто хоть немного имел дело с виртуальными машинами и их "резервным копированием" - поймет, как это легко - запутаться в их множестве и/или актуальности на определенный момент в прошлом или будущем.

Вдобавок, существует целый класс серверных приложений, которые нуждаются в Кластеризации. Например, Oracle Grid - кластер из нескольких физических серверов для "распараллеливания" нагрузки на базу данных с одного - на несколько физических серверов.
Не приходится говорить, что не любую ОС возможно паравиртуализировать из-за закрытости кода например, и не все приложения нуждаются в виртуализации, есть такие, которые скорее наоборот хотят "больше есть hardware", чем быть виртуализированными.

Вообще, сложилось у меня впечатление, что виртуализация может быть оправдана(или обусловлена) лишь наличием legacy-hardware(унаследованное железо) и inherited-software(доставшийся в наследство софт). Причем, серверное программное обеспечение, как правило, менее нуждается в виртуализации, в сравнении с настольным ПО, так как оно легко комбинируется в виде NT-сервиса или Unix-процесса (устанавливается с другими приложениями на одном и том же физическом сервере). Зачем же тогда его виртуализировать, заранее предполагая потерю его производительности, связанную с выполнением в виртуальным домене, в котором всё эмулируется - память, процессор, жёсткий диск, сетевая плата?
Однако, мало кто задумывается над тем, что именно привнесла виртуализация в современный IT, и в чём на самом деле её недостатки, а где именно - достоинства.

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

Кроме того, широко обсуждается "мобильность" целой гостевой ОС, то есть возможность миграции(или переноса) по локальной или глобальной сети целой виртуальной машины(или аналога физического сервера), представленной в случае виртуализации в виде всего одного файла .VMDK, правда размером более чем несколько гигабайт. А что именно даёт такая мобильность?
Кроме достоинств, связанных с DR(Disaster Recovery-восстановление после пожара,стихийного бедствия) и BackUp(восстановление на случай кратковременного сбоя), сопряжена такая мобильность и с риском потери именно той актуальной копии данных, которая может понадобиться в любой момент. Другими словами, можно запутаться где именно что - поскольку копий виртуального сервера стало более одной, неизвестно в чём отличие одной от другой, и где наиболее "свежая". Тот, кто хоть немного имел дело с виртуальными машинами и их "резервным копированием" - поймет, как это легко - запутаться в их множестве и/или актуальности на определенный момент в прошлом или будущем.

Вдобавок, существует целый класс серверных приложений, которые нуждаются в Кластеризации. Например, Oracle Grid - кластер из нескольких физических серверов для "распараллеливания" нагрузки на базу данных с одного - на несколько физических серверов.
Не приходится говорить, что не любую ОС возможно паравиртуализировать из-за закрытости кода например, и не все приложения нуждаются в виртуализации, есть такие, которые скорее наоборот хотят "больше есть hardware", чем быть виртуализированными.

Вообще, сложилось у меня впечатление, что виртуализация может быть оправдана(или обусловлена) лишь наличием legacy-hardware(унаследованное железо) и inherited-software(доставшийся в наследство софт). Причем, серверное программное обеспечение, как правило, менее нуждается в виртуализации, в сравнении с настольным ПО, так как оно легко комбинируется в виде NT-сервиса или Unix-процесса (устанавливается с другими приложениями на одном и том же физическом сервере). Зачем же тогда его виртуализировать, заранее предполагая потерю его производительности, связанную с выполнением в виртуальным домене, в котором всё эмулируется - память, процессор, жёсткий диск, сетевая плата?
no subject
Date: 2014-01-31 04:07 pm (UTC)no subject
Date: 2014-01-31 04:10 pm (UTC)Виртуальные веб-сервера у провайдеров - наглядный, но не единственный пример, когда это нужно.
no subject
Date: 2014-01-31 04:18 pm (UTC)Если виртуализация грамотная, то потери заметны не будут. В некоторых случаях будет даже плюс.
Но в целом да -- простая экономия железа (и нервов при восстановлении)
no subject
Date: 2014-01-31 04:21 pm (UTC)Любые ли серверные или клиентские приложения одинаково приемлемы для виртуализации?
no subject
Date: 2014-01-31 04:23 pm (UTC)***
Меня ещё вот такой вопрос занимает: как это столько лет обходились без виртуализации, а потом в одночасье вдруг стали абстрагироваться от физического железа? Неужели software без конкретного hardware имеет право на существование?
no subject
Date: 2014-01-31 04:26 pm (UTC)no subject
Date: 2014-01-31 04:27 pm (UTC)no subject
Date: 2014-01-31 04:32 pm (UTC)Сформулируйте - что такое по вашему Облако/Облачные вычисления и как они связаны с виртуализацией?
no subject
Date: 2014-01-31 04:36 pm (UTC)Некоторые ОС предоставляют механизмы легковесной изоляции (jail в FreeBSD, LXC в Linux), однако их можно использовать для только если клиентов устраивает невозможность установки своих версий ядра. Таким образом, средства легковесной изоляции jail и LXC создают технологическую основу для дешёвого VPS, а гипервизоры VMwareESX/Xen/KVM/bhyve - для дорогого.
Если вы "толстый" пользователь - сразу берите себе дедик, а лучше - несколько. VPS - это игрушки для бедных.
no subject
Date: 2014-01-31 04:40 pm (UTC)no subject
Date: 2014-01-31 04:41 pm (UTC)А вообще удобно, если говорить о специфических серверах. Иногда действительно достаточно одного процессора, а платы расширения не нужны. Покупать на каждый сервер свою машину? Потом покупать резевную? Вот с виртуализацией на том получится сэкономить. Востановление же на момент выхода из строя является отдельной темой.
Конечно, было бы прекрасно, если бы удалось создать сервер с большим числом процессоров. Тогда стали бы обыденной реальностью тонкие клиенты. На тех же ARM-процессорах. В офисах тишь да гладь. :) Обслуживать удобно. :) Процессоры добавлять. :))
no subject
Date: 2014-01-31 04:42 pm (UTC)no subject
Date: 2014-01-31 04:44 pm (UTC)no subject
Date: 2014-01-31 04:44 pm (UTC)no subject
Date: 2014-01-31 04:46 pm (UTC)no subject
Date: 2014-01-31 04:51 pm (UTC)Не знаю, откуда Вы сделали этот вывод, но явно не из моих реплик. И да, этот вывод не соответствует действительности.
no subject
Date: 2014-01-31 04:52 pm (UTC)В результате имеется гарантированная безопастность как для клиентских приватных данных(куки, логины,пароли), так и для сетевой среды, куда не проинкают "возможные подцепленные трояны", которые клиент мог нацеплять во время своего серфинга по сайтам?
no subject
Date: 2014-01-31 04:59 pm (UTC)no subject
Date: 2014-01-31 05:02 pm (UTC)Тогда, в чём именно достоинство такой схемы "Маленький и малонагруженый, но свой собственный" ?
В том, что клиент сам может делать свои индивидуальные настройки "php, python или RoR" ?
Будет ли это актуально для широкой публики? Может быть это будет востребовано например студентами, которые осваивают курс Computer Science? Не согласны?
no subject
Date: 2014-01-31 05:04 pm (UTC)no subject
Date: 2014-01-31 05:07 pm (UTC)Тут неуместно использовать будущее время. Это уже актуально для достаточно широкой публики.
no subject
Date: 2014-01-31 05:10 pm (UTC)no subject
Date: 2014-01-31 05:14 pm (UTC)no subject
Date: 2014-01-31 05:16 pm (UTC)Зачем это нужно? Чаще всего для удобного создания отдельных независимых, свободно переносимых, экземпляров серверов. Это позволяет довольно легко решить задачу обеспечения отказоустойчивости, задачу масштабирования, задачу добавления новых видов серверов.
Чаще всего коммерческому сервису выгоднее потерять 10-15% производительности в случае виртуальных серверов, чем решать эти задачи созданием новых физических серверов по необходимости.
Как ни странно, кластеризация не противоположна виртуализации, а ортогональна ей. Но сами по себе кластеры нужны в довольно специфичных случаях, поэтому создать гомогенную среду, удобную для кластеризации, не сложно.
Скажем, облака обычно представляют из себя себя сервера виртуализации поверх кластера. Кластеризация позволяет управлять облаков как единой структурой, а виртуализация дает создавать специфические сервера в гомогенной структуре.
no subject
Date: 2014-01-31 05:19 pm (UTC)