NILFS2 – kuulikindel failisüsteem /home jaoks

NILFS2 – kuulikindel failisüsteem /home jaoks

Nagu teate, kui häda võib juhtuda, siis see kindlasti juhtub. Tõenäoliselt on kõigil olnud juhtumeid, kui hiljutine oluline fail on kogemata kustutatud või kogemata valitud tekst ja see tekstiredaktoris hävitatud.

Kui olete hosti või veebisaidi omanik, olete tõenäoliselt kokku puutunud kasutajakontode või veebisaidi häkkimisega. Sellistel juhtudel on oluline taastada kronoloogia, leida sisenemisviis ja ründaja poolt kasutatav haavatavus.

NILFS2 failisüsteem sobib selliste probleemide lahendamiseks suurepäraselt.

See on olnud Linuxi tuumas alates versioonist 2.6.30.

Selle failisüsteemi eripära on see, et see sarnaneb versioonihaldussüsteemiga: saate alati süsteemi oleku tagasi kerida ja vaadata, milline see mõni aeg tagasi oli.

Selle funktsiooni pakkumiseks ei pea te Croni skripte konfigureerima, hetktõmmisi tegema jne. NILFS2 failisüsteem teeb seda kõike ise. See ei kirjuta kunagi vanu andmeid üle ja kirjutab alati ketta uutesse piirkondadesse, kui kettaruumi on piisavalt. Täielikult kooskõlas Copy-on-Write põhimõttega.

Tegelikult loob iga faili muudatus automaatselt failisüsteemist uue hetktõmmise, nii et saate seda FS-i kasutada ajamasinana ja failide olekut tagasi kerida.

Lugu

NILFS2 – kuulikindel failisüsteem /home jaoksNILFS2 töötati välja sügavamal Nippon Telegraph and Telephone Corporation, tegelikult riigile kuuluv (tal on kontrollpakk) ja Jaapani suurim telekommunikatsiooniettevõte. Täpsemalt juhitavates küberruumi laborites Ryusuke Konishi.

Milleks see täpselt välja töötati, pole teada, kuid võib oletada, et selline FS oma "ajamasina" funktsionaalsusega sobib ideaalselt andmete salvestamiseks, millesse luureteenistused võivad soovida süveneda, et kogu pilti uuesti esitada. SMS, meilid jne....

NILFS2 on potentsiaalselt väga väärtuslik tööriist ka siseturbeteenuste jaoks, kuna see võimaldab taastada kõik kustutatud kirjad meiliandmebaasis, paljastades töötajate jambid, kes võivad hiljem proovida neid faile kustutades või muutes maskeerida.

Kuidas saate kogu oma kirjavahetuse ajalugu jälgida?Linuxi serverites (ja see on koht, kuhu NILFS2 tuleks siseturvalisuse huvides installida) kasutatakse meilisõnumite salvestamiseks väga sageli e-kirjade salvestamise failimeetodit. Niinimetatud formaat Maildir. Piisavalt panna Kulleri meiliserver ja konfigureerige Maildiris meilisalvestus. Muu formaat mbox on suur tekstifail, mida saab hõlpsasti üksikuteks sõnumiteks sõeluda.

Kui meiliserver kasutab andmebaasi, võimaldab NILFS2 taastada andmebaasi muutmise täpse aja ja võimaluse taastada andmebaas igal neist hetkedest. Ja siis peate kasutama andmebaasi tööriistu, et näha, mis sellel hetkel oli...

Midagi läks siiski valesti. Kas Jaapani valitsus muutis meelt kõigi jälgimise osas (a la Yarovaya põhimõte) või osutus NILFS2 jõudlus traditsioonilistel kõvaketastel alla parenduse ning NILFS2 lasti välja GPL-litsentsi alusel ja sisenes väga kiiresti Linuxi tuuma, kuna Kõrgelt kvalifitseeritud jaapani keeles kirjutatud koodi kohta polnud erilisi kaebusi, Linuxi tuuma arendajatel seda polnud.

Milline on NILFS2?

Kasutamise seisukohast: versioonihaldussüsteemil SVN. Iga FS-i kontrollpunkt on kohustus, mis tehakse automaatselt ilma kasutaja teadmata, kui toimub muudatusi: olgu see siis kustutamine, faili sisu muutmine või juurdepääsuõiguste muutmine. Igal commit'il on number, mis kasvab lineaarselt.

Programmeerija vaatevinklist: ringikujuline puhver. Failisüsteem kogub muudatused ja kirjutab need umbes 8 MB suuruseks osaks (2000 * 4096, kus 2000 on ploki elementide arv ja 4096 on mälulehe suurus). Kogu ketas on jagatud sellisteks tükkideks. Salvestamine toimub järjestikku. Kui vaba ruum saab otsa, siis vanimad hetktõmmised kustutatakse ja tükid kirjutatakse üle.

Põhilised NILFS2 maiuspalad

  • Versioonide koostamine!!!
  • Failisüsteemi taastamise protseduur pärast riket on lihtne: laadimisel otsitakse viimane tükk, millel on õige kontrollsumma, ja sellele paigaldatakse superplokk. See toiming on peaaegu kohene.
  • Kuna salvestamine toimub alati lineaarselt, siis:
    • võib näidata häid tulemusi, kui töötab SSD-l aeglase juhusliku kirjutamisega.
    • NILFS2 säästab SSD ressurssi, kuna kirjutamise korrutustegur peaaegu puudub.
      Täpsemalt, see ei ole suurem kui 2.Fakt on see, et kogu ketta tsüklilisel ümberkirjutamisel edastab NILFS2 muutumatud andmed uutele osadele (tükkidele).

      Kui meil on kettal 10% muutumatuid andmeid, siis 10 täieliku ümberkirjutamisega saame 1% kirjutuskasvu. Noh, 50% kasv seadme 50% täituvuse korral 1 täieliku ketta ümberkirjutamise korral.

      Maksimaalne kirjutamisvõimendus on 2. See on väga madal, arvestades, et kõik kirjutatakse järjestikku. Üldiselt on kirjutamisanimatsioon väiksem kui tavapärase killustatud failisüsteemi puhul, millel on 4096-baidine sektor. (Mõte inspireeritud kommenteerida).

  • Kaug-NILFS2 FS-i replikatsiooni juurutamise potentsiaalne lihtsus

NILFS2 /home jaoks

Unixi sarnastes operatsioonisüsteemides on reeglina /home kaust, kuhu kasutajaandmed salvestatakse. Erinevad programmid salvestavad sellesse kausta oma kasutajaspetsiifilised sätted.

Ja kes, kui mitte kasutajad, teeb kõige sagedamini vigu? Seetõttu, nagu öeldakse, käskis jumal ise kasutada NILFS2 saidil /home.

Lisaks ei pea me nüüd enam SSD-de laialdase kasutamise tõttu CoW-failisüsteemide kasutamisel muretsema tõsiste rikete pärast.

Jah, me saame ZFS-is ja BTRFS-is luua FS-i hetktõmmiseid nii sageli kui soovime, kuid alati on oht, et kadunud failimuudatus jääb hetktõmmiste vahele. Ja pilte tuleb ikka administreerida: vanad kustutada. NILFS2-s toimub see kõik automaatselt, sõna otseses mõttes iga paari sekundi järel.

Loogilise helitugevuse lõin lvcreate abil (nvme mahurühmas thin pool thin). Soovitan selle luua lvm-köites, kuna seda saab hiljem hõlpsasti laiendada. Soovitan korraliku versioonisügavuse jaoks omada NILFS50-ga 2% vaba kettaruumi.

lvcreate -V10G -T nvme/thin -n home

ja vormindas selle NILFS2-s:

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 !!

Pärast seda peate kopeerima kõik andmed praegusest /home-st.

Tegin seda kohe pärast arvuti käivitamist, enne oma kontole sisselogimist juurkasutajana. Kui ma peaksin oma kasutajana sisse logima, avaksid mõned programmid minu kasutaja kaustas /home/user pesad ja failid, mis muudaks puhta koopia tegemise keeruliseks. Nagu teate, asub juurkasutaja kodukaust tavaliselt /root teel, seega ei avane /home partitsioonil ühtegi faili.

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

Viimase rea kohta vt artiklit.

Järgmisena redigeerime faili /etc/fstab, kuhu on ühendatud /home failisüsteem

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

Variant noatime vajalik jõudluse parandamiseks, et aeg ei muutuks iga faili juurdepääsu korral. Järgmisena taaskäivitame.

Piltide tüübid NILFS2-s.

Tavalist hetktõmmist, millel puudub kustutamiskindlus, nimetatakse kontrollpunktiks või taastepunktiks.
Automaatse kustutamise eest kaitstud hetktõmmist nimetatakse hetktõmmiseks, seejärel lihtsalt hetktõmmiseks.

Kontrollpunktide vaatamine toimub käsu lscp abil

Kuva hetktõmmised lscp -s

Saame igal ajal ise hetktõmmiseid ja kontrollpunkte luua, kasutades:

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

Taastame andmed.

NILFS võimaldab meil paralleelselt FS-i peaharuga töötamisega paigaldada nii palju vanu hetktõmmiseid, kui tahame. Kuid ainult lugemisrežiimis.

Kõik on korraldatud nii. Regulaarseid kontrollpunkte, mida NILFS2 teeb, saab igal ajal automaatselt kustutada (kui kettaruum saab otsa või vastavalt nilfs_cleanerd reeglitele), seega peame enne installimist kontrollpunkti teisendama hetktõmmiseks või vene keeles kõneledes hetktõmmise jäädvustama.

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

Pärast seda saame hetktõmmise paigaldada näiteks järgmiselt:

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

Pärast seda kopeerime taastatud failid hetktõmmisest kausta /home.
Seejärel eemaldame hetktõmmisest kustutamata lipu, et tulevikus saaks automaatne prügikorjaja aegunud andmed eemaldada:

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

Utiliidid NILFS2 jaoks

Aga see on probleem. Jah, loomulikult saame luua failisüsteemi, muuta selle suurust võrgus, vaadata väljakutsepunktide loendit, neid luua ja kustutada. Nilfs2-utils pakett pakub minimaalset härrasmeeste komplekti.

Kuna NTT on oma rahastamist vähendanud, puuduvad kiired madala tasemega utiliidid, mis võimaldaksid kuvada failimuudatuste ajalugu või teha vahesid hetktõmmiste vahel.

Minu n2u utiliit

Selle vaakumi täitmiseks kirjutasin teie n2u utiliit, mis võib kuvada konkreetse faili/kataloogi muudatuste ajalugu:

n2u log filename

Väljund on umbes 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

Valitud juurutusmeetodi puhul töötab see üsna kiiresti: otsib failide vahelisi erinevusi poolitamise meetodil, monteerib ja võrdleb kiiresti faili/kataloogi erinevates hetktõmmistes.

Võtme abil saate määrata hulga kontrollpunkte -cp CP1:CP2 või -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Samuti näete konkreetse faili või kataloogi kontrollpunktide erinevust:

n2u diff -r cp1:cp2 filename

Saate kuvada kogu muudatuste kronoloogia: kõik erinevused konkreetse faili/kataloogi kontrollpunktide vahel:

n2u blame [-r cp1:cp2] filename

Selle käsu kuupäevavahemikku toetatakse ka.

Karje arendajatele

Habré teemal on palju spetsialiste. Lõpetage NILFS2. Tehke replikatsioon, madala taseme kiire erinevus versioonide vahel, linkimine ja muud headused!

Viited

NILFS-i ametlik veebisait.

Hoidlad:
NILFS2.
NILFS2 utiliidid ja moodulid.

Infolehed:
E-posti uudiskiri NILFS2 arendajatele. linux-nilfsi tellimuse ID.
Uudiskirjade arhiiv.

nilfs_cleanerd seadistusjuhend.
Võrdlusuuringud EXT4, Btrfs, XFS ja NILFS2 jõudlustestid.

Tänusõnad:

  • NILFS2 arendajad: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi ja Satoshi Moriai. Teised suuremad panustajad on: Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitri Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vjatšeslav Dubeyko.
  • Amblin Entertainmentile ja Universal Picturesile imelise filmisarja eest. "Tagasi tulevikku". Postituse esimene pilt on võetud filmist “Tagasi tulevikku 3”.
  • Ettevõtted RUVDS toetuse eest ja võimaluse eest avaldada oma blogis Habré.

PS Märkavad vead palun saatke privaatsõnumiga. Ma suurendan selle jaoks oma karmat.

NILFS2-ga saate katsetada, tellides virtuaalmasina RUVDS alloleva kupongiga. Kõigile uutele klientidele on 3-päevane tasuta prooviperiood.

NILFS2 – kuulikindel failisüsteem /home jaoks

Allikas: www.habr.com

Lisa kommentaar