Создание профиля KVM

Материал из ALT Linux Wiki

(Различия между версиями)
Перейти к: навигация, поиск
(Формат манифеста для машин kvm)
м
 
(15 промежуточных версий не показаны.)
Строка 3: Строка 3:
== Профиль kvm ==
== Профиль kvm ==
-
В этом документе описано создание профиля (bundle) для виртуальной машины под управленим [http://www.linux-kvm.org/ KVM].
+
В этом документе описано создание профиля (bundle) для виртуальной машины под управлением [http://www.linux-kvm.org/ KVM].
Профиль представляет из себя архив tar, содержащий следующие обязательные файлы:
Профиль представляет из себя архив tar, содержащий следующие обязательные файлы:
* ''Манифест'' - файл, содержащий информацию обо всех файлах профиля, а также информацию, необходимую для последующей работы с профилем.
* ''Манифест'' - файл, содержащий информацию обо всех файлах профиля, а также информацию, необходимую для последующей работы с профилем.
Строка 10: Строка 10:
В профиле также могут содержаться следующие необязательные файлы.
В профиле также могут содержаться следующие необязательные файлы.
* ''Лицензия'' - некоторые производители могут захотеть добавить в профиль лицензию на использование созданного ими профиля.
* ''Лицензия'' - некоторые производители могут захотеть добавить в профиль лицензию на использование созданного ими профиля.
-
+
 
== Создание профиля вручную ==
== Создание профиля вручную ==
-
==== Требования к окружению ====
+
=== Требования к окружению ===
Для создания профиля kvm вам необходима машина с аппаратной поддержкой виртуализации,
Для создания профиля kvm вам необходима машина с аппаратной поддержкой виртуализации,
-
на которой установлены kvm и qemu. Более подробную информацию о том имеет ли ваша
+
на которой установлены kvm и qemu. Более подробную информацию о том, имеет ли ваша
-
машина аппаратную поддержку виртуальзации и о том как установить kvm и qemu, вы можете
+
машина аппаратную поддержку виртуализации, и о том, как установить kvm и qemu, вы можете
найти [http://www.linux-kvm.org/page/Documents здесь].
найти [http://www.linux-kvm.org/page/Documents здесь].
Строка 24: Строка 24:
Помните также, что поддержка виртуализации может быть выключена в BIOS.
Помните также, что поддержка виртуализации может быть выключена в BIOS.
-
==== Формат манифеста для машин kvm ====
+
=== Формат манифеста для машин kvm ===
-
Манифест - это файл с метаинформацией, необходимой для нормальной
+
Манифест - это обычный текстовый файл с метаинформацией, необходимой для нормальной
-
установки и дальнейшей работы с контейнером. Манифест должен называться info
+
установки и дальнейшей работы с контейнером. Манифест должен называться '''info'''
и состоять из нескольких секций. Секция начинается с заголовка в квадратных скобках,
и состоять из нескольких секций. Секция начинается с заголовка в квадратных скобках,
например,
например,
Строка 35: Строка 35:
Манифест в профилях kvm состоит из двух секций - секции main и секции image.
Манифест в профилях kvm состоит из двух секций - секции main и секции image.
Далее описаны обязательные параметры, которые должны быть указаны в секции main.
Далее описаны обязательные параметры, которые должны быть указаны в секции main.
-
Секция image описыватся [[#Создание образа виртуальной машины|далее]].
+
Секция image описыватся [[#Создание образа виртуальной машины|в другом разделе]].
 +
Первым делом нужно указать, что мы используем kvm, а также версию профиля
  [main]
  [main]
  hypervisor=kvm
  hypervisor=kvm
 +
version=<Версия bundle>
 +
 +
Далее нужно указать название организации, создавшей профиль и тип операционной системы
 +
vendor=<Организация, создавшая профиль>
  os=<Операционная система>
  os=<Операционная система>
-
vendor=<Организация, создавшая профиль>
+
 
-
version=<Версия bundle>
+
Архитектуру
  arch=<архитектура>
  arch=<архитектура>
-
ip=DHCP
+
 
 +
Объем требуемой оперативной памяти (в МБ)
  memory=<размер оперативной памяти>
  memory=<размер оперативной памяти>
 +
 +
Если в системе предполагается получать адрес сетевого интерфейса по DHCP, то нужно указать
 +
ip=DHCP
 +
Если же в системе сконфигурирован статический IP-аддресс, то нужно указать его:
 +
ip=<IP адрес интерфейса>/<Маска подсети>
 +
 +
Если профиль поставляется с лицензией, то в манифест нужно добавить следующую строку:
  license=<файл с лицензией>
  license=<файл с лицензией>
   
   
Строка 50: Строка 63:
  image_path=<образ виртуальной машины>
  image_path=<образ виртуальной машины>
  image_size=<размер образа>
  image_size=<размер образа>
-
  image_compression=lzma ''только если образ был сжат с использованием lzma''
+
  image_bus=<ide|scsi>
-
==== Создание образа виртуальной машины ====
+
=== Создание образа виртуальной машины ===
-
1. Создайте пустой виртуальный диск для устанавливаемой операционной системы
+
1. Создайте пустой виртуальный диск для устанавливаемой операционной системы. Например, с помощью команды
 +
qemu-img create -f qcow2 mydisk.img 40G
 +
мы создали файл {{path|mydisk.img}}, в который мы будем устанавливать виртуальную машину.
 +
Для нее он будет выглядеть как диск размером в 40 гигабайт, но на самом деле, он будет занимать только то
 +
пространство, которое используется виртуальной машиной.
-
qemu-img create -f qcow2 mydisk.img 10G
+
'''Внимание!''' Если при установке дистрибутива виртуальная машина останавливается (QEMU [Stopped]), то причиной этого может быть недостаток свободного места на диске или оперативной памяти.
-
Формат образа ''qcow'' позволяет занимать образом только то пространство на реальной файловой системе, которое занято внутри виртуальной машины. 10G (10 ГБ) — максимальный размер образа.
+
2. Установите дистрибутив в виртуальную машину.
-
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
-
 
+
-
  kvm -cdrom 'distro.iso' -drive file=mydisk.img,if=scsi,boot=on -m 512 -net nic,vlan=0 -net tap,vlan=0,script=/etc/kvm/brext
+
где
где
Строка 68: Строка 83:
* '''-drive file=mydisk.img,if=scsi,boot=on''' — образ диска, созданного на этапе 1
* '''-drive file=mydisk.img,if=scsi,boot=on''' — образ диска, созданного на этапе 1
* '''-m 512''' — размер выделяемой оперативной памяти для виртуальной машины (в мегабайтах)
* '''-m 512''' — размер выделяемой оперативной памяти для виртуальной машины (в мегабайтах)
-
* '''-net nic,vlan=0 -net tap,vlan=0,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:
Строка 78: Строка 93:
/sbin/brctl addif ${switch} $1</pre>
/sbin/brctl addif ${switch} $1</pre>
-
При пустом диске загрузка будет произведена с CD-ROM. Если нужно установить с CD-ROM на уже готовую систему, Нажмите при запуске F12 и затем 3.
+
При пустом диске загрузка будет произведена с CD-ROM.
 +
Если нужно установить с CD-ROM на уже готовую систему,
 +
Нажмите при запуске F12 и затем 3.
-
==== Добавление лицензии ====
+
\infty. Добавьте в [[#Формат манифеста для машин kvm|манифест]] секцию image,
 +
описывающую создаваемый виртуальный диск. В этой секции должно быть указано
 +
имя файла, содержащего диск, виртуальный и реальный размеры диска,
 +
 
 +
=== Добавление лицензии ===
Если вы хотите добавить в профиль лицензию, то вы должны добавить строку
Если вы хотите добавить в профиль лицензию, то вы должны добавить строку
  license=<файл>
  license=<файл>
в секцию main манифеста и запаковать указанный <файл> в профиль.
в секцию main манифеста и запаковать указанный <файл> в профиль.
-
==== Упаковка bundle ====
+
=== Упаковка 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]]
-
 
-
== Создание профиля вручную ==
 
-
 
-
1. Создайте пустой виртуальный диск для устанавливаемой операционной системы
 
-
 
-
qemu-img create -f qcow2 mydisk.img 10G
 
-
 
-
Формат образа ''qcow'' позволяет занимать образом только то пространство на реальной файловой системе, которое занято внутри виртуальной машины. 10G (10 ГБ) — максимальный размер образа.
 
-
 
-
2. Установите дистрибутив в виртуальную машину
 
-
 
-
kvm -cdrom 'distro.iso' -drive file=mydisk.img,if=scsi,boot=on -m 512 -net nic,vlan=0 -net tap,vlan=0,script=/etc/kvm/brext
 
-
 
-
где
 
-
* '''-cdrom 'distro.iso' ''' — образ устанавливаемого дистрибутива
 
-
* '''-drive file=mydisk.img,if=scsi,boot=on''' — образ диска, созданного на этапе 1
 
-
* '''-m 512''' — размер выделяемой оперативной памяти для виртуальной машины (в мегабайтах)
 
-
* '''-net nic,vlan=0 -net tap,vlan=0,script=/etc/kvm/brext''' — создание одного внешнего сетевого интерфейса
 
-
 
-
 
-
Скрипт /etc/kvm/brext:
 
-
<pre>#!/bin/sh
 
-
 
-
switch=brext
 
-
/sbin/ip link set up $1
 
-
/sbin/brctl addif ${switch} $1</pre>
 
-
 
-
 
-
При пустом диске загрузка будет произведена с CD-ROM. Если нужно установить с CD-ROM на уже готовую систему, Нажмите при запуске F12 и затем 3.
 
-
 
[[Категория:Платформа5]]
[[Категория:Платформа5]]

Текущая версия на 06: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.

 
Личные инструменты