Назад к основам (часть 1): виртуализация 101

Опубликовано: 21 Апреля, 2023

Введение

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

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

Изображение 27153
Рисунок 1. Использование ресурсов каждого сервера происходит по похожей схеме.

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

Изображение 27154
Рисунок 2. Разрастание серверов приводит к большому количеству отходов

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

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

В 2001 году компания, существующая уже три года, выпустила свой первый продукт, предназначенный для центров обработки данных. Эта компания, VMware, выпустила версию 1.0 продукта, который они назвали ESX (аббревиатура от Elastic Sky X). Хотя виртуализация существовала и в других формах, ESX стала первой серьезной успешной попыткой виртуализации x86. Я пока не буду много говорить конкретно о VMware; это будет позже в этой серии. Достаточно сказать, что ESX и появление других гипервизоров изменили ИТ в том виде, в каком мы его знаем.

Типы виртуализации

В этой серии статей я собираюсь сосредоточиться в первую очередь на том виде виртуализации, который заставляет работать такие компании, как VMware, — общей виртуализации серверов x86. Однако существует ряд различных вариантов виртуализации. Здесь я кратко коснусь некоторых из них. Хотя это разные виды виртуализации, эти типы виртуализации обычно включаются в планы виртуализации серверов x86.

  • Виртуализация сети. VLAN — виртуальные сети — существуют уже давно. VLAN — это группа систем, которые обмениваются данными в одном и том же широковещательном домене, независимо от физического расположения каждого узла. Создавая и настраивая VLAN на физическом сетевом оборудовании, сетевой администратор может разместить два хоста — один в Нью-Йорке и один в Шанхае — в том, что кажется этим хостам одной и той же физической сетью. Хосты будут общаться друг с другом по этому сценарию. Эта абстракция позволила компаниям отказаться от простого использования физических соединений для определения сетей и получить возможность создавать менее дорогие сети, которые являются гибкими и удовлетворяют текущие потребности бизнеса.
  • Виртуализация приложений. Виртуализация — это абстракция. Когда дело доходит до виртуализации приложений, традиционные приложения помещаются в контейнер, который позволяет приложению считать, что оно работает на исходной поддерживаемой платформе. Приложение считает, что у него есть доступ к ресурсам, которые ему необходимы для работы. Хотя приложения виртуализации на самом деле не «устанавливаются» в традиционном смысле, они по-прежнему выполняются в системах, как если бы они были установлены.
  • Виртуализация рабочего стола. Виртуализация рабочих столов и серверов — две стороны одной медали. Оба предполагают виртуализацию целых систем, но есть некоторые ключевые отличия. Виртуализация серверов включает в себя абстрагирование серверных рабочих нагрузок от базового оборудования, которые затем доставляются клиентам в обычном режиме. Клиенты не видят разницы между физическим и виртуальным сервером. С другой стороны, виртуализация десктопов виртуализирует традиционный десктоп и переносит выполнение клиентской рабочей нагрузки в центр обработки данных. Затем доступ к этим рабочим нагрузкам осуществляется с помощью ряда различных методов, таких как тонкие клиенты или другие средства.

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

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

Подумайте об этом так: когда вы устанавливаете Windows Server 2008 R2 на физический сервер, вы устанавливаете операционную систему, которая будет содержать несколько приложений. Эти приложения ожидают, что операционная система будет управлять аппаратным уровнем. В конце концов, Microsoft Word не будет отвечать за прямой доступ к оборудованию; вместо этого Word выполняет системные вызовы, которые предписывают операционной системе действовать от его имени. На рис. 3 показана эта традиционная вычислительная модель. Стрелки на рис. 3 показывают, как происходит обмен данными.

Изображение 27155
Рисунок 3: Традиционная вычислительная модель

Независимо от того, как вы поступите, приложения все равно будут ожидать, что их размещает родная операционная система. Вы не сможете, например, выдернуть Windows из-под Word и ожидать, что приложение запустится. Но должен быть способ лучше использовать базовое оборудование. Как я упоминал ранее, если мы представим, что рис. 3 — это сервер, его среднее использование довольно низкое, иногда около 10%. Итак, как нам увеличить это использование, гарантируя, что приложения по-прежнему имеют свои собственные границы, в которых они могут работать?

Мы развертываем программный слой гипервизора, как показано на рисунке 4.

Изображение 27156
Рисунок 4: Гипервизор

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

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

Преимущества виртуализации

В предыдущем разделе я намекнул на некоторые преимущества различных видов виртуализации, но не обсуждал преимущества, которые вы можете получить от общей виртуализации x86. Их много, и именно по этим причинам виртуализация серверов x86, по прогнозам, станет нормой, а не исключением к концу 2011 года. Другими словами, полная виртуализация превысит отметку в 50%. Вот два преимущества виртуализации. Подробнее будет рассмотрено во второй части.

Разделение рабочей нагрузки

Одна из причин появления термина «разрастание серверов» заключалась в том, что серверы появлялись повсюду, чтобы служить одной цели. Причина: Windows не всегда хорошо работает, когда обслуживается несколько рабочих нагрузок. Преимущество виртуализации x86 заключается в том, что рабочие нагрузки по-прежнему могут быть разделены, но вместо того, чтобы размещаться на отдельных физических серверах, эти же приложения устанавливаются внутри отдельных программных контейнеров, известных как виртуальные машины. Внутри этого контейнера администраторы устанавливают операционную систему, такую как Windows, точно так же, как на физическом оборудовании. Гипервизор отвечает за то, чтобы каждый программный контейнер имел ресурсы, которые ожидает увидеть операционная система. Например, для работы Windows требуется доступ к оперативной памяти, дисковым ресурсам хранения и процессору. Кроме того, гипервизор убеждается, что контейнер виртуальной машины считает, что у него есть и другие важные ресурсы, такие как клавиатура, мышь и адаптер дисплея.

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

Улучшения использования ресурсов

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

На рис. 5 показано, как это может улучшить использование. Очевидно, что это преувеличенная и нормированная диаграмма. Он показывает равные рабочие нагрузки, что, вероятно, не так, они никогда не меняются. На самом деле, имейте в виду, что есть пики и долины. В виртуализированной инфраструктуре необходимо позаботиться о разделении рабочих нагрузок с конкурирующими требованиями между разными хостами. Тем не менее, вы все еще получаете большую выгоду здесь. В примере, который я только что использовал, вы можете вывести из эксплуатации четыре сервера и оставить на месте только один. Это означает меньшую вероятность сбоя оборудования, более низкие текущие расходы на питание и охлаждение, а также более низкие текущие расходы, связанные с заменой серверов. Я называю это беспроигрышным!

Изображение 27157
Рисунок 5. Оптимизация использования ресурсов с помощью виртуализации

Резюме

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