Различия
Показаны различия между двумя версиями страницы.
— | wiki:articles:kvm [14/09/2018 19:30] (текущий) – создано - внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | Автор: //Graf//\\ | ||
+ | Дата написания: | ||
+ | \\ | ||
+ | ^ | ||
+ | \\ | ||
+ | |||
+ | ===== На сервере ===== | ||
+ | **Использовалось железо: | ||
+ | CPU - Intel(R) Xeon(R) CPU E5-2603 0 @ 1.80GHz\\ | ||
+ | RAM - 8 Gb\\ | ||
+ | HDD - 500Gb\\ | ||
+ | OS - Slackware Linux 14.1 64-bit\\ | ||
+ | Ядро- 3.10.17-smp\\ | ||
+ | IP - 192.168.10.211 | ||
+ | \\ | ||
+ | **Разбивка диска: | ||
+ | < | ||
+ | # fdisk -l | ||
+ | |||
+ | Disk /dev/sda: 500.1 GB, 500107862016 bytes | ||
+ | 255 heads, 63 sectors/ | ||
+ | Units = sectors of 1 * 512 = 512 bytes | ||
+ | Sector size (logical/ | ||
+ | I/O size (minimum/ | ||
+ | Disk identifier: 0x00079cf1 | ||
+ | |||
+ | | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | \\ | ||
+ | Разделы /// | ||
+ | Так же, после установки системы, | ||
+ | Slackware ставилась полностью вся, с Х-ми, но безо всяких DE и всем, что с ними связанно. | ||
+ | |||
+ | После установки системы устанавливаем //sbopkg// и обновляем саму систему при помощи // | ||
+ | < | ||
+ | # slackpkg update | ||
+ | # slackpkg upgrade-all | ||
+ | </ | ||
+ | Далее удаляем пакет //nc// и ставим нужные пакеты при помощи //sbopkg// | ||
+ | < | ||
+ | # removepkg nc | ||
+ | # sbopkg -kBi " | ||
+ | qemu gnome-python2-gconf gtk-vnc ipaddr-py libvirt libvirt-glib libvirt-python pygobject3 | ||
+ | urlgrabber vte3 gstreamer1 gst1-plugins-base spice-gtk libbsd netcat-openbsd virt-manager" | ||
+ | </ | ||
+ | Обновляем //libvirt// и // | ||
+ | |||
+ | libvirt-1.3.2-x86_64-1_SBo \\ | ||
+ | virt-manager-1.3.2-x86_64-1_Sbo\\ | ||
+ | |||
+ | После запуска //libvirt// в системе появится интерфейс //virbr0//, мост виртуальной сети которая использует трансляцию сетевых адресов (NAT), благодаря которой гостевые системы (виртуальные машины) получают доступ к сетевым службам сервера.\\ | ||
+ | Для доступа к виртуальным машинам из ЛВС и из виртуальных машин к ресурсам ЛВС (т.е. для создание полного ощущения, | ||
+ | |||
+ | И так, удаляем //virbr0//: | ||
+ | < | ||
+ | # / | ||
+ | # virsh net-destroy default | ||
+ | # virsh net-undefine default | ||
+ | # / | ||
+ | </ | ||
+ | |||
+ | У меня на сервера 2 сетевых интерфейса. Один я настрою как основной, | ||
+ | < | ||
+ | # Config information for eth0: - основной | ||
+ | IPADDR[0]=" | ||
+ | NETMASK[0]=" | ||
+ | USE_DHCP[0]="" | ||
+ | DHCP_HOSTNAME[0]="" | ||
+ | |||
+ | # Config information for eth1: - для ВМ | ||
+ | IPADDR[1]="" | ||
+ | NETMASK[1]="" | ||
+ | USE_DHCP[1]="" | ||
+ | DHCP_HOSTNAME[1]="" | ||
+ | |||
+ | # Default gateway IP address: | ||
+ | GATEWAY=" | ||
+ | </ | ||
+ | |||
+ | Теперь создадим скрипт /// | ||
+ | < | ||
+ | LOCAL_IF=" | ||
+ | BRIDGE_IF=" | ||
+ | BRIDGE_IP=" | ||
+ | BRIDGE_MASK=" | ||
+ | BRIDGE_BROADCAST=" | ||
+ | |||
+ | # Выключаем мост (на всякий случай, | ||
+ | ifconfig $BRIDGE_IF down | ||
+ | |||
+ | # Удаляем мост (если скрипт запускается не впервые) | ||
+ | brctl delbr $BRIDGE_IF | ||
+ | |||
+ | # Добавляем новый мост | ||
+ | brctl addbr $BRIDGE_IF | ||
+ | |||
+ | # Включаем в мост интерфейс | ||
+ | brctl addif $BRIDGE_IF $LOCAL_IF | ||
+ | |||
+ | # Убираем адрес с интерфейса, | ||
+ | ifconfig $LOCAL_IF 0.0.0.0 promisc up | ||
+ | |||
+ | # Назначаем мосту адрес | ||
+ | ifconfig $BRIDGE_IF $BRIDGE_IP netmask $BRIDGE_MASK broadcast $BRIDGE_BROADCAST | ||
+ | |||
+ | # Включаем мост | ||
+ | ifconfig $BRIDGE_IF up | ||
+ | |||
+ | # для поднятия моста нужно время, | ||
+ | sleep 5 | ||
+ | </ | ||
+ | |||
+ | Ну, и дополним /// | ||
+ | < | ||
+ | / | ||
+ | sleep 5 | ||
+ | / | ||
+ | |||
+ | # Start bridge for VMs | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | Для чистоты эксперимента //reboot// сервера, | ||
+ | < | ||
+ | # ifconfig | ||
+ | br0: flags=4163< | ||
+ | inet 192.168.121.1 | ||
+ | inet6 fe80:: | ||
+ | ether 00: | ||
+ | RX packets 239 bytes 22419 (21.8 KiB) | ||
+ | RX errors 0 dropped 0 overruns 0 frame 0 | ||
+ | TX packets 7 bytes 510 (510.0 B) | ||
+ | TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 | ||
+ | |||
+ | eth0: flags=4163< | ||
+ | inet 192.168.10.211 | ||
+ | inet6 fe80:: | ||
+ | ether 00: | ||
+ | RX packets 264 bytes 23917 (23.3 KiB) | ||
+ | RX errors 0 dropped 6 overruns 0 frame 0 | ||
+ | TX packets 34 bytes 5615 (5.4 KiB) | ||
+ | TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 | ||
+ | device interrupt 20 memory 0xfb500000-fb520000 | ||
+ | |||
+ | eth1: flags=4419< | ||
+ | inet6 fe80:: | ||
+ | ether 00: | ||
+ | RX packets 353 bytes 59220 (57.8 KiB) | ||
+ | RX errors 0 dropped 1 overruns 0 frame 0 | ||
+ | TX packets 13 bytes 1048 (1.0 KiB) | ||
+ | TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 | ||
+ | device interrupt 17 memory 0xfb100000-fb120000 | ||
+ | |||
+ | lo: flags=73< | ||
+ | inet 127.0.0.1 | ||
+ | inet6 ::1 prefixlen 128 scopeid 0x10< | ||
+ | loop txqueuelen 0 (Local Loopback) | ||
+ | </ | ||
+ | < | ||
+ | # ps aux | grep virt | ||
+ | root | ||
+ | root | ||
+ | root | ||
+ | </ | ||
+ | |||
+ | После создания виртуальных машин, при необходимости запуска их во время загрузки, | ||
+ | < | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | в этом примере идёт запуск виртуальных машин по их названию образа. | ||
+ | |||
+ | Аналогично и их отключение. | ||
+ | < | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | ===== На компьютере ===== | ||
+ | Конфигурация компьютера особой роли не играет.\\ | ||
+ | Slackware Linux установлен стандартно с KDE.\\ | ||
+ | \\ | ||
+ | OS - Slackware Linux 14.1 32-bit\\ | ||
+ | Ядро- 3.10.17-smp\\ | ||
+ | KDE - 4.10.5\\ | ||
+ | IP - любой из подсети 192.168.10.0/ | ||
+ | \\ | ||
+ | После установки системы устанавливаем //sbopkg// и обновляем саму систему при помощи // | ||
+ | < | ||
+ | # slackpkg update | ||
+ | # slackpkg upgrade-all | ||
+ | </ | ||
+ | Далее удаляем пакет //nc// и ставим нужные пакеты при помощи //sbopkg// | ||
+ | < | ||
+ | # removepkg nc | ||
+ | # sbopkg -kBi " | ||
+ | spice usbredir vala gtk-vnc ipaddr-py libosinfo yajl libvirt libvirt-glib libvirt-python \ | ||
+ | gnome-python2-gconf tunctl python-urllib3 python-requests gtk-vnc spice-protocol gstreamer1 \ | ||
+ | gst1-plugins-base spice-gtk vte3 pygobject3 urlgrabber virt-manager" | ||
+ | </ | ||
+ | Обновляем //libvirt// и // | ||
+ | |||
+ | libvirt-1.3.2-i486-1_SBo \\ | ||
+ | virt-manager-1.3.2-i486-1_SBo \\ | ||
+ | |||
+ | ===== Установка виртуальных машин ===== | ||
+ | Управлять виртуальными машинами можно из консоли при помощи утилиты //virsh//, но мы воспользуемся её графической альтернативой - // | ||
+ | Запустить его можно 2 способами: | ||
+ | 1. //К -> Система -> Менеджер виртуальных машин// | ||
+ | 2. из консоли | ||
+ | < | ||
+ | $ virt-manager | ||
+ | </ | ||
+ | {{ : | ||
+ | \\ | ||
+ | Так как соединение буде через //ssh//, то лучше сначала соединиться в консоли, | ||
+ | Добавим соединение с нашим сервером. //Файл -> Добавить соединение// | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Вводим пароль пользователя. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Видим, что подключились. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Добавим виртуальную машину. //Файл -> Новая виртуальная машина// | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Выбираем тип и версию операционной системы, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Предложенные по умолчанию тома хранилищ, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Дадим название пулу, выберем тип - //" | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Укажем каталог с ISO-образами. Почему-то кнопка //" | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | В появившемся списке выбираем нужный ISO-образ и нажимаем на кнопку //" | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Прописался путь до ISO-образа, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Выделяем виртуальной машине ОЗУ, количество процессоров и жмём //" | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Как видим, перевод на русский язык выполнен не до конца. Ничего страшного, | ||
+ | Так как я выделил для образов виртуальных машин отдельные разделы, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Теперь необходимо указать каталог, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Укажем каталог. Кнопка //" | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Создаем образ виртуальной машины в выбранном пуле нажав на //" | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Даём название образу и, так как используем QEMU, выбираем формат //qcow2//. Под размер тома отдаём практически всё пространство и нажимаем кнопку //" | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Выбираем появившийся образ виртуальной машины и жмём //" | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Путь до образа виртуальной машины прописался, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Проверяем всё ли верно прописано, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | В открывшимся окне в левом списке выбирем //" | ||
+ | //Тип// на // | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Вводим пароль для подключения к серверу VNC, тот, что мы ввели ранее в соседнем окне настроек. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | После ввода пароля мы видим процесс установки ОС на виртуальную машину. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | После того, как завершится весь процесс установки, | ||
+ | |||
+ | === Ссылался на... === | ||
+ | ----- | ||
+ | http:// | ||
+ | |||
+ | [[http:// | ||