Инструменты виртуализации
Оценить производительность того или иного продукта для виртуализации можно по количеству виртуальных сред, которые одновременно могут быть запущены в базовой операционной системе. Как правило, эмуляторы компьютеров не очень эффективно могут управлять ресурсами серверов. Поэтому продукты VMware и Connectix могут исполнять на одном компьютере несколько десятков VE, хотя каждая среда могут содержать свою операционную систему. Эти продукты хорошо использовать для консолидации в гетерогенных системах, но их эффективность на приложениях, написанных для одной определенной среды, будет сомнительна.
Есть также две технологии для виртуализации Linux-приложений, которые распространяются в исходных текстах: User Mode Linux (UML) и Bochs, которая по идеологии похожа на предложения VMware. Имеется несколько аналогичных проектов для FreeBSD на основе Jail. В частности на основе Jail российской компанией ISPserver разработан продукт IspBSD, в котором не реализована поддержка кластерных конфигураций. При их оценке нужно смотреть на производительность и масштабируемость, а также на независимость процессов разных виртуальных сред. Одним из наиболее проработанных на сегодняшний день продуктов является система Virtuozzo.
Virtuozzo существует в вариантах для Linux и FreeBSD и поддерживает многопроцессорные конфигурации. Версия для Linux тестировалась только для платформы Intel; пока не было необходимости переносить ее на другую аппаратную архитектуру. В планах компании разработать аналогичные продукты для Solaris и Windows.
В Virtuozzo стремились не только добиться разделения ресурсов компьютера на виртуальные среды, но и оптимизировать их использование. Одним из методов для достижения этого является совместное использование несколькими средами не изменяемых объектов, таких как файлы программ и библиотек, а также неизменяемые сегменты кода в оперативной памяти. Именно использование этих методов оптимизации позволяет Virtuozzo поддерживать несколько тысяч виртуальных сред на одном физическом компьютере.
Консолидация
Следует выделить два типа консолидации: физическую и логическую. При выполнении физической консолидации серверы физически перемещаются в единый информационный центр, при этом их представление в компьютерной сети может оставаться прежним, то есть за одним физическим сервером может быть закреплено несколько сетевых сервисов. Логическая консолидация - это объединение вычислительных ресурсов серверов возможно без их физического перемещения в единый сетевой ресурс. Сейчас необходимые для этого решения начинают появляться. В частности, они позволяют управлять сетью из нескольких физических серверов как единым устройством.
Сформулируем набор требований, которым должна удовлетворять процедура консолидации, чтобы ее применение было экономически оправданным: доступность пользовательских приложений после консолидации не должна измениться; стиль работы пользователей с приложениями не должен усложниться; информационная безопасность не должна ухудшиться; нужно обеспечить значительное снижение общей стоимости владения информационной системой.
Самый простой пример применения консолидации — слияние двух и более компаний с различными информационными системами. В этом случае консолидация позволяет принести экономию средств за счет исключения дублирующих элементов и эффективного использования уже существующих ресурсов. Другим примером является консолидация информационных систем филиалов. Здесь важна логическая консолидация, которая позволит центральному офису контролировать работу информационных систем филиалов.
При перенесении ресурсоемких приложений на централизованные серверы можно снизить стоимость рабочего места, воспользовавшись для их организации более дешевыми компьютерами, на которых работает строго фиксированный набор программ — в идеале, только браузер. Объединение серверов в едином центре обработки данных позволяет усилить их защиту и увеличить надежности вычислений. Это относится как к физической безопасности (организация доступа к аппаратуре), так и сетевой (удаленный доступ). Это же относится и к надежности, поскольку в централизованном вычислительном центре проще обеспечить оптимальные условия окружающей среды, надежное электропитание, постоянное резервное копирование и быстрое выполнение регламентных работ, чем в распределенной системе.
В каждом конкретном случае можно использовать свои методы и стратегии консолидации, которые позволили ее оптимизировать. Тем не менее, есть универсальное решение — виртуализация, которая в общем случае позволяет менять физическую и логическую конфигурацию информационной системы.
Рис. 2. Логическая консолидация |
Консолидация и виртуализация
Установив в компании один производительный и надежный сервер, можно заменить им несколько маломощных машин, при этом общая стоимость владения таким высокопроизводительным сервером, как правило, оказывается ниже. Правда уменьшится и общая надежность системы.
Стоимость оборудования при использовании более дорогого сервера увеличится, но упростится его техническое сопровождение, а следовательно и общая стоимость владения. В конфигурации двух компьютеров с общим RAID-массивом можно максимально уменьшить время простоя системы после сбоя и перенести виртуальную среду на другой компьютер практически мгновенно. При сбое одного компьютера работа приложений может быть тут же восстановлена на другом — потеряны будут только самые оперативные данные, хранившиеся в кэш-памяти остановившейся машины. Таким образом, консолидация позволяет уменьшать затраты, которые вносят максимальную долю в TCO.
С использованием виртуализации упрощается перенос приложений с одного сервера другой. Этот процесс, как правило, можно выполнить безболезненно — штатной операцией перемещения виртуальной среды. В результате, появляется возможность физически передвигать приложения к месту их оптимального использования. Например, если компания имеет центры обработки данных по всему миру, то с помощью виртуализации она сможет перемещать приложения туда, где они наиболее востребованы.
Оптимизация
Наиболее объемные элементы программ — разделяемые библиотеки, которые являются стандартными практически для всех виртуальных сред, да к тому же не меняются в процессе исполнения программы. Это позволяет использовать их сразу во всех средах, делая ссылку на эту физическую область. В Virtuozzo это реализовано с помощью функции mmap, которая обеспечивает работу с картами памяти. Если же процесс имеет право на изменение общего кода, то ядро вначале копирует этот сегмент в свободную область памяти, а только потом изменяет его содержимое.
Аналогичный механизм оптимизации используется и дисковых накопителей. Для его поддержки разработчики SWsoft реализовали дополнительную прослойку между VFS - виртуальной файловой системой Unix, и драйверами физических файловых систем, таких как ext2, RaiserFS или других. Эта прослойка, называемая VZFS, обеспечивает хранение не изменяемых файлов в единственном экземпляре. Эта прослойка также позволяет реализовать механизм копирования при записи и оптимизацию по памяти, описанную выше.
При использовании подобной системы оптимизации важно правильно решить проблему модернизации программного обеспечения. Эту операцию логично делать централизованно, чтобы модернизированные программы также имели на диске только одну копию. Для реализации такой возможности в SWsoft разработала специализированный инструментарий централизованного обновления.
Особенности виртуализации
Виртуальная среда имеет свою файловую систему, а также доступ к части процессорного времени, памяти и периферийных устройств, такой как сетевая плата. Виртуальных сред на одном компьютере может работать несколько; они тем или иным образом распределяются по всем процессорам, памяти и дискам. Поэтому VE, как правило, не зависят от аппаратуры и могут легко перемещаться с одного компьютера на другой. Кроме виртуальных сред есть базовая операционная система, которая объемлет все виртуальные среды. Именно она скрывает подробности аппаратуры и занимается управлением реальными ресурсами компьютера.
Основной задачей технологии виртуализации является обеспечение жесткого разделения ресурсов различных виртуальных сред. Это условие подразумевает, что процесс, запущенный в одной виртуальной среде, не может получить доступ к файлам, памяти и процессам, принадлежащим другим виртуальным средам. Необходимо обеспечить нормальное взаимодействие процессов внутри виртуальной среды, ограничивая доступ к элементам извне.
Все взаимодействия виртуальной среды с внешним миром выполняются через сеть. Локальные методы взаимодействия, такие как сокеты или другие характерные для Unix способы межпроцессной связи наподобие каналов, открываемых между приложениями разных виртуальных сред, блокируются. Это необходимо как для соблюдения правил безопасности, так и для обеспечения переносимости виртуальной среды на другой компьютер. В частности взаимодействие через сеть дает возможность использовать для защиты приложений традиционные сетевые средства защиты, такие как межсетевые экраны, датчики вторжений, сканеры защищенности и другие. Перемещение виртуальных сред с одного компьютера на другие позволяет организовать балансировку нагрузки, перемещение приложений туда, где они наиболее востребованы, и упростить техническое обслуживание аппаратуры.
Продукты сопровождения
Продукция SWsoft состоит из трех групп: собственно операционная среды Virtuozzo, система управления ресурсами и поддержка кластерной конфигурации, при которой виртуальная среда может перемещаться с одного базового компьютера на другой. Быстрое перемещение виртуальной среды с компьютера на компьютер используется для балансировки нагрузки, проведения регламентных работ и быстрого восстановления после сбоев. Для быстрой миграции виртуальных сред была разработана удобная утилита, которая позволяет установить среду на одном компьютере, передать данные виртуальной среды на другой и восстановить ту же среду на другом компьютере.
Все утилиты, поставляемые SWsoft, можно разделить на две большие части: управления и сбор статистики. Утилиты управления включают программы для создания, конфигурирования, перемещения и уничтожения виртуальных сред, а так же для управления программным обеспечением и шаблонами, которые и позволяют эффективно использовать дисковое пространство. Система мониторинга собирает информацию об использовании ресурсов компьютера виртуальными средами.
У SWsoft есть продукт HSPcomplete — надстройка над Virtuozzo, имеющая множество функций для управления системой из нескольких физических серверов. Продукт предназначен для провайдеров, предоставляющих на основе Virtuozzo услуги по аренде виртуальных серверов. Так, в HSPcomplete встроена система биллинга и определенный интеллект, позволяющий решать бизнес-задачи.
В SWsoft собирается разрабатывать распределенную файловую систему, которая позволяла бы организовать распределенное хранение данных с некоторым уровнем избыточности. При выходе из строя одного устройства хранения данные из системы не исчезают, а извлекаются из копии, расположенной на другом устройстве. Реализация подобной файловой системы позволила бы ускорить восстановление после сбоя и перемещение виртуальных сред на другие компьютеры. Уже есть установки Virtuozzo в «Русь-Банке», где этот продукт используется для консолидации серверных ресурсов.
Разделение ресурсов
В Virtuozzo поставили себе цель, чтобы виртуальные среды не имели никакой информации о «железной» конфигурации сервера. Все псевдофайлы в каталоге /dev/ остаются, но обращение к ним передается в базовую ОС и только затем на драйвера разделяемых ресурсов. Проблемы могут возникнуть в том случае, если приложению необходим прямой доступ к аппаратуре, однако большинство протестированных приложений не требовало такого доступа, то есть корректно работало в виртуальной среде.
Более сложная ситуация с файловой системой /proc, в которой находится справочная информация о ядре, по процессам и периферии. Здесь соблюдается то же самое правило: информация о системе в целом доступна, а по конкретному оборудованию, такому как шины, память и процессор — нет. В некоторых случаях из псевдофайлов этого каталога приложение может получить информацию об отдельной виртуальной среде, а в некоторых — по серверу в целом. В частности, такое различие может быть важно для оценки загруженности процессора: для некоторых программ достаточно выдавать информацию о виртуальной среде, а в некоторых — общую нагрузку на процессоры. При этом разработчики стремились обеспечить выполнение уже существующих приложений без перекомпиляции.
Внутри виртуального сервера нет прямого доступа к сетевому интерфейсу. Все операции с сетью выполняются с помощью стандартных функций ядра, реализация которых в Virtuozzo существенно изменена. Каждой виртуальной среде выделяется определенная гарантированная полоса пропускания внешнего канала и возможность взаимодействия с другими средами того же сервера в рамках концепции виртуальной сети. Причем при необходимости можно реализовать различные способы IP-нумерации: отдельный IP-адрес на каждую среду, общий IP-адрес с разделением по DNS-имени или трансляция адресов в рамках виртуальной сети. Такая организация работы с сетью необходима для того, чтобы приложение виртуальной среды не могло подглядеть передачу данных по сети другими виртуальными средами, обратившись для этого напрямую к драйверу Ethernet.
Реализованы эти функции с помощью специальной прослойки в ядре, которая дает каждой среде свой отдельный виртуальный сетевой интерфейс API, аналогичный сетевому интерфейсу самой ОС Linux.
Виртуализация дисков построена на основе программы изменения корневого каталога chroot. Каждой виртуальной среде выделяется свой подкаталог, в котором располагаются все данные отдельной среды. При этом администратор выбирает точки монтирования и общую конфигурацию файловой структуры, а приложения внутри виртуальной среды не имеют прямого доступа к дискам, поэтому функции монтирования новых накопителей им не доступны. Операции монтирования может выполнять только администратор Virtuozzo из базовой операционной системы. В случае необходимости отдельной среде можно предоставить доступ к одному из дисков напрямую, однако в стандартной конфигурации Virtuozzo это не предусмотрено.
Разделение ресурсов компьютера — памяти, процессорного времени, сетевого доступа и других — построено по принципу минимально гарантированного уровня. Если сервер не слишком загружен, то виртуальная среда может получить дополнительные ресурсы. Однако для системы хранения действуют другие алгоритмы, основанные на ограничении на объем хранимых данных. Если ресурс разделяемый (как это сделано для совместного использования библиотек), то занимаемая ими оперативная и дисковая память разделяется равномерно между пользователями.
Виртуализация
Под виртуализацией подразумевается технология, который позволяет разделить один физический сервер на несколько виртуальных. Можно выделить два основных типа виртуализации: аппаратную и программную. Аппаратная виртуализация использует некоторые особенности платформы и использовать ее на устройствах другого производителя, как правило, не удается. Примерами такой виртуализации являются мэйнфреймы с разбиением по разделам (partitioning), серверы-лезвия и решения, подобные Sun Enterprise 10000, в которых один физический сервер можно разделить на несколько. При этом за каждым сервером, как правило, закрепляется свой набор ресурсов; автоматически менять это распределение приложения не могут.
В большинстве же случаев для консолидации лучше подходят программные решения, которые предполагают создание в рамках одной операционной системы нескольких виртуальных сред (Virtual Environment — VE), в которых приложения работают не могут напрямую взаимодействовать с программами из других VE. Примерами таких продуктов является VMware, Connectix и Virtuozzo. Все они работают на так называемых серверах стандартной архитектуры (т.е. x86), хотя разработчики Virtuozzo не видят проблем в переносе их продукта на другие аппаратные платформы.
Программную виртуализацию можно разделить на два подтипа: эмуляция компьютера или создание виртуальной среды исполнения. В первом случае эмулятор позволяет исполнять в одной операционной системе приложения, написанные для другой. Виртуализация среды исполнения позволяет запускать в VE только приложения одной определенной операционной системы. Эмуляторами компьютеров являются продукты VMware и Connectix. Они, как правило, не очень эффективно используют ресурсы сервера, поскольку значительные их часть тратится на преобразование форматов данных и переключение контекста различных ОС. Так виртуализация компьютера позволяет запустить на одном физическом сервере всего несколько виртуальных. С помощью виртуальных сред исполнения можно добиться большей эффективности и расслоить один сервер на тысячи отдельных VE. Для консолидации используются оба эти подхода, поскольку в некоторых случаях важна работа приложений, предназначенных для различных платформ, а в некоторых — эффективность получившегося решения.