NILFS2 - kuulkaitsefailisĂŒsteem /home jaoks

NILFS2 - kuulkaitsefailisĂŒsteem /home jaoks

Nagu teada, kui on oht, et midagi halba juhtub, siis see kindlasti juhtub. Ehk on igaĂŒhel olnud juhtumeid, kui oluline uus fail on kogemata kustutatud vĂ”i kui tekst on juhuslikult tekstiredaktoris vĂ€lja valitud ja hĂ€vitatud.

Kui olete hostija vÔi veebisaidi omanik, siis olete tÔenÀoliselt kokku puutunud kasutajakontode vÔi oma saidi hÀkkimisega. Sellistes olukordades on oluline taastada ajaloo, leida sisse tungimise viis ja haavatavus, mida kurjategija kasutas.

Sarnaste probleemide lahendamiseks sobib suurepĂ€raselt failisĂŒsteem NILFS2.

See on olemas Linuxi tuumas alates versioonist 2.6.30.

Selle failisĂŒsteemi eripĂ€ra on see, et see sarnaneb versioonihaldussĂŒsteemile: saate alati sĂŒsteemi olekule tagasi rullida ja vaadata, milline see mĂ”ni aeg tagasi oli.

Selle funktsionaalsuse tagamiseks ei ole teil vaja seadistada Cron-skeeme, teha snapshots jne. FailisĂŒsteem NILFS2 teeb kĂ”ike ise. See ei kunagi ĂŒle kirjuta vanu andmeid ja kirjutab alati uusi andmeid uutesse ketta piirkondadesse, kui piisavalt kettaruum on vaba. TĂ€pselt kooskĂ”las Copy-on-Write pĂ”himĂ”ttega.

Tegelikult toob faili iga muutmine automaatselt kaasa uue failisĂŒsteemi pildi loomise, seega saate kasutada seda failisĂŒsteemi kui ajakapslit ja tagasi rullida failide olekuid.

Ajalugu

NILFS2 - kuulkaitsefailisĂŒsteem /home jaoksNILFS2 töötati vĂ€lja Nippon Telegraph and Telephone Corporation, mis on tegelikult riigihankija (tal on kontrollpakett) ja Jaapani suurim telekommunikatsiooniettevĂ”te. TĂ€psemalt CyberSpace Laboratories laboris, Ryusuke Konishi juhendamisel. Kuidas konkreetselt seda arendati, ei ole teada, kuid vĂ”ib eeldada, et sarnane failisĂŒsteem, millel on "ajamasina" funktsioon, on ideaalne andmete salvestamiseks, kuhu vĂ”ivad spetsiaalsed teenistused soovida sĂŒĂŒvida, et taasesitada kogu SMS-ide, e-kirjade jne ajalugu....

NILFS2 on samuti potentsiaalselt vÀga vÀÀrtuslik tööriist sisejulgeoleku teenistuste jaoks, kuna see vÔimaldab taastada kÔik kustutatud kirjad postituse andmebaasis, paljastada töötajate eksimusi, kes vÔivad hiljem proovida neid varjata, kustutades vÔi muutes oma faile.

Kuidas jÀlgida kogu suhtluse ajalugu.

Kuidas saada jĂ€lgida kogu suhtluse ajaluguLinuxi serverites (just sinna on soovitatav paigaldada NILFS2 sisemise turvalisuse eesmĂ€rkidel) kasutatakse e-kirjade salvestamiseks vĂ€ga tihti failipĂ”hist salvestusmeetodit. Nii nimetatud formaat Maildir. Piisab, kui seadistada Courier Mail Server ja konfigureerida kirjade salvestamine Maildir'is. Teine formaat mbox on suur tekstifail, mida on kerge analĂŒĂŒsida eraldi sĂ”numiteks.

Kui aga postiserver kasutab andmebaasi, siis NILFS2 annab vÔimaluse taastada tÀpse muudatuste ajakava andmebaasis ning vÔimaluse taastada andmebaasi igal hetkel. Ja seejÀrel tuleb kasutada andmebaasi tööriistu, et vaadata, mis sellel ajal seal oli...

Siiski lÀks midagi valesti. Kas Jaapani valitsus otsustas mitte kÔiki jÀlgida (nagu JarovÔi pÔhimÔte), vÔi oli NILFS2 jÔudlus traditsioonilistel HDD-del ÀÀrmiselt madal ning NILFS2 vabastati GPL litsentsi alusel ning jÔudis kiiresti Linuxi tuumasse, kuna arendajatel ei olnud erilisi pretensioone kÔrge kvalifikatsiooniga jaapanlaste kirjutatud koodi suhtes.

Millele sarnaneb NILFS2?

Kasutamise seisukohalt: versioonihaldussĂŒsteemile SVN. Iga FS kontrollpunkt on automaatselt tehtud commit, mis toimub ilma kasutaja teadmata igasuguste muudatuste korral: olgu need siis failide kustutamine, sisu muutmine vĂ”i Ă”iguste muutmine. Igal commit'il on number, mis suureneb lineaarselt.

Programmeeri vaatepunktist: ringikujuline puhversĂŒsteem. FailisĂŒsteem kogub muudatusi ja salvestab need tĂŒkki, mis on enam-vĂ€hem 8 MB (2000 * 4096, kus 2000 on elemendid plokis ja 4096 on mĂ€lu lehe suurus). Kogu ketas on jagatud sellisteks tĂŒkkideks. Kirjutamine toimub jĂ€rjestikku. Kui vabade kohtade maht lĂ”ppeb, siis vanimad pildid kustutatakse ja tĂŒkid kirjutatakse ĂŒle.

NILFS2 peamised eelised

  • Versioonilisus!!!
  • FailisĂŒsteemi taaste protseduur pĂ€rast riket on elementaarne: laadimise ajal otsitakse viimane tĂŒkk, millel on Ă”ige kontrollsumm ja sellele installitakse superplokk. See on praktiliselt hetkeline operatsioon.
  • Kuna kirjutamine toimub alati lineaarselt, siis:
    • vĂ”ib nĂ€idata hĂ€id tulemusi SSD-dega töötamisel, aeglase juhusliku kirjutamise korral.
    • NILFS2 sÀÀstab SSD ressurssi, kuna kirjutamise mitmekordistumise tegur on praktiliselt puudulik.
      TĂ€psemalt öeldes ei ĂŒleta see 2.As a result of cyclically rewriting the entire disk, NILFS2 will move immutable data to new chunks.

      If we have 10% of unchanging data on the disk, we will see a 10% increase in writing after one full rewrite. And a 50% increase when the device is 50% full during one full disk rewrite.

      The maximum write amplification factor is 2. This is quite low considering that everything is written sequentially. Overall, write amplification will be less than that of a regular fragmented FS with a 4096-byte sector. comment).

  • The potential simplicity of implementing replication on a remote NILFS2 FS

NILFS2 for /home

In Unix-like OS, there is usually a /home folder where user data is stored. Various programs save their settings related to specific users in this folder.

And who, if not users, usually makes mistakes? So, as they say, it’s a divine command to use NILFS2 on /home.

Moreover, with the widespread adoption of SSDs, we no longer have to worry about significant drops in performance when using CoW file systems.

Yes, we can create snapshots of the FS as often as we want in ZFS and BTRFS, but there's always a risk that a lost file change will be between snapshots. And snapshots need to be managed: deleting the old ones. In NILFS2, all this happens automatically, literally every few seconds.

I created a logical volume using lvcreate (in the nvme volume group, thin pool). I recommend creating it specifically on an LVM volume, as it can be easily expanded later. I suggest keeping 50% of free disk space on NILFS2 for a decent versioning depth.

lvcreate -V10G -T nvme/thin -n home

and formatted it to NILFS2:

mkfs.nilfs2 -L nvme_home /dev/nvme/home

mkfs.nilfs2 (nilfs-utils 2.1.5)
Start writing filesystem initial data to the device
      Blocksize: 4096  Device: /dev/nvme/home1  Device Size: 10737418240
Filesystem initialization succeeded !!

After that, you need to copy all data from the current /home.

Tehtud kohe pÀrast arvuti kÀivitamist, enne oma kontole sisenemist, kasutades root-kasutajat. Kui ma oleksin sisse loginud oma kasutajaga, oleksid mÔned programmid avanud sokid ja failid minu kasutaja /home/user kaustas, mis oleks teinud puhta kopeerimise keeruliseks. Nagu on teada, asub root-kasutaja kodukaust tavaliselt teel /root, seega ei avata mitte mingeid faile /home jaos.

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

Seoses viimase reaga vt. artiklit.

SeejĂ€rel muudame /etc/fstab, kus on mÀÀratud failisĂŒsteem /home jaoks, aadressil

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

Valik noatime on vajalik jĂ”udluse suurendamiseks, et failide juurde pÀÀsemisel ei muudetaks atime’i. SeejĂ€rel taaskĂ€ivitage.

NILFS2 pilditĂŒĂŒbid.

Tavalist pilti ilma kustutamise immuunsuseta nimetatakse kontrollpunktiks (checkpoint vÔi taastamiskoht).
Pilt, millel on kaitse automaatse kustutamise eest, nimetatakse jÀÀdvustamiseks (snapshot), edaspidi lihtsalt pildiks.

Kontrollpunktide vaatamine toimub kÀsu lscp abil

Piltide (jÀÀdvustuste) vaatamine lscp -s

Saame ka ise luua pilte ja kontrollpunkte igal ajal, kasutades:

mkcp [-s] seade

Taastame andmed.

NILFS vĂ”imaldab meil monteerida nii palju vanu pilte paralleelselt pĂ”hiharudega, kuid ainult lugemisreĆŸiimis.

Kogu sĂŒsteem on selline. Tavalised kontrollpunktid, mida NILFS2 loob, vĂ”ivad igal hetkel automaatselt kustutada (kui kettaruumi on vĂ€he vĂ”i nilfs_cleanerd'i reeglite tĂ”ttu), seega peame enne monteerimist kontrollpunkti jÀÀdvustama, ehk siis kindlustama pildi.

chcp ss kontrollpunkti_numbr

PÀrast seda saame pildi monteerida, nÀiteks nii:

mount -t nilfs2 -r -o cp=kontrollpunkti_numbr /dev/nvme/home /mnt/nilfs/kontrollpunkti_numbr

SeejÀrel kopeerime taastatavad failid pildist /home.
Ja hiljem eemaldame pildi kustutamatuse lipu, et tulevikus saaks automaatne prĂŒgi koguja eemaldada vanarenenud andmed:

chcp cp kontrollpunkti_numbr

NILFS2 tööriistad

Kuid see on keeruline. Jah, me saame luua failisĂŒsteeme, muuta selle suurust reaalajas, vaadata kontrollpunktide loendit, neid luua ja kustutada. Pakett nilfs2-utils pakub minimaalset meeste komplekti.

Kuna NTT lÔpetas rahastamise, on kiirem madalama taseme utiliitide puudumine, mis vÔimaldaks nÀidata failide muudatuste ajalugu ja teha erinevusi sÔnumite vahel.

Minu utiliit n2u

Selle tĂŒhimiku tĂ€itmiseks kirjutasin oma utiliidi n2u, mis oskab nĂ€idata konkreetse faili/katalooge muudatuste ajalugu:

n2u log filename

VÀlja on enam-vÀhem selline:

          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

See töötab ĂŒsna kiiresti valitud rakendusmeetodi jaoks: otsib failide erinevusi binaarse otsingumeetodiga, kiiresti mountides ja vĂ”rreldes faili/katalooge erinevates sĂ”numites.

Saate mÀÀrata kontrollpunktide vahemiku kasutades vÔtit -cp CP1:CP2 vÔi -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Saate vaadata erinevusi kontrollpunktide vahel teatud faili vÔi katalooge jaoks:

n2u diff -r cp1:cp2 filename

Saate kuvada kogu muudatuste ajalugu: kÔik erinevused teatud faili/katalooge kontrollpunktide vahel:

n2u blame [-r cp1:cp2] filename

Selles kÀsklus toetatakse ka kuupÀevavahemikke.

Kutse arendajatele

HabrĂ© on palju spetsialiste. Palun, viimistlege NILFS2. Tehke replikatsioon, madalmaise taseme kiire erinevus versioonide vahel, reflink ja muid hĂŒvesid!

Viidatud lingid

NILFS ametlik veebisait.

Reposiidid:
NILFS2.
NILFS2 utiliidid ja moodulid.

Meililistid:
E-post arendajatele NILFS2. Telli ID linux-nilfs.
Meililiidu arhiiv.

NILFS_cleanerd seadistamise juhend.
Tulemuskatsetused EXT4, Btrfs, XFS & NILFS2.

TĂ€nud:

  • NILFS2 arendajad: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi ja Satoshi Moriai. Teised peamised panustajad on: Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitry Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vyacheslav Dubeyko.
  • EttevĂ”tetele Amblin Entertainment ja Universal Pictures suurepĂ€rase filmisarja eest ‘Tagasi tulevikku’. Esimene postitus pilt on pĂ€rit filmist ‘Tagasi tulevikku — 3’.
  • EttevĂ”ttele RUVDS toetuse ja vĂ”imaluse eest avaldada oma blogis Habras.

P.S. Tuvastatud vead suunake isikliku sÔnumi kaudu. TÔstame selle eest karmaat.

Saate NILFS2 katsetada, tellides virtuaalse masina RUVDS alloleva kupongiga. KÔikidele uutele klientidele on tasuta prooviperiood 3 pÀeva.

NILFS2 - kuulkaitsefailisĂŒsteem /home jaoks

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster