NILFS2 — kuulitĂ”kke failisĂŒsteem /home jaoks

NILFS2 — kuulitĂ”kke failisĂŒsteem /home jaoks

Nagu teada, kui hĂ€da vĂ”ib juhtuda, siis see kindlasti juhtub. Kindlasti on igaĂŒhel olnud juhtumeid, kui on kogemata kustutatud vĂ€rske ja oluline fail vĂ”i eemaldatud tekst tekstiredaktorist.

Kui olete hostija vÔi veebisaidi omanik, olete ilmselt silmitsi seisnud kasutajakontode vÔi oma saidi hÀkkimisega. Sellistes olukordades on oluline taastada ajalugu, leida pÀÀsenud tee ja haavatavus, mida kurjategija kasutas.

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

See on olemas Linuxi tuumas alates versioonist 2.6.30.

Antud failisĂŒsteemi iseloomustab see, et see on sarnane versioonihaldussĂŒsteemiga: teil on alati vĂ”imalus sĂŒsteemi olek tagasi kerida ja vaadata, milline see mĂ”ni aeg tagasi oli.

Selle funktsionaalsuse tagamiseks ei pea te seadistama Cron-skripte, tegemist ei ole töötlussnapshote jne. FailisĂŒsteem NILFS2 teeb seda kĂ”ike ise. See ei kirjuta kunagi vanu andmeid ĂŒle ning kirjutab alati uusi andmeid uutesse ketta aladesse, kui see on piisavalt vaba ketta ruumi. TĂ€pselt vastavalt Copy-on-Write pĂ”himĂ”ttele.

Tegelikult, iga faili muutmine toob automaatselt kaasa uue failisĂŒsteemi snapshot'i loomise, seega vĂ”ite seda failisĂŒsteemi kasutada nagu ajamasinat, et tagasi kerida failide seisundit.

Ajalugu

NILFS2 — kuulitĂ”kke failisĂŒsteem /home jaoksNILFS2 on vĂ€lja töötatud Nippon Telegraph and Telephone Corporation, mis on tegelikult riigi (omab kontrollpaketti) ja Jaapani suurim telekommunikatsioonifirma. TĂ€psemalt öeldes, CyberSpace Laboratories laboris Ryusuke Konishi juhtimisel. Ryusuke Konishi.

TĂ€pselt, mille jaoks see vĂ€lja töötati, ei ole teada, kuid vĂ”ib eeldada, et selline failisĂŒsteem oma “ajamasina” funktsionaalsusega on ideaalne andmete salvestamiseks, milles vĂ”ib tekkida soov uurida neid, et taasesitada kogu SMS-de, e-kirjade jne pilti.

NILFS2 on samuti potentsiaalselt vÀga vÀÀrtuslik tööriist sisejulgeoleku teenuste jaoks, kuna see vÔimaldab taastada kÔik kustutatud kirjad postituste andmebaasis, paljastada töötajate eksimusi, kes vÔivad seejÀrel proovida neid maskida, eemaldades vÔi muutes oma faile.

Kuidas jĂ€lgida kogu suhtluse ajaluguLinuxi serverites (ja just sinna tasub NILFS2 paigaldada sisejulgeoleku eesmĂ€rkidel) kasutatakse e-kirjade salvestamiseks sageli failipĂ”hist salvestusmeetodit. Nii öeldakse Maildir. Piisab, kui paigaldada Courier Mail Server ja konfigureerida kirjade salvestamine Maildir formaadis. Teine formaat mbox esindab suurt tekstifaili, mida on lihtne analĂŒĂŒsida eraldi sĂ”numiteks.

Kui postiserver kasutab andmebaasi, siis NILFS2 vÔimaldab taastada tÀpset muudatuste ajakava ja taastada andmebaasi mis tahes nendel hetkedel. Edasi tuleb kasutada andmebaasi tööriistu, et vaadata, mis seal sellel ajahetkel oli...

Kuid midagi lÀks valesti. Kas Jaapani valitsus otsustas mitte enam kÔiki jÀlgida (nagu Yarovi printsiip), vÔi osutus NILFS2 jÔudlus traditsioonilistel HDD-del madalaks ning NILFS2 anti vÀlja GPL litsentsi all, nii et see pÀÀses kiiresti Linuxi tuumasse, kuna Linuxi tuumaarendajatel ei olnud mingeid erilisi pretensioone Jaapani kÔrgelt kvalifitseeritud inimeste kirjutatud koodi osas.

Millele NILFS2 sarnaneb?

Kasutamise tasandil: nagu versioonihaldussĂŒsteem SVN. Iga failisĂŒsteemi kontrollpunkt on automaatne kommit, mis toimub kasutaja teadmata igasuguse muutuse korral: olgu see siis faili kustutamine, sisu muutmine vĂ”i juurdepÀÀsuĂ”iguste muutmine. Igal kommitil on number, mis suureneb lineaarselt.

Programmeerija vaatepunktist: nagu ringikujuline puhver. FailisĂŒsteem kogub muudatusi ja kirjutab need umbes 8 MB suuruses tĂŒki (2000 * 4096, kus 2000 on elementide arv plokis ja 4096 on mĂ€lu lehe suurus). Kogu ketas jagatakse sellisteks tĂŒkkideks. Kirjutamine toimub jĂ€rjestikku. Kui vaba ruum lĂ”ppeb, siis vanimad pildid kustutatakse ja tĂŒkid kirjutatakse ĂŒle.

NILFS2 peamised eelised

  • Versioonitus!!!
  • Faili sĂŒsteemi taastamise protseduur on lihtne: kĂ€ivitamisel otsitakse viimast plokki, millel on Ă”ige kontrollsumma, ja sellele seotakse superplokk. See on praktiliselt kohene operatsioon.
  • Kuna kirjutamine toimub alati suunaline, siis:
    • vĂ”ib SSD-de kasutamisel nĂ€idata hĂ€id tulemusi, aeglase juhusliku kirjutamise korral.
    • NILFS2 sÀÀstab SSD ressursse, kuna kirjutamise mitmekordistamise tegur on peaaegu puuduv.
      TĂ€psemalt öeldes, see ei ĂŒleta kahte.Asi on selles, et NILFS2 tsĂŒklilise uuesti kirjutamise korral kannab see muutumatud andmed uutesse plokkidesse.

      Kui meil on kettal 10% muutumatuid andmeid, saame 10% kirjutamise kasvu ĂŒhe tĂ€ieliku kirjutamise korral. Ja 50% kasu 50% seadme tĂ€ituvuse puhul ĂŒhe tĂ€ieliku kettakirjutamise korral.

      Kirjutamise maksimaalne kordusfaktor on 2. See on vĂ€ga vĂ€he, arvestades, et kĂ”ik kirjutatakse jĂ€rjestikku. Üldiselt on kirjutamise mitmekordistamine vĂ€iksem kui tavalisel killustatud failisĂŒsteemil, mille sektori suurus on 4096 baiti. (MĂ”tted toob esile kommentaar).

  • Kaug-NILFS2 failisĂŒsteemi replikatsiooni potentsiaalne lihtsus

NILFS2 jaoks /home

Unix-pĂ”histes operatsioonisĂŒsteemides on tavaliselt kaust /home, kuhu salvestatakse kasutajate andmed. Erinevad programmid salvestavad selles kaustas oma seadistused, mis on seotud konkreetse kasutajaga.

Kes, kui mitte kasutajad, teeb kÔige rohkem vigu? SeetÔttu, nagu öeldakse, on Jumal ise soovitanud kasutada /home jaoks NILFS2.

Veelgi enam, SSD-de laialdase leviku tĂ”ttu ei pea me nĂŒĂŒd muretsema suurte languste pĂ€rast CoW failisĂŒsteemide kasutamisel.

Jah, failisĂŒsteemi ehk FS-i hetkpilte (snapshot'e) saame luua nii ZFS-is kui ka BTRFS-is nii sageli kui soovime, kuid alati on oht, et kaotatud faili muudatus jÀÀb hetkpiltide vahele. Ja hetkpilte tuleb veel hallata: vanu eemaldada. NILFS2-s toimub see kĂ”ik automaatselt, sĂ”na otseses mĂ”ttes iga paar sekundi tagant.

Loomiseks kasutasin lvcreate kĂ€sku (nvme grupis, Ă”huke bassein). Soovitan luua see just LVM-i mahus, kuna hiljem saab seda kergesti laiendada. Soovitan NILFS2-l diskil hoida 50% vabast mahust, et tagada korralik versioonide sĂŒgavus.

lvcreate -V10G -T nvme/thin -n home

ja vormindasin selle NILFS2-se:

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

mkfs.nilfs2 (nilfs-utils 2.1.5)
Alustatakse failisĂŒsteemi algsete andmete kirjutamist seadmesse
      Blocksize: 4096 Seade: /dev/nvme/home1 Seadmest suurus: 10737418240
FailisĂŒsteemi initsialiseerimine Ă”nnestus !!

SeejÀrel tuleb kopeerida kÔik andmed praegusest /home'ist.

Tegin seda kohe pÀrast arvuti kÀivitamist, enne oma kontole sisselogimist, root kasutaja alt. Kui oleksin sisse loginud oma kasutaja alt, oleksid mÔned programmid avanud sokette ja faile minu kasutaja kaustas /home/user, mis oleks puhta kopeerimise keeruliseks teinud. Nagu teada, asub root kasutaja kodu kaust tavaliselt teel /root, seega ei avata /home osas mingit faili.

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

Viimase rea osas vt. artiklile.

SeejĂ€rel redigeerime /etc/fstab, kuhu on monteeritud failisĂŒsteem /home jaoks, jĂ€rgmisega

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

Valik noatime on vajalik jÔudluse parandamiseks, et failide juurdepÀÀsu korral ei muudetaks atime'i. Edasi taaskÀivitame.

NILFS2 snapshots tĂŒĂŒbid.

Tavaline snapshot ilma kustutamise immuunsuseta nimetatakse kontrollpunktiks (checkpoint vÔi taastumise punkt).
Kaitstud snapshot automaatse kustutamise vastu nimetatakse lihtsalt snapshot'iks.

Kontrollige kontrollpunkte kÀsu lscp abil

Kontrollige snapsid (snepĆĄotid) lscp -s

Saame ise luua snapsid ja kontrollpunkte igal ajal, kasutades:

mkcp [-s] seade

Taastame andmed.

NILFS vĂ”imaldab meil mountida nii palju vanu snapsid, kui soovime, samal ajal töötades pĂ”hiharude FS-iga. Kuid ainult lugemisreĆŸiimis.

Asjad on korraldatud nii. Tavalised kontrollpunktid, mida NILFS2 teeb, vÔivad igal ajal automaatselt kustutada (kui kettaruumi ei jÀtku vÔi nilfs_cleanerdi reeglite jÀrgi), seega enne mountimist peame kontrollpunkti muundama snapshotiks vÔi, nagu venekeelselt öeldakse, fikseerima snapsi.

chcp ss kontrollpunkti_numbr

PÀrast seda saame mountida snap, nÀiteks nii:

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

PĂ€rast seda kopeerime taastatavad failid snapshotsse kausta /home.
Ja hiljem eemaldame snapshotilt kustutamatuse sildi, et tulevikus automaatne prĂŒgikoguja saaks kustutada vananenud andmeid:

chcp cp kontrollpunkti_numbr

NILFS2 tööriistad

Siin on probleem. Jah, me saame luua FS, muuta selle suurust reaalajas, vaadata checkpointide loendit ning neid luua ja kustutada. Pakett nilfs2-utils pakub minimaalset tööriistade komplekti.

Kuna NTT on rahastamise lÔpetanud, ei ole kiireid madalama taseme tööriistu, mis vÔimaldaksid vaadata failide muudatusajalugu ja teha erinevusi hetkepiltide vahel.

Minu tööriist n2u

Selle tĂŒhimiku tĂ€itmiseks kirjutasin oma tööriista n2u, mis oskab nĂ€idata konkreetse faili/direktori muudatusajalugu:

n2u log filename

VÀljund nÀeb vÀlja umbes selline:

          CHECKPOINT        KUUPÄEV     AEG     TĂŒĂŒp          SUURUS  REĆœIIM
             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 eelistatud rakenduse formaadi tĂ”ttu: otsib failide erinevusi biseektsioonimeetodi abil, kiiresti monteerides ja vĂ”rreldes faili/direktori erinevates hetkepiltides.

Checkpointide vahemikku saab mÀÀrata vĂ”tmega -cp CP1:CP2 vĂ”i -cp {AASTA-KUU-PÄEV}:{AASTA-KUU-PÄEV}.

Samuti saab vaadata erinevust checkpointide vahel teatud faili vÔi direktorina:

n2u diff -r cp1:cp2 filename

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

n2u blame [-r cp1:cp2] failinimi

KuupÀeva vahemikku toetatakse ka selles kÀsus.

Kutse arendajatele

Habré on palju spetsialiste. Palun, viimistlege NILFS2. Tehke replikatsioon, madala taseme kiire diff muudatuste vahel, reflink ja teised boonused!

Lingid

NILFS ametlik veebisait.

Repoo
NILFS2.
NILFS2 utiliidid ja moodulid.

Uudiskirjad:
NILFS2 arendajate e-posti uudiskiri. Tellimuse ID linux-nilfs.
Uudiskirja arhiiv.

KĂ€siraamat nilfs_cleanerd seadistamiseks.
Suhtelised jÔudlustestid EXT4, Btrfs, XFS & NILFS2.

AitÀh:

  • 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.
  • Amblin Entertainment ja Universal Pictures'i ettevĂ”tetele imetlusvÀÀrse filmi seeria eest „Tagasi tulevikku”. Esimene postipilt on vĂ”etud filmist „Tagasi tulevikku — 3”.
  • EttevĂ”te RUVDS toetuse ja vĂ”imaluse eest avaldada oma blogis Habras.

P.S. Tehtud vigade suunamine minu postkasti. TÔstan selle eest karma.

Saate NILFS2-ga katsetada, tellides oma virtuaalmasina RUVDS allpool oleva kupongiga. KÔikidele uutele klientidele tasuta 3-pÀevane prooviperiood.

NILFS2 — kuulitĂ”kke failisĂŒsteem /home jaoks

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster