NILFS2 je nepriestrelný súborový systém pre /home

NILFS2 je nepriestrelný súborový systém pre /home

Ako viete, ak sa môžu vyskytnúť problémy, určite sa to stane. Pravdepodobne každý mal prípady, keď bol náhodne vymazaný nedávny dôležitý súbor alebo bol náhodne vybraný a zničený text v textovom editore.

Ak ste hostiteľom alebo vlastníkom webových stránok, pravdepodobne ste sa už stretli s hackovaním používateľských účtov alebo vašich webových stránok. V takýchto prípadoch je dôležité obnoviť chronológiu, nájsť spôsob vstupu a zraniteľnosť, ktorú útočník použil.

Súborový systém NILFS2 je ideálny na riešenie takýchto problémov.

V jadre Linuxu je prítomný od verzie 2.6.30.

Zvláštnosťou tohto súborového systému je, že je podobný systému na správu verzií: vždy môžete vrátiť stav systému späť a pozrieť sa, aký bol pred časom.

Na poskytovanie tejto funkcie nie je potrebné konfigurovať skripty Cron, vytvárať snímky atď. Súborový systém NILFS2 to robí úplne sám. Nikdy neprepíše staré dáta a vždy zapíše do nových oblastí disku, ak je na disku dostatok voľného miesta. Plne v súlade s princípom kopírovania na zápis.

V skutočnosti každá zmena súboru automaticky vytvorí novú snímku súborového systému, takže môžete použiť tento FS ako stroj času a pretočiť späť stav súborov.

Príbeh

NILFS2 je nepriestrelný súborový systém pre /homeNILFS2 bol vyvinutý v hĺbke Nippon Telegraph and Telephone Corporation, v skutočnosti štátna (má kontrolný podiel) a najväčšia telekomunikačná spoločnosť v Japonsku. Konkrétnejšie v CyberSpace Laboratories pod vedením Ryusuke Konishi.

Na čo presne bol vyvinutý, nie je známe, dá sa však predpokladať, že takýto FS so svojou funkcionalitou „stroja času“ je ideálny na ukladanie údajov, do ktorých by sa spravodajské služby mohli chcieť prehrabať, aby si prehrali celý obraz. SMS, e-maily atď. ...

NILFS2 je tiež potenciálne veľmi cenným nástrojom pre interné bezpečnostné služby, pretože vám umožňuje obnoviť všetky vymazané listy v poštovej databáze, odhaľujúc záseky zamestnancov, ktorí sa ich môžu následne pokúsiť zamaskovať odstránením alebo zmenou svojich súborov.

Ako môžete sledovať celú históriu svojej korešpondencie?Na serveroch Linux (a tu by mal byť nainštalovaný NILFS2 pre účely vnútornej bezpečnosti) sa na ukladanie e-mailových správ veľmi často používa súborová metóda ukladania e-mailov. Formát tzv Maildir. Dosť na to Server kuriérskej pošty a nakonfigurovať ukladanie pošty v Maildir. Iný formát mbox je veľký textový súbor, ktorý možno ľahko analyzovať na jednotlivé správy.

Ak poštový server používa databázu, potom NILFS2 umožní obnoviť presné načasovanie zmien databázy a schopnosť obnoviť databázu v ktoromkoľvek z týchto momentov. A potom musíte použiť databázové nástroje, aby ste videli, čo v ňom bolo v tom čase...

Niečo sa však pokazilo. Buď japonská vláda zmenila názor na monitorovanie všetkých (a la princíp Yarovaya), alebo sa výkon NILFS2 na tradičných HDD ukázal ako podpriemerný a NILFS2 bol vydaný pod licenciou GPL a veľmi rýchlo vstúpil do linuxového jadra, od r. neboli žiadne konkrétne sťažnosti na kód napísaný vysoko kvalifikovanou japončinou, vývojári linuxového jadra ho nemali.

Aký je NILFS2?

Z hľadiska použitia: na systéme správy verzií SVN. Každý kontrolný bod FS je potvrdením, ktoré sa vykoná automaticky bez vedomia používateľa vždy, keď dôjde k akejkoľvek zmene: či už ide o vymazanie, zmenu obsahu súboru alebo zmenu prístupových práv. Každé odovzdanie má číslo, ktoré sa lineárne zvyšuje.

Z pohľadu programátora: kruhová vyrovnávacia pamäť. Súborový systém zhromažďuje zmeny a zapisuje ich do časti rovnajúcej sa približne 8 MB (2000 * 4096, kde 2000 je počet prvkov v bloku a 4096 je veľkosť stránky pamäte). Celý disk je rozdelený na takéto časti. Nahrávanie prebieha postupne. Keď sa minie voľné miesto, najstaršie snímky sa vymažú a časti sa prepíšu.

Základné vychytávky NILFS2

  • Verziovanie!!!
  • Postup obnovy súborového systému po zlyhaní je jednoduchý: pri načítaní sa vyhľadá posledný kus, ktorý má správny kontrolný súčet, a nainštaluje sa naň superblok. Toto je takmer okamžitá operácia.
  • Vzhľadom na to, že nahrávanie vždy prebieha lineárne, potom:
    • môže vykazovať dobré výsledky pri spustení na SSD s pomalým náhodným zápisom.
    • NILFS2 šetrí zdroje SSD, pretože neexistuje takmer žiadny faktor násobenia zápisu.
      Presnejšie, nie je to viac ako 2.Faktom je, že pri cyklickom prepisovaní celého disku NILFS2 prenesie nemenné dáta na nové kusy (kusy).

      Ak máme na disku 10% nemenných dát, tak pri 10 úplnom prepísaní dostaneme 1% nárast zápisu. No 50% nárast pri 50% zaplnenosti zariadenia za 1 kompletný prepis disku.

      Maximálny zisk zápisu je 2. To je veľmi nízke vzhľadom na to, že všetko sa zapisuje postupne. Vo všeobecnosti bude animácia zápisu menšia ako pri bežnom fragmentovanom súborovom systéme so 4096-bajtovým sektorom. (Myšlienka inšpirovaná komentovať).

  • Potenciálna jednoduchosť implementácie replikácie na vzdialený NILFS2 FS

NILFS2 pre /home

V operačných systémoch podobných Unixu je spravidla priečinok /home, v ktorom sú uložené používateľské údaje. Rôzne programy ukladajú svoje používateľské nastavenia do tohto priečinka.

A kto, ak nie používatelia, robí chyby najčastejšie? Preto, ako sa hovorí, sám Boh nariadil použitie NILFS2 na /home.

Navyše, s rozšíreným používaním SSD sa už nemusíme obávať vážnych výpadkov pri používaní súborových systémov CoW.

Áno, v ZFS a BTRFS môžeme vytvárať snímky FS tak často, ako chceme, ale vždy existuje riziko, že medzi snímkami sa skončí zmena strateného súboru. A obrázky ešte treba spravovať: staré treba vymazať. V NILFS2 sa to všetko deje automaticky, doslova každých pár sekúnd.

Vytvoril som logický zväzok pomocou lvcreate (v skupine zväzkov nvme, tenký fond tenký). Odporúčam ho vytvoriť na zväzku lvm, pretože ho možno neskôr ľahko rozšíriť. Odporúčam mať 50% voľného miesta na disku s NILFS2 pre slušnú hĺbku verzie.

lvcreate -V10G -T nvme/thin -n home

a naformátoval ho v 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 !!

Potom musíte skopírovať všetky údaje z aktuálneho /home.

Urobil som to ihneď po spustení počítača, pred prihlásením sa do svojho účtu ako používateľ root. Ak by som sa prihlásil ako môj používateľ, niektoré programy by otvorili zásuvky a súbory v priečinku /home/user môjho používateľa, čo by sťažilo čistú kópiu. Ako viete, domovský priečinok pre používateľa root sa zvyčajne nachádza na ceste /root, takže v oddiele /home sa neotvoria žiadne súbory.

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

Posledný riadok viď статью.

Ďalej upravíme /etc/fstab, do ktorého je pripojený súborový systém pre /home

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

Možnosť noatime potrebné na zlepšenie výkonu, aby sa atime nemení pri každom prístupe k súboru. Ďalej reštartujeme.

Typy obrázkov v NILFS2.

Bežná snímka bez imunity voči vymazaniu sa nazýva kontrolný bod alebo bod obnovy.
Snímka chránená pred automatickým odstránením sa nazýva snímka, potom jednoducho snímka.

Zobrazenie kontrolných bodov sa vykonáva pomocou príkazu lscp

Zobraziť snímky lscp -s

Snímky a kontrolné body môžeme kedykoľvek vytvoriť sami pomocou:

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

Obnovujeme dáta.

NILFS nám umožňuje pripojiť toľko starých snímok, koľko chceme, súbežne s prácou s hlavnou vetvou FS. Ale iba v režime čítania.

Všetko je usporiadané takto. Pravidelné kontrolné body, ktoré NILFS2 vytvára, môžu byť kedykoľvek automaticky vymazané (keď sa minie miesto na disku alebo podľa pravidiel nilfs_cleanerd), takže pred inštaláciou musíme previesť kontrolný bod na snímku alebo, po rusky povedané, snímku zachytiť.

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

Potom môžeme snímku pripojiť napríklad takto:

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

Potom skopírujeme obnovené súbory zo snímky do /home.
A následne odstránime nezmazateľný príznak zo snímky, aby v budúcnosti mohol automatický zberač odpadu odstrániť zastarané údaje:

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

Nástroje pre NILFS2

Ale toto je ten problém. Áno, samozrejme, môžeme vytvoriť súborový systém, zmeniť jeho veľkosť online, zobraziť zoznam bodov výzvy, vytvoriť a odstrániť ich. Balík nilfs2-utils poskytuje minimálnu džentlmenskú súpravu.

Keďže NTT obmedzila svoje financovanie, neexistujú žiadne rýchle nízkoúrovňové nástroje, ktoré by vám umožnili zobraziť históriu zmien súborov alebo robiť rozdiely medzi snímkami.

Môj nástroj n2u

Aby som zaplnil toto vákuum, napísal som váš nástroj n2u, ktorý dokáže zobraziť históriu zmien konkrétneho súboru/adresára:

n2u log filename

Výstup je asi takýto:

          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

Funguje pomerne rýchlo pre zvolenú metódu implementácie: hľadá rozdiely medzi súbormi pomocou metódy bisekcie, rýchlo pripája a porovnáva súbor/adresár v rôznych snímkach.

Pomocou klávesu môžete nastaviť rozsah kontrolných bodov -cp CP1:CP2 alebo -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Môžete tiež vidieť rozdiel medzi kontrolnými bodmi pre konkrétny súbor alebo adresár:

n2u diff -r cp1:cp2 filename

Môžete zobraziť celú chronológiu zmien: všetky rozdiely medzi kontrolnými bodmi konkrétneho súboru/adresára:

n2u blame [-r cp1:cp2] filename

Podporovaný je aj interval dátumu v tomto príkaze.

Výkrik vývojárom

Na Habrého je veľa špecialistov. Dokončite NILFS2. Urobte replikáciu, nízkoúrovňový rýchly rozdiel medzi revíziami, reflink a ďalšie vychytávky!

referencie

Oficiálna stránka NILFS.

Úložné priestory:
NILFS2.
utility a moduly NILFS2.

Bulletiny:
E-mailový bulletin pre vývojárov NILFS2. ID pre predplatné linux-nilfs.
Archív newsletterov.

sprievodca nastavením nilfs_cleanerd.
Porovnávacie testy výkonnosti EXT4, Btrfs, XFS a NILFS2.

Vďaka:

  • Vývojári NILFS2: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi a Satoshi Moriai. Ďalšími hlavnými prispievateľmi sú: 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 a Universal Pictures za skvelú sériu filmov. "Späť do budúcnosti". Prvý obrázok príspevku je prevzatý z filmu „Späť do budúcnosti 3“.
  • spoločnosť RUVDS za podporu a možnosť publikovať na svojom blogu na Habré.

PS Prípadné chyby, ktoré si všimnete, pošlite do súkromnej správy. Zvyšujem si za to karmu.

S NILFS2 môžete experimentovať tak, že si objednáte virtuálny stroj RUVDS s kupónom nižšie. Pre všetkých nových klientov je k dispozícii bezplatné skúšobné obdobie 3 dní.

NILFS2 je nepriestrelný súborový systém pre /home

Zdroj: hab.com

Pridať komentár