Cum de a reporni serverul

Rezumat: Descrierea de repornire, povestea despre SysRq, ipt_SYSRQ, IPMI, PSU.

Cum de a reporni serverul? - Aceasta este o întrebare care este, de obicei, a cerut foarte bine pentru utilizatorii începători, care sunt confundate între halta, -r oprire, repornire, init 6, etc.

Un administrator cu experiență pentru a specifica o întrebare: „ce serverul nu este?“ Diferite tipuri de eșecuri server necesită diferite tipuri de repornire - și în mod incorect opțiunea selectată va duce la consecințe grave, inclusiv o vizită la web fața IPMI / DRAC / iLO la „doperezagruzit“ va cel mai ușor. Cel mai greu în practica mea a fost enikeyschiki excursie la un oraș din apropiere. În scopul de a „împinge repornire“ pe server singuratic.

În acest articol: ce împiedică repornirea serverului și cum să-l ajute.

Să începem cu repornirea teorie.

Când opriți sau reporniți serverul de manager de inițializare (în cele mai multe distribuții moderne - systemd, într-un Ubuntu 14.04 excentric este încă ciocoi, în coșul de gunoi arhaic - SysV-init) într-o anumită ordine trimite toți demonii comanda „opri“. Și cei mai mulți dintre demoni (de exemplu, baza de date, cum ar fi MySQL) știe cum să se închidă în mod corespunzător. De exemplu, pentru a finaliza toate tranzacțiile, salvați date nesalvate pe disc, etc. Pentru bazele de date în memorie, cum ar fi Redis, totul poate fi critic nu reținut - a pierdut.

Vechiul sistem initsalizatsii de așteptare pe termen nelimitat fiecare dintre script-urile de inițializare. De exemplu, în cazul în care „joker“, te-a adăugat în „oprire“ crenguță „somnul de 3600“, atunci serverul va reporni ora cu o coada. Și dacă există, poate, mai mult de o cifră, sau un program care nu vrea să se încheie, iar apoi reporniți niciodată nu se va termina.

Noua inițializare a sistemului (de fapt, nu timid - a fost doar systemd) da un timeout (tipic 120 sau 180 de secunde) pentru stocarea datelor, iar apoi finalizează procesul prin forță. În plus față de oprirea demonii, demontează sistemul de fișiere (de exemplu, aruncat de pe toate cache-uri bloc), opriți target'y iSCSI (de asemenea, cu cache skidyvaniem), etc. etc. La acea vreme shatdauna se dovedește pe termen nelimitat, este tot același curs. În plus, există cel puțin o speranță pentru completarea corectă a tuturor demonilor, cache-uri de fișiere skidyvanie, și așa mai departe. D.

Astfel, un sistem sănătos răspunsul corect la întrebarea „cum să boot-eze“ - executa repornirea sistemului. În unele cazuri - chiar și singura corectă (amendament: dacă interfața grafică cu utilizatorul pentru a face «repornirea sistemului», mediul desktop va crede că aceasta este o repornire de urgență - pentru a reincarca de modul de grafică trebuie utilizat «repornire» în interfața DE).

Ce se poate merge greșit atunci când o „repornire normală“? Ei bine, în primul rând, o parte din daemon poate începe o „tocit“ - a se vedea mai sus.

În al doilea rând, este posibil să existe o problemă cu unmounting sisteme de fișiere. Se crede că este suficient pentru a „ucide“ toate procesele, și demontează unitatea va fi ușor - este nici un folos. Dar, să-l puneți blând, nu este adevărat. Aici sunt potentiale metode de „cuie fs de unghii, astfel încât să nu Unmount:

  • fallocate / fs / schimb -l 1G; mkswap / fs / schimb; swapon / fs / schimb
  • dd if = / dev / sda of = / fs / imagine; kpartx / fs / imagine
  • losetup --find --show / fs / imagine

etc. Pe scurt: Fișierul poate fi utilizat nu numai sistemul de fișiere, dar, de asemenea, nucleul. Iar la miezul modulului poate fi ocupat în căutarea pentru răspunsuri la sensul vieții și nu au intenții de a elibera o resursă.

Decât este plină? sistem de fișiere nemontat. Systemd în această situație încearcă, încearcă, și mulaje (sistemul de fișiere nemontate). Ie repornire în această situație va fi foarte mult timp, dar încă avea loc. Dar va returna o eroare dacă umount.

Și așa se întâmplă că umount nu se poate finaliza operația din cauza faptului că ceva nu este disponibil. De exemplu, un fișier de pe nfs-server. În cazul în care un proces de apel la un astfel de fișier, acesta nu poate fi finalizat (chiar și cu un kill -9). Și în această situație, „repornire“, un server de voal. Din nou, locurile cele mai tipice din systemd „acoperite“, dar șansele de a da peste TASK_UNINTERRUPTIBLE ( „D“ în aux ps) este încă posibil.
Ce să fac? Puteți reporni fără sistem de fișiere de sincronizare și completarea orice repornire -F. Dar poate fi, de asemenea, spânzurat. Despre motivele de mai jos, dar acum despre despre consecințele: toate procesele nu sunt oprite și mor instantaneu, sesiunea nu este închisă tcp, cache-urile de disc nu sunt șterse. Cu toate acestea, kernel-ul încă realizează o mișcare în zona reboot (și, eventual, o parte din cache-urile vor fi șterse). Principalul lucru - cea mai mare parte a miezului va fi utilizat în timpul repornire. Și aceasta înseamnă că, în cazul în care nucleul poplohelo, nu ne putem întoarce.

Se întâmplă ca serverul rămâne deschis doar o singură consolă (iar acesta din urmă nu mai este deschis). De ce? Pentru că cineva are ceva podhimichil discuri șofer. Sau controler raid. Sau chiar și ceva, și apoi pe „/“ sunt numai amintiri din cache-ul de disc. Acest lucru înseamnă că trebuie doar să semene cu comanda bash (built-in), care se efectuează fără a executa procese noi.

Există metode care nu necesită nici un fișier executabil (de exemplu, citirea de pe disc lipsă) reîncărca. Este (ca root): echo b> / proc / SysRq-trigger. fișier SysRq-declanșare vă permite să „presă“ orice combinații SysRq-cheie ale (comutator de bază de urgență). Inclusiv SysRq-b, adică de urgență "repornire". Se întâmplă adesea că, după ce introduceți nu apare chiar NEWLINE - serverul este deja în repornire înainte de revenirea syscall. Acesta este cel mai puternic dintre Softovaya care trebuie să repornească.
Notă: kazhuyuscheesya corectă în această situație, „sincronizare, repornire“, adică SysRq-s, SysRq-B este o greșeală, pentru că după SysRq-S, kernel-ul poate încerca să înceapă comunicarea cu setul gol, și potențial cad într-o panică, sau rupe de la tine cele mai noi console disponibile. Dacă ați făcut o repornire de urgență - el trebuie să fie de alertă


Totul funcționează, dacă aveți consola pe server. Și dacă deschideți atârnă de conectare și nici o consolă? Acolo ipt_SYSRQ modul. SysRq vă permite să efectuați interogări pentru a obține anumite pachete de rețea (sau mai precis, pe regula iptables). Funcționează în întregime în kernel-ul, de exemplu, din FS nu. Pentru el echipa atașat send_sysrq.

S-ar crede că, în acest „totul“, dar sunt chiar mai neplăcute situându-se. De exemplu, atârnă o placă de rețea. Și repornire normală (inclusiv prin SysRq) nu ajută. Un al doilea exemplu de o situație proastă este să stea incinta, care zalipla pe un disc rău, și ignoră orice resetare a magistralei. Reboot ca totul se resetează și unități de stocare disponibile.

În acest caz, avem nevoie de un ciclu de putere (pornire / oprire). Fizic alerga la server nu sunt interesați, astfel încât să ne putem uita la posibilitățile de servere moderne: IPMI. Acesta microcomputer vstrenny, vă permite să gestionați „mare“ de calculator. El este denumit în mod obișnuit IPMI, DRAC, OIT, etc.

Noi comanda Interes: ciclu de putere șasiu ipmitool. Este mai solicitant (module de kernel ar trebui să fie încărcate, ipmitool în sine ar trebui să înceapă cu succes, IPMI să fie de lucru, etc), performanța sistemului. Dar vă permite să denatureze nutriție toate. Mai precis, aproape toate - în cazul în care serverul are jbod'y, apoi până la ei, această comandă nu ajunge. Dar, cu toate acestea, este o repornire foarte solidă și bine.

În cazul în care nucleul face poplohelo, comanda poate fi realizată la distanță (ipmitool -H ipmi.server.local ciclu de putere șasiu)

O altă situație dificilă - când planat IPMI. Dacă sistemul este astfel mai mult sau mai puțin în viață, puteți „reseta IPMI“: ipmitool mc reboot. Puteți face apoi un ciclu de alimentare pe carcasă. Pare ciudat, dar am de câteva ori în viața mea, „tras“ în repornire serverul normal de doar o astfel de secvență. (După mc repornire greu trebuie să se acorde câteva minute pentru a încărca BMC).

punctul următor „durere“ - atârnă surse de alimentare. Da, se întâmplă. Bug-uri în PSU firmware-ul corect, au nevoie să clipească. Desigur, orice repornire moale (cum ar fi ciclul de putere IPMI), în această situație nu funcționează. Tu trebuie să fie poke fizic prin cablu sau distorsiona puterea de la distanță. În această situație asistă IP-socket.

Se pare că acest lucru (fragment al panoului de control pentru servers.com/servers.ru):

Cum de a reporni serverul

Evident, în aceste condiții, repornire va avea loc pe scenariul ochon greu, dar cu siguranță va avea loc.

Cum de a reporni serverul

Cum de a reporni serverul

stimulator cardiac: cum să termin minciuna
În cazul în care rezervă anumite tipuri de resurse, este foarte important care este atât de utilizare a resurselor nu mai mult de un client, cum ar fi un DHD: este imposibil să se admită că DHD a fost montat în modul RW, cele două sisteme. Același lucru este valabil pentru sistemele de disc care sunt conectate la mai multe servere. Acest lucru a fost supravegheat de stimulatorul cardiac, dar poate să apară

Cum de a reporni serverul

Vulnerabilitate „prezență fizică“ în UEFI
Noi standarde UEFI sugerează că prezența fizică a unei persoane (operator) va proteja împotriva modificărilor automate de comportament malware de diferite tipuri de chei (care verifică valabilitatea software descărcabil), completați versiunea de BIOS greșit, etc. Logica este aceasta: pentru a permite acestor acțiuni (care va încărca

Cum de a reporni serverul

Cum de a înțelege de ce serverul a scăzut nu este conectat la monitor și tastatură?
Se întâmplă că se blochează de server, dar nu este conectat sau tastatura sau monitor. Nu am prea mult de monitor, și a constatat că serverul nu răspunde în rețea pentru a elimina monitorul de pe computerul meu pentru a se conecta la server și nu există nici o dorință și efort în cămară. În Linux, există posibilitatea de a nucleului ca Netconsole. Netconsole vă permite să trimiteți mesaje