NILFS2 este un sistem de fișiere antiglonț pentru /home

NILFS2 este un sistem de fișiere antiglonț pentru /home

După cum știți, dacă pot apărea probleme, se va întâmpla cu siguranță. Probabil că toată lumea a avut cazuri când un fișier important recent a fost șters accidental sau textul a fost selectat și distrus accidental într-un editor de text.

Dacă sunteți un hoster sau un proprietar de site, atunci probabil că ați întâlnit piratarea conturilor de utilizator sau a site-ului dvs. În astfel de cazuri, este important să restabiliți cronologia, să găsiți metoda de intrare și vulnerabilitatea folosită de atacator.

Sistemul de fișiere NILFS2 este perfect pentru rezolvarea unor astfel de probleme.

Este prezent în nucleul Linux încă din versiunea 2.6.30.

Particularitatea acestui sistem de fișiere este că este similar cu un sistem de control al versiunilor: puteți oricând să derulați înapoi starea sistemului și să vă uitați la cum era acum ceva timp.

Pentru a oferi această funcționalitate, nu trebuie să configurați scripturi Cron, să faceți instantanee etc. Sistemul de fișiere NILFS2 face acest lucru de la sine. Nu suprascrie niciodată datele vechi și scrie întotdeauna în zone noi ale discului dacă există suficient spațiu liber pe disc. În deplină conformitate cu principiul Copy-on-Write.

De fapt, orice modificare a unui fișier creează automat un nou instantaneu al sistemului de fișiere, astfel încât să puteți utiliza acest FS ca o mașină a timpului și să derulați înapoi starea fișierelor.

Poveste

NILFS2 este un sistem de fișiere antiglonț pentru /homeNILFS2 a fost dezvoltat în profunzimea Nippon Telegraph and Telephone Corporation, de fapt, de stat (deține un pachet de control) și cea mai mare companie de telecomunicații din Japonia. Mai precis, în laboratoarele CyberSpace sub conducere Ryusuke Konishi.

Nu se știe exact pentru ce a fost dezvoltat, totuși, se poate presupune că un astfel de FS, cu funcționalitatea sa „mașină a timpului”, este ideal pentru stocarea datelor în care serviciile de informații ar putea dori să le cerceteze pentru a reda întreaga imagine a SMS-uri, e-mailuri etc...

NILFS2 este, de asemenea, potențial un instrument foarte valoros pentru serviciile de securitate internă, deoarece vă permite să recuperați toate scrisorile șterse din baza de date de corespondență, dezvăluind jamburile angajaților care pot încerca ulterior să le mascheze ștergându-le sau modificându-le fișierele.

Cum vă puteți urmări întregul istoric al corespondenței?Pe serverele Linux (și aici ar trebui instalat NILFS2 în scopuri de securitate internă), metoda fișierelor de stocare a e-mailurilor este foarte des folosită pentru a stoca mesaje de e-mail. Așa-numitul format Maildir.. Destul de pus Server de e-mail curier și configurați stocarea e-mailurilor în Maildir. Alt format mbox este un fișier text mare care poate fi ușor analizat în mesaje individuale.

Dacă serverul de e-mail folosește o bază de date, atunci NILFS2 va face posibilă restabilirea momentului exact al modificărilor bazei de date și capacitatea de a restaura baza de date în oricare dintre aceste momente. Și apoi trebuie să utilizați instrumente de bază de date pentru a vedea ce era în ea la acel moment...

Cu toate acestea, ceva a mers prost. Fie guvernul japonez s-a răzgândit cu privire la monitorizarea tuturor (la principiul Yarovaya), fie performanța lui NILFS2 pe HDD-urile tradiționale s-a dovedit a fi sub egală, iar NILFS2 a fost lansat sub licență GPL și a intrat foarte repede în nucleul Linux, deoarece nu au existat plângeri speciale cu privire la codul scris în limba japoneză de înaltă calificare, dezvoltatorii nucleului Linux nu l-au avut.

Cum este NILFS2?

Din punct de vedere al utilizării: pe un sistem de control al versiunilor SVN. Fiecare punct de control FS este un commit care se face automat fără știrea utilizatorului ori de câte ori există vreo modificare: fie că este vorba despre ștergere, modificarea conținutului unui fișier sau modificarea drepturilor de acces. Fiecare commit are un număr care crește liniar.

Din punctul de vedere al programatorului: un buffer circular. Sistemul de fișiere acumulează modificări și le scrie într-o bucată egală cu aproximativ 8 MB (2000 * 4096, unde 2000 este numărul de elemente din bloc și 4096 este dimensiunea paginii de memorie). Întregul disc este împărțit în astfel de bucăți. Înregistrarea are loc secvenţial. Când spațiul liber se epuizează, cele mai vechi instantanee sunt șterse, iar bucățile sunt suprascrise.

Bunătăți de bază NILFS2

  • Versiune!!!
  • Procedura de restaurare a unui sistem de fișiere după o eroare este simplă: la încărcare, se caută ultima bucată care are suma de control corectă și este instalat un superbloc pe acesta. Aceasta este o operațiune aproape instantanee.
  • Datorită faptului că înregistrarea se desfășoară întotdeauna liniar, atunci:
    • poate arăta rezultate bune atunci când rulează pe un SSD cu scrieri aleatorii lente.
    • NILFS2 salvează resursele SSD, deoarece aproape că nu există un factor de multiplicare a scrierii.
      Mai precis, nu este mai mult de 2.Faptul este că atunci când rescrieți ciclic întregul disc, NILFS2 va transfera date neschimbabile în bucăți noi (bucăți).

      Dacă avem 10% din date neschimbate pe disc, atunci vom obține o creștere de 10% la scriere cu 1 rescrie completă. Ei bine, o creștere de 50% la 50% plinătate a dispozitivului pentru 1 rescrie completă a discului.

      Câștigul maxim de scriere este de 2. Acest lucru este foarte scăzut având în vedere că totul este scris secvențial. În general, animația de scriere va fi mai mică decât cea a unui sistem de fișiere fragmentat convențional cu un sector de 4096 de octeți. (Gând inspirat de cometariu).

  • Ușurință potențială de implementare a replicării la un FS NILFS2 la distanță

NILFS2 pentru /home

În sistemele de operare asemănătoare Unix, de regulă, există un folder /home în care sunt stocate datele utilizatorului. Diverse programe își salvează setările specifice utilizatorului în acest folder.

Și cine, dacă nu utilizatorii, greșește cel mai des? Prin urmare, după cum se spune, Dumnezeu însuși a ordonat utilizarea NILFS2 pe /home.

Mai mult decât atât, odată cu utilizarea pe scară largă a SSD-urilor, acum nu mai trebuie să ne facem griji cu privire la reducerile severe atunci când folosim sistemele de fișiere CoW.

Da, putem crea instantanee FS de câte ori ne dorim în ZFS și BTRFS, dar există întotdeauna riscul ca o schimbare a fișierului pierdut să ajungă între instantanee. Și pozele mai trebuie administrate: cele vechi trebuie șterse. În NILFS2, toate acestea se întâmplă automat, literalmente la fiecare câteva secunde.

Am creat un volum logic folosind lvcreate (în grupul de volum nvme, thin pool thin). Recomand să-l creați pe volumul lvm, deoarece poate fi ușor extins ulterior. Recomand să aveți 50% spațiu liber pe disc cu NILFS2 pentru o adâncime decentă a versiunii.

lvcreate -V10G -T nvme/thin -n home

și l-a formatat în NILFS2:

mkfs.nilfs2 -L nvme_home /dev/nvme/home

mkfs.nilfs2 (nilfs-utils 2.1.5)
Start writing file system initial data to the device
      Blocksize:4096  Device:/dev/nvme/home1  Device Size:10737418240
File system initialization succeeded !!

După aceasta, trebuie să copiați toate datele din /home curent.

Am făcut acest lucru imediat după ce am pornit computerul, înainte de a mă autentifica în contul meu, ca utilizator root. Dacă ar fi să mă conectez ca utilizator, unele programe ar deschide socket-uri și fișiere în folderul /home/user al utilizatorului meu, ceea ce ar face dificilă o copie curată. După cum știți, folderul de acasă pentru utilizatorul rădăcină se află de obicei pe calea /root, astfel încât niciun fișier nu se va deschide pe partiția /home.

mkdir /mnt/newhome
mount -t nilfs2 /dev/nvme/home /mnt/newhome
cp -a /home/. /mnt/newhome

Pentru ultima linie, vezi статью.

Apoi edităm /etc/fstab, în ​​care este montat sistemul de fișiere pentru /home, la

/dev/disk/by-label/nvme_home /home nilfs2    noatime 0 0

Opțiune noatime necesare pentru a îmbunătăți performanța, astfel încât ora să nu se schimbe la fiecare acces la fișier. Apoi repornim.

Tipuri de imagini în NILFS2.

Un instantaneu obișnuit fără imunitate la ștergere se numește punct de control sau punct de recuperare.
Un instantaneu protejat de ștergerea automată se numește instantaneu, apoi pur și simplu un instantaneu.

Vizualizarea punctelor de control se face folosind comanda lscp

Vizualizați instantanee lscp -s

Putem crea noi înșine instantanee și puncte de control în orice moment folosind:

mkcp [-s] устройство

Restaurăm datele.

NILFS ne permite să montam câte instantanee vechi dorim în paralel cu lucrul cu ramura principală FS. Dar numai în modul citire.

Totul este aranjat astfel. Punctele de control regulate pe care le face NILFS2 pot fi șterse automat în orice moment (când se epuizează spațiul pe disc sau conform regulilor nilfs_cleanerd), așa că înainte de instalare trebuie să convertim punctul de control într-un instantaneu sau, în limba rusă, să captăm instantaneul.

chcp ss номер_чекпоинта

După aceea, putem monta instantaneul, de exemplu, astfel:

mount -t nilfs2 -r -o cp=номер_чекпоинта /dev/nvme/home /mnt/nilfs/номер_чекпоинта

După care copiem fișierele restaurate din instantaneu în /home.
Și ulterior eliminăm steagul care nu poate fi șters din instantaneu, astfel încât în ​​viitor colectorul automat de gunoi să poată elimina datele învechite:

chcp cp номер_чекпоинта

Utilități pentru NILFS2

Dar aceasta este problema. Da, desigur, putem crea un sistem de fișiere, îi putem modifica dimensiunea online, putem vizualiza lista de puncte de provocare, le putem crea și șterge. Pachetul nilfs2-utils oferă un set minim de gentleman.

Deoarece NTT și-a redus finanțarea, nu există utilitare rapide de nivel scăzut care să vă permită să afișați istoricul modificărilor fișierelor sau să faceți diferențe între instantanee.

Utilitarul meu n2u

Pentru a umple acest vid am scris utilitarul dvs. n2u, care poate afișa istoricul modificărilor unui anumit fișier/director:

n2u log filename

Ieșirea este cam așa:

          CHECKPOINT        DATE     TIME     TYPE          SIZE  MODE
             1787552  2019-11-24 22:08:00    first          7079    cp
             1792659  2019-11-25 23:09:05  changed          7081    cp

Funcționează destul de repede pentru metoda de implementare aleasă: caută diferențele între fișiere folosind metoda bisecției, montând și comparând rapid fișierul/directorul în diferite instantanee.

Puteți seta o serie de puncte de control folosind cheia -cp CP1:CP2 sau -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

De asemenea, puteți vedea diferența dintre punctele de control pentru un anumit fișier sau director:

n2u diff -r cp1:cp2 filename

Puteți afișa întreaga cronologie a modificărilor: toate diferențele dintre punctele de control ale unui anumit fișier/director:

n2u blame [-r cp1:cp2] filename

Intervalul de date din această comandă este, de asemenea, acceptat.

Un strigăt către dezvoltatori

Există mulți specialiști pe Habré. Vă rugăm să terminați NILFS2. Faceți replicare, diferență rapidă la nivel scăzut între revizuiri, reflink și alte bunătăți!

referințe

Site-ul oficial NILFS.

Depozite:
NILFS2.
Utilitare și module NILFS2.

Buletine informative:
Buletin informativ prin e-mail pentru dezvoltatorii NILFS2. ID pentru abonamentul linux-nilfs.
Arhiva buletinelor informative.

ghid de instalare nilfs_cleanerd.
Evaluare comparativă a testelor de performanță EXT4, Btrfs, XFS și NILFS2.

Multumesc:

  • Dezvoltatori NILFS2: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi și Satoshi Moriai. Alți contribuitori majori sunt: ​​Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitry Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vyacheslav Dubeyko.
  • Către Amblin Entertainment și Universal Pictures pentru o serie minunată de filme. "Inapoi in viitor". Prima poză a postării este luată din filmul „Înapoi în viitor 3”.
  • companie RUVDS pentru sprijin și oportunitatea de a publica pe blogul tău pe Habré.

PS Vă rugăm să trimiteți orice erori pe care le observați într-un mesaj privat. Îmi măresc karma pentru asta.

Puteți experimenta cu NILFS2 comandând o mașină virtuală de la RUVDS cu cuponul de mai jos. Pentru toți clienții noi există o perioadă de probă gratuită de 3 zile.

NILFS2 este un sistem de fișiere antiglonț pentru /home

Sursa: www.habr.com

Adauga un comentariu