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

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

Собственно говоря, если попытаться дать максимально простое объяснение, то виртуальные серверы имитируют поведение и возможности автономного компьютера, используя только программное обеспечение.

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

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

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

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

Фактически в среде, где используется только Windows, очень легко запутаться. С какой именно операционной системой вы в данный момент работаете? С хостовой Windows или одной из четырех гостевых операционных систем Windows, установленных на вашей системе? Вы можете запутаться, но ваши гостевые ОС и их приложения — никогда. Каждая гостевая операционная система работает так, как будто бы ей безраздельно «принадлежит» вся машина целиком. И в определенном смысле так оно и есть.

Программная аппаратура

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

Однако похожей на чудо эту технологию делают возможности решений виртуализации мирового класса, таких, например, как ESX Server компании VMware, которые позволяют синтезировать аппаратную конфигурацию, крайне мало похожую на реальное аппаратное обеспечение. Например, хост может до мельчайших деталей имитировать процесс инициализации контроллера SCSI, «убеждая» гостевую ОС, что такая инициализация выполняется даже в том случае, если физически никакого контроллера SCSI не существует. Хост может сделать так, что дисководы IDE будут выглядеть как дисководы SCSI, преобразовать сетевые разделяемые средства хранения в локально подключенную память, превратить один адаптер Ethernet в несколько или создать шлюзы между старыми операционными системами и неподдерживаемым современным аппаратным обеспечением, таким как адаптеры Fibre Channel. Вы создаете свои собственные серверы, которые абсолютно точно соответствуют требованиям вашего приложения, хотя используете для этого не отвертку, а мышь.

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

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

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

В большинстве случаев система управления предприятием будет вести мониторинг и взаимодействовать с виртуальной заменой так, как если бы она существовала реально. Такие решения, как HP OpenView, воспринимают виртуальные серверы и взаимодействуют с ними точно так же, как и с физически существующими серверами. «Официальные» конфигурации серверов изменятся после того, как серверы виртуализированы, но, по существу, мало что изменится. Кроме того, большинство систем виртуализации поставляется с программным обеспечением для управления конкретными решениями, благодаря чему администраторы, сидя за центральной консолью, могут манипулировать всеми виртуальными серверами на предприятии. Согласитесь, есть что-то фантастическое в том, чтобы сменить виртуальную плату Ethernet, даже не прикасаясь к оборудованию.

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

Например, предположим, что конфигурация физической памяти поддерживает совместное использование томов. Наши собственные эксперименты проводились с помощью коммутатора для подключаемых к сети систем хранения компании Emulex и дискового массива Xserve RAID компании Apple Computer. Возможность VMotion в решении VMware позволяет прервать работу гостевой ОС и продолжить ее на другом физическом сервере. Буквально за несколько секунд вы можете перенести все работающие гостевые ОС и их приложения с одного сервера на другой для того, чтобы отключить машину на профилактику. Или вы можете использовать VMotion для повторной инициализации ресурсов. Виртуальный ПК, который блокирует занимаемый им сетевой сегмент, может быть перенесен в другое место с меньшим трафиком. Никаких проблем, никакой возни с кабелями и, кстати, прерывание работы, самое большее, на несколько секунд, без прекращения сессии и без перезагрузки.

В среде, где работает несколько операционных систем (распространенная ситуация, которая превращает даже простое объединение в трудноразрешимую проблему), одно из возможных решений — сделать каждую ОС хостом для своей собственной VM. Например, на ПК-сервере, где работает одно из решений виртуализации, предлагаемых VMware, вы можете запускать любую комбинацию Windows 2003 Server, Windows 2000, Windows NT 4.0, различных версий Linux и FreeBSD. Вы можете даже использовать VM для размещения в качестве хоста различных версий одной и той же операционной системы. ПО Linux печально известно свой зависимостью от конкретных версий и вариантов Linux. Виртуализация — единственный способ запускать приложения, созданные для Red Hat 7.2 и SuSe 9.0, на одном сервере.

Виртуально — не значит безупречно

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

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


Программа против железа

Компании VMware и Connectix (теперь Microsoft) потратили немало времени на создание замысловатых обходных решений, позволяющих компенсировать ограничения архитектуры x86. Но на самом деле все это было совсем ни к чему. Когда виртуализация получает помощь от аппаратного обеспечения, производительность решения стремительно растет. Такая аппаратная помощь — обычная вещь для мэйнфреймов и других крупных систем, но сейчас мало кто помнит, что Intel предлагала подобную аппаратную поддержку виртуализации для процессоров x86 еще 20 лет назад.

Процессор 80286 компании Intel позволил Microsoft заменить оригинальную и вызвавшую множество нареканий программную поддержку многозадачности на более быстрый и безопасный аппаратный подход. Желаемого удалось добиться, но несмотря на то, что Microsoft назвала Windows 2.0 (позже известную как Windows/286) многозадачным графическим пользовательским интерфейсом для массового пользователя, клиенты в первую очередь хотели, чтобы Windows поддерживала работу нескольких экземпляров DOS. Тогда это называли многозадачностью DOS, однако на самом деле, единственным способом заставить DOS работать под Windows была именно виртуализация.

Когда первые восторги утихли, в Microsoft и Intel поняли, что программная виртуализация работает слишком медленно, чтобы пользователи остались довольны. В результате Intel спроектировала в 80386 ряд виртуальных процессоров 8086. Каждый из виртуальных модулей 8086 загружал DOS (или любую ОС, предназначенную для 8086) и действовал точно так же, как автономная система. Даже плохонькие приложения DOS могли получать информацию из регистров центрального процессора и переписывать прерывания, не «дергая» понапрасну 80386.

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

Intel, которая первой начала заниматься виртуализацией ПК, и компания Advanced Micro Devices, которая пока не сумела ее поддержать, теперь говорят, не уточняя деталей, о добавлении аппаратной поддержки виртуализации при создании процессоров в будущем. Но до того момента (пока точно не известного), когда начнется реализация технологии Vanderpool компании Intel и Pacifica компании AMD, специалисты по ИТ вынуждены иметь дело с четырехразрядной меткой для каждого сервера x86, который они хотят сделать виртуальным. Однако в сфере ИТ действительно необходимо, чтобы интеллектуальная элита сосредоточилась на более масштабной проблеме, в частности как управлять большими пулами VM и памяти, а не на том, как создавать серверы x86 на C++ без помощи со стороны


Нечто из ничего

Решения виртуализации, такие как VMware ESX Server, используют технологии эмуляции для того, чтобы заставить операционную систему «видеть» аппаратное обеспечение, которого не существует. Но эмуляция также используется как автономная технология в самых разных отраслях. AMD выпустила эмулятор, который позволил разработчикам использовать технологию Opteron/Athlon 64 еще до того, как компания начала выпуск этих процессоров. Компании Palmsource, Nokia и Microsoft поставляют эмуляторы устройств вместе со своими мобильными средами разработки не только для того, чтобы ускорить разработку, но и для того, чтобы дать кодировщикам возможность проверять корректность своего программного обеспечения на мобильных платформах, которых у них нет. Intel и Transmeta используют низкоуровневую эмуляцию для работы 32-разрядного программного обеспечения для архитектуры x86 на процессорах VLIW (очень длинное командное слово).

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

Bochs эмулирует процессор x86 вплоть до уровня команд, но значительно чаще он используется для размещения нескольких виртуальных сессий Linux, BSD и Windows на одной машине. Он переносим на платформы в иной, нежели x86, архитектуре (особняком стоит Mac) и поддерживает широкий спектр гостевых ОС.

Проект Xen — это многообещающий хост виртуализации, разработанный Кембриджским университетом. Он использует модифицированное ядро x86 Linux для размещения нескольких экземпляров гостевых ОС в архитектуре x86, главным образом Linux. В основе своей подход Xen соответствует тому, который был реализован компанией VMware для ESX Serve, но с одним существенным отличием: он требует, чтобы некоторые фрагменты каждой гостевой ОС были переписаны для работы на базе Xen. Xen — это активно развивающийся проект, и он заслуживает более пристального внимания.

UML (User Mode Linux) развивается медленно, но с включением его в состав SLES (SuSe Linux Enterprise Server) Version 9 ситуация несколько изменилась. UML допускает работу нескольких виртуальных экземпляров Linux, но с одной оговоркой.

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

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