Александр Горбач


программирование, админство

Настройка KVM под Ubuntu Server 10.04 LTS. Часть 6 – Прямая работа с KVM

без комментариев

Использование KWM напрямую

В основном этот мануал фокусируется на использование KVM через libvirt, однако так же возможно работать с KVM напрямую. Это не рекомендуется, так как довольно таки громоздко, но может быть иногда очень полезно.

KVM очень похож на на Qemu и он позволяет запускать машины из командной строки.

Основной синтаксис :

kvm -m 512 -hda disk.img -cdrom ubuntu.iso -boot d -smp 2
  • -m = память(in MB)
  • -hda = первый жесткий диск
    • Вы можете использовать различный форматы образов .img, .cow
    • Вы так же можете загрузиться и с жесткого диска.Будте осторожны с этой опцией,если вы не хотите загрузиться с хостового корневого раздела
      • Синтаксис -hda /dev/sda
      • Это вызовет ваше меню grub из вашей MBR когда вы запустите kvm.
  • -cdrom может быть iso образом или приводом CD/DVD.
  • -boot [a|c|d|n] загрузиться с дисковода (a), жесткого диска (c), CD-ROM (d), или сети (n)
  • -smp = количество процессоров
  • -alt-grab изменить комбинацию Ctrl-Alt захвата мыши на Ctrl-Alt-Shift ( очень полезно, если вы часто используете некоторые быстрые клавиши как Ctrl-Alt-Del или Windows-E)

Вообще, опций гораздо больше. Помощь доступна по команде:

kvm --help

Bridged Networking

Для того, чтобы запустить KVM используя сетевой мост от польователя, нам необходимо сделать некоторую конфигурацию.

1. Для начала сделайте вашу карту сетевым мостом, как описано в Настройка сети в KVM

2. Установите uml-utilities

sudo apt-get install uml-utilities

3. Установите себе разрешение на устройство tun. Используя любой редактор, отредактируйте edit /etc/udev/rules.d/40-permissions.rules, добавьте эти строки в конец файла:

KERNEL=="tun", GROUP="kvm", MODE="0660"

4. Перезагрузитесь (для того, чтобы поднялся ваш мост и устройства tun).

5. Отредактируйте /etc/kvm/kvm-ifup добавив sudo в начало команд ip и brctl

 #!/bin/sh

 switch=$(ip route ls | awk '/^default / { for(i=0;i

6. Нам нужен скрипт-обертка для запуска kvm. Я помещу этот скрипт в ~/bin и назову его kvm-bridge. Если ~/bin в вашей переменной path вы можете вызвать набрать команду в любом месте. Этот скрипт собран из множества источников

 #!/usr/bin/env bash
 # script to manage tap interface allocation
 # for linux kernels >= 2.6.18

 # modified by bodhi.zazen from :
 # http://calamari.reverse-dns.net:980/cgi-bin/moin.cgi/FrequentlyAskedQuestions#head-2511814cb92c14dbe1480089c04f83c281117a86
 # http://ubuntuforums.org/showthread.php?t=528046
 # http://www.howtoforge.com/using-kvm-on-ubuntu-gutsy-gibbon

 # set up a tap interface for qemu
 # USERID - uid qemu is being run under.
 USERID=`whoami`

 # generate a random mac address for the qemu nic
 # shell script borrowed from user pheldens @ qemu forum

 ranmac=$(echo -n DE:AD:BE:EF ; for i in `seq 1 2` ; \
 do echo -n `echo ":$RANDOM$RANDOM" | cut -n -c -3` ;done)

 # specify which NIC to use - see qemu.org for others
 # model=r8169
 # Set model based on this how-to
 # http://www.howtoforge.com/using-kvm-on-ubuntu-gutsy-gibbon

 model=rtl8139
 iface=`sudo tunctl -b -u $USERID`

 # start kvm with our parameters
 # echo "Bringing up interface $iface with mac address $ranmac"
 # nohup added to allow kvm to run independent of the terminal
 nohup kvm -net nic,vlan=0,macaddr=$ranmac -net tap,vlan=0,ifname=$iface $@

 # kvm has stopped - no longer using tap interface
 sudo tunctl -d $iface &> /dev/null

7. Установит бит запуска на ваш новый скрипт:

chmod 0755 ~/bin/kvm-bridge

8. Измените группу суперпользователей для того, чтобы разрешить членам группы kvm запускать скрипт-обертку kvm-bridge и создавать сетевые мосты без запуска KVM от root.

visudo

Добавьте эти строки в конец файла:

 # Allow members of the kvm group to configure a bridged virtual network interface
 %kvm ALL=(ALL) NOPASSWD: /sbin/ip, /usr/sbin/brctl, /usr/sbin/tunctl

9. Теперь запускайте kvm из командной строки. Вам не нужно прописывать сетевой интерфейс

 kvm-bridge -m 512 -hda disk.img -cdrom ubuntu.iso -boot -d -smp 2

iptables

Добавляем эти правила в iptables :

# allow incoming packets for kvm guest
IPTABLES -A FORWARD -d $IPADDR_FROM_GUEST_OS -j ACCEPT
# allow outgoing packets from kvm
IPTABLES -A FORWARD -s $IPADDR_FROM_GUEST_OS -j ACCEPT

Измените "$IPADDR_FROM_GUEST_OS" на реальный ip адрес гостевой kvm машины (Я рассчитываю, что вы сконфигурировали вашу гостевую машину на использование статического IP).

Автор Sash(k)a

Ноябрь 5th, 2011 at 11:47 дп

Опубликовано в Без рубрики

Тэги , , ,

Яндекс.Метрика