NILFS2 yra neperšaunama /home failų sistema

NILFS2 yra neperšaunama /home failų sistema

Kaip žinia, jei gali nutikti bėdų, tai tikrai jos atsitiks. Tikriausiai kiekvienam yra buvę atvejų, kai netyčia buvo ištrintas nesenas svarbus failas arba netyčia pasirinktas tekstas ir sunaikintas teksto rengyklėje.

Jei esate prieglobos arba svetainės savininkas, tikriausiai susidūrėte su įsilaužimu į vartotojų paskyras arba savo svetainę. Tokiais atvejais svarbu atkurti chronologiją, rasti įėjimo būdą ir užpuoliko naudojamą pažeidžiamumą.

NILFS2 failų sistema puikiai tinka tokioms problemoms spręsti.

Jis buvo „Linux“ branduolyje nuo 2.6.30 versijos.

Šios failų sistemos ypatumas yra tas, kad ji panaši į versijų valdymo sistemą: visada galite grąžinti sistemos būseną atgal ir pažiūrėti, kokia ji buvo prieš kurį laiką.

Norint suteikti šią funkciją, nereikia konfigūruoti Cron scenarijų, daryti momentinių nuotraukų ir pan. NILFS2 failų sistema visa tai atlieka pati. Jis niekada neperrašo senų duomenų ir visada įrašo į naujas disko sritis, jei yra pakankamai laisvos vietos. Visiškai laikantis „Copy-on-Write“ principo.

Tiesą sakant, bet koks failo pakeitimas automatiškai sukuria naują failų sistemos momentinį vaizdą, todėl galite naudoti šią FS kaip laiko mašiną ir atsukti failų būseną.

Istorija

NILFS2 yra neperšaunama /home failų sistemaNILFS2 buvo sukurtas gilumoje Nippon Telegraph and Telephone Corporation, tiesą sakant, valstybinė (ji turi kontrolinį akcijų paketą) ir didžiausia telekomunikacijų bendrovė Japonijoje. Tiksliau, vadovaujamose kibernetinės erdvės laboratorijose Ryusuke Konishi.

Kam tiksliai jis buvo sukurtas, nežinoma, tačiau galima daryti prielaidą, kad toks FS su savo „laiko mašinos“ funkcijomis yra idealus duomenims saugoti, kuriuos žvalgybos tarnybos galbūt norėtų įsigilinti, kad atkurtų visą vaizdą. SMS, el. laiškai ir t.t.

NILFS2 taip pat potencialiai yra labai vertingas įrankis vidaus saugos tarnyboms, nes jis leidžia atkurti visus ištrintus laiškus pašto duomenų bazėje, atskleidžiant darbuotojų, kurie vėliau gali bandyti juos užmaskuoti ištrindami ar pakeisdami savo failus, kamščius.

Kaip galite sekti visą savo susirašinėjimo istoriją?Linux serveriuose (ir čia turėtų būti įdiegtas NILFS2 vidinio saugumo sumetimais) el. pašto žinutėms saugoti labai dažnai naudojamas failų saugojimo būdas. Vadinamasis formatas Maildir. Užteks įdėti Kurjerio pašto serveris ir sukonfigūruoti pašto saugyklą Maildir. Kitas formatas „mbox“ yra didelis tekstinis failas, kurį galima lengvai išanalizuoti į atskirus pranešimus.

Jei pašto serveris naudoja duomenų bazę, NILFS2 leis atkurti tikslų duomenų bazės pakeitimų laiką ir galimybę atkurti duomenų bazę bet kuriuo iš šių momentų. Tada jums reikia naudoti duomenų bazės įrankius, kad pamatytumėte, kas tuo metu joje buvo...

Tačiau kažkas nutiko. Arba Japonijos vyriausybė apsigalvojo stebėti visus (a la Yarovaya principas), arba NILFS2 našumas tradiciniuose HDD pasirodė prastesnis, o NILFS2 buvo išleistas pagal GPL licenciją ir labai greitai pateko į Linux branduolį, nes ypatingų nusiskundimų dėl kodo, parašyto aukštos kvalifikacijos japonų kalba, nebuvo, Linux branduolio kūrėjai jo neturėjo.

Kaip atrodo NILFS2?

Naudojimo požiūriu: versijų valdymo sistemoje SVN. Kiekvienas FS patikros taškas yra įsipareigojimas, kuris atliekamas automatiškai, vartotojui nežinant, kai yra kokių nors pakeitimų: ar tai būtų ištrynimas, failo turinio keitimas ar prieigos teisių pakeitimas. Kiekvienas įsipareigojimas turi skaičių, kuris didėja tiesiškai.

Programuotojo požiūriu: apskritas buferis. Failų sistema kaupia pakeitimus ir įrašo juos į maždaug 8 MB gabalą (2000 * 4096, kur 2000 yra bloko elementų skaičius, o 4096 yra atminties puslapio dydis). Visas diskas yra padalintas į tokias dalis. Įrašymas vyksta nuosekliai. Kai baigiasi laisva vieta, seniausios momentinės nuotraukos ištrinamos, o dalys perrašomos.

Pagrindinės NILFS2 gėrybės

  • Versijų kūrimas!!!
  • Failų sistemos atkūrimo po gedimo procedūra yra paprasta: įkeliant ieškoma paskutinio gabalo, kuriame yra teisinga kontrolinė suma, ir jame įdiegiamas superblokas. Tai beveik akimirksniu atliekama operacija.
  • Dėl to, kad įrašymas visada vyksta tiesiškai, tada:
    • gali parodyti gerus rezultatus, kai veikia SSD diske su lėtu atsitiktiniu įrašymu.
    • NILFS2 taupo SSD išteklius, nes beveik nėra rašymo daugybos koeficiento.
      Tiksliau, tai yra ne daugiau kaip 2.Faktas yra tas, kad cikliškai perrašant visą diską, NILFS2 perduos nekeičiamus duomenis į naujus gabalus (gabalus).

      Jei diske turime 10% nekintančių duomenų, tada 10 pilną perrašymą sulauksime 1% įrašymo padidėjimo. Na, 50 % padidinimas, kai įrenginys užpildytas 50 %, 1 kartą perrašant diską.

      Didžiausias rašymo padidėjimas yra 2. Tai labai mažas, turint omenyje, kad viskas rašoma iš eilės. Apskritai rašymo animacija bus mažesnė nei įprastos suskaidytos failų sistemos su 4096 baitų sektoriumi. (Mintį įkvėpė komentarą).

  • Galimas replikacijos nuotolinio NILFS2 FS diegimo paprastumas

NILFS2, skirtas /home

„Unix“ tipo operacinėse sistemose paprastai yra /home aplankas, kuriame saugomi vartotojo duomenys. Įvairios programos šiame aplanke išsaugo savo vartotojo nustatymus.

O kas, jei ne vartotojai, klysta dažniausiai? Todėl, kaip sakoma, pats Dievas įsakė naudoti NILFS2 /home.

Be to, plačiai naudojant SSD, dabar nebereikia jaudintis dėl didelių nuostolių naudojant CoW failų sistemas.

Taip, FS momentines nuotraukas galime kurti tiek dažnai, kiek norime, naudojant ZFS ir BTRFS, tačiau visada yra rizika, kad prarastas failo pakeitimas baigsis tarp momentinių nuotraukų. O nuotraukas dar reikia administruoti: senas reikia ištrinti. NILFS2 visa tai vyksta automatiškai, pažodžiui kas kelias sekundes.

Sukūriau loginį tūrį naudodamas lvcreate (nvme volume group, thin pool thin). Rekomenduoju jį sukurti lvm tome, nes vėliau jį galima lengvai išplėsti. Rekomenduoju turėti 50 % laisvos vietos diske naudojant NILFS2, kad būtų užtikrintas tinkamas versijos gylis.

lvcreate -V10G -T nvme/thin -n home

ir suformatavo 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 to turite nukopijuoti visus duomenis iš dabartinio /home.

Tai padariau iš karto paleidęs kompiuterį, prieš prisijungdamas prie savo paskyros kaip root naudotojas. Jei prisijungčiau kaip vartotojas, kai kurios programos atidarytų lizdus ir failus mano vartotojo aplanke /home/user, o tai apsunkintų švarią kopiją. Kaip žinote, šakninio vartotojo namų aplankas paprastai yra /root kelyje, todėl failai /home skaidinyje neatsidarys.

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

Paskutinę eilutę žr straipsnis.

Toliau redaguojame /etc/fstab, kuriame yra prijungta /home failų sistema

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

Variantas noatime reikalingas norint pagerinti našumą, kad laikas nesikeistų kiekvieną kartą pasiekiant failą. Toliau paleidžiame iš naujo.

Vaizdų tipai NILFS2.

Įprasta momentinė nuotrauka be imuniteto trynimui vadinama kontroliniu arba atkūrimo tašku.
Nuo automatinio ištrynimo apsaugota momentinė nuotrauka vadinama momentine nuotrauka, tada tiesiog momentine nuotrauka.

Patikrinimo taškų peržiūra atliekama naudojant komandą lscp

Peržiūrėti momentines nuotraukas lscp -s

Galime patys bet kada sukurti momentines nuotraukas ir patikros taškus naudodami:

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

Atkuriame duomenis.

NILFS leidžia prijungti tiek senų momentinių nuotraukų, kiek norime, lygiagrečiai dirbant su pagrindine FS šaka. Bet tik skaitymo režimu.

Viskas sutvarkyta taip. Įprasti NILFS2 atliekami kontroliniai taškai gali būti automatiškai ištrinti bet kuriuo metu (kai baigiasi vietos diske arba pagal nilfs_cleanerd taisykles), todėl prieš diegdami kontrolinį tašką turime konvertuoti į momentinį vaizdą arba, rusiškai kalbant, užfiksuoti momentinį vaizdą.

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

Po to momentinę nuotrauką galime pritvirtinti, pavyzdžiui, taip:

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

Po to nukopijuojame atkurtus failus iš momentinės nuotraukos į /home.
Vėliau iš momentinės nuotraukos pašaliname neištrinamą vėliavėlę, kad ateityje automatinis šiukšlių rinkėjas galėtų pašalinti pasenusius duomenis:

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

Priemonės, skirtos NILFS2

Bet tai yra problema. Taip, žinoma, galime sukurti failų sistemą, keisti jos dydį internete, peržiūrėti iššūkių sąrašą, juos kurti ir ištrinti. Nilfs2-utils paketas suteikia minimalų džentelmenišką rinkinį.

Kadangi NTT apribojo savo finansavimą, nėra greitų žemo lygio paslaugų, kurios leistų rodyti failų pakeitimų istoriją arba daryti skirtumus tarp momentinių vaizdų.

Mano n2u programa

Norėdami užpildyti šį vakuumą, parašiau jūsų n2u programa, kuris gali rodyti konkretaus failo / katalogo pakeitimų istoriją:

n2u log filename

Išvestis yra maždaug tokia:

          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

Tai gana greitai veikia pasirinktam diegimo būdui: ieško skirtumų tarp failų naudodama bisection metodą, greitai sumontuodama ir palygindama failą / katalogą skirtingose ​​​​snapshotose.

Naudodami klavišą galite nustatyti kontrolinių taškų diapazoną -cp CP1:CP2 arba -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Taip pat galite pamatyti skirtumą tarp konkretaus failo ar katalogo kontrolinių taškų:

n2u diff -r cp1:cp2 filename

Galite rodyti visą pakeitimų chronologiją: visus skirtumus tarp konkretaus failo/katalogo kontrolinių taškų:

n2u blame [-r cp1:cp2] filename

Šios komandos datos intervalas taip pat palaikomas.

Šauksmas kūrėjams

Habré yra daug specialistų. Užbaikite NILFS2. Atlikite replikaciją, žemo lygio greitą skirtumą tarp pataisų, relink ir kitas gėrybes!

Nuorodos

Oficiali NILFS svetainė.

Saugyklos:
NILFS2.
NILFS2 komunalinės paslaugos ir moduliai.

Naujienlaiškiai:
Naujienlaiškis NILFS2 kūrėjams el. paštu. „Linux-nilfs“ prenumeratos ID.
Naujienlaiškių archyvas.

nilfs_cleanerd sąrankos vadovas.
EXT4, Btrfs, XFS ir NILFS2 našumo testų lyginamoji analizė.

Dėkoju:

  • NILFS2 kūrėjai: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi ir Satoshi Moriai. Kiti pagrindiniai bendradarbiai: 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“ ir „Universal Pictures“ už nuostabią filmų seriją. "Atgal į ateitį". Pirmoji įrašo nuotrauka paimta iš filmo „Atgal į ateitį 3“.
  • Įmonės RUVDS už paramą ir galimybę skelbti savo tinklaraštyje apie Habré.

PS Pastebėtas klaidas prašome siųsti asmenine žinute. Dėl to padidinu savo karmą.

Galite eksperimentuoti su NILFS2 užsisakę virtualią mašiną iš RUVDS su žemiau esančiu kuponu. Visiems naujiems klientams yra nemokamas 3 dienų bandomasis laikotarpis.

NILFS2 yra neperšaunama /home failų sistema

Šaltinis: www.habr.com

Добавить комментарий