LXF125:Virtualization
|
|
|
Содержание |
Виртуализация – это просто
- О виртуализации написано огромное количество книг. Но все, что вам нужно на самом деле – KVM, Qemu и Крис Браун.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Согласно мудрой Wikipedia, «виртуализация — широкое понятие, обозначающее абстракцию ресурсов компьютера». Под это определение подпадает множество программных продуктов: VirtualBox от Sun, Parallels, Bochs, Xen, KVM, Qemu, разновидности VMware и многие другие. Есть и масса непонятных словечек, призванных сбить с толку неофита — эмуляция, полная виртуализация, паравиртуализация, виртуальное устройство, гипервизор… список можно продолжить. И не все придерживаются единого мнения о том, что эти термины означают.
Мы сознательно уйдем от копания в словах и взглянем с практической точки зрения на технологии виртуализации в Ubuntu, в частности, KVM и Qemu, и связанные с ними пользовательские утилиты для создания и управления виртуальными машинами (ВМ). Хотя мы будем говорить об Ubuntu, те же технологии приенимы ко всем дистрибутивам Linux.
На рисунке слева я попытался показать некоторые из компонентов виртуализации в случае Linux. В нижней части рисунка представлены используемые технологии. Слева – Xen, программный слой, который концептуально лежит ниже ОС. Он называется гипервизором и запускается первым (после загрузчика) во время старта компьютера. Xen создает единственную виртуальную машину (Domain 0 или сокращенно Dom 0), на которой работает Linux. Именно этот домен предоставляет Xen свои виртуальные ресурсы. Дополнительные домены пользователя (Dom U) для дополнительных экземпляров Linux можно создать позже. Хотя мы и не будем больше о нем говорить, Xen – стабильное, мощнейшее решение для виртуализации. Canonical использует его, например, для ВМ Ubuntu, на которых студенты делают лабораторные работы по новому серверному курсу.
KVM (не переключатель клавиатуры)
Компонент в средней части рисунка – KVM (Kernel Virtual Machine). KVM обеспечивает полную (аппаратно-зависимую) виртуализацию и может запускать неизмененные образы Linux или Windows, но для его работы необходимы соответствующие расширения процессора (Intel VT или AMD-V). Она состоит из загружаемого модуля ядра (kvm.ko), предоставляющего инфраструктуру виртуализации ядра и процессорного модуля (kvm-intel.ko или kvm-amd.ko, в зависимости от вашего процессора). Эти компоненты включены в основную версию ядра, начиная с 2.6.20. KVM использует Qemu для эмуляции устройств – таких как сетевая карта, жесткий диск, графический адаптер и т.д. Об этом сочетании мы здесь и поговорим.
В правой части рисунка мы видим Qemu, работающую в пространстве пользователя как чисто программный пакет эмуляции. Его можно применять и без всего (и при этом не нужны ни специальный модуль ядра, ни расширения виртуализации процессора, ни слой гипервизора), и на нем можно запускать неизмененные образы операционной системы. В самостоятельном режиме Qemu – не самый быстрый вариант, однако его можно ускорить при наличии KVM, или с помощью модуля ядра kqemu.
В верхней части рисунка показаны некоторые инструменты пространства пользователя. Virsh – утилита командной строки для управления ВМ. Ее можно использовать для запуска, остановки, приостановки, возобновления, сохранения состояния и восстановления состояния ВМ или просмотра списка работающих ВМ. Она может подготовить ВМ к автоматическому запуску во время загрузки основного компьютера или даже к миграции на другую хост-систему.
Virt-viewer – инструмент для отображения графической консоли ВМ. Доступ к консоли осуществляется через протокол VNC. Virt-manager – настольная утилита (написана на Python) для обслуживания ВМ. Она позволяет управлять жизненным циклом существующих машин (загрузка/выключение, пауза/возобновление, сохранение/восстановление состояния), созданием новых ВМ и виртуальными сетями, обращаться к графической консоли ВМ и просматривать статистику производительности.
Все эти утилиты опираются на libvirt, библиотеку C для взаимодействия с ВМ. Libvirt – настоящий герой нашей истории. Библиотека предоставляет стабильный, цельный API для управления машинами во множестве технологий виртуализации. На данный момент она, среди прочих, поддерживает Xen, Qemu, KVM, User Mode Linux и VirtualBox. Для определения виртуального оборудования libvirt применяет конфигурационные файлы в формате XMLn в каталогах /etc/libvirt и /var/lib/libvirt. Библиотека также используется демоном libvirtd – он является посредником во взаимодействии с системой виртуализации.
Ближе к делу
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
На нашем уроке мы создадим три ВМ на основе KVM. На первую установим Vista со стандартного носителя. На второй развернем Red Hat Linux с ISO-образа, а на третьей – Ubuntu напрямую из репозиториев.
Но сначала вот что: для работы KVM необходима поддержка виртуализации вашим процессором. Это означает, что требуются расширения процессора Intel-VT или AMD-V. Чтобы убедиться, поддерживает ли процессор одно из них, выполните команду
egrep ‘(vmx|svm)’ /proc/cpuinfo
Если команда ничего не вывела, процессор не поддерживает аппаратную виртуализацию. В противном случае – поддерживает, но нужно еще убедиться, что она активирована в BIOS. Избавившись от этого препятствия, применим virt-manager для создания виртуальной машины KVM/Qemu с Windows Vista. Для начала кликните на строке ‘localhost’ в главном окне virt-manager и выберите пункт меню New [Новый]. Последует серия окошек (некоторые из них показаны далее), где нужно будет ввести разного рода информацию. Результатом этого процесса станут XML-файл, описывающий настройки виртуальной машины (в данном случае /etc/libvirt/qemu/vista.xml), и файл образа диска файловой системы ВМ (/var/lib/libvirt/images/vista). Virt-manager автоматически загрузит вновь созданную ВМ и запустит установку операционной системы с выбранного носителя.
Образы ВМ можно создать и из командной строки, с помощью virt-install. Мы создали вторую ВМ и установили Red Hat из ISO-образа следующей командой:
$ sudo virt-install --connect qemu:///system --name RHEL5 --ram 1000 --disk path=/var/lib/libvirt/images/RHEL5. img,size=8 --network network:default --accelerate --vnc --cdrom /iso-images/RHEL5.2-x86_64.iso --os-type=linux
На создание ВМ ушло всего несколько секунд, и экран загрузки установщика Red Hat появился почти мгновенно. Установка и перезагрузка прошли без приключений.
Для третьей ВМ и в качестве альтернативы созданию пустой ВМ и установки ОС на нее мы воспользовались VMBuilder, скриптом на языке Python, умеющим создавать образ ВМ с нуля, на лету загрузив все его фрагменты из репозиториев Ubuntu. Это переделанный скрипт ubuntu-vm-builder из Ubuntu 8.04 LTS. Оба скрипта написал Сорен Хансен [Søren Hansen]. Вот пример:
$ sudo vmbuilder kvm ubuntu --suite jaunty --flavour virtual --arch i386 -o --libvirt qemu:///system
Обязательны только два первых параметра. Здесь kvm задает гипервизор (т.е. технологию виртуализации, с которой работает образ). Поддерживаемые значения таковы: esxi, xen, kvm, vmw6 и vmserver. Второй параметр, ubuntu, определяет дистрибутив, который вы хотите собрать. Сейчас поддерживается только Ubuntu. Время, необходимое для создания ВМ, в этом случае будет зависеть в основном от ширины канала между вами и репозиториями. Если вы планируете установить несколько похожих ВМ, обдумайте создание прокси-сервера репозиториев. Для этого достаточно выбрать один из компьютеров сети и установить пакет apt-proxy:
$ sudo apt-get install apt-proxy
Создастся APT-прокси с кэшированием, который слушает порт 9999. Чтобы направить VMBuilder на прокси, потребуется добавить опцию --mirror в его командную строку таким образом:
--mirror http://server-address:9999/ubuntu
Для первой созданной ВМ вы не заметите никаких изменений в быстродействии, так как прокси должен заполнить свой кэш из серверных репозиториев, но последующие должны работать гораздо быстрее (в простом тесте, время сборки для приведенной выше команды уменьшилось с 4 минут 36 секунд без прокси до 2 минут 26 секунд с прокси).
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Если вам нужно получить несколько идентичных компьютеров, привлеките virt-clone. Эта утилита скопирует образы диска существующей ВМ и определит новый гостевой компьютер с той же конфигураций виртуальных устройств, за исключением элементов, которые обязаны быть уникальными (например, MAC-адреса) и которые будут изменены во избежание конфликта. Например, мы создали клон виртуальной машины Ubuntu VM за какие-то секунды следующим образом:
$ sudo virt-clone --original ubuntu --name ubuntu3 --file /home/chris/ubuntu-kvm/disk3.qcow2 Cloning from /home/chris/ 100% |=========================| 364 MB 00:03
Для задания характеристик ВМ и установленного ПО у VMBuilder около пятидесяти параметров, поэтому вы почти наверняка захотите встроить команду в скрипт оболочки и пользоваться ею с удобствами. Некоторые из этих параметров приведены в таблице далее.
По умолчанию VMBuilder создает систему с минимальным содержимым. Дополнительные пакеты можно добавить, несколько раз указав опцию --addpkg. С помощью опции --firstboot задается скрипт, который будет запущен при загрузке образа, например, для установки сервера SSH, чтобы генерируемая им пара ключей была уникальной для каждой системы. Если надо установить пакеты, требующие при развертывании взаимодействия с пользователем (например, MySQL и Postfix), можно написать дополнительные скрипты, которые сделают это и будут запущены в первый раз, когда исходный пользователь (initial user) подключится к системе. На них указывает параметр --firstlogin. Такие возможности полезнее всего при создании образа виртуального устройства для передачи многим пользователям.
Чтобы не запускать VMBuilder с тысячей параметров, можно записать настройки во внешний конфигурационный файл и сослаться на него в командной строке следующим образом:
$ sudo vmbuilder kvm ubuntu -c myconfigfile.cfg
Какой бы вариант создания ВМ вы ни выбрали, в итоге у вас окажется два файла. Первый, в /etc/libvirt/qemu, представляет собой XML-файл, определяющий виртуальные устройства компьютера – его процессор, объем памяти, диски, к какой сети он подключен, его MAC-адрес и пр. Второй файл содержит образ диска компьютера (т.е. его файловую систему). Virt-install и virt-manager создают файлы с расширением .img и помещают их в каталог /var/lib/libvirt/images, VMBuilder создает файлы в формате QCOW2 и помещает их в ваш домашний каталог – в подкаталог, названный по гипервизору и дистрибутиву, для которого они были созданы. В нашем примере это ubuntu-kvm. ‘cow’ в имени файла – сокращение от Copy On Write (копирование при записи). В этом формате основной образ используется в режиме только для чтения, а сохраняются лишь различия. Это сэкономит много места на диске, если вы создаете несколько ВМ, большая часть файловых систем у которых общая.
Параметры VMBuilder
Параметр | Назначение |
---|---|
--mem=MEM | Выделяет виртуальной машине MEM МБ памяти |
--rootsize=SIZE | Выделяет SIZE МБ корневому разделу |
--swapsize=SIZE | Выделяет SIZE МБ разделу подкачки |
--ip=ADDRESS | Устанавливает IP-адрес |
--addpkg=PKG | Устанавливает PKG на виртуальную машину |
--arch=ARCH | Задает архитектуру (AMD64 или i386) |
--hostname=NAME | Устанавливает имя хоста в NAME |
--mirror=URL | Загружает пакеты из репозитория по указанному URL |
--lang=LANG | Устанавливает локаль в LANG |
--user=USER | Имя пользователя initial user (по умолчанию Ubuntu) |
--pass=PASS | Пароль initial user (по умолчанию Ubuntu) |
--libvirt=URI | Регистрирует виртуальную машину в libvirt по заданному URI |
Шаг за шагом: создаем виртуальную установку Vista
- Выбираем источник
- При запуске мастера создания ВМ вас попросят выбрать источник установки. В данном случае это физический компакт-диск Vista.
- Создаем виртуальные разделы
- Если у вас есть ISO-образ, с которого можно произвести установку, так и скажите. В противном случае воспользуйтесь CD-ROM’ом основного компьютера. Виртуальный диск может быть одним из физических разделов основного компьютера или файлом-образом в его файловой системе.
- Выделяем ОЗУ
- Укажите начальный и максимальный объем оперативной памяти, выделяемой ВМ, еще раз просмотрите всю информацию и наслаждайтесь результатом – Windows Vista, работающей на виртуальной машин
Запуск виртуальной машины
Запустить виртуальную машину после установки можно разными способами. Низкоуровневый подход – вызвать KVM напрямую, просто передав ему образ файла виртуальной машины в качестве аргумента: Qemu/KVM.
$ sudo kvm /var/lib/libvirt/images/RHEL5.img
Эта простая команда запустит ВМ с настройками KVM по умолчанию; например, у нее будет только 128 МБ ОЗУ (а не 1000 МБ, которые мы запросили при ее создании) и не будет никаких сетевых настроек. Теоретически это можно исправить, передав KVM соответствующие параметры, но проще запустить ВМ с помощью virt-manager или virsh. Они читают XML-описание ВМ и затем вызывают KVM с подходящими настройками.
Запустить ВМ с помощью virt-manager нетрудно. В главном окне кликните правой кнопкой на нужной виртуальной машине и выберите пункт меню Run (Запустить).
Virsh
Потом есть virsh. Удивительно, что без нее мы продвинулись так далеко, потому что virsh – это швейцарский нож в управлении ВМ. По сути, это обертка libvirt и консольный эквивалент virt-manager. При помощи virsh я могу запустить свою ВМ RHEL 5 таким образом:
$ sudo virsh -c qemu:///system start RHEL5 Connecting to uri: qemu:///system Domain RHEL5 started
(Термин «домен» здесь просто означает «виртуальную машину». Он позаимствован из Xen, для которого libvirt изначально была написана.) Теперь можно просмотреть список запущенных ВМ:
$ sudo virsh -c qemu:///system list Connecting to uri: qemu:///system Id Name State ---------------------------------- 1 RHEL5 running
При подобном запуске ВМ VNC-клиент автоматически не стартует, и если нужно увидеть ее консоль, запустите вручную утилиту просмотра:
$ sudo virt-viewer RHEL5
С помощью virsh можно просмотреть XML-определение домена (мы убрали часть строк ради экономии места):
$ sudo virsh dumpxml RHEL5 Connecting to uri: qemu:///system <domain type=’kvm’ id=’1’> <name>RHEL5</name> <uuid>2cadb958-6533-f728-e86a-421ec96ecfd3</uuid> <memory>1024000</memory> <os> <type arch=’x86_64’ machine=’pc’>hvm</type> <boot dev=’hd’/> </os> <devices> <emulator>/usr/bin/kvm</emulator> <disk type=’file’ device=’disk’> <source file=’/var/lib/libvirt/images/RHEL5.img’/> <target dev=’hda’ bus=’ide’/> </disk> <disk type=’file’ device=’cdrom’> <target dev=’hdc’ bus=’ide’/> <readonly/> </disk> <interface type=’network’> <mac address=’54:52:00:66:7a:66’/> <source network=’default’/> <target dev=’vnet0’/> </interface> <input type=’mouse’ bus=’ps2’/> <graphics type=’vnc’ port=’5900’ autoport=’yes’ keymap=’en-us’/> </devices> </domain>
Файл /etc/libvirt/qemu/RHEL5.xml можно просмотреть и вручную. В нем подробно описана ВМ – ее название и UUID, объем выделенной памяти, необходимый для запуска эмулятор, расположение образа файловой системы, сеть, к которой она подключена, и многое другое. С помощью virsh также можно:
- Запускать, останавливать, приостанавливать и возобновлять ВМ.
- Переносить ВМ на другой компьютер.
- Создавать, удалять виртуальные сети, изменять их параметры и выводить их список.
- Управлять хранилищами образов ВМ.
Virsh принимает в общей сложности около 90 команд. Если вызвать ее без аргументов, Virsh запустится в режиме командного интерпретатора.
Поддержка сети
Виртуальные машины нужно подключать к виртуальным сетям. Libvirt позволяет создавать виртуальные мосты и объединять их в различные топологии. В установке по умолчанию libvirt создаст единственную сеть под названием ‘default’. Ее XML-определение можно просмотреть с помощью virsh:
$ sudo virsh net-dumpxml default Connecting to uri: qemu:///system <network> <name>default</name> <uuid>a77f2c3f-e951-26c0-4c7d-eb23ace76051</uuid> <forward mode=’nat’/> <bridge name=’virbr0’ stp=’on’ forwardDelay=’0’ /> <ip address=’192.168.122.1’ netmask=’255.255.255.0’> <dhcp> <range start=’192.168.122.2’ end=’192.168.122.254’ /> </dhcp> </ip> </network>
Его можно просмотреть и напрямую: это файл /var/lib/libvirt/network/default.xml. В этом файле определена сеть default, занимающая диапазон IP-адресов 192.168.122.0/24. У хост-компьютера будет виртуальный интерфейс, подключенный к этой сети, с адресом 192.168.122.1. Сервис dnsmasq слушает его и предоставляет DHCP и DNS в этой сети.
Другие утилиты
Другие средства управления виртуальными машинами включают:
- virt-viewer Графическое приложение, подключаемое к консоли локальной или удаленной ВМ.
- virt-clone Утилита командной строки для клонирования образов существующих ВМ.
- virt-image Утилита командной строки для создания ВМ по XML-описанию образа.
- virt-convert Утилита командной строки для преобразования ВМ из одного формата в другой.
- virt-top Утилита, отображающая использование ресурсов ВМ в стиле top.
Возможно, вы захотите попробовать JeOS – урезанную версию Ubuntu Server с ядром, оптимизированным для запуска в виртуализированном окружении.
Чтобы узнать больше…
Несколько хороших обзоров технологий виртуализации можно найти на сайтах:
- http://www.ibm.com/developerworks/ru/library/l-virt/index.html,
- http://www.vmware.com/pdf/virtualization.pdf
- http://virt.kernelnewbies.org.
Подробное руководство по VMBuilder можно прочесть на https://help.ubuntu.com/community/JeOSVMBuilder.
Libvirt описан на сайте http://libvirt.org.
Как всегда, прочтите man-страницы для таких команд, как virt-install, virsh, kvmqemu и VMBuilder.