The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Руководство по использованию монитора виртуальных машин Xen (xen virtual emulator linux boot)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: xen, virtual, emulator, linux, boot,  (найти похожие документы)
From: Сгибнев Михаил <http://dreamcatcher.ru>; Date: Wed, 14 Apr 2006 18:21:07 +0000 (UTC) Subject: Руководство по использованию монитора виртуальных машин Xen Оригинал: http://dreamcatcher.ru/docs/xen_part1.html Содержание * 1 Введение и примеры + 1. Введение o 1.1 Структура системы, базирующейся на Xen o 1.2 Поддержка оборудования o 1.3 История + 2. Установка o 2.1 Требования o 2.2 Установка из бинарных файлов o 2.3 Установка из исходных текстов o 2.4 Конфигурация o 2.5 Загрузка Xen + 3. Запуск дополнительных доменов o 3.1 Создание файла конфигурации домена o 3.2 Загрузка домена o 3.3 Пример: ttylinux o 3.4 Автоматический старт/стоп домена + 4. Инструменты управления доменом o 4.1 Управление из командной строки o 4.2 Сохранение и восстановление домена o 4.3 Миграция o 4.4 Управление памятью домена + 5. Файловая система домена o 5.1 Экспорт физических устройств как VBDs o 5.2 Использование File-backed VBDs o 5.3 Использование LVM-backed VBDs o 5.4 Использование NFS Root 1. Введение Xen является "паравиртуальным" монитором виртуальных машин (VMM), другое его название, распространенное в основном на архитектуре x86 - `гипервизор'. Xen способен поддерживать одновременную работу большого числа виртуальных машин на одной физической, при этом не тратя значительных вычислительных ресурсов. Технология виртуальных машин позволяет расширить функциональность оборудования следующими способами: + Виртуальная машина обладает производительностью, сравнимой с реальной. + Возможность миграции запущенной виртуальной машины между физическими машинами. + Превосходная поддержка оборудования (поддерживается большинство драйверов устройств Linux) + Возможность создания песочницы, перезагружаемые драйверы устройств. Паравиртуализация позволяет достичь очень высокой производительности даже на таких, очень тяжелых для виртуализации, платформах, как x86. Недостатком такого подхода является необходимость адаптации операционной системы перед помещением в Xen. Процесс адаптации к Xen очень похож на портирование для новой платформы, однако значительно проще ввиду похожести виртуального оборудования на реальное. Даже с учетом того, что ядро операционной системы явно должно поддерживать Xen, пользовательские приложения и библиотеки остаются без изменения. Xen с каждым днем поддерживает все больше и больше платформ. В настоящее время поддерживается Linux 2.4, Linux 2.6 и NetBSD. Порт для FreeBSD в настоящее время проходит тестирование и вскоре будет официально выпущен. Порты других операционных систем, таких как Plan 9 также находятся в работе. Мы надемся, что во всех этих операционных системах будут выпущены официальные порты для Xen (как это случилось для NetBSD) Возможные сценарии использования Xen: Разработка ядра. Тестирование и отладка изменений в ядре -- нет необходимости в выделенной машине. Конфигурация с несколькими ОС. Одновременная работа нескольких операционных систем. Например для совместимости или целей QA. Объединение серверов. Перемещение нескольких серверов в одну физическую машину. В результате виртуализации достигается изолирование ошибок, происходящих в виртуальных машинах. Кластерные вычисления. Управление виртуальными машинами имеет большую степень детализации и гибкости, чем для группы физических машин. Становиться возможным живая миграция для обеспечения балансировки нагрузки. Поддержка оборудования. Разработчикам новых ОС предоставляется возможность изучать поддержку оборудования из существующих ОС, таких как Linux. 1.1 Структура системы, базирующейся на Xen Система имеет несколько уровней, самым низким и привилегированным является непосредственно Xen. Xen, в свою очередь, является базой для нескольких гостевых операционных систем, какжая из котох выполняется в отдельной виртуальной машине (в терминологии Xen она называется домен). Домены используются для повышения утилизации физических CPU. Каждая гостевая ОС управляет собственными приложениями. Первый домен, domain 0, создается автоматически во время загрузки и имеет специальные привилегии. В Domain 0 собираются прочие домены и происходит управление их виртуальными устройствами. Также он выполняет задачи по останову, запуску и миграции виртуальных машин. В пределах domain 0 работает процесс, называемый xend и управляющий системой. Xend отвечает за доступность виртуальных машин для управления и доступ к их консолям. Комады могут посылаться Xend через командную строку или HTTP интерфейс. 1.2 Поддержка оборудования Xen в настоящее время выполняется только на архитектуре x86, требуя для работы 'P6' или более нового процессора (например Pentium Pro, Celeron, Pentium II, Pentium III, Pentium IV, Xeon, AMD Athlon, AMD Duron). Поддерживается многопроцессорность, так же имеется базовая поддержка HyperThreading (SMT), хотя в настоящее время идут дополнительные работы. Xen работает на платформа x86/64, но в 32-разрядном режиме. Мы так же планируем поддержку процессоров PPC и ARM. Xen в настоящее время поддерживает 4GB оперативной памяти. Хотя для платформы x86 возможна адресация до 64GB, работ по увеличению поддерживаемой памяти проводиться не будет, в отличие от платформы x86/64. Xen переносит всю поддержку оборудования гостевой ОС на Domain 0. Сам Xen содержит только код, отвечающий за определение и старт дополнительных процессоров, управление прерываниями и нумерацией шины PCI. Драйверы устройств работают в переделах гостевой ОС, изолированно от самого процесса Xen.Этот подход обеспечивает совместимость с большинством аппаратных средств, поддерживаемых Linux. Имеющаяся сборка XenLinux обеспечивает поддержку большого числа сетевых адаптеров серверного класса и дисковых массивов, возможность работы с другим оборудованием достигается за счет перекомпиляции ядра XenLinux. 1.3 История Xen впервые был разработан Systems Research Group в компьютерной лаборатории университета Кембридж как часть проекта XenoServers, финансируемый UK-EPSRC. Целью XenoServers было "предоставить общедоступную инфраструктуру для распределенных вычислений" и Xen в этом проекте играл ключевую роль, позволяя эффективно делить ресурсы одной физической машины между независимыми клиентами. При этом необходимо обеспечить возможность запуска нескольких Ос и различных приложений, ведя аккаунтинг и изолируя ресурсы. Вы можете обратиться к странице этого проекта http://www.cl.cam.ac.uk/xeno, для получения дополнительной информации. С тех пор Xen был выделен в самостоятельный проект, что позволило произвести более полные исследования в области виртуализации. настоящее время проект поддерживается Intel Research Cambridge и HP Labs. Впервые Xen был описан на SOSP в 20031.1 году и первая его версия (1.0) была выпущена в октябре 2003 года. С тех пор Xen значительно развился и в настоящее время используется в промышленных системах. В Xen 2.0 была расширена поддержка оборудования, удобство конфигурирования и использования, увеличено количество поддерживаемых систем. Этот релиз Xen стал очередным шагом к становлению систем виртуализации с открытым исходным кодом. 2. Установка Поставка Xen включает в себя три основных компонента: сам Xen, версии операционных систем Linux 2.4, 2.6 и NetBSD для запуска Xen и набор пользовательских утилит, необходимых для управления системой. В этой главе описывается установка Xen 2.0 из исходных текстов. Альтернативный вариант, состоит в том, чтобы воспользоваться прекомпилированными пакетом из состава вашей операционной системы. 2.1 Требования Ниже перечисляется полный список требований, которые необходимо выполнить для установки. Пункты, отмеченные The following is a full list of prerequisites. Items marked ` $\dag $ ' необходимы для инструментов управления xend и следовательно требуются, если Вы хотите запустить больше, чем одну виртуальную машину, а помеченные `*' требуются только для сборки из исходных текстов. $$ Работающий дистрибутив Linux, использующий загрузчик GRUB и выполняющийся на машине класса P6 или выше. $\dag $ Пакетiproute2. $\dag $ Linux bridge-utils2.1 (e.g., /sbin/brctl) $\dag $ Установленный Twisted v1.3 или выше2.2, это может быть бинарный пакет, доступный для вашего дистрибутива. Так же, можно выполнить команду `make install-twisted' в каталоге исходных текстов Xen. * Инструменты для сборки (gcc v3.2.x or v3.3.x, binutils, GNU make). * Инструмент разработчика libcurl (e.g., libcurl-devel) * Инструмент разработчика zlib (e.g., zlib-dev). * Инструмент разработчика Python v2.2 или выше (e.g., python-dev). * LATEXand transfig требуется для сборки докуметации. После удовлетворения всех требований, вы можете приступить к установке Xen. из бинарного пакета или исходных текстов. 2.2 Установка из бинарных файлов Прекомпилированный тарбол может быть скачан отсюда: http://xen.sf.net После скачивания, просто распакуйте и установите его: # tar zxvf xen-2.0-install.tgz # cd xen-2.0-install # sh ./install.sh После установки бинарных файлов необходимо выполнить конфигурирование вашей системы, как это описано в разделе 2.4. 2.3 Установка из исходных текстов В этом разделе описывается получение, сборка и установка Xen из исходных текстов. 2.3.1 Получение исходных текстов Исходные тексты Xen доступны в виде сжатогого tar-архива или из репозитория BitKeeper. Получение тарбола исходных текстов Стабильная версия (или ежедневный снимок) исходных текстов Xen доступны на домашней странице Xen: http://xen.sf.net Использование BitKeeper Если вы хотите устанавливать Xen из репозитория BitKeeper, необходимо установить необходимый инструментарий. Посмотреть инструкцию по установке можно по адресу: http://www.bitmover.com/cgi-bin/download.cgi Публичный репозиторий находится по адресу: bk://xen.bkbits.net/xen-2.0.bk Вы можете использовать BitKeeper для последующего обновления Xen. Перейдите в каталог, куда вы хотите установить исходные тексты и выполните команду: # bk clone bk://xen.bkbits.net/xen-2.0.bk В результате, будет создан каталог xen-2.0.bk, содержащий исходные тексты Xen, порты ОС и утилиты управления. Вы можете обновлять репозиторий, получая последние изменения, выполняя время от времени команду: # cd xen-2.0.bk # to change into the local repository # bk pull # to update the repository 2.3.2 Сборка из исходных текстов Верхинй уровень Makefile включает цель `world' и отвечает за: + Сборка Xen + Сборка инструментов управления, включая xend + Скачивание (если необходимо) и распаковка исходных текстов Linux 2.6 и наложение необходимых патчей для использования Xen. + Сборка ядра Linux для использования в domain 0 и дополнительных непривилегированных ядер, которые будут использоваться в виртуальных машинах. После того, как сборка завершилась, должен появиться каталог dist/, содержащий сам дистрибутив. Практический интерес для нас будут иметь два ядра XenLinux, одно из которых имеет расширение `-xen0' и содержит драйверы устройств и драйверы виртуальных устройств Xen. Второе ядро имеет расширение `-xenU' и применяется в виртуальной машине. Найти их можно в dist/install/boot/, наряду с образом самого Xen и конфигурационными файлами, используемых в ходе установки. Порт NetBSD может быть создан командой : # make netbsd20 Порт NetBSD использует снимок ветви netbsd-2-0. Снимок может быть скачан в процессе установки, если он не найден по пути, определенной переменной NETBSD_SRC_PATH. В процессе сборки также скачиваются утилиты, необходимые для сборки ядра NetBSD под Linux. Для настройки параметров сборки ядра вам необходимо редактировать Makefile верхнего уровня. Посмотрите эту строку: KERNELS ?= mk.linux-2.6-xen0 mk.linux-2.6-xenU Вы можете отредактировать эту строку, указав ядро любой поддерживаемой операционной системы, которое имеет конфигурацию в каталоге buildconfigs/. Для примера, параметр mk.linux-2.4-xenU укажет на сборку ядра Linux 2.4, содержащего только драйверы виртуальных устройств. 2.3.3 Сборка XenLinux Если вы хотите собрать ядро XenLinux, включив в него собственные параметры (например, поддержку дополнительных устройств), вы можете использовать стандартный механизм конфигурации Linux, указав, что целевой архитектурой является xen. Например: # cd linux-2.6.9-xen0 # make ARCH=xen xconfig # cd .. # make Вы также можете скопировать существующую конфигурацию (.config) в linux-2.6.9-xen0 и выполнить: # make ARCH=xen oldconfig Утилита конфигурации может спросить вас о некоторых специфичных для Xen параметрах. Мы рекомендуем оставить их по умолчанию. Обратите внимание на отличие между двумя типами ядер: индекс "U" (непривилегированная) версия ядра не содержит драйверов физических устройств, что позволяет на 30% сократить его размер. Такие ядра применяются в непривилегированных доменах. Ядро с индексом `0' используется для загрузки системи и может использоваться как в главном, так и в непривилигерованном доменах. 2.3.4 Установка бинарных файлов Файлы, созданные в процессе сборки, по умолчанию сохраняются в каталоге dist/install/. Для установки необходимо выполнить: # make install По желанию, пользователи самостоятельно могут скопировать файлы в соответствующие каталоги. Каталог dist/install/boot так же содержит файлы конфигурации, используемые для сборки ядер XenLinux, версии ядер Xen и XenLinux, используемые для отладки (xen-syms и vmlinux-syms-2.6.9-xen0). Если вы будете обращаться в список рассылки, то вас могут попросить предоставить дампы отказов, полученных с помощью этих ядер. 2.4 Конфигурация После сборки и установки Xen необходимо подготовить машину для его загрузки и запуска. 2.4.1 Конфигурация GRUB Необходимо добавить запись в grub.conf (он располагается обычно в /boot/ или /boot/grub/) для обеспечения загрузки Xen / XenLinux. Этот файл иногда может называться menu.lst, в зависимости от вашего дистрибутива. Добавляемая строка будет выглядеть примерно так: title Xen 2.0 / XenLinux 2.6.9 kernel /boot/xen.gz dom0_mem=131072 module /boot/vmlinuz-2.6.9-xen0 root=/dev/sda4 ro console=tty0 Строка kernel указывает GRUB, где искать Xen и какие параметры загрузки использовать. (в данном случае, казывается размер отводимой для домена 0 памяти и устанавливаются параметры последовательного порта). Для получения дополнительной информации обратитесь к разделу 8.2. Строка module указывает на местоположение ядра XenLinux, используемого для старта Xen и передаваемые этому ядру параметры, которые я вляются стандартными для Linux. Некоторые дистрибутивы, такие как SUSE не требуют указания параметра ro. Если вы хотите использовать initrd, то необходимо использовать другую строку module: module /boot/my_initrd.gz Как и всегда после установки нового ядра, рекомендуется не удалять старое из menu.lst -- возможно вы захотите загрузить старое ядро в случае возникновения проблем. 2.4.2 Консоль на последовательном порту (опционально) Для конфигурирования Xen на вывод данных через последовательный порт, необходимо добавить следущую опцию в файл конфигурации GRUB: kernel /boot/xen.gz dom0_mem=131072 com1=115200,8n1 В результате Xen будет осуществлять вывод в COM1 на скорости 115,200, по 8 бит, без контроля четности. Вы можете изменить эти параметры по своему выбору. XenLinux можно настроить и на использование последовательного порта, для этого необходимо использовать ``console=ttyS0''. Если вы хотите входить на машину с XenLinux через последовательный порт, то необходимо добавить следущую строку в /etc/inittab: c:2345:respawn:/sbin/mingetty ttyS0 Обратите внимание, на то, что в современных дистрибутивах для возможности вхоа как root, необходимо добавить ttyS0 в /etc/securetty. 2.4.3 Библиотеки TLS Пользователи ядра XenLinux 2.6 должны отключить Thread Local Storage (например сделать mv /lib/tls /lib/tls.disabled) перед тем, как запускать ядро XenLinux2.3. Вы всегда можете вернуть каталог на прежнее место (mv /lib/tls.disabled /lib/tls). Причиной является то, что текущая реализация TLS использует сегментацию, в настоящее время не поддерживаемую Xen. Если TLS не выключена, то режим эмуляции резко снижает производительность системы. Мы надеемя, что эта проблема будет в скором времени устранена, так как сейчас идет тесное сотрудничество с производителями дистрибутивов Linux. 2.5 Загрузка Xen Теперь мы перезагружаем машину и загружаемся, уже используя Xen. Увидя приглашение GRUB, необходимо просто выбрать соответствующий пункт меню. Последущее должно напомнить обычную загрузку Linux. Инфирмацию нижнего уровня о себе и имеющихся аппаратных средствах выдает Xen, за все последущее отвечает XenLinux. В течении начальной загрузки вы можете увидеть некоторые сообщения об ошибках. Это не повод волноваться, скорее всего они возникают из-за различий в конфигурации ядер (поддержке оорудования) между тем ядром, которое вы использовали прежде и ядром XenLinux. После завершения загрузки войдите в систему обычным порядком. Если сделать это по какой-либо причине не получается, то загрузите машину, используя ваше старое ядро. 3. Запуск дополнительных доменов Первый шаг в создании нового домена заключается в том, что необходимо подготовить корневую файловую систему к выгрузке. Обычно, она сохраняется на нормальном разделе, LVM, или сервере NFS. Самый простой путь состоит в том, чтобы загрузиться с установочного CD для вашего дистрибутива и установить его в другой раздел вашего диска. Для запуска демона управления xend выполните: # xend start Если вы хотите запускать демона автоматически, смотрите инструкцию в разделе 6.1. Как только демон будет запущен, вы можете использовать утилиту xm для мониторинга и монтирования доменов к вашей системе. В этой главе дается краткое объяснение работы с xm, более детально эта тема рассмотрена в следующей главе. 3.1 Создание файла конфигурации домена Прежде, чем запускать дополнительный домен, необходимо создать его файл конфигурации. Мы создадим два таких файла, в последствии вы можете их использовать в качестве отправной точки для своих файлов: + /etc/xen/xmexample1 является простым шаблоном, служащим для описания одной единственной VM. + /etc/xen/xmexample2 предназначен для многократного использования на нескольких виртуальных машинах. В этом шаблоне необходимо будет установить значение переменной vmid в командной строке xm для каждой из VM. Скопируйте один из этих файлов и отредактируйте его сообразно собственным портебностям. Обычными параметрами, подвергающиеся изменениям являются: kernel Путь до ядра, откомпилированного для использования с Xen (например kernel = '/boot/vmlinuz-2.6.9-xenU') memory Размер выделяемой домену памяти в мегабайтах (например memory = 64) disk Первым значением выставляется смещение относительно корневого раздела домена, вычисляемое относительно идентификатора домена. Вторым - размещение /usr, если вы хотите сделать этот раздел общим для нескольких доменов (например disk = ['phy:your_hard_drive%d,sda1,w' % (base_partition_number + vmid), 'phy:your_usr_partition,sda6,r' ] dhcp Раскомментируйте эту строку, если домену должен назначаться IP адрес от сервера DHCP (например dhcp='dhcp') Вы также можете отредактировать переменную vif для смены MAC адреса виртуального сетевого интерфейса. Для примера: vif = ['mac=00:06:AA:F6:BB:B3'] Если вы не установили эту переменную, то xend автоматически сгенерирует случайный MAC из неиспользуемого диапазона. 3.2 Загрузка домена Утилита xm реализует множество команд для управления доменом. Используйте команду create для старта нового домена. Если принять, что вы создали файл конфигурации myvmconf, базируясь на /etc/xen/xmexample2, то запуск нового виртуального домена будет выглядеть следующим образом: # xm create -c myvmconf vmid=1 Флаг -c указывает xm подключиться к консоли домена после его создания. vmid=1 устанавливает переменную vmid, используемую в myvmconf. Вы должны видеть процесс загрузки домена. Кульминацией должно стать приглашение на вход в систему. 3.3 Пример: ttylinux Ttylinux -- это очень маленький дистрибутив Linux, весьма неприхотливый к ресурсам. Мы будем использовать его для наглядного показа запуска нового домена. Большинство пользователей, вероятно, захотят установить дистрибутив польностью, как только освоят некоторые основы 3.1. 1. Скачайте и распакуйте образ диска ttylinux из репозитория на SourceForge (см. http://sf.net/projects/xen/). 2. Создайте файл конфигурации подобный этому: kernel = "/boot/vmlinuz-2.6.9-xenU" memory = 64 name = "ttylinux" nics = 1 ip = "1.2.3.4" disk = ['file:/path/to/ttylinux/rootfs,sda1,w'] root = "/dev/sda1 ro" 3. Теперь запускайте домен и подключайтесь к его консоли: xm create configfile -c 4. Имя пользователя -- root, пароль -- root. 3.4 Автоматический Запуск/Останов доменов Имеется возможность автоматического запуска доменов во время начальной загрузки и завершение работы dom0 только после останова всех дочерних доменов. Для задания списка доменов, стартующих во время начальной загрузки, необходимо создать конфигурационный файл /etc/xen/auto/. Для инициализационных скриптов типа Sys-V, дистрибутива RedHat и систем LSB-compliant необходимый скрипт уже поставляется и автоматически копируется в /etc/init.d/. Для своего дистрибутива скрипт вы можете установить подобным образом. Для примера, на дистрибутиве RedHat: # chkconfig --add xendomains По умолчанию, он будет стартовать на уровнях 3, 4, 5. Так же, вы можете использовать команду service для запуска скрипта вручную: # service xendomains start Запуск всех доменов, указанных в /etc/xen/auto/. # service xendomains stop Останов ВСЕХ запущеных доменов Xen. 4. Инструментарий управления доменами В предыдущей главе мы рассмотрели простейший пример конфигурирования и запуска домена. В этой главе мы рассмотрим доступные инструменты для управления доменами. 4.1 Утилиты командной строки Управление из командной строки возможно с помощью утилиты xm. Для получения справки выполните команду: # xm help Для получения более подробной информации о какой-либо опции, можно воспользоваться командой xm help <command>. 4.1.1 Базовые команды управления Наиболее важными командами xm являются: # xm list: Список запущенных доменов # xm consoles : Получение информации о консоли домена. # xm console: Открыть консоль домена (например # xm console myVM 4.1.2 xm list Вывод xm list выглядит следующим образом: name domid memory cpu state cputime console name Имя виртуальной машины. domid Идентификатор домена. memory Размер памяти в мегабайтах. cpu Загрузка CPU этого домена. state Возможно 5 состояний домена: r запущен b заблокирован p приостановлен s выключен c авария cputime Текущее использование CPU в секундах. console Порт TCP, к которому привязана консоль домена. Команда xm list также поддерживает формат увеличенного вывода с помощью ключа -l. Этот вывод содержит более детальную информацию о запущенных доменах в формате xend SXP. Предположим, что у нас запущен домен с ttylinux, как это описано выше. Тогда мы в ответ на введенную команду должны получить нечто подобное: # xm list Name Id Mem(MB) CPU State Time(s) Console Domain-0 0 251 0 r---- 172.2 ttylinux 5 63 0 -b--- 3.0 9605 Здесь мы можем видеть подробный вывод для домена ttylinux и для домена 0(который всегда запущен). Обратите внимание, что консольный порт для ttylinux домена - 9605. На этот порт можно подключиться любой терминальной программой (telnet или, что лучше, xencons). Более простым способом будет использование xm console, указав имя или идентификатор домена. Разные способы соединения с доменом могут выглядеть так: # xm console ttylinux # xm console 5 # xencons localhost 9605 4.2 Сохранение и восстановление доменов Администратор Xen может сохранить текущее состояние виртуальной машины на диск домена 0, с последующим ее запуском в другое время. Над доменом ttylinux такую операцию можно осуществить, выполнив команду: # xm save ttylinux ttylinux.xen В результате домен `ttylinux' будет остановлен и его текущее состояние будет сохранено в файле ttylinux.xen. Для продолжения работы домена используйте команду xm restore: # xm restore ttylinux.xen Состояние домена будет восстановлено и он будет перезапущен. Связаться с этим доменом можно используя команду xm console. 4.3 Миграция Миграция используется для переноса доменов между физическими хостами незаметно для пользователя. Для осуществления живой миграции на обеих машинах должен быть запущен Xen / xend и на машине назначения должны иметься требуемые ресурсы(например, память) для запуска домена после миграции. Кроме того, в настоящее время есть требование, что бы машина-источник и целевая машина находились в одной сети L2. В настоящее время нет инструментальных средств, обеспечивающих автоматический доступ к файловой системе мигрирующего домена, сохраненной на диск. Администраторы самостоятельно выбирают систему хранения (SAN, NAS, etc.) для того, чтобы обеспечить доступность файловой системы на машине назначения. Хорошим методом экспорта томов с машины на машину является GNBD. iSCSI так же подходит, но он более сложен в установке. Поскольку при миграции MAC адрес и IP адрес остаются прежними, то накладывается ограничение на перенос доменов в другие сети. Это подразумевает необходимость ручной конфигурации сетевых настроек домена 0 при миграции в другую сеть. Миграция может осуществляться с помощью команды xm migrate. Для миграции домена на другую машину выполните команду: # xm migrate --live mydomain destination.ournetwork.com Без использования флага -live xend просто остановит домен, скопирует образ домена на новый узел и перезапустит домен. Так как домены могут быть очень большими, то процесс переноса может затянуться. При использовании флага -live домен переносится без останова, что позволяет сократить время простоя до 60-300ms, необходимое на перезапуск домена. Необходимо будет заново открыть консольное соединение, если таковое было. Если мигрирующий домен имел открытые сетевые соединения (такие как SSH), то обрыва их не произойдет. 4.4 Управление памятью домена Домены XenLinux могут освобождать/забирать физическую память по указанию пользователя или администратора домена. 4.4.1 Установка занимаемой памяти из dom0 Администратор может указать домену изменить используемый обьем памяти используя команду xm balloon. Например, мы можем указать нашему домену ttylinux уменьшить объем оперативной памяти до 32 мегабайт. # xm balloon ttylinux 32 Увидеть результат вы можете воспользовавшись командой xm list: # xm list Name Id Mem(MB) CPU State Time(s) Console Domain-0 0 251 0 r---- 172.2 ttylinux 5 31 0 -b--- 4.3 9605 Как мы видим, домен ответил нам на команду, вернув память Xen. Мы можем восстановить изначальный объем используя команду: # xm balloon ttylinux 64 4.4.2 Установка занимаемой памяти из домена Виртуальный файл /proc/xen/memory_target позволяет владельцу домена изменять размер доступной памяти. При чтении этого файла мы получим текущий объем памяти, при записи в него (например, echo new_target > /proc/xen/memory_target) у ядра запрашивается возможность изменить значение доступной памяти. 4.4.3 Установка лимита памяти Xen позволяет установить лимит доступной памяти для каждого домена. По умолчанию им является размер памяти, с которым был запущен домен. Для изменения лимита необходимо воспользоваться командой xm maxmem. 5. Файловая система домена Есть возможность экспортировать любое блочное устройсво Linux, находящееся в dom0, в другой домен или экспортировать файловую систему/устройства вирткальной машины используя стандартные сетевые протоколы (такие как NBD, iSCSI, NFS и т.д.). В этой главе мы и рассмотрим эту возможность. 5.1 Экспорт физических устройств как VBDs В одной из самых простых конфигураций мы просто экспортируем отдельные разделы из домена 0 в другие домены. Достигается это с помощью использования параметра phy: в файле конфигурации вашего домена. Приведем пример: disk = ['phy:hda3,sda1,w'] Здесь указывается, что раздел /dev/hda3 в домене 0 может быть экспортирован для записи-чтения в новый домен как /dev/sda1. В дополнение к локальным дискам и разделам, есть возможность экспортировать любые устройства, которые Linux рассматривает так же, как и диск. Для примера, это могут диски iSCSI или том GNBD, импортированный в домен 0 и затем перенесенный в другой домен с помощью указателя phy:. Рассмотрим такой вариант: disk = ['phy:vg/lvm1,sda2,w'] \framebox{\bf Warning: Block device sharing} Блочные устройства, обычно, между доменами передаются в режиме только для чтения, так как файловые системы Linux черезвычайно запутанны и их легко можно повредить (например, монтирование ext3 в режиме rw несколькими доменами - верный путь к потере данных). Xend постарается предотвратить такую ситуацию, указывая на монтирование в режиме rw для домена 0 и экспорт в другой домен. Если вы все же хотите использовать файловую систему в режиме чтения-записи, то ее необходимо экспортировать с помощью NFS из domain0 (или используя кластерную файловую систему, такую как GFS или ocfs2). 5.2 Использование File-backed VBDs В качестве главного носителя виртуальной машины можно использовать файл в домене 0. Преимущество данного подхода состоит в том, что виртуальное блочное устройство способно растягиваться -- если виртуальная машина занимает половину выделенного дискового пространства, то и файл будет в половину меньше. Создадим, для примера, виртуальное блочное устройство, размером в 2GB (фактически, будет использоваться 1 кб дискового пространства). # dd if=/dev/zero of=vm1disk bs=1k seek=2048k count=1 Создадим файловую систему на диске: # mkfs -t ext3 vm1disk (когда спросят подтверждение, отвечаем `y') Заполняем файловую систему: # mount -o loop vm1disk /mnt # cp -ax /{root,dev,var,etc,usr,bin,sbin,lib} /mnt # mkdir /mnt/{proc,sys,home,tmp} Соответствующим образом необходимо отредактировать /etc/fstab, /etc/hostname и т.д. (не забудьте, что редактировать надо в примонтированной файловой системе, а не в домене 0). Для этого примера указываем /dev/sda1 в fstab. Теперь отмонтируем файловую систему (это важно!): # umount /mnt В конфигурационном файле устанавливаем: disk = ['file:/full/path/to/vm1disk,sda1,w'] Поскольку в раздел виртуальной машины были добавлены данные, то размер файла увеличится и впоследствии будет расти, пока не достигнет 2 Гб. Обратите внимание на то, что file-backed VBDs очень плохо работают в доменах с интенсивным вводом/выводом. Поскольку доступ к файловой системе домена в этом случае осуществляется через петлевое блочное устройство, то значительно возрастает нагрузка на dom0. Для повышения производительности операций ввода/вывода лучше использовать LVM-backed VBDs (Раздел 5.3) или физическое устройство в качестве VBDs (Раздел 5.1). по умолчанию Linux поддерживает максимум восемь file-backed VBDs. Это значение может быть увеличено с помощью модуля max_loop, если CONFIG_BLK_DEV_LOOP представлен модулем ядра dom0, и ли используя опцию загрузки max_loop=n, если CONFIG_BLK_DEV_LOOP непосредственно вкомпилирован в ядро. 5.3 Использование LVM-backed VBDs Самое привлекательное решение состоит в использовании томов LVM в качестве файловой системы домена, так как есть возможность динамического изменения размера тома и реализации некоторых дополнительных возможностей. Инициализировать раздел на поддержку томов LVM можно так: # pvcreate /dev/sda10 Создадим группу под именем `vg' на физическом носителе: # vgcreate vg /dev/sda10 Создаем логический том размером 4 Гб с именем `myvmdisk1': # lvcreate -L4096M -n myvmdisk1 vg Теперь вы должны увидеть /dev/vg/myvmdisk1. Создайте файловую систему, примонтируйте и заполните ее: # mkfs -t ext3 /dev/vg/myvmdisk1 # mount /dev/vg/myvmdisk1 /mnt # cp -ax / /mnt # umount /mnt Теперь конфигурируем виртуальную машину на использование дисковой конфигурации: disk = [ 'phy:vg/myvmdisk1,sda1,w' ] LVM позволяет динамически изменять размер логических дисков, соответствующим образом изменяя размер файловых систем (если ФС поддерживает такую опцию, как, например, ext3) на использование дополнительного пространства. Для получения дополнительной информации смотрите руководство по LVM. Вы также можете использовать LVM для создания copy-on-write клонов томов LVM (в терминологии LVM известных как writable persistent snapshots). В Linux 2.6.8 эта возможность работает не слишком надежно, в частности при использовании CoW LVM наблюдается слишком большое потребление памяти доменом 0 и плохая обработка ошибок исчерпания дискового пространства. Надеемся, что в будущем поддержка LVM улучшится. Для создания двух клонов copy-on-write вышеупомянутой файловой системы выполним команды: # lvcreate -s -L1024M -n myclonedisk1 /dev/vg/myvmdisk1 # lvcreate -s -L1024M -n myclonedisk2 /dev/vg/myvmdisk1 Каждый из клоном может расти на 1 Гб от оригинального обьема. Вы можете выделить дополнительное пространство, для сохранения изменений, используя команду lvextend: # lvextend +100M /dev/vg/myclonedisk1 Не позволяйте тому переполнятся, так как это, скорее всего приведет к потере данных. Автоматизировать этот процесс, вероятнее всего, будет удобно, используя dmsetup wait для определения состояния, близкого к критическому и затем выполнять lvextend. В принципе, можно продолжить писать в клонированный том(эти изменения могут быть не видны другим клонам), но мы бы этого не рекомендовали, лучше иметь клонированный том не установленным ни в одну из виртуальных машин. (Пр.п - что-то я мало что понял. Если есть специалисты среди читателей - буду рад консультации по этому вопросу и предложениям по внесению исправлений в перевод.) 5.4 Использование NFS Root Сначала необходимо заполнить корневую файловую систему на машине, выступающей в роли сервера. Сервер может быть как отдельной машиной, так и виртуальным сервером в пределах одной физической машины. После этого, необходимо сконфигурировать NFS на экспорт файловой системы по сети, добавив следущую строку в /etc/exports. Для примера: /export/vm1root 1.2.3.4/24 (rw,sync,no_root_squash) В заключение, конфигурируем домен на использование NFS. В дополнение к обычным настройкам, убедитесь, что установили следующие переменные в конфигурационном файле домена: root = '/dev/nfs' nfs_server = '2.3.4.5' # substitute IP address of server nfs_root = '/path/to/root' # path to root FS on the server Во время начальной загрузки домену необходимо обеспечить доступ к сети сконфигурировав статический IP адрес (используя переменные ip, netmask, gateway, hostname) или используя DHCP (dhcp='dhcp'). Обратите внимание на то, что реализация NFS в Linux имеет проблемы со стабильностью под большой нагрузкой (это не проблема Xen) и не используйте такую конфигурацию в критичных серверах.

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру