
Diagnosticarea problemelor la pornirea sistemului de operare pe servere fără KVM este o sarcină dificilă. Creăm pentru noi KVM-over-IP prin intermediul unei imagini de recuperare și a unei mașini virtuale.
În cazul în care apar probleme cu sistemul de operare , administratorul încarcă imaginea de recuperare și efectuează lucrările necesare. Această metodă funcționează excelent atunci când cauza eșecului este cunoscută, iar imaginea de recuperare și sistemul de operare instalat pe server fac parte din aceeași familie. Dacă cauza eșecului nu este încă cunoscută, este necesar să se observe procesul de încărcare a sistemului de operare.
KVM remote
Accesul la consola serverului poate fi realizat cu ajutorul unor instrumente încorporate, cum ar fi IPMI sau Intel® vPro™, sau prin intermediul unor dispozitive externe denumite IP-KVM. Există situații în care toate aceste tehnologii sunt indisponibile. Totuși, aceasta nu este o problemă. Dacă serverul poate fi repornit de la distanță în imaginea de recuperare bazată pe un sistem de operare din familia Linux, atunci KVM-over-IP poate fi organizat rapid.
Imaginea de recuperare reprezintă un sistem de operare complet, care este stocat în memoria RAM. Astfel, putem rula orice software, inclusiv mașini virtuelle (MV). Cu alte cuvinte, este posibil să pornim o MV în cadrul căreia va funcționa sistemul de operare al serverului. Accesul la consola MV-ului poate fi organizat, de exemplu, prin VNC.
Pentru a porni sistemul de operare al serverului în cadrul MV-ului, este necesar să se specifice discurile serverului ca discuri MV. În sistemele de operare din familia Linux, discurile fizice sunt reprezentate ca dispozitive bloc de tipul /dev/sdX, cu care se poate lucra ca și cum ar fi fișiere obișnuite.
Anumite hyperviseuri, cum ar fi QEMU și VirtualBox, permit stocarea datelor MV-ului în format „raw”, adică doar datele de stocare fără metadatele hyperviseurului. Astfel, MV-ul poate fi pornit folosind discurile fizice ale serverului.
Această metodă necesită resurse pentru a porni imaginea de recuperare și MV-ul în interiorul acesteia. Cu toate acestea, având la dispoziție patru sau mai mulți gigaocteți de memorie RAM, aceasta nu va fi o problemă.
Pregătirea mediului
Ca mașină virtuală, poate fi utilizată o aplicație ușoară și simplă , care, de obicei, nu face parte din imaginea de recuperare, așa că trebuie instalată separat. Imaginea de recuperare pe care o oferim clienților se bazează pe , în care se utilizează managerul de pachete pacman.
În primul rând, este necesar să ne asigurăm că imaginea de recuperare folosește cele mai recente versiuni ale software-ului. Verificarea și actualizarea tuturor componentelor sistemului de operare se pot efectua cu următoarea comandă:
pacman -Suy
După actualizare, este necesar să instalăm QEMU. Comanda pentru instalarea prin pacman va arăta astfel:
pacman -S qemu
Să verificăm dacă QEMU s-a instalat corect:
root@sel-rescue ~ # qemu-system-x86_64 --version
Versiunea emulatorului QEMU 4.0.0
Drepturi de autor (c) 2003-2019 Fabrice Bellard și dezvoltatorii proiectului QEMU
Dacă totul este în regulă, imaginea de recuperare este gata de utilizare.
Pornirea mașinii virtuale
În primul rând, trebuie să stabilim câte resurse să alocăm VM-ului și să determinăm căile către discurile fizice. În cazul nostru, vom aloca două nuclee și două gigaocteți de memorie RAM mașinii virtuale, iar discurile se află pe calea /dev/sda și /dev/sdb. Să pornim VM-ul:
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
Un pic mai multe detalii despre ce înseamnă fiecare dintre parametrii:
- -m 2048M — alocăm 2 GB de memorie RAM pentru VM;
- -net nic -net user — adăugăm o conexiune simplă la rețea prin hypervisor folosind NAT (Network Address Translation);
- -enable-kvm — activăm virtualizarea completă KVM (Kernel Virtual Machine);
- -cpu host — spunem procesorului virtual să obțină întreaga funcționalitate a procesorului serverului;
- -M pc — tipul de echipament este PC;
- -smp 2 — procesorul virtual ar trebui să fie dual-core;
- -vga std — alegem o placă grafică standard care nu suportă rezoluții mari;
- -drive file=/dev/sda,format=raw,index=0,media=disk
- file=\/dev\/sdX — calea către dispozitivul bloc care reprezintă discul serverului;
- format=raw — marcăm că în fisierul specificat toate datele sunt în format „brut”, adică așa cum sunt pe disc;
- index=0 — numărul discului, care trebuie să crească cu unul pentru fiecare disc următor;
- media=disk — mașina virtuală trebuie să recunoască această stocare ca fiind un disc;
- -vnc :0, password — pornim serverul VNC în mod implicit pe 0.0.0.0:5900, folosind parola pentru autentificare;
- -monitor stdio — comunicarea administratorului cu QEMU va avea loc prin fluxuri standard de intrare-ieșire.
Dacă totul este în regulă, va porni monitorul QEMU:
Monitor QEMU 4.0.0 - tastați 'help' pentru mai multe informații
(qemu)
Am specificat că autentificarea se face prin parolă, dar nu am indicat parola propriu-zisă. Acest lucru se poate realiza trimițând comanda change vnc password în monitorul QEMU. Un aspect important: parola nu poate fi mai lungă de opt caractere.
(qemu) schimbă parola vnc
Parolă: ******
După aceasta, ne putem conecta cu orice client VNC, cum ar fi Remmina, la adresa IP a serverului nostru cu parola pe care am specificat-o.


Acum nu doar că vedem posibilele erori în timpul încărcării, dar putem și să le abordăm.
La finalizarea lucrărilor, este necesar să opriți mașina virtuală. Acest lucru poate fi realizat fie din interiorul sistemului de operare, trimițând un semnal de oprire, fie prin a da comanda system_powerdown în monitorul QEMU. Aceasta va fi echivalentul unei apăsări unice a butonului de oprire: sistemul de operare din interiorul mașinii virtuale se va închide grațios.
Instalarea sistemului de operare
Mașina virtuală are acces complet la discurile serverului și, prin urmare, poate fi utilizată pentru a instala manual sistemul de operare. Singura limitare constă în cantitatea de memorie RAM: nu întotdeauna imaginea ISO poate fi plasată în memoria RAM. Vom aloca patru gigaocteți în memoria RAM pentru a stoca imaginea în /mnt:
mount -t tmpfs -o size=4G tmpfs /mnt
De asemenea, vom descărca imaginea de instalare a sistemului de operare 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
Acum putem porni VM-ul:
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
Steagul -boot d setează încărcarea de pe unitatea CD. Ne conectăm cu clientul VNC și vedem încărcătorul FreeBSD.

Deoarece pentru accesul la internet s-a folosit obținerea adresei prin DHCP, este posibil ca, după configurare, să fie necesar să ne bootăm în sistemul proaspăt instalat și să corectăm setările rețelei. În unele cazuri, poate fi necesară instalarea driverelor pentru adaptorul de rețea, deoarece placa de rețea instalată pe server și emulată în VM diferă.
Concluzie
Această metodă de organizare a accesului de la distanță la consola serverului consumă o parte din resursele serverului, totuși, nu impune cerințe speciale în ceea ce privește componentele hardware ale serverului și, prin urmare, poate fi realizată în aproape orice condiții. Utilizarea unei astfel de soluții permite semnificativ îmbunătățirea diagnosticării defecțiunilor software și restaurarea funcționalității serverului de la distanță.
Sursa: habr.com
