
Отстраняването на неизправности при зареждане на операционната система на сървъри без KVM е трудна задача. Създаваме си KVM-over-IP чрез образ за възстановяване и виртуална машина.
В случай на проблеми с операционната система , администраторът зарежда образа за възстановяване и извършва необходимите действия. Този метод работи отлично, когато причината за срив е известна, а образът за възстановяване и инсталираната на сървъра операционна система са от едно семейство. Ако причината за сривът все още не е известна, е необходимо да се наблюдава процесът на зареждане на операционната система.
Отдалечен KVM
Достъпът до консолата на сървъра може да се осигури чрез вградени инструменти, като IPMI или Intel® vPro™, или чрез външни устройства, наречени IP-KVM. Съществуват ситуации, в които всичките горепосочени технологии не са налични. Въпреки това, това не е краят. Ако сървърът може да бъде отдалечено рестартиран в образ за възстановяване на базата на операционна система от семейството Linux, то може бързо да се организира KVM-over-IP.
Образът за възстановяване представлява пълноправна операционна система, която се съхранява в оперативната памет. По този начин можем да стартираме всякакъв софтуер, включително виртуални машини (ВМ). Тоест, можем да стартираме ВМ, в която ще работи операционната система на сървъра. Достъпът до консолата на ВМ може да бъде организиран, например, чрез VNC.
За да стартирате операционната система на сървъра вътре в ВМ, трябва да указвате дисковете на сървъра като дискове на ВМ. В операционните системи от семейството Linux физическите дискове се представят като блочни устройства от вида /dev/sdX, с които можете да работите като с обикновени файлове.
Някои хипервизори, като QEMU и VirtualBox, позволяват съхранение на данните на ВМ в 'суров' вид, т.е. само данните от хранилището без метаданни на хипервизора. По този начин, ВМ може да бъде стартирана с използване на физическия дискове на сървъра.
Такъв метод изисква ресурси за стартиране на образа за възстановяване и ВМ в него. Въпреки това, при наличие на четири и повече гигабайта оперативна памет, това не би било проблем.
Подготовка на околната среда
Като виртуална машина може да се използва лека и проста програма , която най-често не е част от образа за възстановяване, така че трябва да бъде инсталирана отделно. Образът за възстановяване, който предлагаме на клиентите, е базиран на , в който се използва пакетният мениджър pacman.
Първо, трябва да се уверим, че възстановителният образ използва последните версии на софтуера. Проверете и актуализирайте всички компоненти на ОС с помощта на следната команда:
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 (мрежов адресен превод);
- -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 д
FPIPE -boot д изпълнява зареждане от CD-диска. Свързваме се с VNC клиент и виждаме зареждача на FreeBSD.

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