Создание профиля KVM: различия между версиями
м (опечатки и пунктуация) |
мНет описания правки |
||
(не показано 5 промежуточных версий 4 участников) | |||
Строка 3: | Строка 3: | ||
== Профиль kvm == | == Профиль kvm == | ||
В этом документе описано создание профиля (bundle) для виртуальной машины под | В этом документе описано создание профиля (bundle) для виртуальной машины под управлением [http://www.linux-kvm.org/ KVM]. | ||
Профиль представляет из себя архив tar, содержащий следующие обязательные файлы: | Профиль представляет из себя архив tar, содержащий следующие обязательные файлы: | ||
* ''Манифест'' - файл, содержащий информацию обо всех файлах профиля, а также информацию, необходимую для последующей работы с профилем. | * ''Манифест'' - файл, содержащий информацию обо всех файлах профиля, а также информацию, необходимую для последующей работы с профилем. | ||
Строка 10: | Строка 10: | ||
В профиле также могут содержаться следующие необязательные файлы. | В профиле также могут содержаться следующие необязательные файлы. | ||
* ''Лицензия'' - некоторые производители могут захотеть добавить в профиль лицензию на использование созданного ими профиля. | * ''Лицензия'' - некоторые производители могут захотеть добавить в профиль лицензию на использование созданного ими профиля. | ||
== Создание профиля вручную == | == Создание профиля вручную == | ||
=== Требования к окружению === | |||
Для создания профиля kvm вам необходима машина с аппаратной поддержкой виртуализации, | Для создания профиля kvm вам необходима машина с аппаратной поддержкой виртуализации, | ||
на которой установлены kvm и qemu. Более подробную информацию о том, имеет ли ваша | на которой установлены kvm и qemu. Более подробную информацию о том, имеет ли ваша | ||
Строка 24: | Строка 24: | ||
Помните также, что поддержка виртуализации может быть выключена в BIOS. | Помните также, что поддержка виртуализации может быть выключена в BIOS. | ||
=== Формат манифеста для машин kvm === | |||
Манифест - это обычный текстовый файл с метаинформацией, необходимой для нормальной | Манифест - это обычный текстовый файл с метаинформацией, необходимой для нормальной | ||
установки и дальнейшей работы с контейнером. Манифест должен называться '''info''' | установки и дальнейшей работы с контейнером. Манифест должен называться '''info''' | ||
Строка 65: | Строка 65: | ||
image_bus=<ide|scsi> | image_bus=<ide|scsi> | ||
=== Создание образа виртуальной машины === | |||
1. Создайте пустой виртуальный диск для устанавливаемой операционной системы. Например, с помощью команды | 1. Создайте пустой виртуальный диск для устанавливаемой операционной системы. Например, с помощью команды | ||
Строка 73: | Строка 73: | ||
пространство, которое используется виртуальной машиной. | пространство, которое используется виртуальной машиной. | ||
'''Внимание!''' Если при установке дистрибутива виртуальная машина останавливается (QEMU [Stopped]), то | '''Внимание!''' Если при установке дистрибутива виртуальная машина останавливается (QEMU [Stopped]), то причиной этого может быть недостаток свободного места на диске или оперативной памяти. | ||
2. Установите дистрибутив в виртуальную машину. | 2. Установите дистрибутив в виртуальную машину. | ||
kvm -cdrom 'distro.iso' -drive file=mydisk.img,if=scsi,boot=on -m 512 -net nic -net tap,script=/etc/kvm/brext | kvm -cdrom 'distro.iso' -drive file=mydisk.img,if=scsi,boot=on -m 512 -net nic -net tap,script=/etc/kvm/brext -vnc <ip-address of host machine>:1 | ||
где | где | ||
Строка 85: | Строка 84: | ||
* '''-m 512''' — размер выделяемой оперативной памяти для виртуальной машины (в мегабайтах) | * '''-m 512''' — размер выделяемой оперативной памяти для виртуальной машины (в мегабайтах) | ||
* '''-net nic -net tap,script=/etc/kvm/brext''' — создание одного внешнего сетевого интерфейса | * '''-net nic -net tap,script=/etc/kvm/brext''' — создание одного внешнего сетевого интерфейса | ||
* '''-vnc <ip-address of host machine>:1''' — позволяет получить vnc-доступ к устанавливаемой системе | |||
Скрипт /etc/kvm/brext: | Скрипт /etc/kvm/brext: | ||
Строка 102: | Строка 101: | ||
имя файла, содержащего диск, виртуальный и реальный размеры диска, | имя файла, содержащего диск, виртуальный и реальный размеры диска, | ||
=== Добавление лицензии === | |||
Если вы хотите добавить в профиль лицензию, то вы должны добавить строку | Если вы хотите добавить в профиль лицензию, то вы должны добавить строку | ||
license=<файл> | license=<файл> | ||
в секцию main манифеста и запаковать указанный <файл> в профиль. | в секцию main манифеста и запаковать указанный <файл> в профиль. | ||
=== Упаковка bundle === | |||
Профиль должен иметь расширение <tt>.bun</tt>, а файлы, лежащие в bundle должны быть отсортированы | Профиль должен иметь расширение <tt>.bun</tt>, а файлы, лежащие в bundle должны быть отсортированы | ||
по размеру. Таким образом, если мы находимся в директории с исходными файлами, то bundle можно создать, | по размеру. Таким образом, если мы находимся в директории с исходными файлами, то bundle можно создать, | ||
например, с помощью команды | например, с помощью команды | ||
tar -cf <имя профиля>.bun $(ls -Sr) | tar -cf <имя профиля>.bun $(ls -Sr) | ||
Для того, чтобы с профилем можно было работать из alterator, его необходимо поместить в /srv/share/bundles. | |||
[[Категория:Платформа5]] | [[Категория:Платформа5]] | ||
[[Категория:Платформа5]] | [[Категория:Платформа5]] |
Текущая версия от 09:12, 14 марта 2011
Образ виртуальной машины KVM предназначен для переноса виртуальной машины на другой компьютер.
Профиль kvm
В этом документе описано создание профиля (bundle) для виртуальной машины под управлением KVM. Профиль представляет из себя архив tar, содержащий следующие обязательные файлы:
- Манифест - файл, содержащий информацию обо всех файлах профиля, а также информацию, необходимую для последующей работы с профилем.
- Образ диска - файл специального формата, представляющий диск, на который будет установлена виртуальная машина.
В профиле также могут содержаться следующие необязательные файлы.
- Лицензия - некоторые производители могут захотеть добавить в профиль лицензию на использование созданного ими профиля.
Создание профиля вручную
Требования к окружению
Для создания профиля kvm вам необходима машина с аппаратной поддержкой виртуализации, на которой установлены kvm и qemu. Более подробную информацию о том, имеет ли ваша машина аппаратную поддержку виртуализации, и о том, как установить kvm и qemu, вы можете найти здесь.
Пользователи Linux могут проверить наличие аппаратной поддержки виртуализации с помощью команды
egrep -q '^flags.*(vmx|svm)' /proc/cpuinfo && echo yes
Если команда в ответ сказала yes, то это значит, что виртуализация есть. Помните также, что поддержка виртуализации может быть выключена в BIOS.
Формат манифеста для машин kvm
Манифест - это обычный текстовый файл с метаинформацией, необходимой для нормальной установки и дальнейшей работы с контейнером. Манифест должен называться info и состоять из нескольких секций. Секция начинается с заголовка в квадратных скобках, например,
[main]
и, в свою очередь, состоит из строк вида
имя=значение
Манифест в профилях kvm состоит из двух секций - секции main и секции image. Далее описаны обязательные параметры, которые должны быть указаны в секции main. Секция image описыватся в другом разделе.
Первым делом нужно указать, что мы используем kvm, а также версию профиля
[main] hypervisor=kvm version=<Версия bundle>
Далее нужно указать название организации, создавшей профиль и тип операционной системы
vendor=<Организация, создавшая профиль> os=<Операционная система>
Архитектуру
arch=<архитектура>
Объем требуемой оперативной памяти (в МБ)
memory=<размер оперативной памяти>
Если в системе предполагается получать адрес сетевого интерфейса по DHCP, то нужно указать
ip=DHCP
Если же в системе сконфигурирован статический IP-аддресс, то нужно указать его:
ip=<IP адрес интерфейса>/<Маска подсети>
Если профиль поставляется с лицензией, то в манифест нужно добавить следующую строку:
license=<файл с лицензией> [image] image_path=<образ виртуальной машины> image_size=<размер образа> image_bus=<ide|scsi>
Создание образа виртуальной машины
1. Создайте пустой виртуальный диск для устанавливаемой операционной системы. Например, с помощью команды
qemu-img create -f qcow2 mydisk.img 40G
мы создали файл mydisk.img, в который мы будем устанавливать виртуальную машину. Для нее он будет выглядеть как диск размером в 40 гигабайт, но на самом деле, он будет занимать только то пространство, которое используется виртуальной машиной.
Внимание! Если при установке дистрибутива виртуальная машина останавливается (QEMU [Stopped]), то причиной этого может быть недостаток свободного места на диске или оперативной памяти.
2. Установите дистрибутив в виртуальную машину.
kvm -cdrom 'distro.iso' -drive file=mydisk.img,if=scsi,boot=on -m 512 -net nic -net tap,script=/etc/kvm/brext -vnc <ip-address of host machine>:1
где
- -cdrom 'distro.iso' — образ устанавливаемого дистрибутива
- -drive file=mydisk.img,if=scsi,boot=on — образ диска, созданного на этапе 1
- -m 512 — размер выделяемой оперативной памяти для виртуальной машины (в мегабайтах)
- -net nic -net tap,script=/etc/kvm/brext — создание одного внешнего сетевого интерфейса
- -vnc <ip-address of host machine>:1 — позволяет получить vnc-доступ к устанавливаемой системе
Скрипт /etc/kvm/brext:
#!/bin/sh switch=brext /sbin/ip link set up $1 /sbin/brctl addif ${switch} $1
При пустом диске загрузка будет произведена с CD-ROM. Если нужно установить с CD-ROM на уже готовую систему, Нажмите при запуске F12 и затем 3.
\infty. Добавьте в манифест секцию image, описывающую создаваемый виртуальный диск. В этой секции должно быть указано имя файла, содержащего диск, виртуальный и реальный размеры диска,
Добавление лицензии
Если вы хотите добавить в профиль лицензию, то вы должны добавить строку
license=<файл>
в секцию main манифеста и запаковать указанный <файл> в профиль.
Упаковка bundle
Профиль должен иметь расширение .bun, а файлы, лежащие в bundle должны быть отсортированы по размеру. Таким образом, если мы находимся в директории с исходными файлами, то bundle можно создать, например, с помощью команды
tar -cf <имя профиля>.bun $(ls -Sr)
Для того, чтобы с профилем можно было работать из alterator, его необходимо поместить в /srv/share/bundles.