Показаны сообщения с ярлыком виртуальная машина. Показать все сообщения
Показаны сообщения с ярлыком виртуальная машина. Показать все сообщения

21 ноября 2011 г.

Медведев рассказал о закупках иностранной техники для армии.

Дмитрий Медведев. Фото ©AFP    Т-90. Фото Сергея Петрова, "Лента.Ру"


Правительство России продолжит выделять значительные средства на закупку новой военной техники для Вооруженных сил, однако иностранные образцы будут приобретаться в единичных экземплярах. Об этом, как сообщает "Интерфакс", заявил президент России Дмитрий Медведев. По его словам, иностранные покупки будут осуществляться только для того, "чтобы было понятно, чем оснащаются иностранные армии".
"Мы можем закупать иностранную технику, но в весьма ограниченных объемах, скорее в единичных экземплярах, чтобы было понятно, чем оснащаются иностранные армии, и чтобы наши производители не дремали, а выпускали лучшие образцы", - пояснил президент, отметив, что России удалось значительно продвинуться в оснащении Вооруженных сил. Необходимость быстрой модернизации Медведев объяснил тем, что "на ведрах, которые зачастую стояли на оснащении, не то что ездить, их заводить трудно, что уж говорить о боевой составляющей".
В настоящее время в России реализуется госпрограмма вооружений на 2011-2020 годы, объем финансирования которой определен на уровне 23 триллионов рублей. Документ предусматривает, в частности, закупку у Франции четырех десантных вертолетоносных кораблей-доков типа "Мистраль". Заключение контрактов на строительство этих кораблей Россия поясняла необходимостью получения современных технологий, в частности технологии модульной сборки.
Кроме того, ранее Министерство обороны России приобрело у израильской компании IAI беспилотные летательные аппараты на сумму около 200 миллионов долларов, а также заключило контракт на поставку компонентов для сборки БПЛА, стоимостью 300 миллионов долларов. Помимо этого были заключены соглашения на поставку итальянских бронемашин Iveco LMV Lynx и немецкой брони производства Rheinmetall. Военное ведомство полагает, что технологии, полученные в результате таких покупок, позволят значительно повысить качество и возможности новой российской техники.
17 ноября 2011 года начальник Генерального штаба ВС РФ генерал армии Николай Макаров заявил, что некоторые образцы российских вооружений и военной техники по своим тактико-техническим характеристикам уступают наиболее удачным зарубежным аналогам. Для того, чтобы пояснить свое высказывание, Макаров сравнил российский основной боевой танк Т-90 с израильским Merkava MK4, а реактивную систему залпового огня "Смерч" с американской ракетно-артиллерийской HIMARS. По его словам, дальность стрельбы Т-90 и "Смерча" значительно меньше, чем у иностранных аналогов.


"Серчер II". Фото Aria Egozi с сайта flightglobal.com    ТАВКР "Адмирал Кузнецов". Фото с сайта fea.ru

Lenta.ru

РИА Новости
14:08
21/11/2011
  Президент РФ Дмитрий Медведев заверил, что государство продолжит выделять беспрецедентно большие деньги на закупку новой военной техники, иностранные образцы могут закупаться в единичных экземплярах. >>

9 сентября 2011 г.

Hyper-V: технология виртуализации для Windows Server 2008.

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

Технология Hyper-V

Пару лет назад ситуация на рынке систем виртуализации напоминала полный штиль. Пользователи и администраторы, желающие установить один из подобных продуктов, выбирали традиционные решения. И очень часто таким решением оказывался всем известный VMware, который давно (и вполне заслуженно) занял место лидера. Но сейчас ситуация резко изменилась и напоминает гонку процессоров, когда одна ошибка может дорого стоить. Сегодня виртуализация используется примерно на 10% всех серверов в мире, а это весьма солидный кусок пирога.
Все началось с покупки Microsoft компании Connectix и выпуска нового на этом рынке продукта - Microsoft Virtual PC. Пикантность ситуации состояла не столько в появлении еще одного конкурента, сколько в том, что Virtual PC предлагался абсолютно бесплатно. И поэтому, несмотря на некоторые его недостатки (например, отсутствие хороших средств и функций управления), новичок был принят весьма неплохо. А главное, производители, чтобы не остаться за бортом, вынуждены были ответить появлением бесплатных, хотя и несколько ограниченных по возможностям версий своих продуктов. В качестве примера приведу VMware Player, который может использовать только готовые образы, но не умеет самостоятельно их создавать. Последняя проблема была решена появлением сервисов вроде EasyVMX, позволяющих ваять нужный образ прямо в онлайне, а некоторые производители ПО стали выкладывать рядом с обычными версиями своих продуктов еще и готовый образ для VMware Player. Как бы то ни было, корпорация Microsoft смогла быстро занять место среди лидеров, выпускающих средства виртуализации.
Технология Hyper-V стала одной из ключевых возможностей Win2k8, хотя первые релизы этой системы включали beta3-версию Hyper-V. Финальный выпуск был обещан через 180 дней после анонса Win2k8, но он появился в начале лета, на два месяца раньше заявленного срока. Сегодня он входит в состав 64-битных версий Win2k8 Standard/Enterprise/Datacenter (Web и Itanium – нет) – и как отдельный продукт под названием Microsoft Hyper-V Server 2008. Последний полностью бесплатен и не требует CAL (Client Access License); лицензия понадобится лишь для гостевых Windows. Технологию Hyper-V можно использовать как в режиме полной установки (с графической оболочкой), так и в Server Core.
Возможности, предоставляемые Hyper-V, в разных версиях Win2k8 несколько отличаются. Так, Hyper-V Server 2008, по сути, является сильно облегченной версией Win2k8 Standard, из которой убрано практически все, что не касается виртуализации. Оставлены только средства управления гипервизором. Предназначен этот вариант для "чистой виртуализации" (других сервисов там попросту нет), но зато требует на порядок меньше ресурсов, чем тот же Server Core. Он поддерживает (как и Standard) до 4 физических процессоров и до 32 Гб ОЗУ. Возможен запуск до 128 VM, недоступен локальный графический интерфейс управления и отсутствует поддержка кластеров, – что не позволяет создавать на нем отказоустойчивые решения и реализовать возможность быстрой миграции.
Еще одним отличием версий стало количество VM, которые можно запускать без дополнительного лицензирования. В лицензию Standard "включена" одна бесплатная VM, в Enterprise – 4; количество VM в Datacenter - не ограничено.
Основной минус новой технологии: довольно высокие требования к процессорам. Как ты, наверное, заметил, поддержка 32-разрядных систем отсутствует (вообще говоря, архитектура платформы x86 никогда не предназначалась для запуска нескольких операционных систем одновременно; кроме того, ей присущи различные ограничения, например, максимальный размер ОЗУ равен 4 Гб). Возможна работа только на 64-разрядных процессорах, поддерживающих технологии Intel VT или AMD-V (прежнее название Pacifica). В BIOS должен быть активизирован механизм защиты исполняемого кода (Intel XD или AMD NX).
Работает гипервизор на Ring-1 – напрямую общается с оборудованием сервера, без вмешательства основной ОС, роль которой в Hyper-V минимальна. Микроядерная архитектура гипервизора (размер – менее 1 Мб) позволяет абстрагироваться от основных функций. На его плечи возложено управление выделением ресурсов (CPU, RAM, I/O). Каждый сервер Hyper-V имеет один родительский (Parent Partition) и несколько дочерних разделов (по количеству гостевых ОС, Child Partition). Родительский раздел – это виртуальное устройство с прямым доступом к аппаратным ресурсам. Гостевые ОС для доступа к устройству используют Parent Partition. Заявленные возможности Hyper-V весьма впечатляют:
  • Поддерживаются как однопроцессорные, так и многопроцессорные виртуальные машины с максимальным количеством процессоров 24;
  • Физический сервер может работать в конфигурации до 1 Тб RAM, виртуальные машины поддерживать 128 Гб RAM;
  • Возможность одновременного запуска до 192 виртуальных машин, количество настроенных, но не работающих VM ограничено числом 512;
  • Одновременная работа 32- и 64-битных версий гостевых ОС;
  • Поддержка виртуальных локальных сетей – VLAN до 4096 устройств; отдельная VM может иметь до 12 виртуальных сетевых адаптеров;
  • VM может иметь 4 виртуальных диска, каждый размером до 2040 Гб;
  • Возможность создания мгновенных снимков работающих виртуальных машин. В такую копию записывается также системное состояние, данные и конфигурация аппаратных средств.
Для создания резервной копии может задействоваться и служба Volume Shadow Copy Service (VSS). Поэтому при необходимости можно быстро вернуть виртуальный сервер к предыдущему состоянию. По умолчанию максимальное количество виртуальных процессоров равно 16, а виртуальных машин - 128. Чтобы увеличить их число до указанных 24 и 192, необходимо установить обновление KB956710.
В зависимости от версий родительской и гостевой ОС некоторые из указанных характеристик будут отличаться. Так, версии Win2k8 Standard и Hyper-V Server поддерживают в гостевых системах только до 32 Гб RAM. Гостевая Win2k8 в Standard может иметь 1,2 и 4 CPU, 2k3/Vista – 1 или 2, все остальные - только 1. Очевидно, что потенциал у Hyper-V довольно высокий, по многим характеристикам он уверенно обходит аналогичные программы. Будут ли все они востребованы в ближайшее время, – это другой вопрос.
Количество официально поддерживаемых гостевых ОС постоянно увеличивается. Уточненный список можно просмотреть на странице, посвященной Hyper-V (www.microsoft.com/servers/hyper-v-server). На сегодняшний день это практически все семейство ОС от Microsoft, начиная с версии WinXP Pro SP2. Из "не оконных" систем в список попал только SUSE Linux Enterprise Server 10 SP1 (неудивительно, учитывая соглашение, заключенное между Novell и Microsoft). Но под Hyper-V нормально работают и другие Linux-дистрибутивы – Debian, Ubuntu, Mandriva. Есть информация и об удачных гостевых запусках FreeBSD.

Установка Hyper-V

Так как в настоящее время технология Hyper-V развивается весьма активно, перед началом установки рекомендую накатить последние системные обновления: среди них наверняка будет что-то новенькое и для Hyper-V. Для этого в режиме полной установки выбери Start –> Control Panel -> Windows Update, щелкни View update history, укажи, а затем установи необходимые обновления. В Server Core просмотр обновлений производится командой "wmic qfe list". Как вариант, их можно просто скачать с сайта Microsoft и установить стандартным образом или воспользоваться "Диспетчером сервера". В частности, следует установить KB956710, KB950050. Некоторые обновления потребуют последующей перезагрузки системы. Но есть еще один нюанс, о котором нужно знать. Во многих руководствах по Hyper-V рекомендуется использовать только английскую версию Win2k8. К счастью для тех, кто не владеет языком Шекспира, Microsoft выпустила обновление KB951636 - набор Hyper-V Language Pack (support.microsoft.com/kb/951636), в котором есть и русский язык. Это обновление содержит два пакета: для x86 и x64 гостевых систем. Но перед его инсталляцией необходимо установить Windows Server 2008 MUI Language Pack, а затем добавить в систему поддержку нужного языка. Последнее нетривиально. Надо извлечь из img-образа каталог своего языка (внутри несколько файлов, основной - Lp.cab), потом в консоли "Regional and Language Options" перейти во вкладку "Keyboards and Languages", где нажать на Install/uninstall languages и указать на извлеченный каталог с языковыми файлами.
Сам процесс добавления новой роли выполняется стандартно в "Диспетчере сервера" (Server Manager) при помощи мастера добавления ролей, вызываемого нажатием ссылки "Добавить роли" (Add Roles). Перейдя на страницу выбора ролей "Select Server Roles", отмечаем флажком Hyper-V и переходим к следующему шагу "Create Virtual Networks". Здесь необходимо отметить один или несколько физических сетевых адаптеров, которые будут использованы при создании виртуальных сетей. Рекомендуют одно сетевое устройство использовать только для удаленного управления компьютером, не задействуя его в виртуальной сети. Далее знакомимся с установками и, если все в порядке, нажимаем кнопку Install. Возможно, будет предложено произвести некоторые действия, например, включить поддержку виртуализации в BIOS для Intel VT (для AMD-V она активирована по умолчанию). По всем вопросам здесь же присутствуют ссылки, по которым можно получить дополнительную информацию. Чуть позже потребуется перезагрузка. После рестарта обязательно зарегистрируйся в системе под той же учетной записью. Еще какое-то время уйдет на автоматическую установку компонентов и конфигурирование при помощи "Resume Configuration Wizard".
Для установки Hyper-V в режиме Server Core необходимо произвести стандартные настройки сервера (смотри статью "Без окон, без дверей" в августовском ][ за 2008 год) и затем ввести команду:
> start /w ocsetup Microsoft-Hyper-V
Кроме самой роли Hyper-V, будет установлен инструмент удаленного управления "Hyper-V Tools". Если управление Hyper-V планируется производить с другого Win2k8, то в "Диспетчере сервера" открываем "Компоненты" (Features) и нажимаем (Add Features). В окне выбора компонентов переходим в "Средства удаленного администрирования сервера –> Средства администрирования ролей", где отмечаем "Средства Hyper-V" (Remote Server Administration Tools -> Remote Administration Tools -> Hyper-V Tools).

Управление Hyper-V

Для управления настройками Hyper-V в Win2k8 предлагается "Диспетчер Hyper-V" (Hyper-V Manager), установленный нами на предыдущем шаге. Как и все прочие инструменты в этой системе, диспетчер является консолью MMC и позволяет управлять не только локальным, но и несколькими удаленными серверами. Его можно вызвать либо из Server Manager, либо как отдельное приложение из меню Administrative Tools.
Структура окна "Диспетчера Hyper-V" стандартна. Окно разделено на три части. В левой выводится список серверов Hyper-V, к которым подключен диспетчер. При помощи настроек, расположенных справа, производится собственно управление работой выбранного сервера. В окне посередине показываются и редактируются некоторые параметры, а также выбираются VM.
При первом запуске диспетчера необходимо принять условия лицензионного соглашения. Далее подключаемся к удаленному серверу, нажав ссылку "Connect to Server", или выбираем локальную систему. Перед началом дальнейших настроек советую зайти в "Hyper-V Server Settings" и пройтись там по пунктам. Например, по умолчанию виртуальные диски и снапшоты помещаются в один из каталогов на системном диске С. Это не очень практично с точки зрения производительности, безопасности, да и резервного копирования. Лучше использовать отдельный раздел для их хранения. Остальные параметры позволяют настроить реакцию виртуальной системы на комбинацию переключения окон (<Alt+Tab>), комбинацию для выхода из виртуальной машины (<Ctrl+Alt+Стрелка влево>) и прочее.
Если уже есть готовые виртуальные машины (допустим, созданные в Virtual Server), то их можно импортировать в Hyper-V. Для этого достаточно нажать ссылку "Import Virtual Machine", после чего указать на каталог, в котором расположены связанные файлы.
Большая часть настроек производится при помощи мастеров, поэтому процесс создания новой виртуальной машины довольно прост. Необходимо пройти всего несколько шагов, но для начала лучше познакомиться с некоторыми тонкостями.

Виртуальные сети и диски

В Hyper-V для связи с VM и VM могут использоваться три типа виртуальных сетей:
  • External (Внешняя) - универсальный тип, который можно использовать для связи между виртуальными устройствами на том же физическом сервере, включая родительский раздел, а также внешними серверами;
  • Internal (Внутренняя) - предназначена для связи между виртуальными системами, расположенными на одном физическом сервере, включая сеть управления. Отличается от предыдущей тем, что должна привязываться к реальному сетевому устройству;
  • Private (Частная) – используется для связи между виртуальными устройствами на одном физическом сервере и является внутренней, изолированной от остальных виртуальной сетью, в которой не используется виртуальное сетевое устройство.
Чтобы создать новую виртуальную сеть, выбери ссылку "Virtual Network Manager". Откроется окно диспетчера виртуальных сетей, в котором будут показаны все виртуальные сетевые устройства, подключенные к Hyper-V на этапе установки. Для удобства в поле Name можно прописать другое имя сетевого устройства и добавить его описание в поле Notes, чтобы легче ориентироваться среди множества виртуальных девайсов. По умолчанию, все созданные виртуальные сетевые устройства имеют тип External (кстати, для него можно указать альтернативное физическое устройство, с которым он и будет сопоставлен). При необходимости этот тип можно изменить, установив переключатель в поле "Connection Type" в другую позицию. Наконец, в самом низу прописывается VLAN-идентификатор (опционально). Кнопка Remove позволяет удалить выбранный виртуальный адаптер. Чтобы создать новую сеть, щелкаем в панели слева ссылку "New virtual network", указываем тип сети, нажимаем кнопку Add, – после чего редактируем параметры.
Сервер Hyper-V может работать с тремя типами устройств хранения данных:
  • Жесткий диск, подключенный непосредственно к серверу;
  • Сеть хранения данных SAN (Storage area network), подключенная при помощи технологий Internet SCSI (iSCSI), Fibre Channel или SAS;
  • Сетевая система хранения данных NAS (Network-attached storage) – один или несколько серверов, используемых для хранения информации и подключенных обычно по сети Ethernet.
Мастер создания виртуальной машины практически не имеет настроек, связанных с виртуальным жестким диском (файл с расширением .vhd). Более гибким вариантом будет предварительное создание виртуальных дисков и подключение их на этапе создания новой VM. Чтобы создать новый виртуальный диск, выбираем "New – Hard Disk" и следуем указаниям мастера создания дисков. Второй шаг "Choose Disk Type" позволяет задать тип диска. По умолчанию предлагается тип "Dynamically expanding", то есть – динамически расширяющийся по мере заполнения виртуальный диск. Этот тип позволяет рационально использовать дисковое пространство, но придется контролировать доступное место на физическом диске. Альтернативой выступает тип "Fixed size" – диск фиксированного размера. При его создании образ сразу заполняет все выделенное место, вне зависимости от потребности. Проблем с нехваткой пространства для таких серверов не будет, а, учитывая, что "диск" занимает последовательно расположенные блоки и не затрачивается время на их перераспределение, – его производительность выше, чем у динамического. Эти два типа встречаются и в других виртуальных машинах. В Hyper-V есть еще один вид диска – "Differencing", назначение которого несколько иное. Такой диск хранит только различия от другого диска. Это позволяет изолировать все изменения на виртуальное устройство. Основной диск может использоваться как некий эталон и должен обязательно быть в режиме "только для чтения".
Кроме того, в Hyper-V есть возможность напрямую использовать физический диск без создания виртуального (только локальный диск или LUN (logical unit number) SAN-среды). В этом случае виртуальная система должна иметь исключительный доступ к такому разделу (установи Offline в Disk Management!), а его размер ограничен возможностями самой системы хранения. Естественно, он не может быть "Dynamically expanded" или "Differencing".
После выбора типа диска переходим к следующему шагу мастера, где можно указать его расположение. Размер виртуального диска указывается на этапе "Configure Disk". Переключив флажок в положение "Copy the contents of the specified physical disk", сможем задать раздел для прямого доступа. Разделы локальной системы будут показаны в списке внизу. В дальнейшем можно изменить некоторые параметры созданных ранее жестких дисков. Для этого в "Диспетчере Hyper-V" следует выбрать "Edit Disk" и указать на нужный образ. На этапе "Choose Action" доступно три пункта, при помощи которых можно уменьшить размер образа, перераспределив свободное пространство, изменить его тип (Dynamic на Fixed) и увеличить размер.
Подобно мастеру создания жесткого диска, в меню присутствует и мастер создания образа флоппи-дисковода, – принцип работы с ним аналогичен.
Итак, пришло время создания новой виртуальной машины. Выбираем "New – Virtual Machine" и следуем указаниям мастера "New Virtual Machine Wizard". Пропустив информацию на первом шаге, мы вводим имя новой VM и, при необходимости, указываем другое место размещения файлов. Задаем в окне "Assign Memory" количество ОЗУ, которое будет доступно VM (не может быть больше, чем размер физической памяти в компьютере). Далее выбираем из раскрывающегося списка сеть, к которой будет подключена VM. Создаем новый виртуальный диск или выбираем из списка имеющийся. И на шаге "Installation Options" указываем источник, с которого будет ставиться ОС. Это может быть физический CD/DVD-привод, ISO-образ, загрузочный флоппик (физический или образ) или сетевая PXE-загрузка. Чтобы создать VM, на последнем шаге нажимаем Finish. Через некоторое время новая VM появится в окне "Диспетчера". Кстати, чтобы отменить работу мастера, на любом этапе нажимай Cancel; кнопка Finish также активна, и, если нажать ее по ошибке, будет создана VM или другое виртуальное устройство с неполными характеристиками. Чтобы запустить VM в работу, выбери ее в окне "Диспетчера" и нажми ссылку Start. Впоследствии можно изменить основные настройки VM, – в том числе, добавить еще устройства, выбрав в контекстном меню ссылку Settings.

Заключение

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

INFO

Инструменты управления Hyper-V

Помимо встроенного "Диспетчера Hyper-V" в Win2k8, есть и другие инструменты управления. По адресу support.microsoft.com/kb/952627 доступен аналогичный диспетчер для Vista SP1. Существует и более мощное решение: System Center Virtual Machine Manager (SCVMM) 2008, основное назначение которого – управление массивами виртуальных серверов в большой сети компании или провайдера. При этом он может работать как отдельное приложение, но рекомендуется соединять его с другими решениями System Center. Также SCVMM поддерживает Microsoft Virtual Server и VMware ESX. В этом случае он позволит не только управлять, но и следить за состоянием виртуальных машин (нагрузка, количество доступных ресурсов, системные события). Оценочную 120-дневную версию SCVMM можно скачать по ссылке на странице продукта: www.microsoft.com/systemcenter/virtualmachinemanager.

Клавиши управления Hyper-V

При работе в виртуальной системе при использовании Hyper-V тебе понадобятся некоторые комбинации клавиш, так как стандартные сочетания Windows (даны в скобках) в полноэкранном режиме работают иначе:
Ctrl + Alt + End (Ctrl + Alt + Del) – показать "Диспетчер задач Windows";
Alt + Page UP (Alt +Tab) – переключение между программами;
Alt + Page Down (Alt + Shift + Tab) - переключение между программами в обратном порядке;
Alt + Insert (Alt + Esc) – свернуть активное окно и открыть следующее;
Alt + Home (Ctrl + Esc) – открытие меню "Пуск";
Ctrl + Alt + Pause – переключение из режима окна в полноэкранный и обратно;
Ctrl + Alt + Left Arrow – освобождение мыши и клавиатуры из окна виртуальной машины.
Некоторые комбинации и реакцию на них родительской и виртуальных систем можно настроить в "Hyper-V Server Settings".

А так же

Первоначально технология виртуализации Hyper-V называлась Viridian.
Гипервизор — программа, позволяющая параллельное выполнение нескольких операционных систем на одном и том же компьютере. Гипервизор также обеспечивает изоляцию операционных систем друг от друга, защиту и безопасность, разделение ресурсов между различными запущенными ОС и управление ресурсами.
VT (Intel Virtualization Technology) - одна из технологий аппаратной виртуализации ресурсов, разработанная компанией Intel. AMD имеет в своем арсенале похожую технологию AMD-V, в которой реализована (в отличие от Intel VT) виртуализация режима реальной адресации (режим совместимости с 8086).
Официально Hyper-V в качестве гостевых систем поддерживает практически все версии 32х и 64х Windows, начиная с XP Professional SP2 и заканчивая Win2k8 (сюда же входит Windows HPC Server 2008), а также SUSE Linux Enterprise Server 10 SP1. Поддержка вариантов Home не заявлена.
Распределение ролей сервера между виртуальными машинами вместо запуска множества серверных приложений на одной операционной системе способствует повышению уровня безопасности.

WWW

Создать готовый образ для VMware Player можно на сайте EasyVMX: www.easyvmx.com.
Полезные ресурсы по Hyper-V:

WARNING

Hyper-V будет работать только на 64-битных ОС.
Источник 


27 августа 2011 г.

Виртуальная реальность по-русски: Осваиваем виртуализацию уровня ОС на примере OpenVZ


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

Виртуализация уровня ОС

В отличие от «настоящих» виртуальных машин, которые программно воссоздают аппаратную начинку ПК, системы виртуализации уровня ОС виртуализируют операционную систему, позволяя как бы расщепить ее на несколько независимых друг от друга ОС.
Проще всего понять это на примере дистрибутива GNU/Linux. Грубо его можно разделить на два логических компонента: ядро, имеющее максимальные привилегии и управляющее всем оборудованием, и компоненты пространства пользователя, представляющие собой набор демонов, библиотек, систему инициализации, ПО и прочее, которые получают доступ к оборудованию через вызовы функций ядра (системные вызовы). В обычной ситуации все компоненты пространства пользователя работают в одном «контексте исполнения » или, говоря образным языком, находятся в одной комнате: они могут видеть друг друга, имеют доступ к одному дереву файлов, делят между собой оборудование и все остальные ресурсы. Использование прав доступа позволяет им вполне успешно сосуществовать, не нанося друг другу вреда, однако может наступить момент, когда кто-то начнет теснить остальных, а другой, найдя способ обхода прав доступа, захватит власть над операционной системой.
И даже если администратор успевает быстро среагировать и устранить сбой — коммуналка, в которой у каждого одинаковые права на все, не может быть самым удачным способом размещения хоть людей, хоть процессов операционной системы.
Для решения этой проблемы виртуализация уровня ОС позволяет создать множество контекстов исполнения, каждый со своим деревом файлов, собственными процессами, сетевым стеком, правами на доступ к оборудованию и так далее. Проще говоря, она делает из одной операционной системы — несколько независимых, каждая из которых может иметь различные права на ресурсы, наиболее подходящие в ее конкретном случае. Такая виртуализация выгодно отличается от «настоящих» виртуальных машин: она проще в настройке, легко масштабируется и накладывает совсем незаметный (около 1%) оверхед на скорость работы ОС. Серьезный недостаток у нее всего один: возможность исполнения операционных систем только одного типа.

Почему OpenVZ?

В мире UNIX существует много различных реализаций виртуализации уровня операционной системы. Одними из первых в свою ОС ее внедрили разработчики FreeBSD. Система получила название Jail («Тюрьма») и долгое время оставалась образцом для подражания в глазах разработчиков других открытых ОС, но в последнее время сдала позиции как наименее развитая в плане функциональности.
Наверное, лучшую реализацию системы создала компания Sun для операционной системы Solaris 10, однако Solaris Zones, равно как и сама ОС, не получила широкого распространения (кстати, мы писали о Solaris Zones в одном из предыдущих номеров журнала).
Многие разработчики неоднократно предпринимали попытки воссоздать обе реализации для Linux, и на сегодня в этой области сформировалось три заметных лидера. Во-первых, это развиваемая сообществом система Linux-VServer (о ней мы также уже писали). Во-вторых, это не так давно появившийся, но очень перспективный проект LXC (LinuX Containers), который отличается очень функциональной реализацией, а также тем, что использует в своей основе стандартные механизмы ядра Linux, а потому не требует накладывания каких-либо патчей и может быть развернут за считанные минуты. В-третьих, это наиболее функциональная и стабильная система виртуализации OpenVZ, выступающая в роли ядра коммерческой системы Virtuozzo, выпускаемой российской компанией Parallels.
Сегодня OpenVZ и Virtuozzo — это стандарт де-факто для систем виртуализации уровня ОC в Linux. Они используются на тысячах серверов по всему миру, а их разработчики находятся на одном из первых мест по количеству коммитов кода в ядро Linux. Кстати, основной плюс OpenVZ заключается в том, что ты всегда сможешь найти не только огромное количество других пользователей OpenVZ, которые ответят на твои вопросы, но и массу информации на русском языке.

Что умеет OpenVZ?

По сути, OpenVZ — это модифицированное ядро Linux, в которое добавлен слой виртуализации, построенный на концепции VE (Virtual Environment — виртуальной среды), которую мы будем называть более привычным для нас термином «контейнер».
Такое ядро может обеспечивать несколько контекстов исполнения. И даже если пользователь не собирается использовать эту возможность, ядро все равно создаст один контекст, называемый Hardware Node (или нулевой контейнер). Это основная хост-система, имеющая максимальные полномочия и права на ресурсы. Говоря простым языком — стандартное Linux-окружение.
В любой момент администратор нулевого контейнера может добавить в систему новый контейнер, назначив ему номер, имя, сетевой адрес, дав прямой доступ к нужному оборудованию (если это необходимо) и выделив нужное количество ресурсов, которые будут определять «мощность» виртуального сервера.
OpenVZ использует модифицированный планировщик процессов, который учитывает не только их приоритеты, но и то, в каком контейнере они исполняются. Это позволяет задать жесткое ограничение процессорного времени на каждый контейнер, не позволив ему полностью загрузить весь процессор, лишив возможности исполнения процессы других контейнеров.
Каждый контейнер OpenVZ получает собственный виртуальный сетевой интерфейс (venet или veth) и полноценный, полностью обособленный от нулевого контейнера, сетевой стек, обеспечивающий контейнер отдельными IP-адресом, таблицей маршрутизации и правилами брэндмауэра. Одной из важнейших возможностей OpenVZ является механизм так называемого «чекпоинтинга», позволяющий сохранить образ контейнера на жесткий диск и восстановить его работу с прерванного места. Более того, образ можно безболезненно перенести на другую машину и восстановить его работу уже на ней. Причем даже если в момент «заморозки » на адрес одного из сетевых сервисов контейнера придет запрос, он будет вполне успешно обработан после восстановления, а для клиента это будет выглядеть как обычная задержка в ответе (например, на открытие web-страницы ушла не доля секунды, а 5 секунд).
OpenVZ очень хорошо масштабируется. Одна физическая машина может с легкостью обслуживать несколько сотен не слишком требовательных к ресурсам контейнеров, и пользователи каждого из них даже не заметят каких-либо проблем с производительностью.

Ограничения

Помимо уже упомянутого ограничения на тип поддерживаемых ОС, которое вытекает из того факта, что все контейнеры работают на одном ядре Linux, у OpenVZ есть несколько более мелких, но заслуживающих внимания недостатков (справедливости ради следует отметить, что это проблема всех реализаций системы виртуализации уровня ОС). Во-первых, OpenVZ накладывает определенные ограничения на работу софта, который зависит от низкоуровневых функций ядра. Так, например, ядерный NFS, OpenVPN и IPSec внутри контейнера работать не будут.
Какие-то другие программы, зависимые от ядерных модулей, также откажутся правильно функционировать (хотя в некоторых случаях OpenVZ позволяет загрузить в контейнер модули).
О различных ядерных патчах тем более придется забыть раз и навсегда. Во-вторых, все контейнеры OpenVZ используют один дисковый своп, а это значит, что если оперативная память между контейнерами будет распределена неправильно, система может начать тормозить в самый неподходящий момент. К счастью, проблема решается с помощью разделения памяти таким образом, чтобы ее суммарный объем составлял не более 80-90% от общего количества. В-третьих, контейнеры OpenVZ используют один дисковый кэш, поэтому если какой-то контейнер начнет активно обращаться к жесткому диску, то он может заполнить весь кэш своими данными, и другим контейнерам придется долго ждать очереди, чтобы записать/прочитать данные с диска. В связи с этим я бы не рекомендовал использовать OpenVZ для «хостинга» серверов, активно работающих с диском (для таких задач вообще всегда рекомендуется использовать выделенный железный сервер).
Наконец, в-четвертых, OpenVZ использует очень неэффективный механизм ограничения контейнеров в количестве оперативной памяти. Вместо подсчета реально используемой приложениями контейнера памяти он считает количество выделенной памяти, и это придется учитывать при запуске приложений, запрашивающих большие количества памяти при запуске, но не использующих ее всю во время работы (например, так ведет себя всем известный memcached при дефолтовых настройках).

Установка

Являясь «системой уровня предприятия» и основой платного продукта Virtuozzo, OpenVZ в первую очередь рассчитана на применение в дистрибутивах линейки RHEL, поэтому официальные сборки OpenVZ-ядра доступны только для этого дистрибутива.
Неофициально же OpenVZ доступен в Debian, разработчики которого самостоятельно патчат и готовят ядро OpenVZ (пакет linux-openvz-i386 FIXME).
В Ubuntu ядра OpenVZ нет еще с версии 8.10, поэтому у его пользователей остается два способа установить OpenVZ на сервер: пропатчить и собрать ядро самостоятельно либо взять уже патченое ядро из Ubuntu 8.04. Для тех, кто считает последний подход бредовым, поясню: во-первых, стабильное OpenVZ-ядро на сегодняшний день до сих пор имеет номер версии 2.6.18, тогда как в Ubuntu 8.04 используется даже более свежее ядро 2.6.24; во-вторых, Ubuntu 8.04 является LTS-дистрибутивом, а значит, обновления безопасности для любых его компонентов будут выходить вплоть до 2013 года, что, на мой взгляд, вполне приемлемо. Итак, если мы имеем дело с RHEL, то OpenVZ можно установить из официального источника. Для этого необходимо добавить репозиторий openvz.org в yum:
# cd /etc/yum.repos.d
# wget http://download.openvz.org/openvz.repo
# rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ
Отключить SELinux:
# echo 'SELINUX=disabled' > /etc/sysconfi g/elinux
И установить ядро и утилиты управления:
# yum install ovzkernel
# yum install vzctl vzquota
В Debian все просто, достаточно выполнить только одну команду:
$ sudo apt-get install vzctl vzquota linux-openvz-i386
В Ubuntu сложнее. Сначала необходимо добавить репозиторий Ubuntu 8.04, для чего следует создать файл / etc/apt/sources.list.d/hardy-main.list и поместить в него следующие строки:
# vi /etc/apt/sources.list.d/hardy-main.list
deb http://mirror.yandex.ru/ubuntu hardy main
deb http://mirror.yandex.ru/ubuntu
hardy-updates main
deb http://mirror.yandex.ru/ubuntu
hardy-security main
Только после этого можно установить OpenVZ-ядро и утилиты:
$ sudo apt-get update
$ sudo apt-get install vzctl vzquota linux-openvz
После установки в любом из трех дистрибутивов необходимо изменить некоторые настройки ядра, иначе OpenVZ будет работать некорректно. Открываем файл /etc/sysctl.conf и пишем в него следующее:
# vi /etc/sysctl.conf
net.ipv4.conf.default.proxy_arp = 1
net.ipv4.ip_forward = 1
net.ipv4.conf.all.rp_fi lter = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
Перезагружаем машину и загружаемся уже с новым ядром. Чтобы запустить необходимые для правильной работы OpenVZ userspace-сервисы, набираем:
# /etc/init.d/vz start

Шаблоны ОС

Как уже было сказано выше, для каждого контейнера OpenVZ создает независимый контекст исполнения, который, за вычетом всего остального, имеет собственное файловое дерево, полностью обособленное от файловой системы нулевого контейнера. Поэтому перед тем как приступить к опробованию боевых качеств OpenVZ, мы должны подготовить набор файлов, которые будут формировать файловую систему для будущих контейнеров (так называемый шаблон).
Существует три способа это сделать:
  1. Скопировать файловое дерево из основной системы, что приведет к тому, что любой новый контейнер будет представлять собой копию существующей системы (нулевого контейнера).
  2. Взять существующий дистрибутив Linux и получить готовый шаблон, выбросив из него ядро, initramfsобраз и внеся несколько изменений.
  3. Скачать подходящий шаблон с сайта OpenVZ.
Мы пойдем по пути наименьшего сопротивления и воспользуемся третьим способом. Для этого переходим в каталог-хранилище шаблонов:
$ cd /var/lib/vz/template/cache
И скачиваем нужный шаблон с помощью wget:
$ sudo wget http://download.openvz.org/template/precreated/debian-5.0-x86.tar.gz
Весь список подготовленных шаблонов можно просмотреть, открыв страницу download.openvz.org/template/precreated в браузере.

Создаем контейнеры

Для управления OpenVZ используется несколько консольных утилит, наиважнейшая из которых носит имя vzctl. Она применяется для создания, удаления, запуска, остановки, а также изменения настроек контейнеров.
Любой сисадмин OpenVZ должен знать все ее параметры и опции назубок. Способ вызова утилиты следующий:
# vzctl команда номер_контейнера аргументы
Команда — это действие, которое должен выполнить OpenVZ, а аргументы уточняют или дополняют его. Для создания контейнера используется команда create, для изменения параметров — set, для уничтожения — destroy. Также доступны команды enter, start, stop и restart, позволяющие «заходить» в контейнеры и управлять их работой.
Vzctl — очень гибкая утилита, с помощью которой можно создать и полностью настроить контейнер почти любой сложности, не затронув ни единого конфигурационного файла. Вот как это делается:
1. Сначала создаем новый контейнер с номером 100 (кстати, в качестве номера удобно использовать последнюю часть его IP-адреса):
# vzctl create 100 --ostemplate debian-5.0-x86 --confi g vps.basic
Здесь debian-5.0-x86 — это скачанный ранее шаблон без расширения tar.gz, а vps.basic — набор стандартных предустановок, которые мы все равно собираемся менять.
2. Меняем настройки контейнера так, чтобы он запускался при загрузке системы:
# vzctl set 100 --onboot yes --save
3. Меняем сетевое имя контейнера:
# vzctl set 100 --hostname my-fi rst-vps.org.ru --save
4. Даем ему новый IP-адрес:
# vzctl set 100 --ipdel all --ipadd 192.168.0.100 --save
5. Указываем дефолтный DNS-сервер:
# vzctl set 100 --nameserver 192.168.0.1 --save
6. Устанавливаем пароль пользователя root:
# vzctl set 100 --userpasswd root:password --save
7. Выделяем контейнеру 15% от общей мощности процессора (один процессор — это 100%, два — 200%, четыре — 400% и так далее):
# vzctl set 100 --cpulimit 15 --save
8. Выделяем контейнеру 20 Гб дискового пространства с возможностью его превышения до 25 Гб на небольшой промежуток времени:
# vzctl set 100 --diskspace 20G:25G --save
9. Устанавливаем ограничение на объем оперативной памяти (в первой строке устанавливаем гарантированный ресурс, во второй — негарантированный, он будет доступен контейнеру только в том случае, если в системе есть его излишек):
# vzctl set 100 --vmguarpages 256M:256M --save
# vzctl set 100 --privvmpages 512M:512M --save
10. Теперь можно войти в контейнер и продолжить настройку уже внутри него (установить необходимые сервисы, настроить брэндмауэр и маршрутизацию):
# vzctl enter 100
Более подробную информацию о настройке контейнеров можно почерпнуть из man-страницы vzctl.

UBC

В терминах OpenVZ лимиты и гарантии ресурсов называются User Beancounters (UBC). Всего существует около 20 UBC, контролирующих почти все возможные ресурсы системы. Каждый UBC имеет свою опцию в команде vzctl, а также строку в файле /proc/user_ beancounters, с помощью которого можно узнать о текущем количестве выделенных ресурсов и определить их нехватку. Файл представляет собой таблицу, каждая строка которой содержит информацию об одном ресурсе, а колонки отражают следующие данные:
Файл /proc/user_beancounters
  • uid — идентификатор контейнера;
  • resource — имя ресурса;
  • held — текущая утилизация ресурса;
  • maxheld — максимальный уровень утилизации ресурса за все время работы контейнера;
  • barrier — максимальный уровень утилизации ресурсов, который может быть временно превышен;
  • limit — жесткое ограничение утилизации ресурса, которое никогда не может быть превышено;
  • failcnt — счетчик отказов, который увеличивается каждый раз, когда контейнер делает запрос ресурсов сверх своего лимита.
Не обязательно разбираться во всех тонкостях системы подсчета ресурсов OpenVZ, чтобы эффективно управлять контейнерами. Достаточно время от времени поглядывать на значение колонки failcnt и, если оно оказывается больше нуля, начинать предпринимать меры либо по оптимизации исполняемого в рамках контейнера софта, либо по увеличению количества выделяемых контейнеру ресурсов.

Выводы

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

О настройке контейнеров

Самое замечательное в настройке OpenVZконтейнеров — это целостность инструментов. При необходимости система сама изменяет конфигурационные файлы дистрибутива, расположенного в контейнере, так, чтобы они соответствовали запрошенным. К примеру, настройка адреса DNS-сервера с помощью vzctl автоматически приведет к его добавлению в файл /etc/resolv.conf в файловой системе контейнера.
Такой уровень гибкости гораздо сложнее получить при использовании «классических» систем виртуализации.

Список OpenVZ-утилит

  • vzlist используется для получения списка всех контейнеров;
  • vzmigrate предназначена для осуществления offlineи online-миграции;
  • vzcfgvalidate проверяет конфигурационные файлы на корректность;
  • vzmemcheck, vzcpucheck, vzcalc осуществляют проверку на доступные ресурсы внутри контейнера;
  • vzsplit автоматически генерирует конфигурационные файлы;
  • vzpid определяет номер контейнера по PID’у процесса;
  • vzquota управляет дисковой квотой контейнера.

Links

  • Все, что нужно знать о UBC: wiki.openvz.org/UBC;
  • Руководство по созданию шаблонов: http://goo.gl/h1gNL.
  • О том, как производить чекпоинтинг: http://goo.gl/lZbzW.
  • Как превратить физический сервер в виртуальный: http://goo.gl/sYtxF;
  • Настройка I/Oприоритетов для контейнеров: http://goo.gl/YtjiV.
  • Cписок панелей управления OpenVZ: http://goo.gl/KfEbB.
  • OpenVZ Web Panel, одна из лучших web-панелей для управления OpenVZ: http://goo.gl/x7UlF.
  • Настройка OpenVZ Web Panel: http://goo.gl/vx73u.
  • Описание процесса установки OpenVZ в Ubuntu 10.04 с помощью сборки из исходников: http://goo.gl/XEaou.