NILFS2 je neprebojen datotečni sistem za /home

NILFS2 je neprebojen datotečni sistem za /home

Kot veste, če se lahko zgodijo težave, se bodo zagotovo zgodile. Verjetno je vsakdo imel primere, ko je bila nedavno pomembna datoteka pomotoma izbrisana ali pa je bilo besedilo pomotoma izbrano in uničeno v urejevalniku besedil.

Če ste gostitelj ali lastnik spletne strani, potem ste verjetno že kdaj naleteli na vdor v uporabniške račune ali vašo spletno stran. V takih primerih je pomembno obnoviti kronologijo, najti način vstopa in ranljivost, ki jo je uporabil napadalec.

Datotečni sistem NILFS2 je popoln za reševanje takšnih težav.

V jedru Linuxa je prisoten od različice 2.6.30.

Posebnost tega datotečnega sistema je, da je podoben sistemu za nadzor različic: vedno lahko vrnete stanje sistema nazaj in pogledate, kakšen je bil pred časom.

Za zagotavljanje te funkcije vam ni treba konfigurirati skriptov Cron, narediti posnetkov itd. Datotečni sistem NILFS2 to naredi sam. Nikoli ne prepiše starih podatkov in vedno piše na nova področja diska, če je na disku dovolj prostega prostora. V popolnem skladu z načelom Copy-on-Write.

Pravzaprav vsaka sprememba datoteke samodejno ustvari nov posnetek datotečnega sistema, tako da lahko ta FS uporabite kot časovni stroj in previjate stanje datotek nazaj.

Zgodba

NILFS2 je neprebojen datotečni sistem za /homeNILFS2 je bil razvit v globinah Nippon Telegraph and Telephone Corporation, pravzaprav državno (ima kontrolni delež) in največje telekomunikacijsko podjetje na Japonskem. Natančneje v CyberSpace Laboratories pod vodstvom Ryusuke Konishi.

Za kaj točno je bil razvit, ni znano, lahko pa domnevamo, da je takšen FS s svojo funkcionalnostjo »časovnega stroja« idealen za shranjevanje podatkov, v katere bi se obveščevalne službe morda želele poglobiti, da bi prikazale celotno sliko SMS, e-pošta itd...

NILFS2 je tudi potencialno zelo dragoceno orodje za interne varnostne službe, saj omogoča obnovitev vseh izbrisanih pisem v poštni bazi, s čimer razkrije zastoje zaposlenih, ki jih lahko naknadno poskušajo prikriti z brisanjem ali spreminjanjem datotek.

Kako lahko spremljate celotno zgodovino dopisovanja?Na strežnikih Linux (in to je mesto, kjer bi moral biti zaradi notranje varnosti nameščen NILFS2) se za shranjevanje e-poštnih sporočil zelo pogosto uporablja datotečni način shranjevanja e-pošte. Tako imenovani format Maildir. Dovolj za dajanje Kurirski poštni strežnik in konfigurirajte shranjevanje pošte v Maildir. Druga oblika mbox je velika besedilna datoteka, ki jo je mogoče enostavno razčleniti na posamezna sporočila.

Če poštni strežnik uporablja bazo podatkov, bo NILFS2 omogočil obnovitev točnega časa sprememb baze podatkov in možnost obnovitve baze podatkov v katerem koli od teh trenutkov. In potem morate uporabiti orodja baze podatkov, da vidite, kaj je bilo v njej v tistem trenutku ...

Vendar je šlo nekaj narobe. Ali si je japonska vlada premislila glede spremljanja vseh (načelo Yarovaya) ali pa se je izkazalo, da je zmogljivost NILFS2 na tradicionalnih trdih diskih podvržena in je bil NILFS2 izdan pod licenco GPL in je zelo hitro vstopil v jedro Linuxa, saj ni bilo posebnih pritožb glede kode, ki so jo napisali visokokvalificirani japonci, razvijalci jedra Linuxa je niso imeli.

Kakšen je NILFS2?

Z vidika uporabe: na sistemu za nadzor različic SVN. Vsaka kontrolna točka FS je potrditev, ki se izvede samodejno brez vednosti uporabnika, kadar koli pride do kakršne koli spremembe: naj bo to brisanje, spreminjanje vsebine datoteke ali spreminjanje pravic dostopa. Vsaka potrditev ima število, ki linearno narašča.

S programerskega vidika: krožni medpomnilnik. Datotečni sistem kopiči spremembe in jih zapisuje v kos, ki je enak približno 8 MB (2000 * 4096, kjer je 2000 število elementov v bloku, 4096 pa velikost pomnilniške strani). Celoten disk je razdeljen na takšne dele. Snemanje poteka zaporedno. Ko zmanjka prostega prostora, se najstarejši posnetki izbrišejo, kosi pa prepišejo.

Osnovne dobrote NILFS2

  • Versioning!!!
  • Postopek za obnovitev datotečnega sistema po okvari je preprost: pri nalaganju se išče zadnji kos, ki ima pravilno kontrolno vsoto, in nanj se namesti superblok. To je skoraj takojšnja operacija.
  • Ker snemanje vedno poteka linearno, potem:
    • lahko pokaže dobre rezultate pri delovanju na SSD s počasnim naključnim pisanjem.
    • NILFS2 prihrani vir SSD, saj skoraj ni več faktorja pisanja.
      Natančneje, ni več kot 2.Dejstvo je, da bo NILFS2 pri cikličnem prepisovanju celotnega diska prenesel nespremenljive podatke na nove dele (kose).

      Če imamo na disku 10% nespremenjenih podatkov, bomo z 10 popolnim ponovnim pisanjem dobili 1% povečanje zapisovanja. No, 50% povečanje pri 50% polnosti naprave za 1 popolno ponovno pisanje diska.

      Največji dobiček pri zapisovanju je 2. To je zelo nizko glede na to, da se vse piše zaporedno. Na splošno bo animacija pisanja manjša kot pri običajnem fragmentiranem datotečnem sistemu s 4096-bajtnim sektorjem. (Misel po navdihu komentar).

  • Potencialna enostavnost implementacije replikacije na oddaljeni NILFS2 FS

NILFS2 za /home

V operacijskih sistemih, podobnih Unixu, praviloma obstaja mapa /home, v kateri so shranjeni uporabniški podatki. V to mapo shranjujejo svoje uporabniške nastavitve različni programi.

In kdo, če ne uporabniki, se najpogosteje zmoti? Zato, kot pravijo, je sam Bog ukazal uporabo NILFS2 na /home.

Poleg tega nam s široko uporabo SSD diskov zdaj ni več treba skrbeti zaradi resnih izpadov pri uporabi datotečnih sistemov CoW.

Da, v ZFS in BTRFS lahko poljubno pogosto ustvarjamo posnetke FS, vendar vedno obstaja tveganje, da bo izgubljena sprememba datoteke končala med posnetki. In slike je treba še urediti: stare je treba izbrisati. V NILFS2 se vse to zgodi samodejno, dobesedno vsakih nekaj sekund.

Ustvaril sem logični nosilec z uporabo lvcreate (v skupini nosilcev nvme, thin pool thin). Priporočam, da ga ustvarite na nosilcu lvm, saj ga je mogoče pozneje enostavno razširiti. Priporočam, da imate 50 % prostega prostora na disku z NILFS2 za spodobno globino različice.

lvcreate -V10G -T nvme/thin -n home

in ga formatiral v 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 !!

Po tem morate kopirati vse podatke iz trenutnega /home.

To sem naredil takoj po zagonu računalnika, preden sem se prijavil v svoj račun kot root uporabnik. Če bi se prijavil kot moj uporabnik, bi nekateri programi odprli vtičnice in datoteke v moji uporabniški mapi /home/user, kar bi otežilo čisto kopijo. Kot veste, se domača mapa za uporabnika root običajno nahaja na poti /root, zato se na particiji /home ne odpre nobena datoteka.

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

Za zadnjo vrstico glej статью.

Nato uredimo /etc/fstab, v katerem je nameščen datotečni sistem za /home

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

Možnost noatime potrebno za izboljšanje zmogljivosti, tako da se atime ne spreminja z vsakim dostopom do datoteke. Nato znova zaženemo.

Vrste slik v NILFS2.

Običajni posnetek brez odpornosti proti izbrisu se imenuje kontrolna točka ali obnovitvena točka.
Posnetek, zaščiten pred samodejnim brisanjem, se imenuje posnetek, nato preprosto posnetek.

Ogled kontrolnih točk se izvaja z ukazom lscp

Ogled posnetkov lscp -s

Posnetke in kontrolne točke lahko kadar koli ustvarimo sami z uporabo:

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

Obnavljamo podatke.

NILFS nam omogoča, da vzporedno z delom z glavno vejo FS montiramo kolikor želimo starih posnetkov. Vendar samo v načinu branja.

Vse je urejeno tako. Navadne kontrolne točke, ki jih naredi NILFS2, se lahko samodejno izbrišejo kadarkoli (ko zmanjka prostora na disku ali v skladu s pravili nilfs_cleanard), zato moramo pred namestitvijo kontrolno točko pretvoriti v posnetek ali, v ruskem jeziku, zajeti posnetek.

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

Po tem lahko posnetek namestimo na primer takole:

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

Po tem kopiramo obnovljene datoteke iz posnetka v /home.
Nato s posnetka odstranimo zastavico za neizbris, tako da lahko v prihodnosti samodejni zbiralnik smeti odstrani zastarele podatke:

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

Pripomočki za NILFS2

Ampak to je problem. Da, seveda lahko ustvarimo datotečni sistem, spremenimo njegovo velikost na spletu, si ogledamo seznam izzivalnih točk, jih ustvarimo in izbrišemo. Paket nilfs2-utils zagotavlja minimalen nabor za gospoda.

Ker je NTT omejil svoje financiranje, ni hitrih pripomočkov na nizki ravni, ki bi omogočali prikaz zgodovine sprememb datotek ali razlikovanje med posnetki.

Moj pripomoček n2u

Da bi zapolnil ta vakuum sem napisal vaš pripomoček n2u, ki lahko prikaže zgodovino sprememb določene datoteke/imenika:

n2u log filename

Rezultat je nekaj takega:

          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

Deluje precej hitro za izbrano metodo implementacije: išče razlike med datotekami z metodo bisekcije, hitro priklopi in primerja datoteko/imenik v različnih posnetkih.

S tipko lahko nastavite vrsto kontrolnih točk -cp CP1:CP2 ali -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Vidite lahko tudi razliko med kontrolnimi točkami za določeno datoteko ali imenik:

n2u diff -r cp1:cp2 filename

Prikažete lahko celotno kronologijo sprememb: vse razlike med kontrolnimi točkami določene datoteke/imenika:

n2u blame [-r cp1:cp2] filename

Podprt je tudi datumski interval v tem ukazu.

Krik za razvijalce

Na Habréju je veliko strokovnjakov. Prosim dokončajte NILFS2. Naredite replikacijo, nizkonivojsko hitro razlikovanje med revizijami, povratno povezavo in druge dobrote!

reference

Uradna spletna stran NILFS.

Repozitoriji:
NILFS2.
Pripomočki in moduli NILFS2.

Glasila:
E-novice za razvijalce NILFS2. ID za naročnino na linux-nilfs.
Arhiv glasila.

vodnik za namestitev nilfs_cleanard.
Primerjalna analiza EXT4, Btrfs, XFS & NILFS2 preizkusi zmogljivosti.

Zahvala:

  • Razvijalci NILFS2: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi in Satoshi Moriai. Drugi večji sodelavci so: 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 in Universal Pictures za čudovito serijo filmov. "Nazaj v prihodnosti". Prva slika objave je vzeta iz filma "Nazaj v prihodnost 3".
  • Podjetja RUVDS za podporo in možnost objave na vašem spletnem dnevniku na Habréju.

PS Opažene napake pošljite v zasebno sporočilo. Za to povečam svojo karmo.

Z NILFS2 lahko eksperimentirate tako, da naročite virtualni stroj pri RUVDS s spodnjim kuponom. Za vse nove stranke je na voljo brezplačno preizkusno obdobje 3 dni.

NILFS2 je neprebojen datotečni sistem za /home

Vir: www.habr.com

Dodaj komentar