Создание профиля KVM: различия между версиями

Материал из ALT Linux Wiki
мНет описания правки
 
(не показано 16 промежуточных версий 7 участников)
Строка 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=<архитектура>
Объем требуемой оперативной памяти (в МБ)
memory=<размер оперативной памяти>
Если в системе предполагается получать адрес сетевого интерфейса по DHCP, то нужно указать
  ip=DHCP
  ip=DHCP
  memory=<размер оперативной памяти>
Если же в системе сконфигурирован статический 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]]

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