Работать с серверами без KVM иногда затруднительно. Например, когда приходится разбираться со сбоями операционной системы. В подобных ситуациях помогает решение KVM-over-IP, с которым упрощаются такие операции, как перезагрузка сервера, проверка корректности работы ОС или даже BIOS удаленного компьютера. Все операции осуществляются даже при недоступности внешнего IP по протоколам RDP и SSH (используется специально выделенный адрес).
Гипервизор KVM (Kernel-based Virtual Machine) – это отдельный модуль, своеобразный менеджер виртуальной машины. Он позволяет запускать различный софт, «скрывая» от него все аппаратное обеспечение сервера. Фактически это «прокладка» между «железом» и программами, которые при такой схеме работы являются гостевыми. Зато у самого KVM есть низкоуровневый доступ ко всем ресурсам – центральному процессору, оперативной памяти, накопителям.
В связке KVM+QEMU удобно пользоваться QEMU Monitor, текстовым интерфейсом, через который пользователь получает данные по запущенным виртуальным машинам и может менять их параметры в процессе эксплуатации.
В паре с ним часто используют относительно «легкий» эмулятор QEMU. Он позволяет запускать операционные системы, разработанные под «другую» архитектуру. Например, решения под DOS или Windows устанавливать на устройства с процессором ARM или инсталлировать программное обеспечение, которое рассчитано на поддержку Intel VT-x/AMD SVM на устаревших процессорах, разработанных еще до появления этих технологий.
Вариант хорош еще и тем, что доступ к графическому интерфейсу виртуальной машины работает через QEMU VNC, защищенный канал с передачей данных в зашифрованном виде. Чтобы получить его, достаточно воспользоваться штатными средствами IPMI или Intel vPro. Правда, более надежен способ с подключением внешних устройств типа IP-KVM. С ними проще исправлять критические ошибки благодаря функции KVM-over-IP, позволяющей контролировать «железо» сервера.
Особенности:
В операционных системах на базе Linux последние представлены блочными устройствами вида dev/sdX. С ними пользователь обращается как со стандартными файлами системы. Если использованы гипервизоры QEMU или VirtualBox, появляется возможность обращения напрямую к физическим накопителям на сервере. Правда, такой способ требует относительно больших аппаратных ресурсов, например не менее 4 ГБ оперативной памяти.
Прежде чем появится возможность воспользоваться функцией восстановления, необходимо создать образ восстановления. Предварительно желательно обновить компоненты операционной системы и установить программное обеспечение QEMU (предпочтительно использовать в паре с аппаратной виртуализацией в режиме KVM QEMU). Рассмотрим пример на базе FreeBSD, в которой имеется пакетный менеджер Pacman.
Последовательность действий:
pacman -Suy
– проверка обновлений ОС.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 использует минимальные ресурсы сервера, не предъявляет особых требований к арендованным мощностям (не зависит от выбранного тарифа) и одновременно представляет собой эффективное решение для управления удаленной машиной при возникновении нештатных ситуаций.
Так а сколько "в граммах" этих "минимальных ресурсов сервера" требуется в итоге? По текущему примеру...
Сам гипервизор не расходует ресурсы, ресурсы выделяются для виртуальных машин в зависимости от заданных параметров. Например, в рамках статьи мы создавали вирт.машину с 2 ядрами CPU и 2 ГБ ОЗУ.