
Отстраняването на проблеми при зареждане на операционната система на сървъри без KVM е сложно занятиe. Създаваме KVM-over-IP чрез образ на възстановяване и виртуална машина.
В случай на проблеми с операционната система , администраторът зарежда образа на възстановяване и извършва необходимите действия. Този подход работи отлично, когато причината за неуспеха е известна, а образът на възстановяване и инсталираната на сървера операционна система са от едно семейство. Ако причината за сбоя все още не е известна, необходимо е да се наблюдава процесът на зареждане на операционната система.
Отдалечен KVM
Достъпът до конзолата на сървъра може да се осъществи с вградени средства, като IPMI или Intel® vPro™, или чрез външни устройства, наречени IP-KVM. Съществуват ситуации, в които всички от изброените технологии не са на разположение. Въпреки това, това не е краят. Ако сървърът може да бъде отдалечено рестартиран в образ на възстановяване на базата на операционна система от семейството на Linux, може бързо да се организира KVM-over-IP.
Образът на възстановяване представлява пълноценна операционна система, която се разполага в оперативната памет. По този начин можем да стартираме всякакъв софтуер, включително и виртуални машини (VM). Тоест, можем да стартираме VM, в която ще работи операционната система на сървера. Достъпът до конзолата на VM може да бъде организиран, например, чрез VNC.
За да стартирате операционната система на сървера вътре в VM, е необходимо да зададете дисковете на сървера като дискове на VM. В операционни системи от семейството на Linux физическите дискове се представят като блочни устройства от вида /dev/sdX, с които може да се работи като с обикновени файлове.
Някои хипервизори, като QEMU и VirtualBox, позволяват да се съхраняват данни на VM в „суров“ вид, т.е. само данните от хранилището без метаданни от хипервизора. По този начин VM може да бъде стартирана, използвайки физическите дискове на сървера.
Този метод изисква ресурси за стартиране на образа на възстановяване и VM в него. Въпреки това, с наличието на четири и повече гигабайта оперативна памет, това няма да бъде проблем.
Подготовка на околната среда
Като виртуална машина може да се използва лека и проста програма. , която най-често не е част от възстановителния образ, затова трябва да бъде инсталирана отделно. Възстановителният образ, който предлагаме на клиентите, е основан на , в който се използва пакетен мениджър pacman.
Първо е необходимо да се уверим, че възстановителният образ използва последните версии на софтуерa. Проверка и обновление на всички компоненти на ОС могат да се извършат с следната команда:
pacman -Suy
След актуализацията е необходимо да инсталираме QEMU. Командата за инсталация чрез pacman ще изглежда така:
pacman -S qemu
Нека проверим дали QEMU е инсталирано правилно:
root@sel-rescue ~ # qemu-system-x86_64 --version
QEMU емулатор версия 4.0.0
Авторски права (c) 2003-2019 Фабрис Белаард и разработчиците на проекта QEMU
Ако всичко е наред, то възстановителният образ е готов за работа.
Стартиране на виртуалната машина
Първо е необходимо да определим количеството ресурси, отделяни на ВМ, и да установим пътищата към физическите дискове. В нашия случай ще отделим два ядра и два гигабайта оперативна памет на виртуалната машина, а дисковете се намират на пътя /dev/sda и /dev/sdb. Стартиране на ВМ:
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
Няколко допълнителни детайли относно значението на всеки от параметрите:
- -m 2048M — отделяме 2 ГБ оперативна памет за ВМ;
- -net nic -net user — добавяме прост достъп до мрежата чрез хипервизор с NAT (Network Address Translation);
- -enable-kvm — активираме пълна виртуализация KVM (Kernel Virtual Machine);
- -cpu host — казваме на виртуалния процесор да получи всички функции на процесора на сървъра;
- -M pc — тип на оборудването PC;
- -smp 2 — виртуалният процесор трябва да бъде двуядрен;
- -vga std — избираме стандартна видео карта, която не поддържа големи размери на екрана;
- -drive file=/dev/sda,format=raw,index=0,media=disk
- file=\/dev\/sdX — пътят до блочното устройство, представляващо диска на сървъра;
- format=raw — отбелязваме, че в указан файл всички данни са в «суров» вид, тоест както на диска;
- index=0 — номерът на диска, който трябва да се увеличава с единица за всеки следващ диск;
- media=disk — виртуалната машина трябва да разпознава това хранилище като диск;
- -vnc :0, password — стартираме VNC-сървър по подразбиране на 0.0.0.0:5900, за авторизация използваме парола;
- -monitor stdio — комуникацията на администратора с QEMU ще става чрез стандартни входно-изходни потоци.
Ако всичко е наред, ще стартира QEMU мониторът:
QEMU 4.0.0 монитор - напишете 'help' за повече информация
(qemu)
Указахме, че авторизацията става с парола, но не посочихме самата парола. Това може да се направи, изпращайки командата change vnc password в QEMU монитора. Важно уточнение: паролата не може да бъде по-дълга от осем символа.
(qemu) промяна на vnc паролата
Парола: ******
След това можем да се свържем с всеки VNC клиент, например, Remmina, по IP адреса на нашия сървър с посочената от нас парола.


Сега не само виждаме възможни грешки по време на зареждане, но и можем да се борим с тях.
След приключване на работата е необходимо да завършим виртуалната машина. Това може да стане както от вътре в ОС, подавайки сигнал за изключване, така и да дадем команда system_powerdown в QEMU монитора. Това ще бъде равно на натискане на бутона за изключване: операционната система във виртуалната машина ще бъде затворена плавно.
Инсталация на операционната система
Виртуалната машина има пълен достъп до дисковете на сървъра и затова може да бъде използвана за ръчна инсталация на операционната система. Единственото ограничение е количеството оперативна памет: не винаги ISO образ може да се побере в оперативната памет. Нека отделим четири гигабайта в оперативната памет за съхраняване на образа в /mnt:
mount -t tmpfs -o size=4G tmpfs /mnt
Също така ще изтеглим инсталационния образ на операционната система FreeBSD 12.0:
wget -P /mnt ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/12.0/FreeBSD-12.0-RELEASE-amd64-bootonly.iso
Сега можем да стартираме ВМ:
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
Знаме -boot d определя зареждането от CD-ROM. Свързваме се с VNC клиента и виждаме зареждача на FreeBSD.

Тъй като за достъп до интернет беше използвано получаване на адреса по DHCP, възможно е след настройките да се наложи да се стартира ново инсталираната система и да се коригират мрежовите настройки. В някои случаи може да е необходимо да се инсталират драйвери за мрежовия адаптер, тъй като мрежовата карта, инсталирана на сървъра и еймулираната във ВМ, се различават.
Заключение
Този метод за организация на отдалечен достъп до консолата на сървера консумира част от ресурсите на сървера, но не поставя специални изисквания към хардуерната част на сървера и следователно може да бъде изпълнен при практически всякакви условия. Използването на такова решение значително облекчава диагностицирането на софтуерни неизправности и възстановяването на работоспособността на отдалечения сървър.
Източник: habr.com
