Меню Рубрики

Установка debian под kvm

  • ru
  • KVM

?Discussion

Введение

KVM — это технология полной виртуализации для Linux на x86 (включая 64-bit) оборудование, содержащее расширения виртуализации (Intel VT или AMD-V). Сам KVM состоит из загружаемого модуля ядра, kvm.ko, который обеспечивает базовую инфраструктуру виртуализации и специфичный для процессора модуль, kvm-intel.ko или kvm-amd.ko.

В Debian, Xen и VirtualBox являются альтернативами KVM.

Установка

Установим пакеты qemu-kvm с помощью команды apt-get или aptitude, например, будем использовать следующую команду:

Демон libvirt-bin будет запускаться автоматически во время загрузки и загружать соответствующие kvm модули, kvm-amd или kvm-intel, которые поставляются вместе с Linux ядром пакета Debian. Если вы намерены создавать виртуальные машины из командной строки, то установите virtinst.

Для того, чтобы иметь возможность управлять виртуальными машинами (ВМ) от обычного пользователя, вы должны добавить этого пользователя в группы kvm и libvirt:

You should then be able to list your domains:

libvirt defaults to qemu:///session for non-root. So from you’ll need to do:

You can use LIBVIRT_DEFAULT_URI to change this.

Создание гостевой ВМ

Самый простой способ для создания и управления гостевыми ВМ это использовать графическое приложение Virtual Machine Manager virt-manager.

Также, вы можете создать гостевую ВМ в командной строке. Ниже приведен пример для создания гостевой ВМ Debian Squeeze с именем squeeze-amd64:

Since the guest has no network connection yet, you will need to use the GUI virt-viewer to complete the install.

You can avo >—location option. To obtain text console for the installation you can also prov >—extra-args «console=ttyS0»:

Для полностью автоматизированной установке смотрите preseed или debootstrap.

Setting up br >

Between VM guests

By default, QEMU uses macvtap in VEPA mode to prov >

Between VM host and guests

To let communications between VM host and VM guests, you may setup a macvlan br >

Between VM host, guests and the world

In order to let communications between host, guests and outs >

For example, you may modify network configuration file /etc/network/interfaces for setup ethernet interface eth0 to a br >

Managing VMs from the command-line

You can then use the virsh(1) command to start and stop virtual machines. VMs can be generated using virtinst. For more details see the libvirt page. Virtual machines can also be controlled using the kvm command in a similar fashion to QEMU. Below are some frequently used commands:

Start a configured VM guest «VMGUEST»:

Notify the VM guest «VMGUEST» to graceful shutdown:

Force the VM guest «VMGUEST» to shutdown in case it is hanged, i.e. graceful shutdown not work:

Managing VM guests with a GUI

On the other hand, if you want to use a graphical UI to manage the VMs, you can use the Virtual Machine Manager virt-manager.

Automatic guest management on host shutdown/startup

Guest behavior on host shutdown/startup is configured in /etc/default/libvirt-guests.

This file specifies whether guests should be shutdown or suspended, if they should be restarted on host startup, etc.

First parameter defines where to find running guests. For instance:

Performance Tuning

Below are some options which can improve performance of VM guests.

    Assign virtual CPU core to dedicated physical CPU core

      Edit the VM guest configuration, assume the VM guest name is «VMGUEST» having 4 virtual CPU core

    Add below codes after the line » where vcpu are the virtual cpu core > In general, the higher half physical CPU core are the hyperthreading cores which cannot prov > A general rule of thumb to set cpuset is:

  • For the first vcpu, assign a lower half cpuset number. For example, if the system has 4 core 8 thread, the val >
  • For the second and the every second vcpu, assign its higher half cpuset number. For example, if you assigned the first cpuset to 0, then the second cpuset should be set to 4.

    For the third vcpu and above, you may need to determine which physical cpu core share the memory cache more to the first vcpu as described here and assign it to the cpuset number to increase the memory cache hit rate.

Disk I/O

Disk I/O is usually the bottleneck of performance due to its characteristics. Unlike CPU and RAM, VM host may not allocate a dedicated storage hardware for a VM. Worse, disk is the slowest component between them. There is two types of disk bottleneck, throughput and access time. A modern harddisk can perform 100MB/s throughput which is sufficient for most of the systems. While a modern harddisk can only prov >

For VM Host, you can benchmark different disk I/O parameters to get the best tps for your disk. Below is an example of disk tuning and benchmarking using fio:

For Windows VM guests, you may wish to switch between the slow but cross-platform Windows built-in >

  • Native driver for Windows VM guests
    • Create new VM guest with below configuration:
      • >
      • >
    • Start VM guest and install the Windows OS as usual
    • Shutdown VM guest
    • Reconfigure VM guest with below configuration:
      • Add a dummy VirtIO / VirtIO SCSI storage with 100MB size, e.g. DUMMY.qcow2

        Attach VirtIO driver CD ISO to the >

    • Restart VM guest
    • Install the VirtIO driver from the >
    • Shutdown VM guest
    • Reconfigure VM guest with below configuration:
      • Remove >
      • Remove VirtIO storage for dummy storage, you can delete DUMMY.qcow2
      • Remove >
      • Add a new VirtIO / VirtIO SCSI storage and attach WINDOWS.qcow2 to it
    • Restart the VM guest
  • Native driver for Linux VM guests
    • Select VirtIO / VirtIO SCSI storage for the storage containers
    • Restart the VM guest
  • VirtIO / VirtIO SCSI storage
    • VirtIO SCSI storage prov >
  • Disk Cache
    • Select «None» for disk cache mode
  • Block dataplane
    • Edit the VM guest configuration, assume the VM guest name is «VMGUEST»

      Before the last line » «, add «qemu:commandline» section:

Network I/O

Using virt-manager:

    Native driver for Windows VM guests

      Select VirtIO for the network adapter

    Attach VirtIO driver CD ISO to the >

  • Restart the VM guest, Windows found a new network adapter hardware, install the VirtIO driver from the >
  • Native driver for Linux VM guests
    • Select VirtIO for the network adapter
    • Restart the VM guest
  • Memory

      Huge Page Memory support

        Calculate the huge page counts required. Each huge page is 2MB size, as a result we can use below formula for the calculation. e.g. 4 VM guests, each VM guest using 1024MB, then huge page counts = 4 x 1024 / 2 = 2048. Note that the system may be hang if the acquired memory is more than that of the system available.

      Configure ?HugePages memory support by using below command. Since Huge memory might not be allocated if it is too fragmented, it is better to append the code to /etc/rc.local

    • Reboot the system to enable huge page memory support. Verify huge page memory support by below command.
    • Edit the VM guest configuration, assume the VM guest name is «VMGUEST»

      Add below codes after the line «

    • Start the VM guest «VMGUEST» and verify it is using huge page memory by below command.

    Миграция гостя на хост Debian

    Миграция гостя из RHEL/CentOS 5.x

    Есть несколько вещей, которые нужно модифицировать в гостевых конфигурационных файлах XML (/etc/libvirt/qemu/*.xml):

    Переменная Machine в секции должна быть pc, а не rhel5.4.0 или похожие.

    Переменная Emulator должна указывать на /usr/bin/kvm, а не /usr/libexec/qemu-kvm.

    Иными словами, соответствующие разделы должны выглядеть примерно так:

    Если у вас был настроен сетевой мост на хосте CentOS, то обратитесь к данной статье Wiki, в которой описано, как настроить его в Debian.

    Диагностика

    Не работает сетевой мост

    virt-manager использует виртульную сеть для гостевых машин, по умолччанию это маршрут в 192.168.122.0/24 и вы можете посмотреть его набрав ip route как root.

    Если этого маршрута нет в таблице маршрутизации ядра, то гостевые машины не смогут подключтся к сети и вы не сможете завершить создание гостевых машин.

    Это очень легко исправить, откройте virt-manager и пройдите на вкладку «Edit» -> «Host details» -> «Virtual networks». Оттуда вы сможете создать виртуальную сеть для имеющихся машин или изменить значение по умолчанию. Обычно это проблема появляется тогда, когда сеть по умолчанию не запущена.

    Чтобы решить эту проблему вы можете удалить virbr0, запустив:

    Откройте virt-manager и пройдите на вкладку «Edit» -> «Host details» -> «Virtual networks» запустите сеть по умолчанию.

    Во можете проверить сетевой статус (netstatus).

    При необходимости, можно использовать сетевой мост Br >

    Смотри также

    Внешние ссылки

    Статьи хоть и старые, но более или менее дают представление, что это и как с этим работать:

    источник

    Настройка KVM на Ubuntu Server

    Инструкция написана на примере Linux Ubuntu Server 18.04.3 LTS. Она подойдет для большинства дистрибутивов на основе Debian.

    Проверка поддержки гипервизора

    Проверяем, что сервер поддерживает технологии виртуализации:

    cat /proc/cpuinfo | egrep «(vmx|svm)»

    В ответ должны получить что-то наподобие:

    flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 popcnt aes lahf_lm epb tpr_shadow vnmi flexpriority ept vpid dtherm ida arat

    В противном случае, заходим в БИОС, находим опцию для включения технологии виртуализации (имеет разные названия, например, Intel Virtualization Technology или Virtualization) и включаем ее — задаем значение Enable.

    Также проверить совместимость можно командой:

    * если команда вернет ошибку «kvm-ok command not found», установите соответствующий пакет: apt-get install cpu-checker.

    INFO: /dev/kvm exists
    KVM acceleration can be used

    значит поддержка со стороны аппаратной части есть.

    Подготовка сервера

    Для нашего удобства, создадим каталог, в котором будем хранить данные для KVM:

    * будет создано два каталога: /kvm/vhdd (для виртуальных жестких дисков) и /kvm/iso (для iso-образов).

    \cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

    * данная команда задает зону в соответствии с московским временем.

    * выполняем синхронизацию с сервером времени.

    Установка и запуск

    Устанавливаем KVM и необходимые утилиты управления.

    apt-get install qemu-kvm libvirt-bin virtinst libosinfo-bin

    apt-get install qemu-kvm libvirt-daemon-system libvirt-bin virtinst libosinfo-bin

    * где qemu-kvm — гипервизор; libvirt-bin — библиотека управления гипервизором; virtinst — утилита управления виртуальными машинами; libosinfo-bin — утилита для просмотра списка вариантов операционных систем, которые могут быть в качестве гостевых.

    Настроим автоматический запуск сервиса:

    systemctl enable libvirtd

    Настройка сети

    Виртуальные машины могут работать за NAT (в качестве которого выступает сервер KVM) или получать IP-адреса из локальной сети — для этого необходимо настроить сетевой мост. Мы настроим последний.

    Используя удаленное подключение, внимательно проверяйте настройки. В случае ошибки соединение будет прервано.

    apt-get install bridge-utils

    а) настройка сети в старых версиях Ubuntu (/etc/network/interfaces).

    Открываем конфигурационный файл для настройки сетевых интерфейсов:

    #iface eth0 inet static
    # address 192.168.1.24
    # netmask 255.255.255.0
    # gateway 192.168.1.1
    # dns-nameservers 192.168.1.1 192.168.1.2

    auto br0
    iface br0 inet static
    address 192.168.1.24
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 192.168.1.1 192.168.1.2
    bridge_ports eth0
    bridge_fd 9
    bridge_hello 2
    bridge_maxage 12
    bridge_stp off

    * где все, что закомментировано — старые настройки моей сети; br0 — название интерфейса создаваемого моста; eth0 — существующий сетевой интерфейс, через который будет работать мост.

    Перезапускаем службу сети:

    systemctl restart networking

    б) настройка сети в новых версиях Ubuntu (netplan).

    * в зависимости от версии системы, конфигурационной файл yaml может иметь другое название.

    network:
    version: 2
    renderer: networkd
    ethernets:
    eth0:
    dhcp4: false
    dhcp6: false
    wakeonlan: true

    bridges:
    br0:
    macaddress: 2c:6d:45:c3:55:a7
    interfaces:
    — eth0
    addresses:
    — 192.168.1.24/24
    gateway4: 192.168.1.1
    mtu: 1500
    nameservers:
    addresses:
    — 192.168.1.1
    — 192.168.1.2
    parameters:
    stp: true
    forward-delay: 4
    dhcp4: false
    dhcp6: false

    * в данном примере мы создаем виртуальный бридж-интерфейс br0; в качестве физического интерфейса используем eth0.

    Применяем сетевые настройки:

    Настаиваем перенаправления сетевого трафика (чтобы виртуальные машины с сетевым интерфейсом NAT могли выходить в интернет):

    sysctl -p /etc/sysctl.d/99-sysctl.conf

    Создание виртуальной машины

    Для создания первой виртуальной машины вводим следующую команду:

    virt-install -n VM1 \
    —autostart \
    —noautoconsole \
    —network=bridge:br0 \
    —ram 2048 —arch=x86_64 \
    —vcpus=2 —cpu host —check-cpu \
    —disk path=/kvm/vhdd/VM1-disk1.img,size=16 \
    —cdrom /kvm/iso/ubuntu-18.04.3-server-amd64.iso \
    —graphics vnc,listen=0.0.0.0,password=vnc_password \
    —os-type linux —os-variant=ubuntu18.04 —boot cdrom,hd,menu=on

    • VM1 — имя создаваемой машины;
    • autostart — разрешить виртуальной машине автоматически запускаться вместе с сервером KVM;
    • noautoconsole — не подключается к консоли виртуальной машины;
    • network — тип сети. В данном примере мы создаем виртуальную машину с интерфейсом типа «сетевой мост». Для создания внутреннего интерфейса с типом NAT вводим —network=network:default,model=virtio;
    • ram — объем оперативной памяти;
    • vcpus — количество виртуальных процессоров;
    • disk — виртуальный диск: path — путь до диска; size — его объем;
    • cdrom — виртуальный привод с образом системы;
    • graphics — параметры подключения к виртуальной машины с помощью графической консоли (в данном примере используем vnc); listen — на какой адресе принимает запросы vnc (в нашем примере на всех); password — пароль для подключения при помощи vnc;
    • os-variant — гостевая операционная система (весь список мы получали командой osinfo-query os, в данном примере устанавливаем Ubuntu 18.04).

    Подключение к виртуальной машине

    На компьютер, с которого планируем работать с виртуальными машинами, скачиваем VNC-клиент, например, TightVNC и устанавливаем его.

    команда покажет, на каком порту работает VNC для машины VM1. У меня было:

    * :1 значит, что нужно к 5900 прибавить 1 — 5900 + 1 = 5901.

    Запускаем TightVNC Viewer, который мы установили и вводим данные для подключения:

    Кликаем по Connect. На запрос пароля вводим тот, что указали при создании ВМ, (vnc_password). Мы подключимся к виртуальной машине удаленной консолью.

    Если мы не помним пароль, открываем настройку виртуальной машины командой:

    * в данном примере для доступа к виртуальной машине используется пароль 12345678.

    Управление виртуальной машиной из командной строки

    Примеры команд, которые могут пригодиться при работе с виртуальными машинами.

    1. Получить список созданных машин:

    2. Включить виртуальную машину:

    * где VMname — имя созданной машины.

    3. Выключить виртуальную машину:

    4. Включить автозапуск виртуальной машины:

    5. Редактирование конфигурации виртуальной машины:

    6. Работа с сетевыми интерфейсами.

    Добавить обычный сетевой интерфейс (default или NAT) виртуальной машине:

    virsh attach-interface —domain VMname —type network —source default —model virtio —config —live

    Добавить интерфейс типа bridge:

    virsh attach-interface —domain VMname —type bridge —source br0 —model rtl8139 —config —live

    Удалить сетевой интерфейс:

    virsh detach-interface VMname —type bridge —mac 52:54:00:2e:a9:4d

    * где bridge — тип сетевого интерфейса (также может быть network); 52:54:00:2e:a9:4d — MAC-адрес сетевого адаптера (узнать данный адрес можно в конфигурации виртуальной машины или в самой гостевой операционной системы).

    7. Посмотреть IP-адреса, выданные виртуальным машинам автоматически:

    virsh net-dhcp-leases default

    * где default — виртуальная сеть, создаваемая по умолчанию при установке KVM.

    Дополнительные средства управления

    Virt-Manager

    Virt-manager — графическая консоль для управления виртуальными машинами. С ее помощью можно создавать последние, модифицировать их, запускать, останавливать, подключаться консолью.

    Установить на Linux Ubuntu:

    apt-get install virt-manager

    ubuntu-vm-builder

    ubuntu-vm-builder — пакет, разработанный компанией Canonical для упрощения создания новых виртуальных машин.

    источник

    Qemu-KVM: работа в Debian

    Данная статья — это обобщение информации, накопленной за время использования гипервизора Qemu-KVM. Я хочу поделиться теми знаниями опытом, которыми обладаю на данный момент. Надеюсь, что моя статья пойдет на пользу тем, кто только собирается использовать гипервизор Qemu-KVM или уже использует. И еще: статья не для новичков linux (элементарные вещи здесь рассматриваться не будут).

    Про данную систему виртуализации в сети написано много. Но когда действительно начинаешь с ней работать — сталкиваешься с нехваткой информации и практических примеров применения. Итак приступим.

    Входящая задача. Был выделен компьютер как тестовая станция – для проверки работоспособности резервных копий баз данных, устанавливаемого программного обеспечения, сборки msi пакетов и прочих весьма разнообразных задач. Конфигурация компьютера:

    • процессор Atlon X2 245
    • оперативная память 4 гигабайта
    • жесткий диск 500 гигабайт
    • материнская плата ASUS M4N68T-M LE.

    После непродолжительного раздумья было принято решение использовать компьютер как платформу для работы с виртуальными машинами. Процессор аппаратную виртуализацию поддерживал. В связи с этим было принято решение установить еще 1 жесткий диск. Порывшись в «закромах родины» был найден диск на 80 гигабайт. Его добавили к конфигурации.

    С компьютером разобрались. Теперь на очереди гипервизор. Хотелось работать с такой платформой, которую потом можно использовать в корпоративной среде. Поэтому virtualbox, microsoft virtual pc, vmware workstations не подходили. Встал следующий вопрос — какую систему выбрать:

    1. Microsoft hyper-v не подходит — платная. Компания, в которой я работаю использует только лицензионное программное обеспечение. Следовательно никто не выделит для моих целей лицензию на сервер.
    2. VMWARE ESXi не знает контролера SATA, расположенного на материнской плате (поскольку разрабатывалась для серверных систем).
    3. Qemu-kvm — свободно разрабатываемый гипервизор, поддерживает аппаратную виртуализацию. Его можно установить в любой современный дистрибутив Linux. Это по мне, его и берем.

    Выбор дистрибутива Linux. Стандартно я использую Debian. Вы можете выбрать любой понравившийся вам дистрибутив (ubuntu, Fedora, Opensuse, Archlinux). Гипервизор qemu-kvm есть в любом из выше перечисленных дистрибутивов, а гугл пестрит статьями о том, как его поставить.

    Переходим к делу. Установку операционной среды описывать я не буду. Оговорюсь лишь, что во время установки операционной среды жесткий диск большего размера не трогал. Его время еще придет. Как установить гипервизор на Debian очень хорошо описано здесь. Лично я ставлю qemu-kvm libvirt-bin.

    Гипервизор поставили, теперь немного о внутренней структуре. Есть два каталога, в которые стоит заглянуть:
    /etc/libvirt/ — здесь в основном хранятся конфигурационные файлы
    /var/lib/libvirt/ — здесь будут хранится образы жестких дисков, мгновенные снимки системы и многое другое.
    Наш гипервизор установлен.

    Теперь немного о настройках. Qemu-kvm не работает напрямую с сетевой картой на физическом компьютере. Следовательно нужно настроить мост. Что делаем: открываем файл /etc/network/interfaces и приводим его к следующему виду:
    # This file describes the network interfaces available on your system
    # and how to activate them. For more information, see interfaces(5).
    # The loopback network interface
    auto lo br0
    iface lo inet loopback
    # Set up interfaces manually, avoiding conflicts with, e.g., network manager
    iface eth0 inet manual
    # Bridge setup
    iface br0 inet static
    bridge_ports eth0
    address ххх.ххх.ххх.ххх
    broadcast ххх.ххх.ххх.ххх
    netmask ххх.ххх.ххх.ххх
    gateway ххх.ххх.ххх.ххх
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

    Больше информации здесь.

    Далее сохраняем файл и перезагружаем компьютер.
    О, чудо! Гипервизор установлен!
    Дальше возникает вопрос: как управлять сервером? Управлять Qemu-kvm можно двумя программами: virt-manager и virtinst.

    Virt-manager.
    Эта программа рассчитана на графический интерфейс. Она поддерживает как удаленное управление виртуальными машинами, так и локальное. Но у нее есть огромный минус — аналогов для windows попросту нет.
    Как лично я вышел из положения. Установил графическую оболочку LXDE и сервер xrdp, благодаря такому нехитрому набору программ мне не пришлось физически ходить к компьютеру (больно много ему чести). Я просто подключался через стандартный RDP клиент который, есть в windows. Но это дополнительная трата ресурсов компьютера.
    Если вы установили virt-manager, он автоматически создает:
    хранилище для образов виртуальных машин по пути /var/lib/libvirt/images
    виртуальный сетевой интерфейс default.
    Следовательно подмонтировать жесткий диск с большим объемом нужно в директорию /var/lib/libvirt/images.

    Virtinst.
    Это консольная утилита. Никакой графики, сплошная командная строка и экономия системных ресурсов.
    Если вы решили воспользоваться консольным управлением, то вам придется в вручную создать хранилище образов виртуальных машин. Делается это следующим образом. По ssh подключаемся к серверу. Заходим под пользователем root.
    Место для хранилища можно выбрать любое:

    1. можно подмонтировать жесткий диск в директорию и указать его в качестве хранилища
    2. можно просто устройство выбрать хранилищем.

    Меня больше привлек вариант с директорией (проще копировать диски виртуальных машин). Следовательно что я сделал: отформатировал диск 500 гигабайт в формат ext4 (когда доделают btrfs, то лучше пользоваться ней). Создал директорию /etc/libvirt/images и смонтировал его туда. Не забудьте дописать в fstab строчку для автоматического монтирования. После чего в консоли набираем vitsh и жмем Enter. Выглядит это так:
    root@kvm:/home/firsachi# virsh
    Welcome to virsh, the virtualization interactive terminal.
    Type: ‘help’ for help with commands
    ‘quit’ to quit

    virsh #

    Теперь если дать команду help — видим список команд оболочки. Нас интересует, есть ли готовые хранилища. Для этого вводим команду pool-list —all
    virsh # pool-list —all
    — Name State Autostart

    Если ввести просто pool-list, то вам будут показаны только активные хранилища, а нужно видеть их все.
    Создаем пул
    virsh # pool-define-as storage dir —target /etc/libvirt/images/

    Говорим, что пул запускается автоматически
    virsh # pool-autostart storage

    Стартуем пул
    virsh # pool-start storage

    Теперь проверяем
    virsh # pool-list –all

    Вывод должен быть такой
    virsh # pool-list —all
    Name State Autostart
    — storage active yes

    Немного о командах рекомендую прочитать тут.

    Если не создавать хранилище для образов дисков виртуальных машин, то для того, чтобы диски лежали в одном месте, нужно будет указывать полный путь к образу при его создании(много писать), а так образ создастся в указанном пуле или если он у вас единственный, то его имя указывать не обязательно. Конфигурационный файл пула будет лежать в директории /etc/libvirt/storage/ это .xml файлик. Выходим из virsh введя команду exit.

    В принципе наш гипервизор установился и его можно использовать. Но есть еще маленькая мелочь, о которой хотелось бы упомянуть. А именно о том, как работает Qemu-kvm.

    Запущенная на нем виртуальная машина шлет команды физическому процессору напрямую через загружаемый модуль (kvm-amd или kvm-intel). Это должен быть один из модулей, который соответствует производителю процессора (Intel или AMD).

    Этот модуль подгружается во время старта системы. Однако это не мой метод. Я пересобираю ядро системы для того, чтобы встроить нужный модуль (в виде опции при пересборке) непосредственно в ядро.
    Но это не единственная модернизация, которую я провожу. Кроме этого я делаю следующее:

    • отключаю поддержку звука (это сервер, а не рабочая станция);
    • не использую протокол IPv6 (в моей сети он не используется);
    • отключаю поддержку сетевых карт wifi, wmax и все что сними связанно.

    Не люблю когда лишние функции обременяют ядро лишней нагрузкой.

    В сборке собственного ядра мне помогли вот эти статьи первая и вторая.

    Забегу немного вперед. Многие люди в интернете жаловались на то, что модель сетевой карты virtio некорректно работает. Этому есть объяснение, и достаточно простое. Драйвера для этого устройства находятся в стадии экспериментальных. Зато virtio storage работают отлично.

    Теперь начинаем работать с виртуальными машинами. Создаем нашу первую виртуальную машину:
    virt-install —connect qemu:///system \
    —name comp1 \
    —ram 512 \
    —vcpus=1 \
    —disk pool=storage,cache=none,size=20, format= qcow2\
    —disk /home/firsachi/Winxp.iso,device=cdrom \
    —br > —os-type=windows
    —os-variant=winxp \
    —graphics vnc,port=5901,listen=0.0.0.0

    Некоторые детали хочу пояснить:
    pool=storage указываем пул, в котором нужно создать диск;
    cache=none это означает, что отключено кэширование записи на диск. В моем случае это образ img. При включенном кэшировании записи вдвое увеличивается время обращения к диску виртуальной машины;
    size=20 размер диска в гигабайтах;
    format= qcow2 это формат образа диска. Как я понял, только он поддерживает снимки системы;
    model=e1000 модель сетевой гигабитной карты Intel (по умолчанию идет стомегабитный rtl8139);
    port=5901 порт, на который можно обратиться с помощью Ultra VNC Viewer;
    listen=0.0.0.0 разрешение подключиться со всех IP (по умолчанию слушает только localhost).
    Установку можно произвести непосредственно и на устройство. Выглядеть будет так:
    virt-install —connect qemu:///system \
    —name comp1 \
    —ram 512 \
    —vcpus=1 \
    —disk /dev/sdb, format= qcow2\
    —disk /home/firsachi/Winxp.iso,device=cdrom \
    —br > —os-type=windows
    —os-variant=winxp \
    —graphics vnc,port=5901,listen=0.0.0.0

    Где sdb должен быть заменен на ваше устройство.

    Если все прошло успешно, то для подключения к консоли нашей виртуальной машины нужно установить Ultra VNC Viewer к себе на компьютер. В подключении нужно указать IP адрес сервера и порт, или доменное имя сервера и порт.
    Как происходит установка Windows, надеюсь, знают все.

    Теперь о драйверах виртуальных машин. Для установки драйверов нужны следующие образы дисков: virtio-win-0.1-30.iso и viostor-0.1-30-floppy.img
    Последний диск не обязателен, он нужен только в том случае, если вы собираетесь установить windows xp или windows 2003 server на virtio storage (кстати, если так сделать, то операционная система работает быстрее).

    Здесь написано как подключить и отключить cdrom.
    Есть еще один бонус: к виртуальной машине можно подключить внешние устройства (например физический жесткий диск или usb накопитель). Заходим в virsh. Команда будет выглядеть так:
    virsh # attach-disk comp1 /dev/sdc vdv —type disk
    Где:

    • comp1 – имя виртуального компьютера, к которому подключаем диск.
    • /dev/sdc – путь к устройству на физическом компьютере.
    • Vdv — куда подключаем на виртуальной машине.
    • —type – тип диска.

    Отключить диск:
    virsh # deatach-disk comp1 vdv

    Во многом поможет и вот эта статья. Рекомендую также заглядывать вот сюда.

    Где я применяю этот гипервизор? У меня на нем постоянно работает контролер домена. Причем работает стабильно, без сбоев. Авторизация в домене происходит без проблем. Параллельно могу запустить максимум 2 виртуальные машины.
    Восстановление виртуальной машины на другом сервере.
    Одним солнечным и безоблачным днем я подумал: а что будет, если придется переносить его на другой сервер. Режим миграции виртуальной машины в гипервизоре есть, но его негде проверить — нет такого второго компьютера.
    Поэтому пришлось исходить из самого худшего варианта. Предположим:

    • компьютер, на котором работала виртуальная машина, сгорел (процессор Atlon X2 245).
    • раз в неделю виртуальная машина выключается и делается резервная копия файла конфигурации и образа диска.

    Следовательно мои действия на этот случай. Для эксперимента я принес из дому свой ноутбук. На нем стоит процессор i5-3210M, linux дистрибутив OpenSuse (для моего ноутбука больше совместим с «железом»).

    Установил на нем Qemu-KVM, переместил на него файл конфигурации виртуальной машины и образ диска. В файле конфигурации отредактировал путь к диску виртуальной машины, перезагрузил ноутбук. И, о чудо! Гипервизор не только увидел мою виртуальную машину, но и запустил ее.

    Создание снимков виртуальных машин.
    Qemu-KVM поддерживает создание снимков виртуальных машин. Приведу самый простой пример. От суперпользователя заходим в virsh и выполняем следующую команду:
    virsh # snapshot-create-as name
    name — это имя виртуальной машины.
    После того, как снимок виртуальной машины будет сделан, резервные копии файлов конфигураций будут лежать в директории /var/lib/libvirt/qemu/snapshot/. Но вот где лежат данные диска виртуальной машины — мне пока не известно.

    Просмотреть снимки можно следующей командой:
    virsh # snapshot-list name
    Name Creation Time State
    — 1360593244 2013-02-11 16:34:04 +0200 running
    1360594479 2013-02-11 16:54:39 +0200 running

    Восстановить из фотографии можно так:
    virsh # snapshot-revert name 1360593244

    Удалить не нужный снимок можно так:
    virsh # snapshot-delete name 1360593244

    Вот так теперь и живем: гипервизор Qemu-KVM, виртуальный контролер домена, и довольный проделанной работой я.
    Спасибо всем, кто дочитал до конца. Надеюсь, мои мысли оказались полезными.

    источник

    Читайте также:  Установка запуска по температуре старлайн a93