Введение
С гипервизором kvm лично мне приходилось мало работать. Еще в первое мое знакомство с гипервизорами, когда я выбирал, какой использовать в своей работе, kvm мне не понравился вообще по следующим причинам:
- Нет удобного инструмента для управления гипервизором под Windows. Для меня это критично, так как моя основная рабочая система ОС Windows.
- Не увидел готового образа, который бы позволил быстро и без лишних движений развернуть гипервизор на новом железе.
В итоге я остановился на Xen там, где нужно поставить систему на программный рейд mdadm, и Hyper-V в тех случаях, где рейд либо не нужен совсем, либо он аппаратный. В своей работе так или иначе приходится сталкиваться с различными системами, поэтому разбираться приходится во всем, в том числе и в kvm.
Есть 2 различных способа сделать бэкап виртуальной машины kvm:
- С остановкой или заморозкой системы на короткий промежуток времени.
- Без остановки системы вообще.
Для первого случая все относительно просто, каких-то нюансов нет. Во втором случае возникают нюансы и вопросы. Просто взять и сделать горячий бэкап виртуальной машины в kvm не получится. Вопрос рассмотрения архивных копий виртуальных машин нужно начинать с выбора типа жесткого диска, который будет использоваться. В зависимости от этого будет разная стратегия бэкапа. С этого мы и начнем.
Сразу хочу пояснить, что не имею большого опыта в работе с kvm и возможно что-то делаю неправильно. Данная статья мой опыт самостоятельного поиска решения и закрепление его для себя и всех, кому это будет интересным.
Файлы Virt[править]
(Для резервного копирования-восстановления)
Файлы Libvirt хранятся в следующих директориях:
- /var/lib/libvirt
- /etc/libvirt
Виртуализация
Cloud-init • Docker • Kubernetes • LXC • LXD • Libvirt (Qemu+KVM+Virt-manager) • OpenNebula • OpenNebula/Создание образа • OpenVZ • • OpenVZ7 • Openstack • PVE • Участник:Petr-akhlamov/VirtualboxLAN • Puppet/Запуск puppetry (пример с libvirt) • Qemu-user-binfmt misc • Starterkits • Starterkits/openstack • Starterkits/p7 • Starterkits/p8 • VDI • VDI/OpenUDS • VirtualBox • VirtualBox/Quick • Vmware • • Запуск VMware-Player • Контейнеры systemd-nspawn • Настройка сети в KVM • Установка VMware-Workstation
Добавление памяти
To change the memory allocation in a VM, dump the xml as above, then edit your xml to have:
<domain type='kvm'> ... <memory>262144</memory> <currentMemory>262144</currentMemory> ... </domain>
Now define the VM as above. Keep in mind that the memory allocation is in kilobytes, so to allocate 512MB of memory, use 512 * 1024, or 524288.
Изменение модели сетевой карты
kvm and qemu currently default to using the rtl8139 NIC. Supported NICs in Ubuntu 8.04 LTS are i82551, i82557b, i82559er, ne2k_pci, pcnet, rtl8139, e1000, and virtio. To use an alternate NIC, dump the xml as above, then edit your xml to have:
<domain type='kvm'> ... <interface type='network'> ... <model type='e1000'/> </interface> ... </domain>
Now define the VM as above.
Virtual Machine Manager
The virt-manager package contains a graphical utility to manage local and remote virtual machines. To install virt-manager enter:
Since virt-manager requires a Graphical User Interface (GUI) environment it is recommended to be installed on a workstation or test machine instead of a production server. To connect to the local libvirt service enter:
You can connect to the libvirt service running on another host by entering the following in a terminal prompt:
virt-manager guest lifecycle
When using it is always important to know the context you look at.
The main window initially lists only the currently defined guests, you’ll see their name, state and a small chart on cpu usage.
On that context there isn’t much one can do except start/stop a guest.
But by double-clicking on a guest or by clicking the open button at the top one can see the guest itself. For a running guest that includes the guests main-console/virtual-screen output.
If you are deeper in the guest config a click in the top left onto “show the graphical console” will get you back to this output.
virt-manager guest modification
provides a gui assisted way to edit guest definitions which can be handy.
To do so the per-guest context view will at the top have “show virtual hardware details”.
Here a user can edit the virtual hardware of the guest which will under the cover alter the guest representation.
The UI edit is limited to the features known and supported to that GUI feature. Not only does libvirt grow features faster than virt-manager can keep up — adding every feature would also overload the UI to the extend to be unusable. To strike a balance between the two there also is the XML view which can be reached via the “edit libvirt XML” button.
By default this will be read-only and you can see what the UI driven actions have changed, but one can allow RW access in this view in the preferences.
This is the same content that the of the libvirt-client exposes.
Создание гостевой ОС Windows 10
На главной панели инструментов нажмём кнопку Создать виртуальную машину или выберем одноимённый пункт из меню Файл.
В появившемся окне мастера на первом шаге выберем пункт Локальный ISO или cdrom.
Мастер создания виртуальной машины
На втором шаге мастера нажмём кнопку Обзор, выберем из списка загруженный ранее ISO образ и нажмём Выбор тома.
Оставляем флажок в чекбоксе Automatically detect from installation media/source, чтобы Virt Manager самостоятельно подобрал оптимальные параметры для виртуальной машины и жмём Вперёд.
Установка гостевой ОС из ISO образа
Указываем выделяемый виртуальной машине объём оперативной памяти и количество ядер процессора.
Выбор ресурсов CPU и GPU
Теперь создадим локальный дисковый образ для гостевой ОС.
Выбор пространства данных для VM
Установим флажок в чекбокс Настроить пространство хранения данных, а также точку около пункта Выбрать или создать дополнительное пространство данных и нажмём кнопку Настроить.
Создание нового тома внутри пула
В левой панели переключимся на пул images, затем нажмём кнопку Создать том.
Создание нового тома
Создадим новый том для гостевой ОС:
- название — любое, но без пробелов и русских букв;
- формат — qcow2;
- максимальный размер — не менее 40 ГБ.
Выбор созданного тома хранения данных
Выберем созданный том в списке и нажмём кнопку Выбор тома.
На заключительном шаге мастера будет предложено указать название для виртуальной машины (пробелы и русские буквы также не допускаются).
Финальный шаг мастера создания VM
Обязательно установим флажок в Проверить конфигурацию перед установкой и нажмём Готово.
Шаг 1: настраиваем ядро
Проверьте, что у вас свежая версия ядра. Похоже, что опции для GVT-g были включены и до версии 4.8, но тогда они точно работали хуже, поэтому я рекомендую использовать последнее доступное ядро. Если вы достаточно оригинальны, чтобы собирать своё ядро, включите . Также отключите удаление неиспользуемых ksyms, поскольку эта опция вызывает баг.
Теперь нужно поправить аргументы командной строки ядра. Важные опции таковы:
Убедитесь, что вы не переопределили чем-то, что включит загрузку GuC, поскольку это приведёт к удручающему крашу драйвера i915. Когда загрузитесь, зайдите в своё рабочее окружение и проверьте наличие директории . Если её не существует, GVT-g не работает. Проверьте логи и/или поплачьте в подушку.
Как вариант решения проблемы можно добавить модули в initramfs и удалить оттуда i915.
Для более подробного логирования, можно задать переменной какое-нибудь значение, например, установка её в значение 0x02 включит сообщения от драйверов.
Создание виртуальной машины с помощью Virt-manager.
Необходимо создать подключение к гипервизору QEMU/KVM.
Предварительная настройка создания виртуальной машины.
В данном примере для установки Win10 в качестве гостевой ОС используется базовая конфигурация. Далее будет проделана дополнительная настройка виртуальной машины, чтобы осуществить проброс видеокарты, успешно установить драйвер и обойти нелепые искусственные ограничения Nvidia («ошибка 43» и BSOD из-за отключенного MSI).
Официальный установочный образ Win10 в формате ISO:
Образ будет использоваться для установки с использованием эмуляции CD-ROM.
Файл / Создать виртуальную машину
В методе установки выбрать «Локальный ISO или CDROM»:
Шаг 2.
Выбрать ранее загруженный установочный образ:
В этом же шаге выбрать тип устанавливаемой ОС
Это важно для подтягивания мета-информации, в зависимости от которой предоставляются те или иные настройки в Virt-manager и libvirt. Для отображения полного списка отметить «Include end of life operating systems»:
Шаг 3.
Указать количество ОЗУ и потоков для виртуальной машины.
В данном примере для гостевой ОС будет выделено 16384 Мб из 32768 Мб ОЗУ и 8 из 12 потоков процессора.
Не смотря на то, что с настройками по умолчанию виртуальная машина использует выделенные ресурсы не изолированно, то есть хост не теряет возможность их использовать, очень желательно оставить достаточное количество ресурсов для функционирования ОС хоста, чтобы избежать эффекта конкуренции за ресурсы, который может привести к возникновению заиканий.
Шаг 4.
Необходимо указать образ виртуального накопителя, в который будет установлена гостевая (виртуализируемая) ОС.
В libvirt используются специальные хранилища данных, что делает задачу несколько нетривиальной. Ознакомиться можно здесь: https://libvirt.org/storage.html
В примере создаётся хранилище данных с названием pool и типом «Каталог в файловой системе»; в строке Target Path указывается путь до каталога в файловой системе хоста, в котором по итогу расположится хранилище данных.
При выборе места для хранилища стоит учитывать достаточное количество свободного места на физическом накопителе. Для Win10 желательно от 60 Гб.
Хранилище создано. Теперь необходимо создать сам образ виртуального накопителя, в который будет установлена Win10.
Формат: raw. Оптимален для Windows-гостей.
Объём: 60 Гб
Подтвердить создание.
Созданный виртуальный накопитель появится в списке томов. Останется выбрать его.
На этом четвёртый шаг заканчивается.
Шаг 5.
Отметить пункт «Проверить конфигурацию перед установкой»:
Это позволит перейти к непосредственной настройке виртуальной машины.
DNS and DHCP Guests
libvirt uses dnsmasq to hand out IP addresses to guests that are configured to use dhcp. If on your host machine you add 192.168.122.1 (the default IP of your host in libvirt) as your first nameserver in /etc/resolv.conf, then you can do name resolution for your guests. dnsmasq is smart enough to use the other ‘nameserver’ entries in your /etc/resolv.conf for resolving non-libvirt addresses. For example, if your current /etc/resolv.conf is:
search example.com nameserver 10.0.0.1
Change this to be:
search example.com nameserver 192.168.122.1 nameserver 10.0.0.1
Now, if you have a virtual machine named ‘hardy-amd64’, after starting it, you can do:
$ host hardy-amd64 hardy-amd64 has address <IP address given by dnsmasq>
Note that when using ssh you may need to use a trailing ‘.’ after the hostname:
$ ssh hardy-amd64.
Finally, for this to work, your guest must send its hostname as part of the dhcp request. This is done automatically on many operating systems. For systems that do not send this automatically and use dhcp3, you can adjust the dhclient.conf file. For example, on Ubuntu 6.06 LTS (Dapper), adjust /etc/dhcp3/dhclient.conf to have:
send host-name "<your guest hostname here>";
IMPORTANT: Depending on your network configuration, your host’s /etc/resolv.conf file might be periodically overwritten. You can edit /etc/resolvconf/resolv.conf.d/head instead to prevent this. If that is not an option you will have to either adjust the dhcp server on your network to hand out the additional libvirt name server for your libvirt hosts, or adjust each host machine accordingly. As there are many possible configurations for host machines, users are encouraged to look at resolvconf and/or man interfaces.
Private Virtual Switch (Guest-Only Network)
If you want to create a virtual network for use only by the Guests and the host then you must proceed as follows (bellow user$ is the CLI prompt for the user with access to KVM and root# is the CLI prompt for the root user)
Create a bridge device to be used by this network (in the example bellow I’m assigning the IP 10.3.11.254 to the Host):
user$ sudo su root# cat << __EOF__ >> /etc/network/interfaces #----------------------- auto privatebr0 iface privatebr0 inet static address 10.3.11.254 netmask 255.255.255.0 pre-up brctl addbr privatebr0 post-down brctl delbr privatebr0 __EOF__ root# /etc/init.d/networking restart
Use virsh to create the private network:
user$ virsh net-list --all # check existing KVM networks Name State Autostart ----------------------------------------- default active yes user$ echo '<network> <name>privatenet</name> <bridge name="privatebr0" /> </network>' >> /tmp/net.xml user$ virsh net-define /tmp/net.xml Network privatenet defined from /tmp/net.xml user$ virsh net-list --all Name State Autostart ----------------------------------------- default active yes privatenet inactive no user$ virsh net-start privatenet Network privatenet started user$ virsh net-list --all Name State Autostart ----------------------------------------- default active yes privatenet active no user$ virsh net-autostart privatenet Network privatenet marked as autostarted user$ virsh net-list --all Name State Autostart ----------------------------------------- default active yes privatenet active yes
Now you can add a virtual network device to any of you Guests, select «privatenet» as its source device and this guest will be connected to the virtual switch.
Booting Over the Network Using PXE
The Ubuntu releases prior to Karmic (9.10) did not ship pxe binary ROM images. Install kvm-pxe package (from universe) in order to use kvm boot order=nc. Visit http://etherboot.org to learn more about network booting and downloading/creating the appropriate ROM images.
KVM and QEMU can emulate a number of network cards. ROM Files included in kvm-pxe are:
‘KVM Name’ nic,model= |
‘Etherboot Identification’ |
‘Etherboot Filename’ |
‘KVM filename’ |
e1000 |
((e1000:e1000-0x1026 — )) |
gpxe-0.9.3-e1000-0x1026.rom |
pxe-e1000.bin |
ne2k_pci (default) |
ns8390:rtl8029 — |
gpxe-0.9.3-rtl8029.rom |
pxe-ne2k_pci.bin |
pcnet |
pxe-pcnet.bin |
||
rtl8139 |
pxe-rtl8139.bin |
||
virtio |
pxe-virtio.bin |
Other ROM files include:
‘KVM Name’ nic,model= |
‘Etherboot Identification’ |
‘Etherboot Filename’ |
‘KVM filename’ |
i82551 |
pxe-i82551.bin |
||
i82557b |
pxe-i82557b.bin |
||
i82559er |
pxe-i82559er.bin |
||
ne2k_isa |
pxe-ne2k_isa.bin |
||
smc91c111 |
pxe-smc91c111.bin |
||
lance |
pxe-lance.bin |
||
mcf_fec |
pxe-mcf_fec.bin |
Copy the respective file to /usr/share/kvm and/or /usr/share/qemu.
Подготовка
Самый первый шаг — настройка параметров ядра. Обязательна поддержка и , желательна поддержка туннельных интерфейсов и сетевого моста. Полный список на .
Подготовьте дисковое пространство. Я выделил 70 GiB, и Windows 8.1 за пару месяцев использовала почти 50 GiB так, что для обновления до 10-й версии места на диске не хватило.
Далее, нам понадобится набор редхатовских драйверов . Если у вас установлен RedHat, достаточно запустить
и образ iso будет записан в каталог . Также можно его скачать с репозитариев Fedora.Убедитесь, что поддержка аппаратной виртуализация включена в BIOS/UEFI. Без этого не будет активирован, а выдаст вот такую ошибку.
В качестве проверки можно прочитать файл устройства.
Если файл не обнаружен, а опции ядра выставлены верно, значит дело в настройках .
Устанавливаем нужные пакеты.
Для RedHat 7 достаточно установить только , так как устанавливается по умолчанию.
Дебианщикам надо установить пакет .
Можно теперь переходить к установке.
Как увеличить разрешение экрана VirtualBox в Linux
1. Дополнения гостевой ОС
Первое решение, которое придет в голову — это установить дополнения гостевой ОС VirtualBox, тогда виртуальная машина будет автоматически подхватывать размер окна и в зависимости от него менять разрешение экрана операционной системы. Этот вариант сработает, если только эта проблема не возникла на LiveCD. Для полного запуска дополнений гостевой ОС нужна перезагрузка, а перезагрузка для LiveCD — это обнуление состояния.
Для установки дополнений гостевой ОС можно использовать образ в виртуальной машины, но в Ubuntu лучше выполнить установку из репозиториев:
Пакеты находятся в ветке репозитория universe, поэтому если он еще не подключен, придется подключить в утилите Программы и обновления. Этот способ сработает для уже установленной системы. Настройка разрешения VirtualBox будет выполняться автоматически.
Подробнее про дополнения гостевой ОС можно прочитать в этой статье. Дополнения дают много преимуществ, это не только автоматически подстраиваемое расширение экрана, но и общий буфер обмена, а также обмен файлами и общие папки.
2. Настройка расширения по умолчанию
Если эта виртуальная машина еще не была запущена, вы можете попробовать изменить настройки VirtualBox таким образом, чтобы машина выбрала наилучшее разрешение экрана, для этого выполните:
Также вы можете попытаться установить точное разрешение для вашей виртуальной машины, если она еще не запущена:
3. Настройка расширения в системе
Если у вас есть доступ к графическому интерфейсу системы, вы можете поменять разрешение экрана в настройках системы. Для этого откройте настройки из главного меню, затем перейдите в раздел Настройки экрана, и выберите нужное разрешение:
Осталось нажать кнопку Применить, для того чтобы эти настройки были применены.
4. Настройка расширения с помощью xrandr
Есть еще один способ — с помощью утилиты xrandr. Чаще всего он применяется для LiveCD. Эта утилита позволяет менять настройки экрана, и в том числе разрешение. Для того чтобы посмотреть доступные варианты выполните:
Здесь в самом верху окна терминала, под строчкой Screen: 0 отображается название дисплея, к которому можно применять настройки. В данном случае, это Virtual1. Теперь вы просто можете выбрать нужное разрешение просто передав имя дисплея и имя расширения в команду. Например:
Этот способ должен сработать в большинстве случаев. И после этого разрешение экрана Virtualbox Ubuntu станет пригодным к работе. Если нужного разрешения нет в списке, его необходимо добавить. Подробнее об этом рассказано в статье про управление разрешением экрана Linux. Теперь вы знаете как изменить разрешение виртуального экрана VirtualBox в Linux.
5. Настройка расширения с помощью Grub
Если система использует для загрузки Grub, можно настроить разрешение загружаемой системы с помощью него. Если меню Grub не появляется, но вы знаете что используется именно этот загрузчик, то зажмите перед загрузкой правый Shift. В меню Grub надо отредактировать секцию загрузки. Для этого установите на неё курсор и нажмите клавишу E. В открывшемся тексте найдите строчку, начинающуюся со слов set gfxpayload и замените её значение на нужное разрешение, например:
Для того чтобы продолжить загрузку системы с новым разрешением, нажмите сочетание клавиш Ctrl+X. Если это не LiveCD, а обычная система, то вы можете настроить выбор разрешения при каждой загрузке. Для этого откройте файл /etc/default/grub и пропишите нужное значение в параметре GRUB_GFXPAYLOAD_LINUX:
Затем обновите конфигурацию grub:
6. Настройка разрешения параметром ядра
Если для загрузки ядра используется не Grub, то разрешение экрана можно поменять с помощью параметра ядра. С Grub этот метод может не сработать потому что считается устаревшим в пользу метода описанного выше. Многие LiveCD дистрибутивы позволяют редактировать параметры ядра перед загрузкой с помощью клавиши Tab, нажмите её и добавьте параметр vga=ask:
Для начала загрузки нажмите Enter. Программа попросит вас нажать Enter ещё раз для того чтобы отобразить доступные разрешения:
Выберите разрешение, например, 305 и нажмите Enter. Вот так выполняется настройка разрешения экрана VirtualBox с помощью параметров ядра.
Создаем виртуальные машины с KVM
Переходим к созданию виртуальных машин, для этого в панели Cockpit переходим к пункту “Virtual Machines”, далее нажимаем на кнопку “Create VM”:
В открывшимся окне в поле “Name” вводим название операционной системы, или же название самой виртуальной машины. Далее, в поле “Installation Source” необходимо указать путь к ISO образу дистрибутива, это можно сделать вручную, либо, нажать на галочку в данном пункте в правой стороне поля:
Теперь давайте установим “virt-manager”, о котором писалось выше. Он позволит вам управлять виртуальными машинами KVM. Для его установки вводим команду:
После установки вы найдете virt-manager в установленных программах, он будет называться “Менеджер виртуальных машин”. После его запуска в окне программы увидите ваши виртуальные машины:
Возможно, вам так же необходимо будет добавить вашего пользователя в группу “libvirt” и “kvm”, у меня такой необходимости не было, но, на всякий пожарный как говорится…Для этого вводим команды:
Базовые команды управления ВМ
1. Получить список созданных машин:
virsh list —all
2. Включить / перезагрузить / выключить.
а) включить виртуальную машину можно командой:
virsh start FirstTest
* где FirstTest — имя созданной машины.
б) перезагрузить:
virsh reboot FirstTest
* посылает команду операционной системе на корректную перезагрузку.
в) выключить корректно:
virsh shutdown FirstTest
* посылает команду операционной системе на корректное выключение.
г) выключить принудительно:
virsh destroy FirstTest
* грубо выключает ВМ. Может привести к потере данных. Способ стоит применять при полном зависании виртуалки.
д) приостановить:
virsh suspend FirstTest
Для возобновления работы вводим команду:
virsh resume FirstTest
е) отправить команду всем гостевым операционным системам:
for i in $(virsh list —name —state-shutoff); do virsh start $i; done
for i in $(virsh list —name —state-running); do virsh shutdown $i; done
* первыя команда запустит все ВМ, вторая — отправит команду на выключение.
3. Разрешаем автостарт для созданной ВМ:
virsh autostart FirstTest
4. Удаление виртуальной машины:
Удаляем виртуальную машину:
virsh undefine FirstTest
Удаляем виртуальный жесткий диск:
\rm /kvm/images/FirstTest-disk1.img
* где /kvm/images — папка, где хранится диск; FirstTest-disk1.img — имя виртуальног диска для удаленной машины.
5. Редактирование конфигурации виртуальной машины:
Открыть редактор для изменения конфигурации:
virsh edit FirstTest
Также можно менять параметры из командной строки. Приведем несколько примеров для работы с виртуальной машиной FirstTest.
а) изменить количество процессоров:
virsh setvcpus FirstTest 2 —config —maximum
virsh setvcpus FirstTest 2 —config
б) изменить объем оперативной памяти:
virsh setmaxmem FirstTest 2G —config
virsh setmem FirstTest 2G —config
6. Работа со снапшотами
а) Создать снимок виртуальной машины можно командой:
virsh snapshot-create-as —domain FirstTest —name FirstTest_snapshot_2020-03-21
* где FirstTest — название виртуальной машины; FirstTest_snapshot_2020-03-21 — название для снапшота.
б) Список снапшотов можно посмотреть командой:
virsh snapshot-list —domain FirstTest
* данной командой мы просмотрим список всех снапшотов для виртуальной машины FirstTest.
в) Для применения снапшота, сначала мы должны остановить виртуальную машину. Для этого можно либо выполнить выключение в операционной системе или ввести команду:
virsh shutdown FirstTest
После вводим:
virsh snapshot-revert —domain FirstTest —snapshotname FirstTest_snapshot_2020-03-21 —running
* где FirstTest — имя виртуальной машины; FirstTest_snapshot_2020-03-21 — имя созданного снапшота.
г) Удалить снапшот можно так:
virsh snapshot-delete —domain FirstTest —snapshotname FirstTest_snapshot_2020-03-21
7. Клонирование виртуальных машин
Для примера, склонируем виртуальную машину FirstTest и создадим новую SecondTest.
Для начала, мы должны остановить виртуалку:
virsh suspend FirstTest
После можно клонировать:
virt-clone —original FirstTest —name SecondTest —file /kvm/images/SecondTest-disk1.img
* итого, мы склонируем виртуальную машину FirstTest. Новая машина будет иметь название SecondTest, а путь до диска будет /kvm/images/SecondTest-disk1.img.
Восстанавливаем работу FirstTest:
virsh resume FirstTest
Creating a network bridge on the host
You can set up your system to boot with a bridge. This works well, but does disable network manager so may not be best for desktops. You can also create a bridge on demand. This allows network manager to stay, but you have to remember to start the bridge before starting the VMs which use it. (Autostarted VMs can not use this)
Creating a bridge on demand
-
You can do this from the command line or a script. Details are covers on the Network Connection Bridge page.
-
You can use Network Manger to set up your bridge. This is covered in a website at ask.xmodulo.com/configure-linux-bridge-network-manager-ubuntu.html.
Creating a persistent bridge
Install the bridge-utils package:
sudo apt-get install bridge-utils
We are going to change the network configuration. This assumes you are not using NetworkManager to control your network cards (eth0 in the example’s case). If you are using NetworkManager, and want to continue to do so, do not use this method. Modifying /etc/network/interfaces will disable Network Manager on the next reboot.
If you are on a remote connection, and so cannot stop networking, go ahead with the following commands, and use sudo invoke-rc.d networking restart or sudo reboot at the end. If you make a mistake, though, it won’t come back up.
To set up a bridge interface, edit /etc/network/interfaces and either comment or replace the existing config with (replace with the values for your network):
auto lo iface lo inet loopback auto br0 iface br0 inet static address 192.168.0.10 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 gateway 192.168.0.1 dns-nameservers 192.168.0.5 8.8.8.8 dns-search example.com bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0
Note: the lines auto eth0 and iface eth0 inet manual are not in the file. This is because br0 will bring up the components assigned to it.
bridge_stp off is a setting for spanning tree. If you have a possibility for network looks, you may want to turn this on.
bridge_fd 0 turns off all forwarding delay. If you do not know what this is, you probably do not need it.
bridge_maxwait 0 is how long the system will wait for the Ethernet ports to come up. Zero is no wait.
For DHCP, use;
auto lo iface lo inet loopback auto br0 iface br0 inet dhcp bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0
This will create a virtual interface br0. You can have multiple bridges, and some need not have any actual network card assigned.
Now restart networking:
sudo /etc/init.d/networking restart
Or
sudo reboot
If your VM host «freezes» for a few seconds after starting or stopping a KVM guest when using bridged networking, it is because a Linux bridge will take the hardware address of the lowest numbered interface out of all of the connected interface. To work around this, add the following to your bridge configuration:
post-up ip link set br0 address f4:6d:04:08:f1:5f
and replace f4:6d:04:08:f1:5f with the hardware address of a physical ethernet adapter which will always be part of the bridge.
Подключение к ВМ на KVM через VNC, установка ОС
Чтобы подключиться к виртуальной машине через VNC, нам нужно узнать порт, на котором она работает:
# virsh vncdisplay test-centos
1 | root@local vz# virsh vncdisplay test-centos |
IP:0
1 | IP |
означает, что порт для подключения по VNC 5900, если у вас будет другой результат, просто прибавляйте к 5900 цифру, которую выдаст вам команда.
Для подключения по VNC к серверам, я использую утилиту TightVNC. Запустите ее и укажите IP-адрес сервера и VNC порт, который мы узнали ранее (через двойное двоеточие).
Нажмите “Connect”, в открывшемся окне укажите пароль, который задали при создании ВМ. Если все сделали верно, у вас откроется консоль сервера, на которой запущена установка CentOS (или другой ОС, образ которой вы смонтировали).
Если у вас на сервере установлен файервол, откройте сетевые порты для VNC 5900-5910 в firewalld/iptables, этого количества должно хватить. После установки гостевой ОС на виртуальную машину, запустите ВМ с консоли сервера:
Чтобы выключить виртуальную машину KVM, используйте команду:
# virsh shutdown test-centos
1 | # virsh shutdown test-centos |
Чтобы вывести список всех зарегистрированных виртуальных машин KVM:
# virsh list —all
1 | # virsh list —all |
Если вы предпочитаете графической управление, можете испольховат графическую консоль KVM — virt-manager.
На этом базовая настройка сервера для KVM и создание виртуальной машины окончено. На KVM можно создать неограниченное количество виртуальных машин, все зависит от ресурсов вашего сервера и ваших потребностей.