NILFS2 je sistem datoteka otporan na metke za /home

NILFS2 je sistem datoteka otporan na metke za /home

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

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

Sistem datoteka NILFS2 je savršen za rješavanje takvih problema.

Prisutan je u Linux kernelu od verzije 2.6.30.

Posebnost ovog sistema datoteka je u tome što je sličan sistemu za kontrolu verzija: uvijek možete vratiti stanje sistema i pogledati kako je bilo prije nekog vremena.

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

Zapravo, svaka promjena datoteke automatski stvara novi snimak sistema datoteka, tako da možete koristiti ovaj FS kao vremensku mašinu i premotavati stanje datoteka.

История

NILFS2 je sistem datoteka otporan na metke za /homeNILFS2 je razvijen u dubinama Nippon Telegraph and Telephone Corporation, zapravo, državna (ima kontrolni paket akcija) i najveća telekomunikacijska kompanija u Japanu. Konkretnije, u CyberSpace Laboratories pod vodstvom Ryusuke Konishi.

Za šta je tačno razvijen, nije poznato, međutim, može se pretpostaviti da je takav FS, sa svojom funkcionalnošću „vremenske mašine“, idealan za pohranjivanje podataka u koje bi obavještajne službe možda htjele da kopaju kako bi ponovno prikazale cjelokupnu sliku. SMS, mejlovi itd...

NILFS2 je također potencijalno vrlo vrijedan alat za interne sigurnosne službe, jer vam omogućava da oporavite sva izbrisana pisma u bazi podataka pošte, otkrivajući dovratke zaposlenika koji ih kasnije mogu pokušati prikriti brisanjem ili promjenom svojih datoteka.

Kako možete pratiti cjelokupnu historiju korespondencije?Na Linux serverima (a to je mjesto gdje bi NILFS2 trebao biti instaliran radi interne sigurnosti), metod datoteka za pohranjivanje e-pošte se vrlo često koristi za čuvanje e-poruka. Format tzv Maildir. Dovoljno za staviti Courier Mail Server i konfigurirajte skladište pošte u Maildir. Drugi format mbox je velika tekstualna datoteka koja se lako može raščlaniti na pojedinačne poruke.

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

Međutim, nešto je pošlo po zlu. Ili se japanska vlada predomislila o praćenju svih (a la Yarovaya princip), ili se pokazalo da su performanse NILFS2 na tradicionalnim HDD-ovima ispod nivoa, a NILFS2 je pušten pod GPL licencom i vrlo brzo je ušao u Linux kernel, jer nije bilo posebnih pritužbi na kod napisan visokokvalificiranim japanskim, programeri Linux kernela ga nisu imali.

Kakav je NILFS2?

Sa stanovišta upotrebe: na sistemu kontrole verzija SVN. Svaka FS kontrolna točka je urezivanje koje se vrši automatski bez znanja korisnika kad god dođe do bilo kakve promjene: bilo da je u pitanju brisanje, promjena sadržaja datoteke ili promjena prava pristupa. Svaki urezivanje ima broj koji se linearno povećava.

Sa stanovišta programera: kružni bafer. Sistem datoteka akumulira promjene i upisuje ih u komad od 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 komade. Snimanje se odvija uzastopno. Kada ponestane slobodnog prostora, najstariji snimci se brišu, a dijelovi se prepisuju.

Osnovne NILFS2 dobrote

  • Versioning!!!
  • Procedura za vraćanje sistema datoteka nakon kvara je jednostavna: pri učitavanju se traži posljednji komad koji ima ispravnu kontrolnu sumu i na njega se instalira superblok. Ovo je skoro 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 upisivanjem.
    • NILFS2 štedi SSD resurse, jer gotovo da nema faktora množenja upisivanja.
      Tačnije, nije više od 2.Činjenica je da će prilikom cikličkog prepisivanja cijelog diska, NILFS2 prenositi nepromjenjive podatke na nove dijelove (komadove).

      Ako imamo 10% nepromjenjivih podataka na disku, tada ćemo dobiti povećanje pisanja za 10% uz 1 kompletno ponovno upisivanje. Pa, povećanje od 50% pri 50% popunjenosti uređaja za 1 potpuno ponovno upisivanje diska.

      Maksimalni dobitak pisanja je 2. Ovo je vrlo malo s obzirom na to da se sve upisuje sekvencijalno. Generalno, animacija pisanja će biti manja od one kod konvencionalnog fragmentiranog sistema datoteka sa sektorom od 4096 bajta. (Misao inspirisana komentar).

  • Potencijalna lakoća implementacije replikacije na udaljeni NILFS2 FS

NILFS2 za /home

U operativnim sistemima sličnim Unixu, po pravilu postoji /home folder u koji se pohranjuju podaci korisnika. Razni programi spremaju svoje korisničke postavke u ovu fasciklu.

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

Štaviše, sa široko rasprostranjenom upotrebom SSD-ova, sada više ne moramo da brinemo o ozbiljnim gubicima kada koristimo CoW fajl sisteme.

Da, možemo kreirati FS snimke onoliko često koliko ž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 dešava automatski, bukvalno svakih nekoliko sekundi.

Napravio sam logički volumen koristeći lvcreate (u grupi volumena nvme, tanki bazen tanki). Preporučujem da ga kreirate na lvm volumenu, jer se kasnije može lako proširiti. Preporučujem da imate 50% slobodnog prostora na disku sa 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.

Ovo sam uradio odmah nakon pokretanja računara, pre nego što sam se prijavio na svoj nalog, kao root korisnik. Ako bih se prijavio kao moj korisnik, neki programi bi otvorili utičnice i datoteke u /home/user folderu mog korisnika, što bi otežalo čistu kopiju. Kao što znate, početna fascikla za root korisnika se obično nalazi na /root putanji, tako da se na /home particiji neće otvoriti nijedan fajl.

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

Za posljednji red, vidi članak.

Zatim uređujemo /etc/fstab, u koji je montiran sistem datoteka za /home

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

Opcija noatime potrebno za poboljšanje performansi tako da se vrijeme ne mijenja sa svakim pristupom fajlu. Zatim restartujemo.

Vrste slika u NILFS2.

Redovni snimak bez imuniteta na brisanje naziva se kontrolna tačka ili tačka oporavka.
Snimak zaštićen od automatskog brisanja naziva se snimak, a zatim jednostavno snimak.

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

Pogledajte snimke lscp -s

U svakom trenutku možemo sami kreirati snimke i kontrolne tačke koristeći:

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

Vraćamo podatke.

NILFS nam omogućava da montiramo onoliko starih snimaka koliko želimo paralelno sa radom sa glavnom FS granom. Ali samo u načinu čitanja.

Sve je ovako sređeno. Redovne kontrolne tačke koje NILFS2 pravi mogu se automatski obrisati u bilo kom trenutku (kada ponestane prostora na disku ili u skladu sa pravilima nilfs_cleanerd), tako da pre instalacije moramo da konvertujemo kontrolnu tačku u snimak ili, na ruskom jeziku, snimimo snimak.

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

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

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

Nakon toga kopiramo vraćene datoteke sa snimka u /home.
I nakon toga uklanjamo zastavicu bez brisanja sa snimke tako da u budućnosti automatski sakupljač smeća može ukloniti zastarjele podatke:

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

Uslužni programi za NILFS2

Ali ovo je problem. Da, naravno, možemo kreirati sistem datoteka, promijeniti njegovu veličinu na mreži, pogledati listu izazovnih tačaka, kreirati ih i izbrisati. Paket nilfs2-utils pruža minimalan džentlmenski set.

Pošto je NTT smanjio svoje finansiranje, ne postoje brzi uslužni programi niskog nivoa koji vam omogućavaju da prikažete istoriju promena datoteka ili napravite razliku između snimaka.

Moj n2u uslužni program

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

n2u log filename

Izlaz je otprilike ovako:

          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 između datoteka koristeći metodu bisekcije, brzo montira i uspoređuje datoteku/direktorij u različitim snimcima.

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

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

n2u diff -r cp1:cp2 filename

Možete prikazati cjelokupnu hronologiju promjena: sve razlike između kontrolnih tačaka određene datoteke/direktorijuma:

n2u blame [-r cp1:cp2] filename

Interval datuma u ovoj naredbi je također podržan.

Vapaj za programere

Na Habréu ima mnogo stručnjaka. Molimo završite NILFS2. Napravite replikaciju, brzu razliku niskog nivoa između revizija, reflink i druge dobrote!

reference

Zvanična web stranica NILFS-a.

Spremišta:
NILFS2.
NILFS2 uslužni programi i moduli.

bilteni:
E-mail bilten za NILFS2 programere. ID za linux-nilfs pretplatu.
Arhiva biltena.

nilfs_cleanerd vodič za postavljanje.
Benchmarking EXT4, Btrfs, XFS & NILFS2 testovi performansi.

Zahvalnice:

  • NILFS2 programeri: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi i Satoshi Moriai. Ostali glavni saradnici 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 divnu seriju filmova. "Povratak u budućnost". Prva slika posta je preuzeta iz filma “Povratak u budućnost 3”.
  • Kompanije 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 eksperimentisati sa NILFS2 tako što ćete naručiti virtuelnu mašinu od RUVDS sa kuponom ispod. Za sve nove klijente postoji besplatan probni period od 3 dana.

NILFS2 je sistem datoteka otporan na metke za /home

izvor: www.habr.com

Dodajte komentar