Chastniimastertver.ru

Ремонт бытовой техники
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Ubuntu server kvm установка гостевой системы

Ubuntu server kvm установка гостевой системы

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

KVM виртуализация и установка гипервизора на Ubuntu сервер

Прежде всего проверим поддерживается ли виртуализация на уровне аппаратной части. Необходимые данные возьмем из вывода /proc/cpuinfo

будет означать, что kvm виртуализацию использовать не получится.

Такой результат, в частности, можно увидеть если попытаться настроить kvm виртуализацию на облачной машине, которая сама является виртуальной.

Если проверка пройдена продолжаем

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

В консоль не должно быть выведено ошибок вроде -bash: kvm-ok: command not found (при выполнении опять же на облачном сервере оболочка сообщит о том, что команда не найдена)

Архитектура мастер сервера.

Чтобы иметь возможность создавать виртуальные машины с 32-х и 64-х битной архитектурой хост машина должна быть 64-х битной. На 32-х битном мастере получится создавать только 32-х битные гостевые системы. Также только при 64 битах получится выделить для гостевой системы более 2 Гб оперативной памяти.

Выяснить битность системы можно так:

Единица или большее число в вывод будут означать, что на мастере 64 бита

/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=a0823e17cafbe5b2296346216445566840fdfd88, stripped

В случае с 32-х битной системой соответственно было бы

/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=07da0cea3ca1e33719560d9eba3bffe7e4c8b67f, stripped

Архитектуру также можно посмотреть используя uname

Все необходимые приготовления выполнены. Теперь обновляем список репозиториев и устанавливаем пакеты, которые потребуются для работы kvm виртуализации

apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder virtinst ubuntu-virt-server bridge-utils pm-utils

Они выполняются от имени root или из под sudo, после добавляем пользователя с реквизитами которого авторизованы в системе в группы kvm и libvirtd

За счет 'id -un' выбирается тот пользователь который сейчас выполняет команды с правами суперпользователя

Далее меняем владельца и группу владельца устройства kvm

Теперь нужно выйти из системы и зайти вновь от имени того же пользователя — лучше перезагрузить сервер, затем отдать команду которая выведет список всех существующих виртуальных машин (пустой на данном этапе)

Отсутствие ошибок будет означать, что все получилось.

Управлять виртуальными машинами можно через virtual manager — веб-интерфейс, который в продакшн среде обычно не применяется. Он устанавливается при помощи apt-get и вызывается из консоли обращением по имени пакета.

Рассмотрим создание гостевых машин в kvm и основные операции с ними при помощи virsh

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

apt-get install kvm libvirt-bin virt-manager virt-viewer virt-top virt-what

Вывести список всех существующих машин используя virsh можно так:

Он пуст и вывод абсолютно идентичен выводу команды использовавшейся ранее

KVM виртуализация предполагает создание машин на основе образов iso, которые нужно размещать в каталоге /var/lib/libvirt/images — изначально он пуст

Читайте так же:
Установка операционной системы на несколько компьютеров

Прежде всего меняем конфигурацию сети на сервере, сейчас он работает на белом IP адресе, который относится к интерфейсу eth0, смотрящему в интернет.

В /etc/network/interfaces меняем iface eth0 inet static на iface eth0 inet manual, после этого добавляем новый интрефейс br0, присваивая ему тот IP адрес и сетвую маску, что относились к eth0. Оставляем теми же broadcast, network и gateway дописывая в настройки интерфейса br0 несколько строк:

bridge_ports eth0

bridge_fd 9

bridge_hello 2

bridge_maxage 12

bridge_stp off

Теперь можно создавать первую виртуальную машину на KVM (поскольку машина тестовая выделяем для нее минимальное количество ресурсов)

virt-install
-n VM1
—description «VM1»
—os-type=Linux
—ram=512
—vcpus=1
—disk path=/var/lib/libvirt/images/VM1.img,bus=virtio,size=5
—graphics none
—location /home/admin/Downloads/ubuntu-14.04.5-server-i386.iso
—network bridge:br0

В качестве опций задаются имя виртуальной машины, описание, тип операционной системы (Linux), название дистрибутива (может также быть — например, centos7), количество оперативной памяти и CPU выделяемых для системы, путь к файловой системе и размер диска, указание на необходимость использования на виртуальной машине только консольного режима.

Последними опциями задается путь к установочному .iso файлу и настройки сети. Если задан бридж машина будет доступна в сети как самостоятельный хост, все настройки хранятся в /etc/libvirt/qemu/networks/. также можно указать необходимость использования NAT.

Созданную виртуальную машину можно запустить следующей командой

Того же результата можно добиться выполнив

Это и последующие команды нужно выполнять из под sudo иди один раз перейдя в оболочку sudo 'sudo bash'

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

Команда для вывода списка всех созданных гостевых систем уже приводилась ранее

Можно подключиться к консоли VM1

За счет save и restore можно создвать снапшоты и восстанавливаться из них, синтаксис следующий

Подробную информацию о работе с KVM и QEMU и о том как работает KVM виртуализация в целом можно найти на официальном сайте проекта.

Для KVM можно сделать iso образ системы с каким-либо предустановленным ПО или выполненными настройками, на основе которого в дальнейшем создавать новые виртуальные машины.

Используем KVM для создания виртуальных машин на сервере

Эту заметку я пишу для того, чтобы продемонстрировать пошаговую установку и настройку виртуальной машины в Linux на базе KVM. Ранее я уже писал про виртуализацию, где использовал замечательный инструмент Vagrant.

Сейчас передо мной встал вопрос аренды хорошего сервера с большим объёмом оперативной памяти и объёмным жестким диском. Но запускать проекты прямо на хост-машине не хочется, поэтому буду разграничивать их по отдельным небольшим виртуальным серверам с ОС Linux или docker-контейнерам (о них расскажу в другой статье).

Все современные облачные хостинги работают по такому же принципу, т.е. хостер на хорошем железе поднимает кучу виртуальных серверов, которые мы привыкли называть VPS/VDS, и раздаёт их пользователям, либо автоматизирует этот процесс (привет, DigitalOcean).

KVM (kernel-based virtual machine) это программное обеспечения для Linux, использующее аппаратные средства x86-совместимых процессоров для работы с технологией виртуализации Intel VT/AMD SVM.

Читайте так же:
Raspberry pi 3 установка операционной системы raspbian

Установка KVM

Все махинации по созданию виртуальной машины я буду проводить на ОС Ubuntu 16.04.1 LTS. Чтобы проверить поддерживает ли ваш процессов аппаратную виртуализацию на базе Intel VT/AMD SVM, выполняем:

Если терминал непустой, то значит всё в порядке и KVM можно устанавливать. Ubuntu официально поддерживает только гипервизор KVM (входит в состав ядра Linux) и советует использовать библиотеку libvirt в качестве инструмента по управлению им, что мы и будем делать дальше.

Проверить поддержку аппаратной виртуализации в Ubuntu также можно через команду:

В случае успеха, вы увидите что-то вроде этого:

Устанавливаем пакеты для работы с KVM:

Если у вас есть доступ к графической оболочке системы, то можно установить GUI менеджер libvirt:

Пользоваться virt-manager достаточно просто (не сложнее VirtualBox), поэтому в этой заметке речь пойдёт про консольный вариант установки и настройки виртуального сервера.

Установка и настройка виртуального сервера

В консольном варианте установки, настройки и управлением системой, незаменимым инструментом является утилита virsh (надстройка над библиотекой libvirt). У неё большое количество опций и параметров, подробное описание можно получить так:

или вызвать стандартный «help»:

Я всегда придерживаюсь следующих правил при работе с виртуальными серверами:

  1. Храню iso образы ОС в каталоге /var/lib/libvirt/boot
  2. Храню образы виртуальных машин в каталоге /var/lib/libvirt/images
  3. Явно задаю каждой новой виртуальной машине свой статичный IP адрес через DHCP сервер гипервизора.

Приступим к установке первой виртуалки (64-битной серверной убунте 16.04 LTS):

Скачав образ запускаем установку:

Переводя все эти параметры на «человеческий язык», то получается, что мы создаём виртуальную машину с ОС Ubuntu 16.04, 1024 МБ ОЗУ, 1 процессором, стандартной сетевой картой (виртуальная машина будет ходить в интернет как-будто из-за NAT), 20 ГБ HDD.

Стоит обратить внимание на параметр —os-variant, он указывает гипервизору под какую именно ОС следует адаптировать настройки.
Список доступных вариантов ОС можно получить, выполнив команду:

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

После запуска установки, в консоли появится вот такая надпись:

Это нормальная ситуация, продолжать установку мы будем через VNC.
Смотрим на каком порту он был поднят у нашей виртуалки (в соседнем терминале, например):

Порт 5900, на локальном адресе 127.0.0.1. Чтобы подключиться к VNC, необходимо использовать Port Forwarding через ssh. Перед тем как это сделать, убедитесь, что tcp forwarding разрешён у демона ssh. Для этого идём в настройки sshd:

Если ничего не нашлось или вы видите:

То правим конфиг на

и перезагружаем sshd.

Настройка Port forwarding

Выполняем команду на локальной машине:

Здесь мы настроили ssh port forwarding с локального порта 5900 на серверный порт 5900. Теперь уже можно подключиться к VNC, используя любой VNC-клиент. Я предпочитаю UltraVNC из-за простоты и удобства.

После успешного подключения, на экране отобразится стандартное окно приветствия начала установки Ubuntu.

После завершения установки и привычной перезагрузки, появится окно входа в систему. Авторизовавшись, определяем IP адрес новоиспечённой виртуалки, чтобы позже сделать его статичным:

Читайте так же:
Установка новой операционной системы paragon

Запоминаем и идём на хост машину. Вытаскиваем mac-адрес «сетевой» карты виртуалки:

Запоминаем наш mac адрес:

Редактируем сетевые настройки гипервизора:

Ищем DHCP, и добавляем вот это:

Должно получиться что-то вроде этого:

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

После этого перегружаем виртуальную машину, теперь она всегда будет иметь заданный ей IP адрес — 192.168.122.131.

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

Чтобы подключиться к терминалу виртуальной машины, выполняем:

Машина готова к бою.

Virsh: список команд

Чтобы посмотреть запущенные виртуальные хосты (все доступные можно получить добавив —all):

Перезагрузить хост можно:

Остановить виртуальную машину:

Добавить в автозапуск:

Очень часто требуется склонировать систему, чтобы в будущем использовать её как каркас для других виртуальных ОС, для этого используют утилиту virt-clone.

Она клонирует существующую виртуалку и изменяет host-sensitive данные, например, mac address. Пароли, файлы и прочая user-specific информация в клоне остаётся прежней. Если на клонируемой виртуалке IP адрес был прописан вручную, то могут возникнуть проблемы с доступом по SSH на клон из-за конфликта (2 хоста с одинаковым IP).

Помимо установки виртуалки через VNC, также возможен вариант с X11Forwarding через утилиту virt-manager. В Windows, например, для этого можно использовать Xming и PuTTY.

Kernel-based Virtual Machine (KVM)

В Ubuntu рекомендуется использовать гипервизор (менеджер виртуальных машин) KVM и библиотеку libvirt в качестве инструментария управления им. Libvirt включает в себя набор программного API и пользовательских приложений управления виртуальными машинами (ВМ) virt-manager (графический интерфейс, GUI ) или virsh (командная строка, CLI). В качестве альтернативных менеджеров можно использовать convirt (GUI ) или convirt2 (WEB интерфейс).

В настоящее время в Ubuntu офицально поддерживается только гипервизор KVM. Этот гипервизор является частью кода ядра операционной системы Linux. В отличие от Xen, KVM не поддерживает паравиртуализацию, то есть, для того, чтобы его использовать, ваш CPU должен подерживать технологии VT. Вы можете проверить, поддерживает ли ваш процессор эту технологию, выполнив команду в терминале:

Если в результате получили сообщение:

значит KVM будет работать без проблем.

Если же на выходе получили сообщение:

то вы всё равно сможете использовать виртуальную машину, но работать она будет намного медленнее.

Для хост-машины рекомендуется использовать 64-битную ОС. Это позволит:

Установка

В Ubuntu 10.04 и позже KVM рекомендуется ставить так:

Это установка на сервер без X-ов, т. е. не включает в себя графический интерфейс. Установить его можно командой

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

Создание гостевой системы

Процедура создания гостевой системы с помощью графического интерфейса достаточно проста.

FIXMEА вот текстовый режим можно и описать.

Читайте так же:
Зависание ноутбука при установке системы

qcow2

При создании системы с помощью графического интерфейса в качестве жёсткого диска предлагается либо выбрать уже существующий файл-образ или блочное устройсво, либо создать новый файл с сырыми (RAW) данными. Однако, это далеко не единственный доступный формат файлов. Из всех перечисленных в man qemu-img типов дисков наиболее гибким и современным является qcow2 . Он поддерживает снапшоты, шифрование и сжатие. Его необходимо создавать до того, как создать новую гостевую систему.

Согласно тому же man qemu-img , предварительное размещение метаданных (-o preallocation=metadata ) делает диск изначально немного больше, но обеспечивает лучшую производительность в те моменты, когда образу нужно расти. На самом деле, в данном случае эта опция позволяет избежать неприятного бага. Создаваемый образ изначально занимает меньше мегабайта места и по мере необходимости растёт до указанного размера. Гостевая система сразу должна видеть этот окончательный указанный размер, тем не менее, на этапе установки она может увидеть реальный размер файла. Естественно, устанавливаться на жёсткий диск размером 200 кбайт она откажется. Баг не специфичен для Ubuntu, проявляется ещё в RHEL, как минимум.

Установка kvm в Ubuntu 20.04

kvm install

Создать хост виртуализации в операционной системе Ubuntu 20.04 с гипервизором kvm не составит сложности, понимая технологии которые используются при этом. Это позволяет использовать обычный физический сервер с операционной системой Linux на борту как полноценный узел виртуализации, аналогичный Vmware ESXi. При этом мы можем не думать о стоимости лицензий программного обеспечения виртуализации. Так же, как и продукты VMware, функционирование kvm требует поддержки аппаратной виртуализации со стороны центрального процессора сервера. В качестве гостевых операционных систем мы можем использовать как различные дистрибутивы Linux и BSD, так и все вариации MS Windows.

Данная статья посвящена процедуре установки и первоначальной настройки хостовой операционной системы Ubuntu Linux 20.04 и гипервизора kvm. Мы пройдем поэтапно по всем основным шагам и получим в результате работающий гипервизор виртуализации, которой можно будет полноценно использовать как в продакшене, так и для тестовых целей. Особый акцент сделан на сетевую часть. Показано как настроить виртуальную сеть kvm таким образом, чтобы обеспечить прямой доступ из физической сети к гостевым машинам.

Проверка системы

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

В данном примере результат выполнения команды — 8, что больше нуля. Это значит, что у нас 8 ядер ЦПУ, которые поддерживают технологию аппаратной виртуализации. Если же мы получим в качестве вывода ноль, то работать kvm у нас на данном сервере не будет.

Также операционную систему рекомендуется проверить командой kvm-ok для уточнения совместимости с гипервизором. Чтобы установить ее, выполняем команду.

После этого можно проверить операционную систему на непосредственную совместимость с kvm. В нашем случае система полностью совместима и вывод команды kvm-ok представлен ниже.

Читайте так же:
Синхронизация каталогов windows 2008 r2

Установка KVM

Теперь мы готовы для непосредственной установки apt пакетов, которые обеспечивают работу гипервизора kvm. Это делается с помощью нижеуказанной команды.

После заверешния установки всех пакетов нам необходимо настроить автоматический запуск сервиса libvirtd в системе.

Смотрим статус текущего состояния сервиса libvirtd следующим образом. Как видно, все работает нормально и можно переходить к следующму этапу конфигурации гипервизора.

Настройка сетевой части гипервизора

По умолчанию после установки kvm гипервизор использует один сетевой бридж, в котором выход в общую сеть для виртуальных машин закрыт за NATом. Обычно же на хостах виртуализации необходим прямой доступ с гостевых машин в сеть. Для этого нужно выполнить ряд настроек. В первую очередь создадим файл /etc/sysctl.d/12-bridge.conf, содержание которого представлено ниже и который отключает правила фильтрации IPTABLES на бриджах хостовой ОС.

Для того, чтобы эти настройки применялись в операционной системе при загрузке создадим еще один файл — /etc/udev/rules.d/99-bridge.rules. Добавим в него одну только строчку.

После проведенных манипуляций выполним перезагрузку операционной системы хоста и продолжим настройку сетевой части гипервизора. С помощью двух последующих команд virsh удалим дефолтную виртуальную сеть default, которая была создана при установке kvm.

Когда дефолтная kvm виртуальная сеть, натирующая весь трафик от виртуалок будет удалена, можно настроить новую виртуальную сеть, обеспечивающую прямой доступ в ЛВС через программный бридж в операционной системе хоста. Для этого добавим настройки бриджа в файл /etc/netplan/00-installer-config.yaml. Простейший пример такого файла с одним ethernet интерфейсом и одним программным бриджом представлен далее.

Когда файл будет отредактирован, выполним команду sudo netplan apply, чтобы внесенные изменения вступили в силу. Теперь у нас в операционной системе хоста будет работающий программный бридж br0, который мы задействуем для проброса трафика из гостевых машин во внешние сети. Если у нас есть несколько внешних сетевых интерфейсов, то при необходимости мы можем создать несколько бриджей, используя их для проброса трафика на виртуальные машины.

После того, как бридж у нас будет готов, мы настроим виртуальную сеть kvm, которая будет использовать данный бридж. Создадим небольшой xml файл в текущей директории с конфигурацией виртуальной сети — bridge-network.xml.

Используя данный xml файл, выполним настройку виртуальной kvm сети с помощью утилиты virsh.

Проверить созданную виртуальную kvm сеть можно следующим образом.

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

Что дальше

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

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector