NILFS2 - neprobojni datotečni sustav za /home

NILFS2 - neprobojni datotečni sustav za /home

Kao što znate, ako se nevolja može dogoditi, sigurno će se dogoditi. Vjerojatno je svatko imao slučajeve kada je nedavna važna datoteka slučajno izbrisana ili je tekst slučajno odabran i uništen u uređivaču teksta.

Ako ste hoster ili vlasnik web stranice, onda ste se vjerojatno susreli s hakiranjem korisničkih računa ili vaše web stranice. U takvim slučajevima važno je vratiti kronologiju, pronaći način ulaska i ranjivost koju je koristio napadač.

Datotečni sustav NILFS2 savršen je za rješavanje takvih problema.

Prisutan je u Linux kernelu od verzije 2.6.30.

Posebnost ovog datotečnog sustava je da je sličan sustavu kontrole verzija: uvijek možete vratiti stanje sustava i pogledati kakvo je bilo prije nekog vremena.

Da biste omogućili ovu funkcionalnost, ne morate konfigurirati Cron skripte, snimati snimke itd. Datotečni sustav NILFS2 to radi sam. Nikada ne prepisuje stare podatke i uvijek piše na nova područja diska ako ima dovoljno slobodnog prostora na disku. U potpunosti u skladu s načelom Copy-on-Write.

Zapravo, svaka promjena datoteke automatski stvara novu snimku datotečnog sustava, tako da ovaj FS možete koristiti kao vremeplov i premotavati stanje datoteka unatrag.

Priča

NILFS2 - neprobojni datotečni sustav za /homeNILFS2 je razvijen u dubini Nippon Telegraph and Telephone Corporation, zapravo državna (ima kontrolni udio) i najveća telekomunikacijska tvrtka u Japanu. Točnije, u CyberSpace Laboratories pod vodstvom Ryusuke Konishi.

Za što je točno razvijen nepoznato je, međutim, može se pretpostaviti da je takav FS, sa svojom funkcionalnošću "vremenskog stroja", idealan za pohranjivanje podataka u koje bi obavještajne službe mogle htjeti kopati kako bi reprizirale cijelu sliku SMS, e-mailovi itd...

NILFS2 je također potencijalno vrlo vrijedan alat za unutarnje sigurnosne službe, jer vam omogućuje vraćanje svih obrisanih pisama u bazi podataka e-pošte, otkrivajući zastoje zaposlenika koji bi ih naknadno mogli pokušati prikriti brisanjem ili promjenom svojih datoteka.

Kako možete pratiti cijelu povijest dopisivanja?Na Linux poslužiteljima (a to je mjesto na kojem bi trebao biti instaliran NILFS2 radi interne sigurnosti), datotečna metoda pohranjivanja e-pošte vrlo se često koristi za pohranu poruka e-pošte. Format tzv Maildir. Dovoljno za staviti Poslužitelj kurirske pošte i konfigurirajte pohranu pošte u Maildir. Drugi format mbox je velika tekstualna datoteka koja se lako može raščlaniti na pojedinačne poruke.

Ako poslužitelj pošte koristi bazu podataka, tada će NILFS2 omogućiti vraćanje točnog vremena promjena baze podataka i mogućnost vraćanja baze podataka u bilo kojem od ovih trenutaka. A onda trebate koristiti alate baze podataka da vidite što je bilo u njoj u tom trenutku...

Međutim, nešto je pošlo po zlu. Ili se japanska vlada predomislila oko nadzora svih (a la Yarovaya princip), ili se pokazalo da je izvedba NILFS2 na tradicionalnim HDD-ovima ispod razine, a NILFS2 je objavljen pod GPL licencom i vrlo brzo je ušao u Linux kernel, jer nije bilo posebnih pritužbi na kod koji su napisali visokokvalificirani Japanci, programeri Linux kernela ga nisu imali.

Kakav je NILFS2?

S gledišta korištenja: na sustavu kontrole verzija SVN. Svaka FS kontrolna točka je commit koji se automatski izvršava bez znanja korisnika kad god dođe do bilo kakve promjene: bilo da se radi o brisanju, promjeni sadržaja datoteke ili promjeni prava pristupa. Svaki commit ima broj koji se linearno povećava.

S programerskog gledišta: kružni međuspremnik. Datotečni sustav akumulira promjene i zapisuje ih u komad veličine približno 8 MB (2000 * 4096, gdje je 2000 broj elemenata u bloku, a 4096 veličina memorijske stranice). Cijeli disk je podijeljen na takve dijelove. Snimanje se odvija uzastopno. Kada ponestane slobodnog prostora, najstarije snimke se brišu, a dijelovi se prebrišu.

Osnovne NILFS2 poslastice

  • Verziranje!!!
  • Procedura vraćanja datotečnog sustava nakon kvara je jednostavna: prilikom učitavanja traži se zadnji komad koji ima točan kontrolni zbroj i na njega se instalira superblok. Ovo je gotovo trenutna operacija.
  • Zbog činjenice da se snimanje uvijek odvija linearno, tada:
    • može pokazati dobre rezultate kada radi na SSD-u sa sporim nasumičnim pisanjem.
    • NILFS2 štedi resurs SSD-a, jer gotovo da nema faktora množenja pisanja.
      Točnije, nije više od 2.Činjenica je da će prilikom cikličkog prepisivanja cijelog diska NILFS2 prenijeti nepromjenjive podatke na nove dijelove (komadove).

      Ako imamo 10% nepromijenjenih podataka na disku, tada ćemo dobiti povećanje pisanja od 10% s 1 potpunim prepisivanjem. Pa, povećanje od 50% pri 50% popunjenosti uređaja za 1 potpuno ponovno pisanje diska.

      Maksimalni dobitak pisanja je 2. To je vrlo malo s obzirom da se sve piše sekvencijalno. Općenito, animacija pisanja bit će manja nego kod konvencionalnog fragmentiranog datotečnog sustava sa sektorom od 4096 bajta. (Misao inspirirana komentar).

  • Potencijalna jednostavnost implementacije replikacije na udaljeni NILFS2 FS

NILFS2 za /dom

U operativnim sustavima sličnim Unixu u pravilu postoji mapa /home u kojoj se pohranjuju korisnički podaci. Razni programi spremaju svoje korisničke postavke u ovu mapu.

A tko, ako ne korisnici, najčešće griješi? Stoga je, kako kažu, sam Bog naredio korištenje NILFS2 na /home.

Štoviše, uz raširenu upotrebu SSD-ova, sada više ne moramo brinuti o ozbiljnim smanjenjima kada koristimo CoW datotečne sustave.

Da, možemo stvarati FS snimke koliko god želimo u ZFS i BTRFS, ali uvijek postoji rizik da će izgubljena promjena datoteke završiti između snimaka. A slike još treba administrirati: stare treba izbrisati. U NILFS2 sve se to događa automatski, doslovno svakih nekoliko sekundi.

Stvorio sam logički volumen koristeći lvcreate (u grupi volumena nvme, tanki skup). Preporučam da ga napravite na lvm volumenu jer se kasnije može lako proširiti. Preporučujem da imate 50% slobodnog prostora na disku s NILFS2 za pristojnu dubinu verzije.

lvcreate -V10G -T nvme/thin -n home

i formatirao ga u 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 !!

Nakon toga trebate kopirati sve podatke iz trenutnog /home.

Učinio sam to odmah nakon pokretanja računala, prije nego što sam se prijavio na svoj račun, kao root korisnik. Kad bih se prijavio kao korisnik, neki bi programi otvorili utičnice i datoteke u mojoj korisničkoj mapi /home/user, što bi otežalo čistu kopiju. Kao što znate, početna mapa za root korisnika obično se nalazi na /root stazi, tako da se datoteke neće otvoriti na /home particiji.

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

Za zadnji red, vidi članak.

Zatim uredimo /etc/fstab, u kojem je montiran datotečni sustav za /home

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

Opcija noatime potreban za poboljšanje performansi tako da se vrijeme ne mijenja sa svakim pristupom datoteci. Zatim se ponovno pokrećemo.

Vrste slika u NILFS2.

Obična snimka bez imuniteta na brisanje naziva se kontrolna točka ili točka oporavka.
Snimka zaštićena od automatskog brisanja naziva se snimka, a zatim jednostavno snimka.

Pregled kontrolnih točaka se vrši pomoću naredbe lscp

Pregledajte snimke lscp -s

U svakom trenutku možemo sami izraditi snimke i kontrolne točke koristeći:

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

Vraćamo podatke.

NILFS nam omogućuje montiranje koliko god starih snimaka želimo paralelno s radom s glavnom FS granom. Ali samo u načinu čitanja.

Sve je ovako posloženo. Redovne kontrolne točke koje NILFS2 čini mogu se automatski izbrisati u bilo kojem trenutku (kada ponestane prostora na disku ili prema pravilima nilfs_cleanerda), tako da prije instalacije moramo pretvoriti kontrolnu točku u snimku ili, govoreći ruski, snimiti snimku.

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

Nakon toga možemo montirati snimku, na primjer, ovako:

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

Nakon toga kopiramo vraćene datoteke sa snimke u /home.
Zatim uklanjamo oznaku koja se ne može izbrisati sa snimke tako da u budućnosti automatski sakupljač smeća može ukloniti zastarjele podatke:

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

Pomoćni programi za NILFS2

Ali ovo je problem. Da, naravno, možemo kreirati datotečni sustav, mijenjati njegovu veličinu na mreži, pregledavati popis točaka izazova, stvarati ih i brisati. Paket nilfs2-utils pruža minimalan džentlmenski set.

Budući da je NTT ograničio svoje financiranje, ne postoje brzi uslužni programi niske razine koji vam omogućuju prikaz povijesti promjena datoteka ili pravljenje razlika između snimki.

Moj n2u uslužni program

Da popunim ovaj vakuum koji sam napisao vaš n2u uslužni program, koji može prikazati povijest promjena određene datoteke/direktorija:

n2u log filename

Izlaz je otprilike ovaj:

          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

Radi prilično brzo za odabranu metodu implementacije: traži razlike među datotekama koristeći metodu bisekcije, brzo montira i uspoređuje datoteku/direktorij u različitim snimkama.

Pomoću tipke možete postaviti niz kontrolnih točaka -cp CP1:CP2 ili -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Također možete vidjeti razliku između kontrolnih točaka za određenu datoteku ili direktorij:

n2u diff -r cp1:cp2 filename

Možete prikazati cijelu kronologiju promjena: sve razlike između kontrolnih točaka određene datoteke/direktorija:

n2u blame [-r cp1:cp2] filename

Datumski interval u ovoj naredbi također je podržan.

Vapaj programerima

Mnogo je stručnjaka na Habréu. Molimo dovršite NILFS2. Napravite replikaciju, brzu razliku niske razine između revizija, reflink i druge stvari!

reference

Službena stranica NILFS-a.

Spremišta:
NILFS2.
NILFS2 pomoćni programi i moduli.

Bilteni:
E-mail bilten za NILFS2 programere. ID za pretplatu na linux-nilfs.
Arhiva newslettera.

vodič za postavljanje nilfs_cleanerda.
Benchmarking EXT4, Btrfs, XFS & NILFS2 testovi izvedbe.

Zahvalnice:

  • NILFS2 programeri: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi i Satoshi Moriai. Drugi veliki suradnici su: Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitry Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vyacheslav Dubeyko.
  • Za Amblin Entertainment i Universal Pictures za prekrasnu seriju filmova. "Povratak u budućnost". Prva slika objave preuzeta je iz filma “Povratak u budućnost 3”.
  • Tvrtke RUVDS za podršku i mogućnost objavljivanja na vašem blogu na Habréu.

PS Sve greške koje uočite pošaljite privatnom porukom. Povećavam svoju karmu za ovo.

Možete eksperimentirati s NILFS2 naručivanjem virtualnog stroja od RUVDS uz donji kupon. Za sve nove klijente postoji besplatno probno razdoblje od 3 dana.

NILFS2 - neprobojni datotečni sustav za /home

Izvor: www.habr.com

Dodajte komentar