NILFS2 on luodinkestävä tiedostojärjestelmä /homelle

NILFS2 on luodinkestävä tiedostojärjestelmä /homelle

Kuten tiedät, jos ongelmia voi tapahtua, se tapahtuu varmasti. Todennäköisesti jokaisella on ollut tapauksia, joissa äskettäin tärkeä tiedosto on vahingossa poistettu tai teksti on vahingossa valittu ja tuhoutunut tekstieditorissa.

Jos olet isännöitsijä tai verkkosivuston omistaja, olet todennäköisesti törmännyt käyttäjätilien tai verkkosivustosi hakkerointiin. Tällaisissa tapauksissa on tärkeää palauttaa kronologia, löytää sisääntulotapa ja hyökkääjän käyttämä haavoittuvuus.

NILFS2-tiedostojärjestelmä on täydellinen tällaisten ongelmien ratkaisemiseen.

Se on ollut Linux-ytimessä versiosta 2.6.30 lähtien.

Tämän tiedostojärjestelmän erikoisuus on, että se on samanlainen kuin versionhallintajärjestelmä: voit aina palauttaa järjestelmän tilan takaisin ja katsoa, ​​millaista se oli jokin aika sitten.

Tämän toiminnon tarjoamiseksi sinun ei tarvitse määrittää Cron-skriptejä, ottaa tilannekuvia jne. NILFS2-tiedostojärjestelmä tekee tämän kaiken itse. Se ei koskaan korvaa vanhoja tietoja ja kirjoittaa aina levyn uusille alueille, jos levytilaa on tarpeeksi. Täysin Copy-on-Write -periaatteen mukaisesti.

Itse asiassa mikä tahansa tiedostoon tehty muutos luo automaattisesti uuden tilannekuvan tiedostojärjestelmästä, joten voit käyttää tätä FS:ää aikakoneena ja kelata tiedostojen tilaa taaksepäin.

Tarina

NILFS2 on luodinkestävä tiedostojärjestelmä /homelleNILFS2 kehitettiin vuoden syvyyksissä Nippon Telegraph ja Telephone CorporationItse asiassa valtion omistama (sillä on määräysvalta) ja Japanin suurin televiestintäyritys. Tarkemmin sanottuna CyberSpace Laboratoriesissa johdolla Ryusuke Konishi.

Mihin se tarkalleen on kehitetty, on tuntematon, mutta voidaan olettaa, että tällainen FS "aikakone"-toiminnallisuuksineen on ihanteellinen tallentamaan tietoja, joihin tiedustelupalvelut saattavat haluta kaivaa esiin voidakseen toistaa koko kuvan SMS, sähköpostit yms....

NILFS2 on myös mahdollisesti erittäin arvokas työkalu sisäisille turvallisuuspalveluille, koska sen avulla voit palauttaa kaikki poistetut kirjeet sähköpostitietokannasta ja paljastaa työntekijöiden jambit, jotka saattavat myöhemmin yrittää naamioida ne poistamalla tai muuttamalla tiedostojaan.

Kuinka voit seurata koko kirjeenvaihtohistoriaasi?Linux-palvelimilla (ja tähän NILFS2 tulisi asentaa sisäisen turvallisuuden vuoksi) sähköpostiviestien tallentamiseen käytetään usein tiedostomenetelmää. Niin sanottu formaatti Maildir. Tarpeeksi laittaa Kuriiripostipalvelin ja määritä sähköpostin tallennus Maildirissä. Muu muoto mbox on suuri tekstitiedosto, joka voidaan helposti jäsentää yksittäisiksi viesteiksi.

Jos sähköpostipalvelin käyttää tietokantaa, NILFS2 mahdollistaa tietokannan muutosten tarkan ajoituksen palauttamisen ja mahdollisuuden palauttaa tietokanta milloin tahansa. Ja sitten sinun täytyy käyttää tietokantatyökaluja nähdäksesi, mitä siinä oli sillä hetkellä...

Jotain meni kuitenkin pieleen. Joko Japanin hallitus muutti mieltään valvoa kaikkia (a la Yarovaya-periaate), tai NILFS2:n suorituskyky perinteisillä kiintolevyillä osoittautui alle parin, ja NILFS2 julkaistiin GPL-lisenssillä ja tuli hyvin nopeasti Linux-ytimeen, koska korkeasti koulutetulla japaniksi kirjoitetusta koodista ei ollut erityisiä valituksia, Linux-ytimen kehittäjillä ei ollut sitä.

Millainen NILFS2 on?

Käytön näkökulmasta: versionhallintajärjestelmässä SVN. Jokainen FS-tarkistuspiste on sitoumus, joka tehdään automaattisesti käyttäjän tietämättä aina, kun tapahtuu muutoksia: olipa kyseessä poistaminen, tiedoston sisällön muuttaminen tai käyttöoikeuksien muuttaminen. Jokaisella sitoumuksella on luku, joka kasvaa lineaarisesti.

Ohjelmoijan näkökulmasta: pyöreä puskuri. Tiedostojärjestelmä kerää muutokset ja kirjoittaa ne noin 8 Mt:n osiin (2000 * 4096, jossa 2000 on lohkon elementtien määrä ja 4096 on muistisivun koko). Koko levy on jaettu tällaisiin osiin. Tallennus etenee peräkkäin. Kun vapaa tila loppuu, vanhimmat tilannevedokset poistetaan ja palaset korvataan.

NILFS2:n perusherkkuja

  • Versiointi!!!
  • Menettely tiedostojärjestelmän palauttamiseksi vian jälkeen on yksinkertainen: latauksen aikana etsitään viimeinen pala, jolla on oikea tarkistussumma, ja siihen asennetaan superblock. Tämä on lähes välitön toimenpide.
  • Koska tallennus etenee aina lineaarisesti, niin:
    • voi näyttää hyviä tuloksia käytettäessä SSD-levyä hitaalla satunnaisella kirjoituksella.
    • NILFS2 säästää SSD-resursseja, koska kirjoituskerrointa ei juuri ole.
      Tarkemmin sanottuna se on enintään 2.Tosiasia on, että kun koko levyä kirjoitetaan syklisesti uudelleen, NILFS2 siirtää muuttumattomia tietoja uusiin osiin (paloihin).

      Jos meillä on 10 % muuttumatonta dataa levyllä, saamme 10 % kirjoituslisäyksen yhdellä täydellisellä uudelleenkirjoituksella. No, 1 % lisäys, kun laite on 50 % täynnä, kun levy on kirjoitettu kokonaan uudelleen.

      Suurin kirjoitusvahvistus on 2. Tämä on hyvin pieni ottaen huomioon, että kaikki kirjoitetaan peräkkäin. Yleensä kirjoitusanimaatio on pienempi kuin perinteisessä pirstoutuneessa tiedostojärjestelmässä, jossa on 4096-tavuinen sektori. (Ajatuksen inspiroima kommentti).

  • Mahdollisesti helppokäyttöinen replikointi etä-NILFS2 FS:ään

NILFS2 /kotiin

Unix-tyyppisissä käyttöjärjestelmissä on pääsääntöisesti /home-kansio, johon käyttäjätiedot tallennetaan. Useat ohjelmat tallentavat käyttäjäkohtaiset asetukset tähän kansioon.

Ja kuka, elleivät käyttäjät, tekee virheitä useimmiten? Siksi, kuten sanotaan, Jumala itse määräsi NILFS2:n käytön /homessa.

Lisäksi SSD-levyjen laajan käytön myötä meidän ei enää tarvitse huolehtia vakavista puutteista CoW-tiedostojärjestelmiä käytettäessä.

Kyllä, voimme luoda FS-vedoksia niin usein kuin haluamme ZFS:ssä ja BTRFS:ssä, mutta aina on olemassa riski, että kadonnut tiedostomuutos päätyy tilannekuvien väliin. Ja kuvia pitää edelleen hallita: vanhat on poistettava. NILFS2:ssa kaikki tämä tapahtuu automaattisesti, kirjaimellisesti muutaman sekunnin välein.

Loin loogisen taltion käyttämällä lvcreatea (nvme-volyymiryhmässä thin pool thin). Suosittelen luomaan sen lvm-taltiolle, koska sitä on helppo laajentaa myöhemmin. Suosittelen, että sinulla on 50 % vapaata levytilaa NILFS2:lla kunnollisen versiosyvyyden saavuttamiseksi.

lvcreate -V10G -T nvme/thin -n home

ja muotoillut sen NILFS2:ssa:

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

Tämän jälkeen sinun on kopioitava kaikki tiedot nykyisestä /home-tiedostosta.

Tein tämän heti tietokoneen käynnistämisen jälkeen, ennen kuin kirjauduin tililleni pääkäyttäjänä. Jos kirjautuisin sisään käyttäjänä, jotkin ohjelmat avaisivat käyttäjäni /home/user-kansiossa olevia pistokkeita ja tiedostoja, mikä vaikeuttaisi puhtaan kopioinnin tekemistä. Kuten tiedät, pääkäyttäjän kotikansio sijaitsee yleensä /root-polulla, joten tiedostoja ei avaudu /home-osiossa.

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

Katso viimeinen rivi Artikkeli.

Seuraavaksi muokkaamme tiedostoa /etc/fstab, johon /home-tiedostojärjestelmä on liitetty

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

Vaihtoehto noatime tarvitaan suorituskyvyn parantamiseksi, jotta aika ei muutu jokaisen tiedoston käytön yhteydessä. Seuraavaksi käynnistetään uudelleen.

NILFS2:n kuvien tyypit.

Tavallista tilannekuvaa, joka ei ole suojattu poistamiselta, kutsutaan tarkistuspisteeksi tai palautuspisteeksi.
Automaattiselta poistamiselta suojattua tilannekuvaa kutsutaan tilannevedoksi, sitten yksinkertaisesti tilannekuvaksi.

Tarkistuspisteiden katselu tapahtuu lscp-komennolla

Katso tilannekuvat lscp -s

Voimme luoda tilannekuvia ja tarkistuspisteitä itse milloin tahansa käyttämällä:

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

Palautamme tiedot.

NILFS antaa meille mahdollisuuden liittää niin monta vanhaa tilannekuvaa kuin haluamme samanaikaisesti FS-päähaaran kanssa työskentelyn kanssa. Mutta vain lukutilassa.

Kaikki on järjestetty näin. NILFS2:n tekemät säännölliset tarkistuspisteet voidaan poistaa automaattisesti milloin tahansa (kun levytila ​​loppuu tai nilfs_cleanerd-sääntöjen mukaisesti), joten ennen asennusta meidän on muutettava tarkistuspiste tilannevedoksi tai venäjän kielellä kaapattava tilannekuva.

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

Sen jälkeen voimme asentaa tilannekuvan esimerkiksi näin:

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

Tämän jälkeen kopioimme palautetut tiedostot tilannevedosta kansioon /home.
Ja myöhemmin poistamme tilannekuvasta ei-poistolipun, jotta automaattinen roskatkeräjä voi tulevaisuudessa poistaa vanhentuneet tiedot:

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

Apuohjelmat NILFS2:lle

Mutta tämä on ongelma. Kyllä, tietysti voimme luoda tiedostojärjestelmän, muuttaa sen kokoa verkossa, tarkastella haastepisteiden luetteloa, luoda ja poistaa niitä. Nilfs2-utils-paketti tarjoaa minimaalisen herrasmiessetin.

Koska NTT on supistanut rahoitustaan, ei ole olemassa nopeita matalan tason apuohjelmia, joiden avulla voit näyttää tiedostomuutoshistorian tai tehdä eroja tilannekuvien välillä.

Oma n2u-apuohjelma

Tämän tyhjiön täyttämiseksi kirjoitin n2u-apuohjelmasi, joka voi näyttää tietyn tiedoston/hakemiston muutoshistorian:

n2u log filename

Tulos on jotain tämän kaltaista:

          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

Se toimii melko nopeasti valitulla toteutustavalla: se etsii tiedostojen välisiä eroja puolitusmenetelmällä, liittää ja vertaa tiedostoa/hakemistoa nopeasti eri tilannekuvissa.

Voit asettaa joukon tarkistuspisteitä näppäimellä -cp CP1:CP2 tai -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Voit myös nähdä eron tietyn tiedoston tai hakemiston tarkistuspisteiden välillä:

n2u diff -r cp1:cp2 filename

Voit näyttää muutosten koko kronologian: kaikki erot tietyn tiedoston/hakemiston tarkistuspisteiden välillä:

n2u blame [-r cp1:cp2] filename

Tämän komennon päivämääräväli on myös tuettu.

Huuto kehittäjille

Habrella on monia asiantuntijoita. Viimeistele NILFS2. Tee replikointi, matalan tason nopea ero versioiden välillä, linkitä ja muita herkkuja!

viittaukset

Virallinen NILFS-sivusto.

Tietovarastot:
NILFS2.
NILFS2-apuohjelmat ja moduulit.

Uutiskirjeet:
Sähköpostiuutiskirje NILFS2-kehittäjille. Tunnus linux-nilfs-tilaukselle.
Uutiskirjearkisto.

nilfs_cleanerd asennusopas.
EXT4-, Btrfs-, XFS- ja NILFS2-suorituskykytestien benchmarking.

Kiitos:

  • NILFS2-kehittäjät: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi ja Satoshi Moriai. Muita merkittäviä avustajia ovat: 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 Entertainmentille ja Universal Picturesille upeaan elokuvasarjaan. "Paluu tulevaisuuteen". Postauksen ensimmäinen kuva on otettu elokuvasta "Takaisin tulevaisuuteen 3".
  • yhtiö RUVDS tuesta ja mahdollisuudesta julkaista blogissasi Habressa.

PS. Ilmoita havaitsemasi virheet yksityisviestillä. Lisään karmaani tätä varten.

Voit kokeilla NILFS2:ta tilaamalla virtuaalikoneen RUVDS alla olevan kupongin kanssa. Kaikille uusille asiakkaille on ilmainen 3 päivän kokeilujakso.

NILFS2 on luodinkestävä tiedostojärjestelmä /homelle

Lähde: will.com

Lisää kommentti