Бесплатная миграция IT-инфраструктуры в облако

IP-KVM через QEMU

Команда Timeweb Cloud
Команда Timeweb Cloud
Наши инженеры, технические писатели, редакторы и маркетологи
31 января 2022 г.
1182
7 минут чтения
Средний рейтинг статьи: 2

Работать с серверами без KVM иногда затруднительно. Например, когда приходится разбираться со сбоями операционной системы. В подобных ситуациях помогает решение KVM-over-IP, с которым упрощаются такие операции, как перезагрузка сервера, проверка корректности работы ОС или даже BIOS удаленного компьютера. Все операции осуществляются даже при недоступности внешнего IP по протоколам RDP и SSH (используется специально выделенный адрес).

IP Kvm Через Qemu

Немного терминологии

Гипервизор KVM (Kernel-based Virtual Machine) – это отдельный модуль, своеобразный менеджер виртуальной машины. Он позволяет запускать различный софт, «скрывая» от него все аппаратное обеспечение сервера. Фактически это «прокладка» между «железом» и программами, которые при такой схеме работы являются гостевыми. Зато у самого KVM есть низкоуровневый доступ ко всем ресурсам – центральному процессору, оперативной памяти, накопителям.

В связке KVM+QEMU удобно пользоваться QEMU Monitor, текстовым интерфейсом, через который пользователь получает данные по запущенным виртуальным машинам и может менять их параметры в процессе эксплуатации.

В паре с ним часто используют относительно «легкий» эмулятор QEMU. Он позволяет запускать операционные системы, разработанные под «другую» архитектуру. Например, решения под DOS или Windows устанавливать на устройства с процессором ARM или инсталлировать программное обеспечение, которое рассчитано на поддержку Intel VT-x/AMD SVM на устаревших процессорах, разработанных еще до появления этих технологий.

Подключаемся к удаленному KVM

Вариант хорош еще и тем, что доступ к графическому интерфейсу виртуальной машины работает через QEMU VNC, защищенный канал с передачей данных в зашифрованном виде. Чтобы получить его, достаточно воспользоваться штатными средствами IPMI или Intel vPro. Правда, более надежен способ с подключением внешних устройств типа IP-KVM. С ними проще исправлять критические ошибки благодаря функции KVM-over-IP, позволяющей контролировать «железо» сервера.

Особенности:

  1. Образ восстановления, которым восстанавливают работоспособность, является системой с полноценным функционалом.
  2. Он позволяет запускать любые категории приложений, включая виртуальные машины с предустановленной платформой Linux.
  3. В качестве дисков для виртуальной машины указывают реальные накопители сервера, где под работу автоматически резервируется часть объема.

В операционных системах на базе Linux последние представлены блочными устройствами вида dev/sdX. С ними пользователь обращается как со стандартными файлами системы. Если использованы гипервизоры QEMU или VirtualBox, появляется возможность обращения напрямую к физическим накопителям на сервере. Правда, такой способ требует относительно больших аппаратных ресурсов, например не менее 4 ГБ оперативной памяти.

Подготавливаем окружение

Прежде чем появится возможность воспользоваться функцией восстановления, необходимо создать образ восстановления. Предварительно желательно обновить компоненты операционной системы и установить программное обеспечение QEMU (предпочтительно использовать в паре с аппаратной виртуализацией в режиме KVM QEMU). Рассмотрим пример на базе FreeBSD, в которой имеется пакетный менеджер Pacman.

Последовательность действий:

  1. Ввести команду pacman -Suy – проверка обновлений ОС.
  2. Ввести команду pacman -S qemu – инсталляция модуля QEMU.

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

Запускаем виртуальную машину

Особенность виртуализации состоит в том, что пользователь самостоятельно выбирает количество ресурсов, выделяемых для работы виртуальной машины. Главное, чтобы значения не превышали физических параметров. Этот момент уточняется в условиях тарифов timeweb.cloud, где арендуется сервер. В нашем тесте выделим под ВМ 2 процессорных ядра, 2 ГБ оперативной памяти и 2 накопителя, расположенных по пути /dev/sda и /dev/sdb.

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

qemu-system-x86_64 \
  -m 2048M \ (выделить 2 ГБ оперативной памяти)
   -net nic -net user \ (добавить подключение через гипервизор с использованием NAT)

    -enable-kvm \ (включить полную виртуализацию KVM Linux)
    -cpu host,nx \ (открыть доступ ко всем ресурсам центрального процессора)
-M pc \ (активировать платформу, совместимую с PC)
    -smp 2 \ (подключить к системе 2-ядерный виртуальный процессор)
    -vga std \ (выбрать «стандартную видеокарту»)
    -drive file=/dev/sda,format=raw,index=0,media=disk \ (установить путь для диска, указать, что данные на нем лежат
в «сыром» виде, включить автоматический выбор номера диска)
    -drive file=/dev/sdb,format=raw,index=1,media=disk \ (аналогично предыдущему пункту)
    -vnc :0,password \ (по умолчанию сервер будет запущен на 0.0.0.0.5900, с авторизацией по паролю)
    -monitor stdio (включить стандартные потоки ввода-вывода для работы администратора)

 Если процесс запуска прошел без сбоев, на экране компьютера отразится надпись:

QEMU 4.0.0 monitor - type 'help' for more information (qemu)

Перед первым подключением к виртуальной машине KVM понадобится установить пароль доступа к системе. В случае с модулем QEMU придется ограничить набор символов количеством 8, более длинные пароли программное обеспечение не поддерживает. Выполняется настройка такой командой:

(qemu) change vnc password
Password: ******

На практике следует заменить звездочки собственной комбинацией. После сохранения изменений к серверу получится подключиться через любую утилиту для удаленного доступа, например Remmina, которая оптимальна при использовании VNC-канала. В настройках достаточно указать прямой IP-адрес и пароль для подключения к серверу. Встроенный функционал потенциально позволить увидеть все ошибки, возникающие при запуске операционной системы.

Инсталлируем операционную систему

В рамках подготовки сервера для создания образа для восстановления остается установить систему, на платформе которой впоследствии предстоит работать (устанавливать прикладные приложения и обрабатывать пользовательские данные). На QEMU в Linux можно установить любую, хоть Linux-совместимую, хоть Windows, смотря какие задачи предстоит решать пользователю. Оборудование вроде KN9108, 8-портового KVM Over the NET, позволит управлять минимум 8 серверами.

Последовательность действий по установке ОС:

1. Выделить побольше оперативной памяти, чтобы вместился создаваемый образ:

mount -t tmpfs -o size=4G tmpfs /mnt

2. Загрузить установочный образ операционной системы.

wget -P /mnt ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/12.0/FreeBSD-12.0-RELEASE-amd64-bootonly.iso

3. Запустить виртуальную машину:

qemu-system-x86_64 \
   -m 2048M \
    -net nic -net user \
    -enable-kvm \
    -cpu host,nx \
    -M pc \
    -smp 2 \
    -vga std \
    -drive file=/dev/sda,format=raw,index=0,media=disk \
    -drive file=/dev/sdb,format=raw,index=1,media=disk \
    -vnc :0,password \
    -monitor stdio \
    -cdrom /mnt/FreeBSD-12.0-RELEASE-amd64-bootonly.iso \
    -boot d

Если теперь подключиться через VNC-клиент, пользователь увидит загрузочное меню образа. Он будет подключен как привод D согласно команде boot d. Все система готова к эксплуатации, в том числе инсталляции прикладных приложений, загрузке пользовательских данных. Примерно та же последовательность действий применяется, если система KVM ставится на Windows Server 2019 и другие платформы. 

Заключение

Приведенный пример создания FreeBSD KVM Host использует минимальные ресурсы сервера, не предъявляет особых требований к арендованным мощностям (не зависит от выбранного тарифа) и одновременно представляет собой эффективное решение для управления удаленной машиной при возникновении нештатных ситуаций.

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server
31 января 2022 г.
1182
7 минут чтения
Средний рейтинг статьи: 2
Комментарии 2
smbd
smbd
01.04.2022, 12:54

Так а сколько "в граммах" этих "минимальных ресурсов сервера" требуется в итоге? По текущему примеру...

Команда Timeweb Cloud
Команда Timeweb Cloud
06.04.2022, 04:42

Сам гипервизор не расходует ресурсы, ресурсы выделяются для виртуальных машин в зависимости от заданных параметров. Например, в рамках статьи мы создавали вирт.машину с 2 ядрами CPU и 2 ГБ ОЗУ.