Основные понятия виртуализации серверов
За последние несколько лет виртуализация серверов стала одной из самых доминирующих технологий в ИТ.
Но что такое виртуализация серверов и как она работает?
Виртуализация серверов — это всего лишь причудливый способ обозначения концепции совместного использования оборудования. Такое совместное использование оборудования значительно снижает затраты организации, а также дает множество других преимуществ.
Чтобы понять, почему совместное использование оборудования имеет такое большое значение, подумайте на мгновение о компьютере, который вы используете каждый день. Это может быть настольный компьютер, ноутбук, ПК или Mac. Конкретика на самом деле не имеет значения. Независимо от того, что вы используете, ваш компьютер имеет встроенные аппаратные ресурсы, такие как ЦП, память, сетевой адаптер и жесткий диск. На компьютере также установлена операционная система. Эта операционная система может быть Windows, Mac OS X, Linux или даже чем-то еще. Существуют также приложения (программы), которые работают поверх операционной системы вашего компьютера.
Не так давно сетевые серверы были очень похожи на ваш персональный компьютер. Как и компьютер, который стоит у вас на столе, эти серверы имели аппаратные ресурсы, операционную систему и запускали одно или несколько приложений или инфраструктурных служб. Хотя часто можно установить несколько приложений на одну серверную операционную систему, стало обычной практикой устанавливать одно приложение на сервер. Это помогает предотвратить взаимодействие приложений друг с другом.
Итак, помня об этой идее, представьте, если бы вам пришлось применить тот же подход к использованию вашего персонального компьютера и приобрести отдельный компьютер для каждого приложения, которое вы хотите запускать. Насколько захламленным станет ваш дом или офис? Каково было бы пытаться пронести десять разных ноутбуков через контрольно-пропускной пункт в аэропорту? Сколько бы все это стоило?
К счастью, настольные компьютеры, ноутбуки, планшеты, телефоны и другие конечные устройства действительно хорошо подходят для запуска нескольких приложений, поэтому нам не нужно покупать отдельное устройство для каждого приложения, которое мы хотим запустить. Надеемся, однако, что этот пример нарисовал картину некоторых проблем, с которыми сетевые администраторы часто сталкиваются в центре обработки данных. Серверное оборудование, как правило, дорогое, поэтому использование выделенного оборудования для каждого приложения стоит больших денег. Конечно, сетевые серверы несут и другие расходы, такие как лицензирование, поддержка, обслуживание, питание и охлаждение.
Многие организации обнаружили, что тратят целое состояние на свои ИТ-отделы, а их центры обработки данных трещат по швам, пытаясь разместить все необходимое оборудование. В то же время серверное оборудование становилось все более мощным. Этого, конечно, следовало ожидать, поскольку технологии со временем совершенствуются, но по мере того, как аппаратное обеспечение серверов становилось все более мощным, сетевые администраторы иногда обнаруживали, что они используют лишь малую часть мощности каждого сервера.
Виртуализация серверов вступает в игру
Виртуализация серверов основана на идее, что, поскольку серверное оборудование стало настолько мощным, оно может легко справляться с несколькими рабочими нагрузками. Конечно, все еще существуют рабочие нагрузки, требующие выделенного оборудования, но для большинства рабочих нагрузок требуется гораздо меньше аппаратных ресурсов, чем может быть оснащен современный сервер. Таким образом, вся дополнительная мощность сервера может быть использована для выполнения дополнительных рабочих нагрузок.
Но подождите минутку. Как насчет передовой практики запуска рабочих нагрузок на выделенном оборудовании, чтобы предотвратить взаимодействие приложений друг с другом? Что ж, по-прежнему неплохо использовать выделенный сервер для каждого приложения. Это может помочь предотвратить конфликты, а также предотвратить различные проблемы безопасности. Однако сегодня можно запускать операционную систему и приложения внутри виртуального сервера. Виртуальный сервер ведет себя почти так же, как физический сервер. На самом деле операционная система виртуального сервера может даже не знать, что она работает на виртуальной машине.
В начале этой статьи я описал компьютер как состоящий из оборудования, операционной системы и одного или нескольких приложений. Виртуальный сервер похож на физический сервер тем, что имеет операционную систему и может запускать приложения. Однако виртуальный сервер работает на виртуальном оборудовании.
Виртуальное оборудование и гипервизоры
Так что же это за виртуальное оборудование и откуда оно берется? Виртуальное оборудование — это не что иное, как физическое оборудование, назначенное виртуальной машине. Виртуальная машина не видит все оборудование, установленное на физическом сервере. Вместо этого он видит только то оборудование, которое ему выделено. Следовательно, виртуальная машина имеет отфильтрованное представление доступного оборудования. При таком совместном использовании оборудования на одном физическом сервере становится возможным размещение нескольких виртуальных серверов.
Приведу более конкретный пример. Ниже вы можете увидеть оборудование, установленное на одном из моих физических серверов. Как вы можете видеть на рисунке, этот сервер имеет восьмиядерный процессор и 32 ГБ памяти.
Показанный выше сервер работает под управлением Microsoft Hyper-V. Hyper-V — это то, что известно как гипервизор. Гипервизор — это программный компонент, позволяющий разделить доступные системные ресурсы на виртуальные машины. Hyper-V — не единственный доступный гипервизор. Другие поставщики, такие как VMware, также предлагают гипервизоры.
Диспетчер Hyper-V, изображенный выше, представляет собой консоль управления, поставляемую с Hyper-V. В верхней и средней части консоли перечислены виртуальные машины, существующие на этом сервере. Сейчас включены только три виртуальные машины, показанные на рисунке, но вы можете понять, как распределяются ресурсы. Физический сервер содержит 32 ГБ памяти. Каждой из двух виртуальных машин было выделено по 4 ГБ памяти, а еще одной виртуальной машине было выделено 2 ГБ памяти. Таким образом, 10 ГБ из 32 ГБ сервера используются виртуальными машинами.
Хотя гипервизор является компонентом, который позволяет совместно использовать аппаратные ресурсы виртуальными машинами, гипервизор не может делать это сам по себе. Современные гипервизоры, такие как Hyper-V, требуют, чтобы серверное оборудование поддерживало виртуализацию серверов. Современные серверы обычно содержат параметр BIOS, который можно использовать для включения или отключения поддержки виртуализации серверов. Когда этот параметр включен, гипервизор может работать с физическим оборудованием для выделения ресурсов виртуальным машинам. При этом гипервизор и серверное оборудование совместно работают над созданием границ изоляции, так что каждая виртуальная машина содержит собственные аппаратные ресурсы и собственную выделенную операционную систему.
Чтобы увидеть, как это выглядит, посмотрите на изображение ниже, на котором показана одна из виртуальных машин на сервере Hyper-V. Вы заметите, что эта виртуальная машина работает в окне и работает под управлением обычной операционной системы Windows Server. Вы также заметите, что виртуальная машина видит только выделенные ей 4 ГБ памяти. Он не может видеть другие 28 ГБ хост-сервера.
Безграничные возможности виртуализации серверов
Стоит отметить, что хотя между виртуальными машинами существуют границы изоляции, выделенное оборудование не обязательно заблокировано, чтобы никакая другая виртуальная машина не могла его использовать. Представьте, например, что сервер содержит четыре ядра процессора. Было бы легко представить, что такая система нуждается в одном ядре для гипервизора и способна поддерживать три одноядерные виртуальные машины с оставшимися ядрами ЦП. Такая конфигурация может быть реализована, но не обязательно. Hyper-V допускает избыточное выделение ресурсов.
Четырехъядерная система может, например, поддерживать гипервизор плюс пять виртуальных машин с двумя виртуальными процессорами каждая. Как это возможно в системе, имеющей всего четыре ядра? Такая конфигурация иногда возможна, потому что рабочей нагрузке могут не потребоваться все ресурсы, которые может предоставить ядро ЦП. Например, если вы вернетесь к иллюстрации диспетчера Hyper-V, вы заметите, что виртуальные машины показывают загрузку ЦП на 0%. Это связано с тем, что ЦП хост-сервера обеспечивает гораздо большую производительность, чем любая из виртуальных машин, необходимая в данный момент времени.
Если ядро не используется в полной мере, то неиспользуемые циклы ЦП могут быть выделены для другой рабочей нагрузки. Когда вы создаете виртуальную машину в Hyper-V, вы выделяете виртуальные процессоры для виртуальной машины. Хотя виртуальные процессоры слабо связаны с физическими ядрами ЦП, между ними не обязательно существует взаимосвязь один к одному. Например, если вы посмотрите на изображение выше, вы увидите, что для этой конкретной виртуальной машины было выделено 2 виртуальных процессора, хотя базовый хост имеет только один физический процессор. Диспетчер задач отображает количество ядер, доступных для виртуальной машины, но не отображает отдельные процессоры. Однако быстрый взгляд на монитор системных ресурсов показывает, что эта виртуальная машина считает, что у нее два процессора, показанные справа от этого монитора ресурсов:
Гипервизор позволяет вам определить ресурсы, которые вам нужны для ваших виртуальных машин, а затем делает все возможное, чтобы попытаться предоставить необходимые аппаратные ресурсы. Конечно, производительность хост-сервера, перегруженного слишком большим количеством виртуальных машин (или виртуальных машин, потребляющих слишком много ресурсов), начнет снижаться.
Итак, резюмируем концепцию в компактной форме.
Виртуализация серверов позволяет одному физическому серверу запускать несколько виртуальных машин. А за счет более эффективного использования имеющегося оборудования организации могут значительно сократить расходы за счет использования виртуальных серверов.