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

Одной из основных функций операционной системы всегда была унификация способа взаимодействия пользовательских программ с аппаратурой [1], в частности, создание такого способа взаимодействия с устройством, при котором все специфические операции скрываются от пользователя. Так, скажем, существует гигантское разнообразие дисков-накопителей информации, но большинство из них может быть представлено внутри ОС как некое устройство доступа, информация с которого может быть получена (и записана) блочным способом. Таким образом, осуществляется виртуализация устройств — программа пользователя, работающая, например, с подобным устройством, видит его как некий обобщенный или виртуальный диск.

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

Упомянутый способ виртуализации одного устройства обычно работает только внутри одной операционной системы, для ее клиентов (в роли которых, обычно, выступают процессы). Только процессы ОС могут использовать подобные устройства. Если вспомнить, как процессор и программа пользователя могут общаться с устройствами, то оказывается, что на самом деле все общение с внешним миром у них ограничено некоторым специальным набором команд. Например, командами in/out в процессорах Intel или предопределенными адресами памяти, ассоциированных аппаратурой с управлением устройствами. В этом случае можно осуществить эмуляцию «внешнего мира» и устройств для подобных команд так, как если бы процессор при их выполнении работал с реальным периферийным или другим оборудованием.

Эмуляция компьютеров

Подобные идеи возникли довольно давно и трансформировались в специфический подход создания виртуального компьютера «над» физическим. Зачем? В общих чертах, создание виртуального компьютера как программы позволило бы использовать внутри него типовую операционную систему, с поддержкой типовых «внешних» (хотя и виртуальных) устройств и обеспечить дополнительный уровень изоляции копий операционных систем друг от друга (естественно, если на одном физическом компьютере возможно запустить несколько виртуальных). По такому пути одной из первых пошла компания IBM для мэйнфреймов (ОС OS/3x0, последняя из них — OS/390 с ОС VM и системой LPAR — Logical partitioning). Пользователь получал в свое распоряжение полноразмерный и полнофункциональный виртуальный компьютер, на который он мог поставить собственную версию ОС и установить собственное прикладное ПО. Этот компьютер включал оперативную память, возможность использования процессора, собственные виртуальные периферийные устройства типа диска или сетевой карты — практически все то, чем обладает обычный компьютер, только в виртуальном виде. Количество обслуживаемых виртуальных компьютеров на одном аппаратном компьютере определялось многими факторами, в частности, лицензией, доступными ресурсами типа памяти, диска, возможностями центрального процессора и т.д. На мощной физической машине можно было запустить множество виртуальных, например, IBM утверждает, что на S/390 возможно запустить более десятка тысяч копий виртуальных компьютеров с ОС Linux [2].

Другой способ — это разделение ресурсов по разделам. По этому же пути пошли компании Compaq, Sun Microsystem , IBM, HP. Покупая компьютер, на самом деле пользователь получает большой набор ресурсов, из которых он может «собрать» несколько виртуальных компьютеров. Так, например, получив 16-процессорную версию системы, можно разбить ее на 16 автономных однопроцессорных компьютеров или на 10 однопроцессорных и одну 6-процессорную вычислительную систему. Имеющиеся ресурсы отдаются в исключительное пользование какой либо конкретной системе. Плюсами подобного решения являются простота конфигурации и использования в сочетании с высоким уровнем гарантии ресурсов. То есть если надо быть уверенным, что при запросе на обслуживание требуется получить себе целиком один процессор, то вы его получите. Такой режим, одновременно является минусом — отсутствие разделения ресурса между разными потребителями понижает степень его используемости и, соответственно, повышает цену решения (www.sun.ru/win/products/servers/ ent10000/ras/overview.html#domains, www.sun.ru/win/products/servers/ ent10000/index.html).

Стоит отметить подход, использованный в проекте WABI компании Sun Microsystems и состоящий в эмуляции системных и библиотечных вызовов путем выполнения их через «родные» для основной операционной системы вызовов. С помощью WABI можно внутри эмулятора запускать Microsoft Office как почти «родной» процесс ОС Solaris. Тем не менее, этот способ применяется редко, а сам эмулятор WABI не имел большого успеха из за проблем с совместимостью версий и большим количеством ошибок реализации и недоделок.

Эмуляция устройств

В этом случае эмулятор представляет собой некий процесс, внутри которого осуществляется моделирование набора стандартных устройств компьютера — памяти, сетевой платы, графической платы, клавиатуры, мыши и т.д. Особо стоит отметить, что кроме устройств эмулируется и BIOS, поэтому в этот процесс можно ставить полнофункциональную операционную систему, которая будет работать «не зная» о том, что она находится внутри эмулятора. Более того, на не-Intel платформах существовали и активно использовались до последнего момента системы, эмулирующие систему команд Intel — например, такой эмулятор входил в состав поставки Windows NT для процессора Alpha компании DEC (www.insignia.com/about/default.asp#1). Подобных эмуляторов для Intel компьютеров существует несколько — например, Virtual PC от Connectix (www.connectix.com/products), VMware Workstation of VMware (www.vmware.com/support/ws3/doc, [3]) или бесплатная реализация для Linux Plex86 http://www.plex86.org/.

Наиболее распространен сейчас эмулятор, разработанный компанией VMware. Принцип использования ресурсов основной ОС практически близок к идее разделов: такие ресурсы как оперативная память компьютера и дисковое пространство делятся между экземплярами запущенных эмуляторов практически без какого-либо совместного использования. Строго говоря, возможно, например, совместное использование дискового пространства, но требуется специальная организация доступа эмуляторов к данным путем выделения разделяемой области, которая будет видна изнутри через стандартные сетевые средства. Но, тем не менее, копия операционной системы, вернее, набора ее файлов, необходимых для функционирования ОС, у каждого экземпляра виртуального компьютера будет своя. Особенно проблематична организация эффективного использования собственной оперативной памяти виртуального компьютера, поскольку она практически никак не может быть разделена между разными экземплярами эмуляторов. Отдельной проблемой такого рода решений является тот факт, что ОС внутри эмулятора ничего не знает о существовании внешней ОС и, например, считает своим долгом в случае отсутствия активности своих процессов загрузить процессор выполнением процесса типа idle (в UNIX). Другой проблемой таких решений является двойное кэширование данных — обращение к данным пытаются кэшировать обе операционные системы, что явно не повышает производительности. Надо отметить, что другие ресурсы честно делятся между всеми экземплярами эмуляторов, например, сетевая плата или процессор (хотя VMware в принципе не позволяет предоставлять более одного процессора загружаемой ОС). В результате работа одного ядра ОС внутри другого приводит к существенной потере производительности системы в целом. Такая реализация системы приводит к невозможности запуска значительного количества экземпляров виртуальных машин на одном компьютере и практически их число лежит в диапазоне от 1 до 4-5 на одну типовую рабочую станцию.

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

Виртуализацию в жизнь

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

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

  • сервис разделяемого Web-хостинга;
  • сервис по переносу своего компьютера на площадку провайдера (collocation);
  • сервис по использованию компьютера, предоставленного провайдером на площадке центра данных (dedicated server);
  • все остальные сервисы, например, по аренде приложений (ASP), сервисы по управляемым сетям и т. д. (типа MSP — managed services providing).

Ценовой диапазон первого вида хостинга приблизительно составляет 5-30 долл. в месяц, от одного клиента, второй от 150 и выше в зависимости от трафика, третий от 350 до 2000 долл. в месяц, хотя, естественно, встречаются и другие цены. Очевидно, что в таких условиях экономически нецелесообразно предоставлять клиенту систему, близкую по возможностям к обычному серверу по цене разделяемого хостинга. По мнению Gartner Group, в годовых тратах на обслуживание системы доля цены аппаратного обеспечения составляет не более 12%, и именно это определяет дороговизну использования выделенного сервера. Кроме этого имеются еще и технические проблемы этого вида хостинга, например, низкая устойчивость к сбоям (все пользователи разделяют один и тот же экземпляр сервера), проблемы с безопасностью и гарантиями получения ресурсов (один зависший скрипт может повлиять на всех клиентов сервера).

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

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

Технология Virtuozzo

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

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

Кроме этого, существует еще некоторый набор требований, вытекающих из реализации технологии на реальных серверах. Например, представим себе, что мы смогли запустить 1000 виртуальных компьютеров на одной машине, предназначенных для запуска ОС Linux. Если мы будем использовать технологию с эмуляцией аппаратуры и предоставлением каждой виртуальной машине хотя бы по 32 Мбайт, то мы уже получаем, что минимум оперативной памяти, которая должна быть доступна на подобном сервере, должен быть порядка 32 Гбайт. Точно такая же проблема появляется с дисковым пространством — если мы предоставим собственную копию всех системных файлов и еще немного для собственно пространства пользователя, то придется завести примерно 0,5 Гбайт дискового пространства на каждую виртуальную машину, что в сумме составит примерно 500 Гбайт. Так же можно говорить и о сетевой плате — 1000 серверов могут легко забить всю доступную для одной сетевой карты пропускную способность (на практике для 100baseT она с небольшими отклонениями составляет около 11 Мбайт/с).

Другая проблема — обработка объема данных, которые надо прокачивать через систему в момент «массовых операций». Представим себе, что надо остановить машину с 1000 запущенных виртуальных машин с Linux. Для того чтобы это сделать, надо обычно запустить так называемые «остановочные скрипты» Linux, т. е. должны отработать порядка нескольких сотен скриптов на каждый сервер, что в сумме для корректной остановки машины может потребоваться запуск операционной системой нескольких сотен тысяч процессов.

Все упомянутые требования к технологии потребовали отказа в Virtuozzo от двухуровневой системы организации вычислений в ядре ОС, как это обычно делается при полной виртуализации аппаратного обеспечения. Технология оптимизирована для массовой работы с большим количеством виртуальных сред. На типовом сервере с 4 Гбайт памяти и 2-4 процессорами Pentium Virtuozzo позволяет запустить до 1000 виртуальных серверов, предоставляющих пользователю сервис только одной определенной операционной системы на одном физическом сервере — только Linux среды, или только FreeBSD среды и т.д. Хотя, конечно, эти машины могут быть соединены вместе и управляться с единого центра (этим занимается продукт HSPcomplete от компании SWsoft).

Организация сервиса

Если компания содержит достаточно большое количество серверов с разнообразными сервисами, например, почта, внешний Web-сервер, внутренний сервер, хранилище файлов и т.д., то затраты на их обслуживание могут оказаться существенными. В этом случае оказывается рентабельной установка продукта, разделяющего один физической сервер на несколько виртуальных, что реально упрощает как обслуживание так и работу с пользователями. Для решения проблем подобного рода предназначен продукт SCcomplete (от Server Consolidation).

Вторая, и наверное, более распространенная проблема, решаемая с помощью технологии Virtuozzo — предоставление ресурсов или хостинг. Именно для этой цели разработан продукт HSPcomplete, ориентированный на HSP (hosting service provider) или ISP (Internet service provider) и представляющий собой ПО, лежащее между оборудованием и прикладными программами пользователей (рис. 1). Оно позволяет запускать продукт, прикладные пакеты «так как они есть», без перекомпиляции и изменений. Кроме собственно низкоуровневой технологии Virtuozzo HSPcomplete включает в себя средства поддержки ведения бизнеса — учетную систему, поддержки продаж по каналам (Channel manager), биллинга (учета ресурсов), средства продажи (e-commerce), систему управления ресурсами кластера и инфраструктурой (включая управление IP адресами и доменами), а также создания и управление пользовательскими средами, ролями пользователей, лицензированием, адаптацией к конкретному пользователю и приложениями, доступными конечным пользователям.

Рис. 1. Структура HSPcomplete

Технология Vitruozzo позволяет осуществить запуск более 800 виртуальных сред на одном физическом сервере (фактически столько же сколько можно запустить клиентов на один сервер в разделяемом Web-хостинге), причем виртуальная среда доступна для пользователя в режиме с root доступом, большой набор пакетов прикладных программ, устанавливаемых в виртуальную среду, гарантированный уровень обслуживания — все это обеспечивает существенное улучшение параметров отдачи от вложений без увеличения цены и сложности управления системой.

Система HSPcomplete на базе технологии Virtuozzo практически единственная на рынке обладает свойством одноплатформности — на одной платформе можно предоставлять много типов услуг, которые до сих пор предоставлялись раздельным образом. Предназначена система HSPcomplete для предоставления интегральных решений и сервиса для поставщиков услуг по размещению ресурсов в сети, предоставляющих услуги доступа к приложениям (ASP), услуги доставки и управления сетевыми сервисами (MSP), услуги по размещению Web серверов, а так же услуги Internet-центров хранения и обработки данных, (рис. 2).

Решение, основанное на HSPcomplete и его технологии Virtuozzo позволяет минимизировать стоимость услуг по размещению ресурсов в сети, предоставляя возможности выделенного недорогого сервера с упрощенным администрированием (рис. 3).

Управление ресурсами

В Virtuozzo была разработана специальная технология управления ресурсами ядра операционной системы, которая позволила осуществить полный контроль за распределением ресурсов и за попытками их некорректного захвата. Достигнутый уровень контроля за поведением виртуальной среды позволил практически полностью устранить возможность DoS атак, а также обеспечить необходимый уровень гарантий производительности всех компонентов системы. Например, для реализации технологии Virtuozzo на ОС Linux гарантируется контроль более 20 параметров ОС. Примером такого параметря является количество профессов одного пользователя. Если пользователь попытается запустить слишком много процессов, то операционная система может оказаться занятой только тем, что пытаться их обслуживать, а пользовательские сервисы получат отказ в обслуживании. Именно таким образом устроена одна из наиболее известных DoS атак по названием fork-bomb. Технически создается процесс, который только тем и занимается, что вызывает системный примитив рождения нового процесса под названием fork безо всяких ограничений. Скоро машина практически перестает отвечать на внешние воздействия, а программы пользователей начинают «падать» из-за отсутствия ресурсов ядра. Чтобы это предотвратить необходимо завести специальный ограничитель, который запретил бы заводить внутри одной виртуальной среды слишком большое количество процессов.

Другим примером ресурса, выделение которого надо контролировать, является память ядра ОС. Например, при создании области разделяемой памяти, сокета TCP/IP или семафоров в ядре выделяется структура данных. Если пользователь напишет программу, которая будет бесконечно заводить себе подобные объекты, то опять может возникнуть ситуация, когда ядро ОС будет проводить в обслуживании подобных структур слишком много времени или будет невозможно выделение новой структуры из-за отсутствия доступной памяти. Т. е., такие операции надо ограничить сверху для каждой виртуальной машины.

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

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

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

В мире UNIX существует большой набор пакетов, используемых для организации подобного обслуживания. Для Linux и FreeBSD хорошо известен пакет ALT Q, составной частью которого являются пакеты типа SFQ, CBQ и другие, контролирующие использование сетью полосы пропускания, причем со всем разнообразием наиболее современных способов регуляции трафика: разные классы обслуживания, приоритеты разным типам протоколов, динамическим шейпингом (управляемым сужением полосы пропускания) и т.д. Идеологию реализации ограничений на ресурсы в Virtuozzo можно сформулировать таким образом: если ты не вышел за границу отведенной квоты, то можешь ее использовать без ограничений, если ты запросил больше и в системе есть ресурс, то ты его получишь, но как только кто-то еще попросит тот же ресурс, то у тебя его отберут. Это, конечно, относится к таким «отбираемым» ресурсам как процессорное время, размер, занимаемый программой в физической памяти, полоса пропускания сети и т.д., и не относится к жестко контролируемым ресурсам типа числа процессов, числа сокетов и др.

Все это в совокупности позволяет гарантировать пользователю конкретный уровень обслуживания. Например, можно обеспечить получение пользователем не менее 5% от мощности процессора в 1 ГГц при любых условиях и что он всегда сможет запустить не менее 50 процессов, обслуживающих одновременно не менее 100 соединений по сети TCP/IP в секунду при входящим трафике из Европы не менее чем в 10 Кбайт/с и выходящим в Россию с не менее чем 50 Кбайт/с. Такая схема организации контроля за качеством сервиса удобна как администратору провайдера, так и его клиенту.

Балансировка нагрузки и использование приватных адресов

Одним из компонентов технологии Virtuozzo является подсистема разбора содержимого сетевых пакетов, работающая на уровне TCP/IP. Разбор осуществляется для принятия решения о дальнейшей судьбе соединения.

Подсистема организована как автономный модуль ядра ОС, принимающий все соединения от клиентов на себя, и анализирующий полученную информацию. Его производительность на http-запросах сравнима с производительностью рекордсмена среди Web-серверов — TUX (www.stllinux.org/meeting_notes/2001/0719/ tux/index.html), поскольку он построен на тех же принципах: оптимизации всех возможных операций в ядре ОС, нулевых копирований данных, пред-расчета контрольных сумм и т. д.

Зачем нужен подобный сервис? Для организации на его базе системы балансировки нагрузки для фермы серверов. В этом случае разбирается содержимое запроса, который высылает клиент. Например, в случае протокола HTTP и Web-сервера браузер клиента устанавливает TCP/IP соединение с балансировщиком, тот принимает текст запроса в соответствии с протоколом, ищет там поле с URL (адресом запроса), анализирует его и устанавливает соединение с тем сервером, который может обработать запрос. Примерно так работает продукт компании SWsoft под названием xLswitch, предназначенный для балансировки нагрузки на уровне протоколов. Он может работать не только с http, но и с другими высокоуровневыми протоколами, например, с FTP и rlogin. На его базе можно организовывать отказоустойчивые кластеры с несимметричной обработкой запросов. Продукт xLswitch также используется как составная часть продукта HSPcomplete, см ниже.

Другим способом использования технологии разбора соединений является организация обслуживания Web-серверов без предоставления публичных IP-адресов. Каждый виртуальный сервер получает собственный приватный (не видимый из глобальной сети) адрес. Все DNS — имена обслуживаемых серверов имеют один единственный публичный IP адрес сервера с балансировщиком, который и получает все запросы. Балансировщик разбирает запрос, находит в URL имя сервера и по нему определяет внутренний, приватный IP-адрес виртуальной машины, на которой установлен Web-сервер, обслуживающий этот запрос, и осуществляет прозрачное соединение клиента с этим сервером. Таким образом может быть устроен так называемый name based hosting, т. е. обслуживание серверов пользователей на базе имени домена. То же самое относится и к другим сервисам типа FTP, которые также могут быть переадресованы на приватную виртуальную машину.

Кластерное обслуживание для Virtuozzo

Принцип, лежащий в основе реализации TorFS (проекта кластерного хранилища данных для Virtuozzo) достаточно прост — необходимо дать возможность разделять файлы не только внутри одного узла кластера, но и между ними. TorFS представляет собой хранилище данных, работающее поверх набора узлов кластера как единое целое, и предоставляющее доступ к данным любой из виртуальных машин. С точки зрения пользователей, хранилище предоставляет возможность сохранения локальных файлов внутри некоей единой системы. Основным свойством, обеспечивающим отказоустойчивость системы, является возможность бесперебойного доступа к данным даже при выключении любых серверов (но не более некоторого их количества). Единая система хранения данных дает множество преимуществ пользователю. Например, для планового выключения серверов можно мигрировать запущенные среды на соседние узлы кластера практически не уменьшая время доступности сервиса. Облегчается так же реализация алгоритмов динамической балансировки нагрузки кластера, повышающей уровень гарантий обслуживания и более равномерно загружающей кластер полезной нагрузкой. Более того, возможно осуществление миграции виртуальных сред между разными географическими местами расположения серверов. Например, можно предоставить удобный и быстрый доступ к данным пользователя, который переехал в другое место, или использовать миграцию для балансировки нагрузки в сети Internet.

Технология с точки зрения конечного пользователя

Каждую виртуальную среду пользователь видит как некий удаленный компьютер, доступ к которому осуществляется по сети. Пользователь может войти в систему как суперпользователь, осуществить ее конфигурирование (например, под ОС Linux поставить какой либо rpm), установить собственный персональный межсетевой экран (используя стандартные пакеты типа iptables и netfilters), собрать и запустить личную оптимизированную «под себя» версию Web-сервера, получить доступ к «сырым» записям в регистрационном журнале его и посмотреть, кто и как использовал его серверы, даже запустить удаленно графическую программу для X Window. Т.е. все тоже, как если бы он получил доступ к собственному удаленному компьютеру, установленному на площадке провайдера. Единственным существенным отличием от последнего является тот факт, что даже в случае поломки конфигурации операционной системы виртуальной машины (скажем, вошел человек в систему и случайно набрал команду типа «rm -rf /usr») не нужен физический доступ к компьютеру, достаточно использовать предоставляемый системой удаленный сервис по «безопасной загрузке» с доступом к собственной файловой системе для ее восстановления. В таком случае пользователь входит удаленным образом в некий стандартизованный виртуальный компьютер, внутри файловой системы которого содержится полное дерево файлов, включая «сломанные» конфигурационные. Исправив их содержимое, пользователь может снова запустить уже свою собственную виртуальную машину в нормальном режиме работы. Внутри своей среды пользователь не видит никаких других сред и никак не может до них добраться, кроме как используя механизм связи через сеть. Нельзя послать сигнал процессам другой среды, или добраться до их областей разделяемой памяти, не говоря уже о файловой системе. Вход возможен только через «парадный подъезд», путем соединения через TCP/IP сеть — например, через сервис типа telnet или ssh.

Заключение

Системы на базе технологии Virtuozzo установлены в Сингапуре, России и США. Желающие поработать непосредственно с программными решениями, основанными на этой технологии, могут получить пробный счет на сервере одного из провайдеров Сингапура (www.servy.net).

Литература
  1. Олифер В.Г., Олифер Н.А. Сетевые операционные системы. М.: 2001 ISBN: 5-272-00120-6
  2. How Many Linux Systems Can Dance on a Single S/390? David Boyes, VM/VSE Tech Conference, Jacksonville, FL http://www.vm.ibm.com:2003/pdfs/L80.pdf поддерживающий партишионирование.
  3. Виктор Костромин. Виртуальный компьютер: обмен данными с реальным миром. «Открытые системы», 2001, №11

Александр Тормасов (tor@sw.ru) — руководитель НИОКР компании SWsoft.


Основы концепции Virtuozzo

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

Виртуализация — ключевая концепция, лежащая в основе Virtuozzo. Все предоставляемые заказчикам ресурсы: диск, сеть, доля центрального процессора виртуализованы на уровне ОС. Это дает возможность достигать максимальной производительности, одновременно изолируя пользователей от реальной аппаратуры и друг от друга. Основным понятием технологии является «виртуальная среда» (Virtual Environment — VE), поддерживающая все возможные уровни изоляции — от сбоев, по производительности, адресной системы безопасности, функциональный, а также гетерогенность приложений. Виртуальная среда представляет собой полнофункциональный «удаленный» компьютер со своей файловой системой, пользователями (включая суперпользователя root), ресурсами операционной системы типа памяти, процессора, сети и т.д.

Управление ресурсами — возможность контроля за распределением и использованием ресурсов на уровне, до сих пор доступном только на мэйнфреймах. Будучи использован на стандартных распространенных недорогих серверах, Virtuozzo предоставляет управление не только стандартными ресурсами типа процессора, диска или сетевого трафика, но и эффективно контролирует память (пользовательскую, ядра и разнообразные кэши), сетевые параметры и скорость дисковых операций. Это дает возможность получения в кластере компьютеров гарантированного уровня качества обслуживания (Quality of Service — QoS) для обеспечения разных типов соглашений об уровне обслуживания (Service Level Agreement — SLA).

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