Виртуальная машина ubuntu

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

12 Фев. 2017, Инструменты, 28541 просмотров

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

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

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

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

Установка 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 адрес новоиспечённой виртуалки, чтобы позже сделать его статичным:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выполнить halt:

Запуск:

Отключение:

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

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

Она клонирует существующую виртуалку и изменяет host-sensitive данные, например, mac address.

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

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

Ссылки

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

12 Фев. 2017, Инструменты, 28540 просмотров

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

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

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

Все современные облачные хостинги работают по такому же принципу, т.е.

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

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

Установка 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 адрес новоиспечённой виртуалки, чтобы позже сделать его статичным:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выполнить halt:

Запуск:

Отключение:

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

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

Она клонирует существующую виртуалку и изменяет host-sensitive данные, например, mac address. Пароли, файлы и прочая user-specific информация в клоне остаётся прежней.

Если на клонируемой виртуалке IP адрес был прописан вручную, то могут возникнуть проблемы с доступом по SSH на клон из-за конфликта (2 хоста с одинаковым IP).

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

Ссылки

About virt-manager’s supporting tools

virt-install is a command line tool which provides an easy way to provision operating systems into virtual machines.

virt-viewer is a lightweight UI interface for interacting with the graphical display of virtualized guest OS. It can display VNC or SPICE, and uses libvirt to lookup the graphical connection details.

virt-clone is a command line tool for cloning existing inactive guests. It copies the disk images, and defines a config with new name, UUID and MAC address pointing to the copied disks.

virt-xml is a command line tool for easily editing libvirt domain XML using virt-install’s command line options.

virt-convert is a command line tool for converting OVF and VMX VM configurations to run with libvirt.

virt-bootstrap is a command tool providing an easy way to setup the root file system for libvirt-based containers.

VirtualBox — бесплатная программа для запуска операционных систем Windows, Linux, MacOS X, DOS и некоторых других из под другой операционной системы. Например, используя VirtualBox, вы можете работать в Ubuntu и запустить Windows XP прямо из Ubuntu.

Работать с VirtualBox очень просто, для базовых операций практически не требуется никаких специфических настроек. Работа с программой происходит следующим образом. Вы создаете новую Виртуальную машину (через меню Машина->Создать). Виртуальная машина это фактически виртуальный компьютер. В процессе создания вы задаете параметры вашей виртуальной машины, например, объем оперативной памяти (она «откусывается» от вашей реальной ОЗУ), объем жесткого диска, выделяемого системе и так далее. Когда виртуальная машина создана, вы можете установить на нее какую-нибудь операционную систему. В результате вы получите одну операционную систему внутри другой.

При работе с VirtualBox есть некоторые ограничения. Например, функциональность некоторых программ, работающих через VirtualBox может быть не полной, а некоторые приложения могут не запуститься вовсе (как правило если требуют какую-нибудь специфическую функциональность аппаратуры).

К тому же, операционные системы, работающие через VirtualBox работают значительно медленнее, чем на реальной машине. Это понятно, так как VirtualBox эмулирует работу компьютера.

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

Программа написана на языке программирования C++. До 2008 года программу разрабатывала компания Sun Microsystems, после 2008 года разработку VirtualBox ведет Oracle Corporation.

Скриншоты

VirtualBox: окно выбора виртуальной машины

Версия: 4.1.12.

Запуск Windows XP внутри Ubuntu

Версия: 4.1.12.

Полезные ссылки

На русском языке:

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

Обновлено: Опубликовано:

Тематические термины: KVM виртуализация, Linux, Ubuntu

Инструкция написана на примере Linux Ubuntu Server 16.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 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

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

ntpdate ru.pool.ntp.org

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

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

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

apt install qemu-kvm libvirt-bin virtinst

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

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

systemctl enable libvirt-bin

Запустим libvirtd:

systemctl start libvirt-bin

Настройка сети в режиме моста (bridge)

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

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

Устанавливаем bridge-utils:

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

vi /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 это может привести к ошибки и потери удаленного доступа.

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

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

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-16.04.3-server-amd64.iso \
—graphics vnc,listen=0.0.0.0,password=vnc_password \
—os-type linux —os-variant=ubuntu16.04 —boot cdrom,hd,menu=on

* где:

  • VM1 — имя создаваемой машины;
  • autostart — разрешить виртуальной машине автоматически запускаться вместе с сервером KVM;
  • noautoconsole — не подключается к консоли виртуальной машины;
  • network — тип сети;
  • ram — объем оперативной памяти;
  • vcpus — количество виртуальных процессоров;
  • disk — виртуальный диск: path — путь до диска; size — его объем;
  • cdrom — виртуальный привод с образом системы;
  • graphics — параметры подключения к виртуальной машины с помощью графической консоли (в данном примере используем vnc); listen — на какой адресе принимает запросы vnc (в нашем примере на всех); password — пароль для подключения при помощи vnc;
  • os-variant — гостевая операционная система (весь список мы получали командой virt-install —os-variant list, в данном примере устанавливаем Ubuntu 16.04).

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

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

На сервере вводим:

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

У меня было:

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

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

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

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

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

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

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

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

Выключить:

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

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

Virt-Manager

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

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

ubuntu-vm-builder

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

Для его установки вводим:

apt install ubuntu-vm-builder

Читайте также

Установка KVM на CentOS 7

# Серверы# Виртуализация# Ubuntu

Была ли полезна вам эта инструкция?

Да            Нет

Добавить комментарий

Закрыть меню