Hotpatching cum să faceți upgrade kernel-ul Linux, fără a restarta sistemul

Una dintre caracteristicile convenabile de * nix-sisteme - calculatorul care urmează să fie repornit după instalarea, eliminarea și actualizarea programelor. Acesta este motivul pentru servere web pot lucra netulburat de ani de zile, în timp ce în mod constant actualizate administratori treieră. Singura excepție de la această regulă este actualizarea kernel-ului: aici deja fără reîncărcare nu fac exact. Deși acest lucru nu este neapărat același lucru în Linux.

În cele mai multe reporniri, în general, nu este nimic greșit. În cazul în care acest lucru este un PC acasa sau un VDS separat, minut sau două, este puțin probabil să fie o problemă pentru utilizatorii pe timp de noapte. În plus, unele distribuții din mecanismul de sprijin caseta kexec (introdus în Linux, deoarece 2.6.27), care permite să descarce un nou nucleu din mediul curent fără a restarta serverul fizic, oferind timp minim de întrerupere.

Un alt lucru este faptul că, la momentul de virtualizare rampant un server fizic poate rula zeci de mașini virtuale - în acest caz, o repornire foarte problematică. Și apoi există sisteme în timp real, diferite simulatoare, care rulează de luni de zile, și multe altele. Actualizarea kernel-ului Linux pe zbor pentru astfel de sisteme, care sunt critice pentru timpii morți astăzi foarte mult în cerere, și, prin urmare, nu este surprinzător faptul că, în diferite momente a inceput mai multe proiecte legate de clasa de actualizare software-ului dinamic: Ksplice de la Oracle, KernelCare pe CloudLinux, kGraft de la SUSE, kpatch de la Red Hat și livepatch. Toate acestea sunt ca principiul general de funcționare, dar diferă în detaliile de implementare.

Ksplice a fost inițial limitată la patch-uri, nu utilizați modificări semantice ale structurilor de date care sunt inerente în multe patch-uri de securitate (dar nu toate). Astăzi este posibil să se utilizeze Ksplice și la schimbarea semantica, dar generează în mod automat astfel de patch-uri nu este posibilă, deoarece ar necesita Ksplice da instrucțiuni suplimentare. Dar, orientări clare pentru a face astfel de reglementări, nici dezvoltatorii, iar acest lucru necesită cunoștințe specifice, astfel încât este puțin probabil să fie administratorul de sistem sau de utilizator pentru a face acest lucru. În plus, ansamblul plasture trebuie realizat exact în același mediu ca și cel utilizat de nucleu. Diferite versiuni ale CCG a genera alt cod pentru a anticipa cum va arata un patch binar într-un astfel de caz, este imposibil. De aceea, dezvoltatorii sunt fundamentul tehnologiei a fost considerat un update de servicii speciale Ksplice Uptrack, simplifică toate operațiunile, deoarece toate patch-urile necesare pentru pregătirea și verificarea echipei speciale.

Prima de distribuție pentru a sprijini în mod oficial tehnologia a devenit de Ubuntu, utilizatorii care folosesc Ksplice Uptrack poate instala actualizări critice kernel-ul în Ubuntu 9.04 de distribuție fără a reporni și oprirea sistemului. Mai târziu, ei s-au alăturat și Fedora Linux, suport comercial Ksplice luat RHEL, CentOS, CloudLinux, Ubuntu Server și Debian GNU / Linux.

Ksplice versatil, deoarece este nevoie de nici o modificare specială a nucleului și poate lucra teoretic cu orice. Este necesar doar să instalați pachetul care conține modulul de kernel și instrumentele de spațiu-utilizator, precum și efectuarea de modificări la dosar, care va fi proiectat pe un nucleu de rulare. Actualizarea kernel-ului se face în două etape. În prima etapă, un utilitar special colectează Ksplice-crea nucleul, folosind codul sursă și patch kernel și compară imaginea rezultată cu vechiul nucleu. Ca urmare, acesta a generat un modul nucleu care conține cod modificat caracteristicile.

Hotpatching cum să faceți upgrade kernel-ul Linux, fără a restarta sistemul
Ksplice disponibil abonaților
Hotpatching cum să faceți upgrade kernel-ul Linux, fără a restarta sistemul
Instalarea actualizărilor folosind Ksplice Uptrack în Ubuntu

Rollback, dacă este necesar, se face în aceeași ordine (utilitate Ksplice-undo). În cazul în care modulul conține un patch pentru obiect care nu sunt încărcate în prezent, nu face nimic, informațiile sunt actualizate imediat ce acesta este lansat. Unele funcții de sistem de bază, utilizate în mod constant de către kernel-ul, să actualizeze folosind Ksplice nu funcționează.

Ksplice permis inițial să aplice patch-uri numai pentru kernel-ul Linux, dar Ksplice noi caracteristici implementate în Oracle Linux 7 și mai târziu la 6 vă permite să efectuați modificări la bibliotecile partajate fără a fi nevoie pentru a reporni procesele de exploatare aferente. Patching este, de asemenea, făcută pe zbor și elimină necesitatea de a reporni aplicațiile de lucru planificate lung. În prezent, capacitatea de a actualiza spatiul utilizator implementat pentru glibc și OpenSSL.

Articolul Continuare este disponibil numai abonaților

articole similare