Виртуальные машины 2007

Наталия Елманова, Сергей Пахомов

Немного истории

Проблемы с реализацией виртуализации в архитектуре х86

Алгоритм программной виртуализации в архитектуре x86

Типы программной виртуализации

Динамическая трансляция

Паравиртуализация

Аппаратная виртуализация

Intel VT

AMD Pacific

Применение виртуальных машин

Средства управления виртуальными машинамидля рабочих станций

Microsoft Virtual PC

VMware Workstation 6.0

VMware Player

VMware Fusion

Средства управления виртуальными машинамидля серверов

Microsoft Virtual Server 2005 R2

VMware Server

VMware Infrastructure

VMware Lab Manager

Дополнительные инструменты

Дополнительные инструменты компании Microsoft

Дополнительные инструменты компании VMware

Заключение

 

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

Немного истории

Идея виртуализации отнюдь не нова и уходит корнями в мэйнфреймы и RISC-серверы под управлением UNIX — она возникла вслед за появлением концепции многозадачности. В компьютерных технологиях термин «виртуализация» появился в 60-х годах прошлого века вместе с термином «виртуальная машина», означающим продукт виртуализации программно-аппаратной платформы.

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

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

Разработки в сфере виртуализации в 60-70-х годах прошлого столетия проводились только компанией IBM. В то время под виртуальной машиной понималась полностью защищенная и изолированная копия ресурсов компьютера, в которой приложения и операционная система будут вести себя точно так же, как и на реальном компьютере.

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

Впервые полная виртуализация была реализована на компьютере IBM System 360, где в качестве монитора виртуальных машин использовалась программа CP 67. В таком компьютере каждая виртуальная машина представляла собой точный виртуальный образ аппаратных ресурсов физической машины и предоставляла пользователям возможность работы с виртуальными машинами в режиме разделения времени. В компьютере IBM System 360 монитор виртуальных машин, или программа CP 67, запускался на наивысшем уровне привилегий, то есть на том же уровне, на котором функционировала сама операционная система. Поэтому монитор виртуальных машин мог перехватывать выполнение привилегированных инструкций. Напомним, что привилегированные команды запрещены для использования прикладными программами. Привилегированные команды управляют системными функциями, например загрузкой системных регистров, которые могут выполняться только на нулевом уровне привилегий. При попытке выполнить их на другом уровне генерируется исключение общей защиты.

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

После реализации программно-аппаратной виртуализации в компьютерах IBM System 370 аппаратная поддержка виртуализации была реализована в системах VM/ESA, в которых механизмы управления памятью позволяли выделять гостевым системам отдельные непрерывные области памяти и более эффективно преобразовывать адреса памяти.

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

Проблемы с реализацией виртуализации в архитектуре х86

Проблема заключалась в том, что архитектура x86 не содержала тех средств для виртуализации, которые применялись в больших ЭВМ.

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

В архитектуре x86 существует четыре уровня привилегий (колец защиты). Выполнение инструкций в кольце 0 именуется привилегированным режимом. В этом кольце, имеющем максимальные привилегии, выполняется ядро основной операционной системы, поскольку имеется полный доступ к процессору. Привилегированные команды могут исполняться только на нулевом кольце. Кольца 1 и 2 не используются, а в кольце 3 работают приложения. Выполнение инструкций в кольце 3 называется пользовательским режимом.

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

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

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

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

В архитектуре х86 существуют и другие «проблемные» инструкции, несовместимые с режимом виртуализации, — всего их насчитывается 17.

Алгоритм программной виртуализации в архитектуре x86

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

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

 

Рис. 1. Реализация программной
виртуализации

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

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

Типы программной виртуализации

Существует два базовых метода реализации программной виртуализации: метод динамической трансляции и метод модификации гостевой OC (паравиртуализация).

Динамическая трансляция

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

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

Паравиртуализация

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

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

Аппаратная виртуализация

Как уже отмечалось, процессоры с архитектурой x86 не поддерживают виртуализацию на аппаратном уровне и для ее реализации применяются различные программные ухищрения. Тем не менее такая ситуация сохранялась вплоть до 2005 года, когда компания Intel разработала аппаратную поддержку виртуализации в своих новых процессорах. Данная технология, получившая название Intel VT-x (кодовое название Vanderpool), поддерживается практически всеми (за исключением младших моделей) новыми процессорами Intel семейства Intel Core 2 Duo и процессорами семейства Intel Core 2 Quad.

Позднее и компания AMD реализовала аппаратную поддержку виртуализации в своих процессорах, которая получила название AMD Pacific.

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

Технологии Intel VT-x и AMD Pacific реализованы совершенно по-разному, хотя и приводят к единому результату. Фактически в обоих случаях речь идет не о переделке микроархитектуры процессора, а о программных «заплатках», позволяющих скрыть некоторые недостатки архитектуры x86. То есть в обоих случаях аппаратная поддержка виртуализации подразумевает некоторый дополнительный набор инструкций, облегчающих выполнение на аппаратном уровне операций, которые до этого можно было выполнять только программно, затрачивая дополнительные вычислительные ресурсы. Если говорить более конкретно, то речь идет об инструкциях процессора для предоставления прямого доступа к ресурсам процессора из гостевых систем, то есть об инструкциях, которые позволяют выполнять привилегированные инструкции, генерируемые гостевой ОС.

Впрочем, аппаратная поддержка виртуализации на уровне процессора не означает, что теперь можно обойтись без гипервизора. Более того, для того чтобы воспользоваться преимуществами аппаратной поддержки виртуализации, потребуется гипервизор, который поддерживал бы технологии аппаратной виртуализации Intel VT и AMD Pacific.

Intel VT

Полное название технологии аппаратной поддержки виртуализации для процессоров Intel x86 — Intel Virtualization Technology for x86 (VT-x). Отметим, что одновременно с данной технологией была реализована аппаратная поддержка виртуализации для процессоров семейства Itanium (технология Intel VT-i).

В технологии Intel VT-x предусматривается специальный режим работы процессора, называемый режимом выполнения виртуальной машины (Virtual Machine eXecution Mode (VMX)), для которого используется дополнительный набор инструкций процессора (рис. 2). В режиме VMX предусмотрено два типа выполнения программного кода: VMX-root и VMX-non-root. Первый из них выполняется на процессоре практически так же, как и вне режима VMX, за исключением того, что в данном режиме предусмотрены дополнительные наборы инструкций процессора, а также некоторые ограничения на значения, загружаемые в управляющие регистры процессора. Гипервизор, который функционирует в привилегированном режиме (на нулевом кольце), всегда выполняет свой код как VMX-root.

 

Рис. 2. Реализация виртуализации Intel VT

Для гостевой операционной системы предусмотрено выполнение кода VMX-non-root. Для программного кода VMX-non-root взаимодействие гостевой операционной системы с процессором происходит посредством гипервизора. То есть вместо того, чтобы исполнять некоторые инструкции, в коде VMX-non-root будут осуществляться выход из виртуальной машины и передача управления гипервизору. Эти переходы остаются невидимыми для самого VMX-non-root кода, что позволяет гипервизору полностью контролировать ресурсы физического компьютера или предоставлять доступ к ним из гостевых ОС. Отметим, что VMX-режим для кода VMX-non-root не требует каких-либо модификаций гостевой ОС.

Переключения от VMX-root- к VMX-non-root-коду называются входом в виртуальную машину (VM entry), а обратные переключения — выходом из виртуальной машины (VM exit).

Всего для режима VMX определено десять новых инструкций: VMXON, VMXOFF, VMWRITE, VMREAD, VMPTRLD, VMPTRST, VMLAUNCH, VMRESUME, VMCLEAR и VMCALL.

Для запуска режима VMX используется команда VMXON, а для выхода из него — команда VMXOFF (рис. 3).

 

Рис. 3. Взаимодействие виртуальных машин с гипервизором
в технологии Intel VT

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

Для записи данных в структуру VMCS применяется команда VMWRITE, а для чтения данных из VMCS — команда VMREAD.

Команда VMPTRLD предназначена для выбора виртуальной машины (фактически это указатель на VMCS), а команда VMPTRST позволяет сохранять указатель на текущую виртуальную машину.

Команда VMLAUNCH служит для запуска выбранной виртуальной машины, а команда VMRESUME — для выхода из нее.

Команда VMCLEAR используется для инициализации пустой структуры VMCS и для перевода выбранной виртуальной машины в «остановленное» состояние.

Инструкция VMCALL позволяет прервать исполнение кода работающей виртуальной машины.

AMD Pacific

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

Как уже отмечалось, технология AMD Pacific принципиально отличается от технологии Intel VT. В технологии AMD Pacific также используется специальное программное обеспечение виртуализации (гипервизор), но оно принципиально отличается от гипервизора, применяемого в технологии Intel VT. Если технология Intel VT представляет собой обычное приложение хостовой операционной системы, которое запускается из третьего кольца (кольца приложений), то в технологии AMD Pacific гипервизор является системным кодом, который запускается из нулевого кольца и выполняется на более низком уровне, чем само ядро операционной системы. Гипервизор в технологии AMD Pacific фактически выполняет роль ядра некоторой основной операционной системы и только гипервизор работает с физическим оборудованием. Все остальные операционные системы являются, с точки зрения гипервизора, гостевыми. То есть в технологии AMD Pacific нет никакого различия между хостовой ОС и гостевыми ОС, как в технологии Intel VT. Все операционные системы считаются гостевыми и для каждой из них гипервизор создает свою виртуальную машину (рис. 4).

 

Рис. 4. Реализация аппаратной виртуализации
в технологии AMD Pacific

Аппаратная поддержка виртуализации в технологии AMD Pacific осуществляется за счет применения нового режима процессора Guest Mode, нового набора дополнительных инструкций процессора, а также нового режима работы памяти. Само по себе функционирование гипервизора в технологии AMD Pacific по решаемым им задачам напоминает функционирование гипервизора в технологии Intel VT. Так, гипервизор, используя новые инструкции процессора, запускает режим процессора Guest Mode, описывает виртуальные машины с помощью управляющих структур данных, которые называются VMCB (Virtual Machine Control Block), запускает созданные виртуальные машины и перехватывает, в случае необходимости, предопределенные события.

Всего в технологии AMD Pacific определено пять новых инструкций процессора: VMRUN, VMMCALL, VMLOAD, VMSAVE и SKINIT.

Команда VMRUN применяется для запуска выбранной виртуальной машины. В качестве единственного аргумента этой команды задается физический адрес 4-килобайтной страницы памяти, в которой описывается структура данных виртуальной машины (VMCS). Эта структура отображает состояние регистров гостевого процессора, определяет события и инструкции, при появлении которых должны генерироваться прерывания и происходить выход из виртуальной машины с передачей управления гипервизору. Кроме того, в структуре VMCS описываются значения некоторых контрольных битов.

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

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

Инструкция SKINIT позволяет начать загрузку процессора в «безопасном режиме», на аппаратном уровне гарантировав соответствие загрузчика указанной в модуле TPM цифровой подписи.

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

«Физическая» виртуальная память, видимая гостевыми ОС в технологии AMD Pacifica — это виртуальная память второго уровня, то есть здесь применяются двухуровневые таблицы трансляции адресов виртуальной памяти. Реализовано это следующим образом. Гипервизор поддерживает «теневые» копии таблиц (shadow-копии) трансляции адресов виртуальной памяти для каждой виртуальной машины. Когда какое-либо приложение, запущенное из гостевой ОС, обращается к памяти по определенному адресу, то гостевая ОС устанавливает отображение по своей TLB-таблице, то есть преобразует виртуальный адрес в физический, который на самом деле также является виртуальным. Гипервизор обнаруживает этот факт и осуществляет соответствующее отображение в своей теневой таблице, которое указывает на реальный физический адрес, — фактически производится двухуровневое преобразование виртуальных адресов в физические.

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

Отметим, что аппаратная поддержка виртуализации блока управления памятью реализована в обеих технологиях: и в Intel VT, и в AMD Pacific. В технологии Intel VT для этого используются расширенные таблицы сравнения (Extended Page Tables, EPT), то есть специальный набор таблиц соответствия гостевой и хостовой ОС, который поддерживается на аппаратном уровне. В технологии AMD Pacific опционально применяется технология вложенных таблиц сравнения (Nested Page Facility, NPF). Правда, нужно отметить, что не все процессоры с поддержкой технологии AMD Pacific поддерживают NPF.

Еще одна задача по аппаратной поддержке виртуализации блока управления памятью — это ускорение доступа к буферу быстрого преобразования адресов TLB (Translation Lookaside Buffer). Для этого в технологии AMD Pacific используется идентификатор адресного пространства (address space identifier, ASID), снабжающий все строки буфера TLB, — в этом случае можно избежать сброса содержимого буфера при каждом выходе из виртуальной машины.

В технологии Intel VT для ускорения доступа к буферу TLB каждой виртуальной машине ставится в соответствие идентификатор виртуального процессора (virtual processor identifier, VPID).

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

Применение виртуальных машин

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

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

Типичный пример применения виртуальных машин — тестирование приложений на корректность работы под управлением различных операционных систем (например, Windows 2000, Windows XP и Windows 98 разных языковых версий с различной комбинацией установленных пакетов обновлений и офисных приложений). Такое тестирование обычно производится при разработке «коробочных» продуктов и в проектах внедрения бизнес-приложений, предполагающих наличие у заказчика действующих рабочих станций и серверов, приобретенных в разные годы.

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

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

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

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

Обсудив, что представляет собой современная технология виртуальных машин и где она применяется, перейдем к рассмотрению наиболее распространенных средств управления ими. В настоящее время на рынке указанной категории программного обеспечения лидируют две компании: Microsoft и VMware, Inc. — обе они производят средства управления виртуальными машинами и для рабочих станций, и для серверов.

Средства управления виртуальными машинамидля рабочих станций

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

Microsoft Virtual PC

Средство управления виртуальными машинами Microsoft Virtual PC основано на технологиях, разработанных компанией Connectix (приобретенной корпорацией Microsoft в 2003 году). Один из первых продуктов Connectix был предназначен для выполнения Windows-приложений на компьютерах под управлением Mac OS, а Windows-версия этого продукта появилась в 2001 году.

В качестве хостовой операционной системы в Microsoft Virtual PC 2007 (рис. 5) можно использовать операционные системы Windows Vista Business, Windows Vista Enterprise, Windows Vista Ultimate, Windows Server 2003 Standard Edition, Windows Server 2003 Standard x64 Edition, Windows XP Professional или Windows XP Tablet PC Edition.

 

Рис. 5. Microsoft Virtual PC 2007

Гостевые операционные системы, полностью поддерживаемые данным продуктом, включают Windows 98, Windows 98 Second Edition, Windows Millennium Edition (Windows Me), Windows 2000 Professional, Windows XP Home Edition, Windows XP Professional, Windows Vista Enterprise, Windows Vista Business, Windows Vista Ultimate, OS/2 Warp Version 4 Fix Pack 15, OS/2 Warp Convenience Pack 1 и OS/2 Warp Convenience Pack 2. При необходимости Virtual PC позволяет создавать виртуальные машины и с серверными версиями Windows, а также с некоторыми версиями Linux (о планируемой поддержке Linux было официально объявлено компанией Microsoft в прошлом году). Что касается других операционных систем — их неофициальный список находится по адресу: http://vpc.visualwin.com/.

Технические требования для Microsoft Virtual PC 2007 невысоки: процессор AMD Athlon/Duron, Intel Celeron или Pentium II/ III/ 4, Intel Core Duo, Intel Core2 Duo с тактовой частотой от 400 МГц, CD-ROM, монитор с разрешением 800x600. Однако сами по себе виртуальные машины могут быть достаточно требовательны к ресурсам — это зависит от операционных систем, которые загружаются в виртуальные машины (см. таблицу). При этом следует иметь в виду, что для определения реальной потребности в оперативной и дисковой памяти следует просуммировать требования, предъявляемые к ним исходной операционной системой и операционными системами всех виртуальных машин, которые предполагается запускать одновременно.

Из технических особенностей Microsoft Virtual PC следует отметить разнообразные способы эмуляции сетевого взаимодействия, начиная с ее отсутствия и заканчивая интеграцией в локальную сеть, в которую включен хост, а также поддержку эмуляции сетевого взаимодействия с другими виртуальными машинами как с отдельными компьютерами и поддержку трансляции адресов NAT. Microsoft Virtual PC поддерживает обмен данными между виртуальными машинами и операционной системой хоста с помощью буфера обмена и операций drag-and-drop, а также синхронизацию времени. В качестве виртуальных жестких дисков данный продукт позволяет использовать файлы как фиксированного, так и «плавающего» размера, а также реальные жесткие диски или их разделы. Отметим, что при наличии на жестком диске нескольких операционных систем, установленных в разных разделах, Virtual PC обеспечивает загрузку неактивной операционной системы в качестве гостевой.

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

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

Ну и последний аспект, который нельзя обойти вниманием, — это поддержка технологии аппаратной виртуализации Intel VT и AMD Pacific. Причем в Virtual PC 2007 поддержка данных технологий активирована по умолчанию и если процессор поддерживает технологию аппаратной виртуализации и есть соответствующая настройка в BIOS, то при использовании пакета Virtual PC 2007 будут задействованы возможности процессора по аппаратной поддержке виртуализации.

Отметим, что Virtual PC 2007 является свободным для загрузки продуктом.

VMware Workstation 6.0

Компания VMware (http://www.vmware.com/) была основана в 1998 году, и первым ее продуктом стало выпущенное в 1999-м средство управления виртуальными машинами VMware (позже переименованное в VMware Workstation), предназначенное для платформ Windows и Linux. Для того времени подход VMware к организации вычислений в разноплатформенных средах был поистине революционным — ранее о виртуальных машинах говорили только применительно к мэйнфреймам.

Продукт VMware Workstation 6.0 (рис. 6), предназначенный главным образом для тестирования настольных и многозвенных распределенных приложений и их конфигураций, поддерживает весьма широкий спектр как операционных систем хоста, так и гостевых операционных систем. Этот продукт может использовать в качестве ОС хоста несколько последних версий операционных систем от Microsoft, Red Hat, SuSE, Ubuntu, а также Sun Solaris (для процессоров x86) и FreeBSD. В качестве гостевых ОС VMware Workstation может применять различные, в том числе 64-разрядные, версии Windows, Linux, Novell NetWare, DOS, Sun Solaris и FreeBSD. Виртуальные машины могут располагаться как в файле, так и на отдельном жестком диске или в его отдельном разделе.

 

Рис. 6. VMware Workstation 6

WMware Workstation 6.0 поддерживает виртуальные и реальные IDE- и SCSI-диски, накопители на гибких дисках, дисководы CD-ROM, DVD-ROM компьютера-хоста, LPT-, COM-, USB-порты и динамически подключаемые к хосту USB-устройства, такие как сканеры, принтеры, жесткие диски и флэш-карты, подключаемые КПК и фотоаппараты. Помимо реальных дисководов, WMware Workstation умеет работать с образами дисков формата ISO, рассматривая их как дисководы CD-ROM. Поддержка SCSI-устройств, таких как сканеры, ленточные накопители, дисководы CD-ROM, DVD-ROM, может осуществляться даже при отсутствии драйверов этих устройств в операционной системе хоста.

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

VMware Workstation 6.0 позволяет создавать «моментальные снимки» виртуальной машины (snapshots), сохраняя в виде файла компьютера-хоста сведения о ее состоянии, запущенных приложениях и их данных (при этом можно сделать несколько «снимков» одной и той же машины), а также поддерживает обмен данными между виртуальными машинами и операционной системой хоста с помощью буфера обмена и операций drag-and-drop, синхронизацию времени гостевой ОС и ОС хоста, возможность отмены всех изменений, сделанных пользователем в данном сеансе работы. Отметим также наличие в этом продукте средств оптимизации памяти и средств управления многозвенными приложениями, предназначенных специально для повышения производительности труда разработчиков и пользователей, эксплуатирующих единственную рабочую станцию.

Из новшеств последней версии VMware Workstation назовем поддержку назначения виртуальной машине двух виртуальных процессоров (что полезно для тестирования двухпроцессорных конфигураций ПО), средства преобразования виртуальных машин, созданных с помощью Microsoft Virtual PC и Microsoft Virtual Server, а также образов ОС, созданных с помощью Symantec LiveState Recovery, в виртуальные машины VMware, поддержку 64-разрядных процессоров Intel и AMD, поддержку адаптеров для беспроводных сетей, средства автоматического обнаружения устройств хранения данных и USB-устройств.

Кроме того, пакет VMware Workstation 6.0 поддерживает технологии аппаратной виртуализации Intel VT и AMD Pacific. Правда, для того чтобы активировать данную поддержку, какие-либо «галки» в настройках пакета VMware Workstation 6.0 отсутствуют. Собственно, если в качестве хостовой ОС применяется 64-разрядная версия операционной системы, процессор поддерживает аппаратную виртуализацию, а в BIOS данная поддержка активирована, то пакет VMware Workstation 6.0 будет использовать возможности процессора по аппаратной виртуализации, то есть в зависимости от типа процессора задействовать технологию Intel VT или AMD Pacific. Если же в качестве хостовой ОС применяется 32-разрядная операционная система, то по умолчанию технология Intel VT или AMD Pacific использоваться не будет — независимо от настроек BIOS и типа процессора. Для того чтобы принудительно задействовать технологию Intel VT или AMD Pacific в случае 32-разрядной версии хостовой операционной системы, необходимо отредактировать VMX-файл, в котором содержится описание созданной виртуальной машины. Собственно, все что требуется — это добавить в данный файл следующую строку:

 

monitor_control.vt32=”TRUE”

 

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

Правда, нужно отметить, что, несмотря на возможность принудительного использования технологии Intel VT или AMD Pacific при применении 32-разрядных версий хостовой ОС, делать этого не следует, поскольку, как заявляет сама компания VMware, производительность виртуальной машины от этого только ухудшится.

VMware Player

Помимо VMware Workstation, компания VMware выпускает бесплатный продукт WMware Player, позволяющий запускать готовые виртуальные машины, созданные посредством VMware Workstation и VMware Server. Создавать новые виртуальные машины с его помощью нельзя. Однако на сайте компании VMware имеется постоянно обновляемый раздел с доступными для загрузки и использования сконфигурированными виртуальными машинами под управлением различных ОС и установленным программным обеспечением различных производителей.

VMware Fusion

VMware Fusion (рис. 7) — средство управления виртуальными машинами для Mac OS X версий 10.4.9 и выше, позволяющее использовать в качестве гостевых операционных систем 32- и 64-разрядные версии Windows (включая Windows Vista Business, Enterprise, Ultimate, Windows XP, а также Sun Solaris и некоторые версии Linux). Данный продукт позволяет виртуальным машинам применять два процессора, обращаться к устройствам USB 2.0, выполнять на виртуальных машинах приложения, использующие библиотеки трехмерной графики DirectX 8.1 (например, игры).

 

Рис. 7. VMware Fusion

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

Минимальные требования различных операционных систем
для их выполнения под управлением виртуальных машин

Операционная система виртуальной машины

Оперативная память

Пространство на жестком диске

Windows 98, Windows 98 Second Edition

64 Мбайт

500 Мбайт

Windows Millennium Edition (Windows Me)

96 Мбайт

2 Гбайт

Windows 2000 Professional

96 Мбайт

2 Гбайт

Windows XP Home Edition

128 Мбайт

2 Гбайт

Windows XP Professional

128 Мбайт

2 Гбайт

Windows Vista Enterprise

512 Мбайт

15 Гбайт

Windows Vista Business

512 Мбайт

15 Гбайт

Windows Vista Ultimate

512 Мбайт

15 Гбайт

OS/2 Warp Version 4 Fix Pack 15, OS/2 Warp Convenience Pack 1, OS/2 Warp Convenience Pack 2

64 Мбайт

500 Мбайт

Средства управления виртуальными машинамидля серверов

Многие корпоративные приложения требуют достаточно объемной обработки данных, а следовательно, наличия серверных приложений, выполняемых на многопроцессорных компьютерах. Так, программное обеспечение, поддерживающее использование многопроцессорных серверов и кластеров, присутствует в линейках серверных операционных систем, серверных СУБД и серверов приложений всех ведущих производителей. Задачи, связанные с тестированием и эксплуатацией подобных продуктов, невозможно корректно решить с помощью средств создания виртуальных машин для настольных операционных систем — для этого предназначены средства виртуализации для серверов.

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

Microsoft Virtual Server 2005 R2

Microsoft Virtual Server 2005 R2 (рис. 8) является средством виртуализации для Microsoft Windows, которое предоставляет возможность одновременного запуска на одном физическом сервере широкого диапазона операционных систем, включая Windows Server 2003, Windows 2000 Server, Linux, UNIX и OS/2.

 

Рис. 8. Microsoft Virtual Server

Сам Virtual Server может использовать до 64 Гбайт оперативной памяти, а каждая виртуальная машина — до 3,6 Гбайт.

Virtual Server 2005 R2 может эмулировать до четырех жестких IDE-дисков объемом до 128 Гбайт или дисководов CD/DVD-ROM (в качестве которых можно использовать и образы дисков в формате ISO), а также до четырех виртуальных шин SCSI общим объемом до 56,5 Тбайт; при этом данным продуктом поддерживается двухузловой кластер из виртуальных машин с общим хранилищем данных на виртуальных SCSI-дисках. Это позволяет смоделировать работу серверного программного обеспечения в таком кластере без реального приобретения соответствующего оборудования.

Что касается поддержки графики, то Virtual Server 2005 R2 эмулирует видеоадаптер S3 Trio64 с 4 Мбайт видеопамяти, 2D-ускорителем и поддержкой Microsoft DirectX.

Из прочего аппаратного обеспечения поддерживаются до четырех виртуальных сетевых адаптеров, реальные и виртуальные дисководы на гибких магнитных дисках, реальные и виртуальные COM- и LPT-порты, мышь и клавиатура.

Virtual Server 2005 поддерживаются следующие гостевые операционные системы:

  • Windows Server 2003, Standard Edition;
  • Windows Server 2003, Enterprise Edition;
  • Windows Server 2003, DataCenter Edition;
  • Windows Small Business Server 2003;
  • Windows 2000 Server;
  • Windows 2000 Advanced Server;
  • Windows NT Server 4.0 Service Pack 6a.

Кроме того, Virtual Server 2005 позволяет обеспечивать баланс загрузки различных виртуальных машин, эмулируя кластерную конфигурацию, и содержит средства управления распределением ресурсов (памяти, процессорного времени, приоритетов выполнения) для подобных виртуальных машин.

Virtual Server 2005 обладает средствами интеграции с Active Directory.

Для создания решений на базе Virtual Server 2005 существует документированный COM API, позволяющий программно решать задачи администрирования, развертывания виртуальных машин и их конфигурирования, автоматизируя эти процессы с помощью административных скриптов или приложений, созданных с помощью широкого спектра средств разработки для платформ Windows и .NET.

Естественно, Virtual Server 2005 R2 поддерживает технологии Intel VT и AMD Pacific.

VMware Server

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

VMware Server работает под управлением 32- или 64-разрядных серверных версий Windows и Linux, выполняемых на компьютерах с x86-совместимыми процессорами. Набор поддерживаемых данным продуктом операционных систем весьма внушителен — среди гостевых ОС имеется широкий спектр версий Linux, Windows и Solaris; а кроме того, он может читать виртуальные машины, созданные с помощью Microsoft Virtual PC и Microsoft Virtual Server, а также образы операционных систем, созданные с помощью Symantec LiveState Recovery.

Данный продукт поддерживает симметричную многопроцессорную обработку данных (одна виртуальная машина может выполняться на двух процессорах) и технологию виртуализации Intel (Intel Virtualization Technology).

VMware Server содержит в своем составе средства для организации удаленного администрирования и мониторинга, основанные на web-интерфейсе и выполняемые под управлением Windows или Linux. Кроме того, отметим поддержку виртуальной симметричной многопроцессорной обработки данных, а также 64-разрядных гостевых ОС.

Пакет VMware Server поддерживает технологии Intel VT и AMD Pacific, но с теми же ограничениями, что и пакет VMware Workstation 6.0

VMware Infrastructure

VMware Infrastructure — это пакет программного обеспечения для применения виртуализации в корпоративной ИТ-инфраструктуре и объединения серверов, сетей и хранилищ данных в единые пулы ресурсов. Полноценные среды, включающие операционные системы и приложения, «упаковываются» в независимые от оборудования виртуальные машины. Пользователи VMware Virtual Infrastructure могут консолидировать до десяти и более виртуальных машин на одном физическом процессоре и таким образом значительно повышать аварийное восстановление ИТ-инфраструктуры, эффективность использования серверов и ограничивать увеличение их количества, осуществлять аварийное восстановление ИТ-инфраструктуры, предоставлять стандартизованные корпоративные среды настольных компьютеров, размещенных на виртуальных машинах, доступ к которым осуществляется с помощью тонких клиентов, перемещать устаревшие операционные системы и приложения на виртуальные машины.

Пакет VMware Infrastructure включает VMware ESX Server — средство создания виртуальных машин, не требующее наличия операционной системы-хоста (по сути оно играет роль операционной системы) и выполняемое на компьютерах с двумя и более 32- или 64-разрядными процессорами Intel и AMD и с двумя и более сетевыми адаптерами. В качестве хранилища файлов должны выступать SCSI-диски, накопители, доступные с помощью Fibre Channel, либо встроенный RAID-контроллер — в таком хранилище этот продукт создает собственную кластерную файловую систему VMware File System (VMFS), позволяющую осуществлять параллельный доступ к ресурсам хранения виртуальной машины для нескольких экземпляров ESX Server. Этот продукт может быть установлен на Blade-серверы или на сети хранения данных SAN (Storage Area Network — выделенная высокопроизводительная сеть, предназначенная для передачи данных между серверами и устройствами хранения данных и функционирующая независимо от локальной сети). Данный продукт поддерживает эмуляцию до 80 виртуальных процессоров, при этом для некоторых гостевых ОС предусмотрены виртуальные симметричные многопроцессорные конфигурации.

В состав VMware Infrastructure также входит продукт VMware Virtual SMP, который позволяет одной виртуальной машине выполняться на нескольких физических процессорах. Указанный продукт дает возможность осуществлять дополнительное масштабирование наиболее ресурсоемких приложений, выполняемых на виртуальных машинах, а также тестирование многопроцессорных конфигураций серверного ПО. 

Еще один продукт, входящий в состав VMware Infrastructure, — это VMware VirtualCenter (доступен и в виде отдельного продукта), средство управления виртуальными машинами под управлением VMware ESX Server и VMware Server и содержащими их серверами. Данный продукт позволяет создавать конфигурацию операционных систем, служб и приложений, выполняемых на виртуальных машинах, производить их перенос с одной машины на другую и быстрое развертывание серверов с предустановленной операционной системой и приложениями, осуществлять мониторинг производительности и использования серверных ресурсов.

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

Помимо перечисленных компонентов, пакет VMware Infrastructure включает инструменты резервного копирования, средства обеспечения доступности приложений, планировщик распределенных ресурсов.

VMware Lab Manager

VMware Lab Manager (рис. 9) — инструмент для управления виртуальной инфраструктурой и конфигурациями, предназначенный для тестовых лабораторий. Он позволяет создавать библиотеки конфигураций виртуальных машин и осуществлять тестирование конфигураций программного обеспечения без развертывания на реальных серверах, что делает этот продукт полезным в проектах внедрения информационных систем или при модернизации ИТ-инфраструктуры. Данный продукт обладает и программным интерфейсом, позволяющим создавать решения на его основе.

 

Рис. 9. VMware Lab Manager

Дополнительные инструменты

Дополнительные инструменты компании Microsoft

Среди дополнительных инструментов для поддержки технологий виртуализации следует отметить Virtual Server 2005 Migration Toolkit — доступный для свободной загрузки инструмент для миграции операционных систем и установленных приложений с физических серверов в виртуальную среду на гостевой операционной системе, поддерживаемой Virtual Server.

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

Дополнительные инструменты компании VMware

Из дополнительных инструментов компании VMware отметим VMware Converter — доступное для свободной загрузки средство создания виртуальных машин на основе реально существующих физических операционных систем или их образов (например, созданных с помощью Symantec Backup Exec System Recovery или Ghost 9). Этот продукт создает «моментальный снимок» исходной операционной системы и превращает его в виртуальную машину, избавляя администраторов от необходимости установки и конфигурации последней. Созданные с его помощью виртуальные машины могут выполняться под управлением VMware Player, VMware Server и VMware Workstation.

Кроме того, компания VMware производит продукт VMmark — доступное для свободной загрузки средство тестирования производительности виртуальных машин, и VMware ACE — средство управления развертыванием виртуальных машин на корпоративных рабочих станциях.

Заключение

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

 

В начало В начало

КомпьютерПресс 9'2007


Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует