Что такое виртуализация? Краткая история развития

Что такое виртуализация? Краткая история развития
8 Января 2018

Определение виртуализации

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

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

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

Виртуальные машины (VM)

Эпоха VM начинается с небольшого числа мейнфреймов в 1960-х годах, в основном, это IBM 360/67, распространившиеся в 1970-х годах. 

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

С появлением Intel 386 в 1985 году, VM заняли свое место в микропроцессорах, которые являются сердцем персональных компьютеров. Функция виртуализации, встроенная в микропроцессоры с необходимой аппаратной поддержкой, как с помощью гипервизоров, так и с реализацией на уровне ОС, имеет большое значение для производительности вычислительных ресурсов, так как чрезвычайно важна для захвата процессорных тактов, которые в противном случае были бы потеряны при использовании современных высокопроизводительных процессоров 3+ ГГц.

Виртуальные машины также обеспечивают дополнительную безопасность, целостность и удобство, учитывая, что на их создание не нужны большие вычислительные затраты. Кроме того, можно расширить возможности виртуальных машин, добавив функции эмулятора для интерпретаторов, таких как виртуальная машина Java, и даже функции полных симуляторов. Запуск Windows под MacOS? Да. Программы для Commodore 64 на современном ПК с Windows? Нет проблем.

Главное, что программное обеспечение, работающее на виртуальных машинах, не знает об этом факте. Даже гостевая ОС, первоначально разработанная для работы на "голом железе", считает, что работает на «аппаратной» платформе. Это самый важный элемент самой виртуализации: реализация развертывания информационных систем в изоляции на основе API и протоколов.

Фактически, мы можем проследить корни виртуализации в эпоху появления концепции разделения времени, которая также появляется в конце 1960-х годов. Концепция «разделения времени» появилась как результат понимания того, что, хотя каждый отдельный пользователь использует компьютер неэффективно, группа пользователей вместе — нет. Это связано с самой формой взаимодействия: пользователь вводит информацию посимвольно, между нажатиями клавиш следует пауза, за время которой компьютер может выполнить тысячи операций, но, если одновременно работает группа пользователей, паузы одного пользователя могут заполняться активностью других. Если подобрать оптимальный размер группы, эффективность использования компьютера значительно повысится. Точно так же пользователям могут предоставляться интервалы времени, которые компьютер тратит на ожидание операций чтения диска, ленты или передачи по сети.

По сравнению с пакетной обработкой, реализация системы, использующей преимущество разделения времени, сложна. Пакетная обработка являлась просто формой организации работы с ранними компьютерными системами. Компьютеры продолжали выполнять одну программу для одного пользователя за раз, а всё, что изменила пакетная обработка — было сокращение времени между запусками программ. Разработка системы, которая поддерживала бы одновременную работу многих пользователей, принципиально отличалась от этого. Контексты («состояния») каждого пользователя и его программ должны были храниться в машине, и иметь возможность быстро заменяться другими. Переключение контекста требовало значительного количества процессорных тактов, и было большой проблемой для медленных машин той эпохи. Тем не менее, так как компьютеры быстро увеличивали скорость, и, что ещё важнее, размер памяти, в которой могли храниться состояния пользователей, накладные расходы на разделение времени соответственно уменьшались.

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

Виртуальная память

Концепция виртуальной памяти, которая также быстро развивалась в 1960-х годах, не уступает по важности идее виртуальных машин. Эпоха мейнфреймов характеризовалась необычайно высокой стоимостью памяти на магнитных сердечниках, а мэйнфреймы с более чем одним мегабайтом памяти, в общем, были редким явлением вплоть до 1970-х годов. Как и в виртуальных машинах, виртуальная память активируется относительно небольшими дополнениями к аппаратной части с помощью набора инструкций.

Различают страничную и сегментную организацию виртуальной памяти.

В большинстве современных операционных систем виртуальная память организуется с помощью страничной адресации. Оперативная память делится на страницы: области памяти фиксированной длины (например, 4096 байт), которые являются минимальной единицей выделяемой памяти (то есть даже запрос на 1 байт от приложения приведёт к выделению ему страницы памяти). Исполняемый процессором пользовательский поток обращается к памяти с помощью адреса виртуальной памяти, который делится на номер страницы и смещение внутри страницы. Процессор преобразует номер виртуальной страницы в адрес соответствующей ей физической страницы при помощи буфера ассоциативной трансляции (TLB). Если ему не удалось это сделать, то требуется дозаполнение буфера путём обращения к таблице страниц (так называемый Page Walk), что может сделать либо сам процессор, либо операционная система (в зависимости от архитектуры). Если страница была выгружена из оперативной памяти, то операционная система подкачивает страницу с жёсткого диска в ходе обработки события Page fault (см. свопинг, подкачка страниц). При запросе на выделение памяти операционная система может «сбросить» на жёсткий диск страницы, к которым давно не было обращений. Критические данные (например, код запущенных и работающих программ, код и память ядра системы) обычно находятся в оперативной памяти (исключения существуют, однако они не касаются тех частей, которые отвечают за обработку аппаратных прерываний, работу с таблицей страниц и использование файла подкачки).

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

Виртуальный адрес при сегментной организации памяти может быть представлен парой (g, s), где g — номер сегмента, а s — смещение в сегменте. Физический адрес получается путём сложения начального физического адреса сегмента, найденного в таблице сегментов по номеру g, и смещения s.

Недостатком данного метода распределения памяти является фрагментация на уровне сегментов и более медленное по сравнению со страничной организацией преобразование адреса.

Существует также гибридная странично-сегментная организация виртуальной памяти

С использованием технологий виртуализации памяти один реальный мегабайт ОЗУ на IBM 360/67 позволил поддерживать полное 24-битное адресное пространство (16 МБ), включенное в компьютерную архитектуру, а каждая виртуальная машина могла иметь свой собственный полный набор виртуальной памяти.

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

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

Поэтому в облаке Cloud4Y все ресурсы являются выделенными. «Переподписка» физической оперативной памяти не допускается, RAM Swaped равен 0%. Это означает, что выделенная при создании виртуальной машины Configured Virtual RAM, которую будет видеть гостевая ОС, является 100% выделенной физической памятью, которая доступна виртуальной машине в любой момент времени. Такой подход на практике позволяет избегать снижения производительности облачных серверов.

Виртуальные рабочие столы

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

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

Виртуальное хранилище

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

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

Широкое внедрение облачного хранилища (не только для резервного копирования, но и как основное хранилище) становится все более распространенным явлением, поскольку и проводные и беспроводные сети обеспечивают скорость передачи данных 1 Гбит/с и выше. Эта функция уже реализована в Ethernet, 802.11ac Wi-Fi и в одном из самых ожидаемых стандартов высокоскоростных сетей - 5G, который в настоящее время тестируется во многих странах.

Виртуальные сети

Даже в мире сетей концепция виртуализации становится все более популярной. «Сеть как услуга» (NaaS) является многообещающим и чрезвычайно популярным вариантом. Эта тенденция будет развиваться из-за дальнейшего внедрения виртуализации сетевых функций (NFV), которые станут объектом наибольшего интереса для операторов, особенно в области мобильной связи. Стоит отметить, что сетевая виртуализация может предоставить реальную возможность для мобильных операторов расширить спектр своих услуг, увеличить пропускную способность и тем самым повысить ценность и привлекательность своих услуг для корпоративных клиентов. Вполне вероятно, что в течение следующих нескольких лет все большее число организаций будет использовать NFV самостоятельно и в гибридных сетях. VLAN (802.1Q) и виртуальные частные сети (VPN) вносят весомый вклад в использование современных технологий виртуализации.

Виртуализация снижает затраты

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

Виртуализация сама по себе не является сдвигом парадигмы, хотя она часто описывается как таковая.

  • Значение виртуализации в любой форме заключается в том, что она позволяет ИТ-процессам быть более гибкими, эффективными, удобными и производительными с помощью огромного набора функций.

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

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

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

  • Результатом этой эволюции является то, что мы видим сейчас. Мы переключили внимание с «железа» на обработку информации и возможность ее предоставления в любое время и в любом месте.

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

Источник: https://dzone.com/articles/the-history-and-state-of-virtualization