NILFS2 - un sistema di fugliali à prova per /home

NILFS2 - un sistema di fugliali à prova per /home

Comu sapete, se i prublemi ponu accade, certamenti succederà. Probabilmente tutti anu avutu casi quandu un schedariu impurtante recente hè statu sguassatu accidentalmente, o u testu hè statu sceltu accidentalmente è distruttu in un editore di testu.

Sè vo site un hoster o un pruprietariu di u situ web, allora avete probabilmente scontru u pirate di i cunti d'utilizatori o u vostru situ web. In tali casi, hè impurtante restaurà a cronologia, truvà u metudu di ingressu è a vulnerabilità utilizata da l'attaccante.

U sistema di schedari NILFS2 hè perfettu per risolve tali prublemi.

Hè presente in u kernel Linux da a versione 2.6.30.

A peculiarità di stu sistema di schedariu hè chì hè simile à un sistema di cuntrollu di versione: pudete sempre retrocede u statu di u sistema è fighjate ciò chì era qualchì tempu fà.

Per furnisce sta funziunalità, ùn avete micca bisognu di cunfigurà script Cron, piglià snapshots, etc. U sistema di schedari NILFS2 faci tuttu da ellu stessu. Ùn sovrascrive mai i vechji dati è scrive sempre in novi spazii di u discu s'ellu ci hè abbastanza spaziu di discu liberu. In piena cunfurmità cù u principiu Copy-on-Write.

In fatti, ogni cambiamentu à un schedariu crea automaticamente una nova snapshot di u sistema di schedari, cusì pudete aduprà stu FS cum'è una macchina di u tempu è rinvià u statu di i schedari.

История

NILFS2 - un sistema di fugliali à prova per /homeNILFS2 hè statu sviluppatu in a prufundità di Nippon Telegraph and Telephone Corporation, in fattu, a pruprietà statale (hà una participazione di cuntrollu) è a più grande cumpagnia di telecomunicazioni in Giappone. Più specificamente, in i Laboratori CyberSpace sottu a dirigenza Ryusuke Konishi.

Hè scunnisciutu esattamente ciò chì hè statu sviluppatu, ma si pò suppone chì un tali FS, cù a so funziunalità di "macchina di u tempu", hè l'ideale per almacenà e dati chì i servizii di intelligenza puderianu vulete scavà per ripiglià tutta a stampa di SMS, email, ecc...

NILFS2 hè ancu potenzalmentu un strumentu assai preziosu per i servizii di sicurezza interna, perchè permette di ricuperà tutte e lettere sguassate in a basa di dati di mail, chì palesanu i jambs di l'impiegati chì puderanu successivamente pruvà di disguise per sguassà o cambiendu i so schedari.

Cumu pudete seguità tutta a vostra storia di currispundenza?Nant'à i servitori Linux (è questu hè induve NILFS2 deve esse installatu per scopi di sicurità internu), u metudu di u schedariu di almacenà e-mail hè assai spessu usatu per almacenà e-mail. U furmatu chjamatu Maildir. Basta à mette Courier Mail Server è cunfigurà u almacenamentu di mail in Maildir. Altru formatu mbox hè un grande schedariu di testu chì pò esse facilmente analizatu in missaghji individuali.

Se u servitore di mail usa una basa di dati, allora NILFS2 permetterà di restaurà u timing esatta di i cambiamenti di basa di dati è a capacità di restaurà a basa di dati in qualsiasi di sti mumenti. È dopu avete bisognu di utilizà l'arnesi di basa di dati per vede ciò chì era in questu puntu in u tempu ...

Tuttavia, qualcosa andò male. Sia u guvernu giapponesi hà cambiatu a so mente nantu à u monitoraghju di tutti (à u principiu di Yarovaya), o a prestazione di NILFS2 nantu à i HDD tradiziunali hè stata sottu à a parità, è NILFS2 hè stata liberata sottu a licenza GPL è intrutu assai rapidamente in u kernel Linux, postu chì. ùn ci era micca una lagnanza particulare nantu à u codice scrittu giapponese altamente qualificatu, i sviluppatori di u kernel Linux ùn l'anu micca.

Cume hè NILFS2?

Da un puntu di vista di usu: nantu à un sistema di cuntrollu di versione SVN. Ogni puntu di cuntrollu FS hè un impegnu chì hè fattu in autumàticu senza a cunniscenza di l'utilizatori ogni volta chì ci hè un cambiamentu: sia a eliminazione, cambià u cuntenutu di un schedariu o cambià i diritti d'accessu. Ogni impegnu hà un numeru chì aumenta linearmente.

Da u puntu di vista di u programatore: un buffer circular. U sistema di fugliale accumula cambiamenti è li scrive in un pezzu uguali à circa 8 MB (2000 * 4096, induve 2000 hè u numeru di elementi in u bloccu è 4096 hè a dimensione di a pagina di memoria). U discu sanu hè divisu in such chunks. A registrazione procede in sequenza. Quandu u spaziu liberu finisce, i più antichi snapshots sò sguassati è i pezzi sò soprascritti.

I boni basi di NILFS2

  • Versioning!!!
  • A prucedura per restaurà un sistema di schedari dopu un fallimentu hè simplice: quandu si carica, l'ultimu pezzu chì hà u checksum currettu hè cercatu, è un superbloccu hè stallatu nantu à questu. Questa hè una operazione quasi immediata.
  • A causa di u fattu chì a registrazione procede sempre linearmente, allora:
    • pò mostrà boni risultati quandu eseguite nantu à un SSD cù scrittura aleatoria lenta.
    • NILFS2 salva a risorsa SSD, postu chì ùn ci hè quasi nisun fattore di multiplicazione di scrittura.
      Più precisamente, ùn hè micca più di 2.U fattu hè chì quandu si riscrive in modu ciclicu u discu sanu, NILFS2 trasferisce dati immubiliabili à novi pezzi (chunks).

      Se avemu 10% di dati immubiliarii nantu à u discu, allora averemu un aumentu di scrittura di 10% cù 1 riscrittura cumpleta. Ebbè, un aumentu di 50% à 50% di pienezza di u dispusitivu per 1 riscrittura completa di u discu.

      U guadagnu massimu di scrittura hè 2. Questu hè assai bassu cunziddi chì tuttu hè scrittu in sequenza. In generale, l'animazione di scrittura serà menu di quella di un sistema di fugliale frammentatu convenzionale cù un settore di 4096 byte. (Pensu inspiratu da cumentu).

  • Facilità potenziale di implementazione di replicazione à un FS NILFS2 remoto

NILFS2 per /casa

In i sistemi operativi Unix-like, in regula, ci hè un cartulare /home in quale i dati di l'utilizatori sò almacenati. Diversi prugrammi salvanu i so paràmetri specifichi di l'utilizatori in questu cartulare.

E quale, s'ellu ùn l'utilizatori, face sbagli più spessu? Dunque, cum'è dicenu, Diu stessu hà urdinatu l'usu di NILFS2 in /home.

Inoltre, cù l'usu generalizatu di i SSD, avà ùn avemu più da preoccupassi di severi drawdowns quandu usanu sistemi di file CoW.

Iè, pudemu creà snapshots FS quante volte ci piace in ZFS è BTRFS, ma ci hè sempre u risicu chì un cambiamentu di schedariu persu finisci trà e snapshots. E l'imaghjini anu sempre esse amministratu: i vechji anu da esse sguassati. In NILFS2, tuttu questu succede automaticamente, literalmente ogni pocu seconde.

Aghju creatu un voluminu lògicu cù lvcreate (in u gruppu di volumi nvme, thin pool thin). Ju ricumandemu di creà nantu à u voluminu lvm, postu chì pò esse facilmente allargatu dopu. Vi cunsigliu di avè 50% di spaziu di discu liberu cù NILFS2 per una prufundità di versione decente.

lvcreate -V10G -T nvme/thin -n home

è furmatu in 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 !!

Dopu questu, avete bisognu di cupià tutte e dati da u /home attuale.

Aghju fattu questu subitu dopu avè avviatu l'urdinatore, prima di accede à u mo contu, cum'è l'utilizatore root. S'ellu avissi da login cum'è u mo utilizatore, certi prugrammi apreranu sockets è fugliali in u cartulare /home/user di u mo utilizatore, chì renderebbe difficiule una copia pulita. Comu sapete, u cartulare di casa per l'utilizatore root hè di solitu situatu nantu à u percorsu / root, per quessa, nisun schedariu si apre nantu à a partizione /home.

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

Per l'ultima linea, vede articulu.

In seguitu editemu /etc/fstab, in quale u sistema di fugliale per /home hè muntatu, à

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

Opzione noatime bisognu di migliurà u funziunamentu in modu chì u tempu ùn cambia cù ogni accessu à u schedariu. Dopu avemu riavviatu.

Tipi di imagine in NILFS2.

Un snapshot regulare senza immunità à l'eliminazione hè chjamatu un puntu di cuntrollu o un puntu di ricuperazione.
Una snapshot prutetta da l'auto-cancellazione hè chjamata snapshot, dopu solu una snapshot.

A visualizazione di i punti di cuntrollu hè fatta cù u cumandimu lscp

Vede i snapshots lscp -s

Pudemu creà snapshots è punti di cuntrollu noi stessi in ogni mumentu utilizendu:

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

Ripristinamu i dati.

NILFS ci permette di muntà quanti vechji snapshots quantu vulemu in parallelu cù u travagliu cù u ramu principale FS. Ma solu in modu di lettura.

Tuttu hè dispostu cusì. I punti di cuntrollu rigulari chì NILFS2 faci ponu esse sguassati automaticamente in ogni mumentu (quandu u spaziu di discu si esaurisce o secondu e regule nilfs_cleanerd), cusì prima di a stallazione duvemu cunvertisce u puntu di cuntrollu in una snapshot o, in lingua russa, catturà a snapshot.

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

Dopu quì, pudemu muntà a snapshot, per esempiu, cusì:

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

Dopu chì copiemu i fugliali restaurati da a snapshot à /home.
È in seguitu sguassate a bandiera undeletable da l'istantanea in modu chì in u futuru u cullettivu automaticu di basura pò sguassà e dati obsoleti:

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

Utilità per NILFS2

Ma questu hè u prublema. Iè, sicuru, pudemu creà un sistema di fugliale, cambià a so dimensione in linea, vede a lista di i punti di sfida, creanu è sguassate. U pacchettu nilfs2-utils furnisce un set di gentleman minimu.

Siccomu NTT hà riduciutu u so finanziamentu, ùn ci sò micca utilità veloci di livellu bassu chì vi permettenu di vede a storia di i cambiamenti di u schedariu o di fà diffarenza trà i snapshots.

A mo utilità n2u

Per riempie stu vacuu aghju scrittu a vostra utilità n2u, chì ponu vede a storia di cambiamenti à un schedariu / repertoriu specificu:

n2u log filename

L'output hè qualcosa cum'è questu:

          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

Funziona abbastanza rapidamente per u metudu di implementazione sceltu: cerca differenze trà i fugliali cù u metudu di bisezione, muntandu rapidamente è paragunendu u schedariu / repertoriu in diverse snapshots.

Pudete stabilisce una gamma di punti di cuntrollu cù a chjave -cp CP1:CP2 o -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Pudete ancu vede a diffarenza trà i punti di cuntrollu per un schedariu o cartulare specificu:

n2u diff -r cp1:cp2 filename

Pudete vede tutta a cronologia di i cambiamenti: tutte e sferenze trà i punti di cuntrollu di un schedariu / repertoriu specificu:

n2u blame [-r cp1:cp2] filename

L'intervallu di data in questu cumanda hè ancu supportatu.

Un gridu à i sviluppatori

Ci sò parechji specialisti nantu à Habré. Per piacè finisce NILFS2. Fate replicazione, diffirenza rapida à livellu bassu trà e revisioni, reflink è altre boni!

referenze

U situ ufficiale di NILFS.

Repository:
NILFS2.
utilità è moduli NILFS2.

Newsletter:
Newsletter per e-mail per i sviluppatori NILFS2. ID per l'abbonamentu linux-nilfs.
Archivio di newsletter.

Guida di configurazione di nilfs_cleanerd.
Benchmarking EXT4, Btrfs, XFS è NILFS2 Test di rendiment.

Grazie:

  • Sviluppatori NILFS2: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi è Satoshi Moriai. Altri contributori maiò sò: Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitry Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vyacheslav Dubeyko.
  • À Amblin Entertainment è Universal Pictures per una maravigliosa serie di filmi. "U ritornu à u futuru". A prima foto di u postu hè presa da u filmu "Return to the Future 3".
  • Cumpagnia RUVDS per u sustegnu è l'uppurtunità di publicà nant'à u vostru bloggu nantu à Habré.

PS Per piacè mandate ogni errore chì notate in un missaghju privatu. Aghju aumentatu u mo karma per questu.

Pudete sperimentà cù NILFS2 urdinendu una macchina virtuale da RUVDS cù u cuponu sottu. Per tutti i novi clienti ci hè un periodu di prova gratuitu di 3 ghjorni.

NILFS2 - un sistema di fugliali à prova per /home

Source: www.habr.com

Add a comment