NILFS2 je neprůstřelný souborový systém pro /home

NILFS2 je neprůstřelný souborový systém pro /home

Jak víte, pokud mohou nastat potíže, určitě se to stane. Pravděpodobně každý měl případy, kdy byl omylem vymazán nedávný důležitý soubor nebo byl omylem vybrán a zničen text v textovém editoru.

Pokud jste hostitelem nebo vlastníkem webu, pak jste se pravděpodobně setkali s hackováním uživatelských účtů nebo vašeho webu. V takových případech je důležité obnovit chronologii, najít způsob vstupu a zranitelnost, kterou útočník použil.

Souborový systém NILFS2 je ideální pro řešení takových problémů.

V linuxovém jádře je přítomen od verze 2.6.30.

Zvláštností tohoto souborového systému je, že je podobný systému správy verzí: vždy můžete vrátit stav systému zpět a podívat se, jaký byl před časem.

Chcete-li tuto funkci poskytnout, nemusíte konfigurovat skripty Cron, pořizovat snímky atd. Souborový systém NILFS2 to dělá úplně sám. Nikdy nepřepisuje stará data a vždy zapisuje do nových oblastí disku, pokud je na disku dostatek volného místa. Plně v souladu s principem Copy-on-Write.

Ve skutečnosti každá změna souboru automaticky vytvoří nový snímek souborového systému, takže můžete tento FS použít jako stroj času a přetočit stav souborů.

Příběh

NILFS2 je neprůstřelný souborový systém pro /homeNILFS2 byl vyvinut v hlubinách Nippon Telegraph and Telephone Corporation, ve skutečnosti státní (má kontrolní podíl) a největší telekomunikační společnost v Japonsku. Přesněji řečeno v CyberSpace Laboratories pod vedením Ryusuke Konishi.

K čemu přesně byl vyvinut, není známo, lze však předpokládat, že takový FS se svou funkčností „stroje času“ je ideální pro ukládání dat, do kterých by se zpravodajské služby mohly chtít ponořit, aby si přehrály celý obraz. SMS, emaily atd...

NILFS2 je také potenciálně velmi cenným nástrojem pro interní bezpečnostní služby, protože vám umožňuje obnovit všechny smazané dopisy v poštovní databázi a odhalit záseky zaměstnanců, kteří se je mohou následně pokusit zamaskovat smazáním nebo změnou svých souborů.

Jak můžete sledovat celou historii své korespondence?Na linuxových serverech (a to je místo, kde by měl být NILFS2 nainstalován pro účely vnitřní bezpečnosti) se k ukládání e-mailových zpráv velmi často používá souborová metoda ukládání e-mailů. Takzvaný formát Maildir. Dost na to Server kurýrní pošty a nakonfigurujte úložiště pošty v Maildir. Jiný formát mbox je velký textový soubor, který lze snadno analyzovat do jednotlivých zpráv.

Pokud poštovní server používá databázi, pak NILFS2 umožní obnovit přesné načasování změn databáze a schopnost obnovit databázi v kterémkoli z těchto okamžiků. A pak musíte použít databázové nástroje, abyste viděli, co v něm v té době bylo...

Něco se však pokazilo. Buď japonská vláda změnila názor na sledování všech (a la princip Yarovaya), nebo se výkon NILFS2 na tradičních HDD ukázal jako podprůměrný a NILFS2 byl vydán pod licencí GPL a velmi rychle vstoupil do linuxového jádra, protože nebyly žádné zvláštní stížnosti na kód napsaný vysoce kvalifikovanou japonštinou, vývojáři linuxového jádra jej neměli.

Jaký je NILFS2?

Z hlediska použití: na systému správy verzí SVN. Každý kontrolní bod FS je potvrzení, které se provádí automaticky bez vědomí uživatele, kdykoli dojde k jakékoli změně: ať už jde o smazání, změnu obsahu souboru nebo změnu přístupových práv. Každé potvrzení má číslo, které se lineárně zvyšuje.

Z pohledu programátora: kruhový buffer. Systém souborů shromažďuje změny a zapisuje je do části o velikosti přibližně 8 MB (2000 * 4096, kde 2000 je počet prvků v bloku a 4096 je velikost stránky paměti). Celý disk je rozdělen na takové kousky. Záznam probíhá postupně. Když dojde volné místo, nejstarší snímky se odstraní a bloky se přepíší.

Základní vychytávky NILFS2

  • Verzování!!!
  • Postup obnovy souborového systému po selhání je jednoduchý: při načítání se vyhledá poslední chunk, který má správný kontrolní součet, a nainstaluje se na něj superblok. Toto je téměř okamžitá operace.
  • Vzhledem k tomu, že nahrávání vždy probíhá lineárně, pak:
    • může vykazovat dobré výsledky při běhu na SSD s pomalým náhodným zápisem.
    • NILFS2 šetří zdroje SSD, protože neexistuje téměř žádný faktor násobení zápisu.
      Přesněji řečeno, není to více než 2.NILFS2 totiž při cyklickém přepisování celého disku přenese neměnná data na nové kusy (kusy).

      Pokud máme na disku 10 % neměnných dat, pak při 10 kompletním přepsání získáme 1% nárůst zápisu. No a 50% nárůst při 50% zaplnění zařízení za 1 kompletní přepsání disku.

      Maximální zisk zápisu je 2. To je velmi nízké vzhledem k tomu, že se vše zapisuje sekvenčně. Obecně bude animace zápisu menší než u konvenčního fragmentovaného souborového systému se sektorem 4096 bajtů. (Myšlenka inspirovaná komentář).

  • Potenciální snadnost implementace replikace na vzdálený FS NILFS2

NILFS2 pro /home

V operačních systémech podobných Unixu je zpravidla složka /home, ve které jsou uložena uživatelská data. Různé programy ukládají svá uživatelská nastavení do této složky.

A kdo, když ne uživatelé, dělá chyby nejčastěji? Proto, jak se říká, sám Bůh nařídil použití NILFS2 na /home.

Navíc s rozšířeným používáním SSD se nyní již nemusíme obávat vážných výpadků při používání souborových systémů CoW.

Ano, v ZFS a BTRFS můžeme vytvářet snímky FS jak často chceme, ale vždy existuje riziko, že mezi snímky skončí změna ztraceného souboru. A obrázky je stále třeba spravovat: staré je třeba smazat. V NILFS2 se to vše děje automaticky, doslova každých pár sekund.

Vytvořil jsem logický svazek pomocí lvcreate (ve skupině svazků nvme, tenký fond tenký). Doporučuji jej vytvořit na svazku lvm, protože jej lze později snadno rozšířit. Doporučuji mít 50% volného místa na disku s NILFS2 pro slušnou hloubku verze.

lvcreate -V10G -T nvme/thin -n home

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

Poté musíte zkopírovat všechna data z aktuálního /home.

Udělal jsem to ihned po spuštění počítače, před přihlášením ke svému účtu jako uživatel root. Pokud bych se měl přihlásit jako můj uživatel, některé programy by otevíraly sokety a soubory ve složce /home/user mého uživatele, což by znesnadnilo čistou kopii. Jak víte, domovská složka pro uživatele root se obvykle nachází na cestě /root, takže v oddílu /home se neotevřou žádné soubory.

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

Poslední řádek viz Článek.

Dále upravíme /etc/fstab, do kterého je připojen souborový systém pro /home

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

Možnost noatime potřebné ke zlepšení výkonu, aby se atime neměnil s každým přístupem k souboru. Dále restartujeme.

Typy obrázků v NILFS2.

Běžný snímek bez imunity vůči smazání se nazývá kontrolní bod nebo bod obnovy.
Snímek chráněný před automatickým odstraněním se nazývá snímek, pak jednoduše snímek.

Zobrazení kontrolních bodů se provádí pomocí příkazu lscp

Zobrazit snímky lscp -s

Snímky a kontrolní body můžeme sami vytvářet kdykoli pomocí:

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

Obnovujeme data.

NILFS nám umožňuje připojit tolik starých snapshotů, kolik chceme, paralelně s prací s hlavní větví FS. Ale pouze v režimu čtení.

Vše je uspořádáno takto. Pravidelné kontrolní body, které NILFS2 vytváří, lze kdykoli automaticky smazat (když dojde místo na disku nebo podle pravidel nilfs_cleanerd), takže před instalací musíme kontrolní bod převést na snímek nebo, rusky řečeno, snímek zachytit.

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

Poté můžeme snímek připojit například takto:

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

Poté zkopírujeme obnovené soubory ze snímku do /home.
A následně odstraníme nesmazatelný příznak ze snímku, aby v budoucnu mohl automatický garbage collector odstranit zastaralá data:

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

Nástroje pro NILFS2

Ale to je ten problém. Ano, samozřejmě, můžeme vytvořit souborový systém, změnit jeho velikost online, zobrazit seznam bodů výzvy, vytvořit a odstranit je. Balíček nilfs2-utils poskytuje minimální gentlemanskou sadu.

Protože NTT omezilo své financování, neexistují žádné rychlé nízkoúrovňové nástroje, které by vám umožnily zobrazit historii změn souborů nebo dělat rozdíly mezi snímky.

Můj nástroj n2u

Abych zaplnil toto vakuum, napsal jsem váš nástroj n2u, který dokáže zobrazit historii změn konkrétního souboru/adresáře:

n2u log filename

Výstup je něco takového:

          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

Pro zvolenou metodu implementace funguje poměrně rychle: hledá rozdíly mezi soubory pomocí metody bisekce, rychle připojuje a porovnává soubor/adresář v různých snímcích.

Pomocí klávesy můžete nastavit rozsah kontrolních bodů -cp CP1:CP2 nebo -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Můžete také vidět rozdíl mezi kontrolními body pro konkrétní soubor nebo adresář:

n2u diff -r cp1:cp2 filename

Můžete zobrazit celou chronologii změn: všechny rozdíly mezi kontrolními body konkrétního souboru/adresáře:

n2u blame [-r cp1:cp2] filename

Interval dat v tomto příkazu je také podporován.

Výkřik vývojářům

Na Habré je mnoho specialistů. Dokončete prosím NILFS2. Udělejte replikaci, nízkoúrovňový rychlý rozdíl mezi revizemi, reflink a další vychytávky!

reference

Oficiální stránky NILFS.

Úložiště:
NILFS2.
Nástroje a moduly NILFS2.

Informační bulletiny:
E-mailový zpravodaj pro vývojáře NILFS2. ID pro předplatné linux-nilfs.
Archiv zpravodaje.

průvodce nastavením nilfs_cleanerd.
Srovnávací testy výkonnosti EXT4, Btrfs, XFS a NILFS2.

Poděkování:

  • Vývojáři NILFS2: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi a Satoshi Moriai. Dalšími hlavními přispěvateli jsou: 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 skvělou sérii filmů. "Zpět do budoucnosti". První obrázek příspěvku je převzat z filmu „Back to the Future 3“.
  • Společnosti RUVDS za podporu a možnost publikovat na svém blogu na Habré.

PS Případné chyby, kterých si všimnete, pošlete do soukromé zprávy. Zvyšuji si za to karmu.

S NILFS2 můžete experimentovat objednáním virtuálního stroje RUVDS s kupónem níže. Pro všechny nové klienty je k dispozici bezplatná zkušební doba 3 dnů.

NILFS2 je neprůstřelný souborový systém pro /home

Zdroj: www.habr.com

Přidat komentář