NILFS2 - golyóálló fájlrendszer a /home számára

NILFS2 - golyóálló fájlrendszer a /home számára

Tudniillik ha baj történhet, az biztosan megtörténik. Valószínűleg mindenkinek volt már olyan esete, amikor egy friss fontos fájlt véletlenül töröltek, vagy véletlenül szöveget választottak ki és megsemmisítettek egy szövegszerkesztőben.

Ha Ön tárhelyszolgáltató vagy webhelytulajdonos, akkor valószínűleg találkozott már felhasználói fiókok vagy webhelye feltörésével. Ilyenkor fontos a kronológia visszaállítása, a belépés módjának és a támadó által használt sebezhetőségének megtalálása.

A NILFS2 fájlrendszer tökéletes az ilyen problémák megoldására.

A 2.6.30-as verzió óta jelen van a Linux kernelben.

Ennek a fájlrendszernek az a sajátossága, hogy hasonlít egy verziókezelő rendszerhez: bármikor visszaállíthatja a rendszer állapotát, és megnézheti, milyen volt egy ideje.

Ennek a funkciónak a biztosításához nem kell konfigurálnia a Cron-szkripteket, nem kell pillanatfelvételeket készítenie stb. A NILFS2 fájlrendszer mindezt önmagában végzi. Soha nem írja felül a régi adatokat, és mindig a lemez új területeire ír, ha van elég szabad lemezterület. Teljes összhangban a Copy-on-Write elvvel.

Valójában minden fájl módosítása automatikusan új pillanatképet hoz létre a fájlrendszerről, így ezt az FS-t időgépként használhatja, és visszatekerheti a fájlok állapotát.

Történet

NILFS2 - golyóálló fájlrendszer a /home számáraA NILFS2-t mélyén fejlesztették ki Nippon Telegraph and Telephone Corporation, sőt, az állami tulajdonú (befolyásoló részesedéssel rendelkezik) és Japán legnagyobb távközlési vállalata. Pontosabban a vezetés alatt álló CyberSpace Laboratories-ban Ryusuke Konishi.

Hogy pontosan mire fejlesztették, nem ismert, de feltételezhető, hogy egy ilyen FS a maga „időgép” funkciójával ideális olyan adatok tárolására, amelyekbe a titkosszolgálatoknak esetleg bele akarnak ásni, hogy visszajátszhassák a teljes képet. SMS, email, stb...

A NILFS2 potenciálisan nagyon értékes eszköz a belső biztonsági szolgálatok számára is, mivel lehetővé teszi az összes törölt levél visszaállítását a levelezési adatbázisban, felfedve az alkalmazottak akadályait, akik később megpróbálhatják álcázni őket fájljaik törlésével vagy módosításával.

Hogyan követheti nyomon a teljes levelezési előzményét?Linux szervereken (és ide kell telepíteni a NILFS2-t belső biztonsági okokból) az e-mailek tárolásának fájlmódszerét nagyon gyakran használják az e-mail üzenetek tárolására. Az úgynevezett formátum Maildir. Elég berakni Courier Mail Server és konfigurálja a levelek tárolását a Maildirben. Más formátum mbox egy nagyméretű szöveges fájl, amely egyszerűen egyedi üzenetekké elemezhető.

Ha a levelezőszerver adatbázist használ, akkor a NILFS2 lehetővé teszi az adatbázis-módosítások pontos időzítésének visszaállítását és az adatbázis visszaállításának lehetőségét ezen pillanatok bármelyikében. És akkor adatbáziseszközöket kell használnia, hogy megnézze, mi volt benne abban az időben...

Azonban valami elromlott. Vagy a japán kormány meggondolta magát, hogy mindenkit figyel (a Yarovaya elv), vagy a hagyományos HDD-ken a NILFS2 teljesítménye a paraméter alattinak bizonyult, és a NILFS2 GPL licenc alatt jelent meg, és nagyon gyorsan bekerült a Linux kernelbe, mivel a magasan kvalifikált japánul írt kódra nem volt különösebb panasz, a Linux kernel fejlesztőinek nem volt ilyen.

Milyen a NILFS2?

Használati szempontból: verziókezelő rendszeren SVN. Minden FS-ellenőrzőpont egy véglegesítés, amely a felhasználó tudta nélkül automatikusan megtörténik, amikor bármilyen változás történik: legyen az törlés, egy fájl tartalmának módosítása vagy hozzáférési jogok módosítása. Minden commit lineárisan növekszik.

Programozói szemmel: kör alakú puffer. A fájlrendszer összegyűjti a változtatásokat, és egy körülbelül 8 MB-nak megfelelő darabba írja azokat (2000 * 4096, ahol 2000 a blokk elemeinek száma, 4096 pedig a memórialap mérete). Az egész lemez ilyen darabokra van osztva. A felvétel sorban halad. Ha elfogy a szabad hely, a rendszer törli a legrégebbi pillanatképeket, és felülírja a darabokat.

Alapvető NILFS2 finomságok

  • Verziókészítés!!!
  • A fájlrendszer meghibásodás utáni visszaállításának eljárása egyszerű: betöltéskor a rendszer megkeresi az utolsó darabot, amelyiknek megfelelő az ellenőrző összege, és egy szuperblokkot telepítenek rá. Ez egy szinte azonnali művelet.
  • Tekintettel arra, hogy a rögzítés mindig lineárisan megy végbe, akkor:
    • jó eredményeket mutathat, ha SSD-n fut lassú véletlenszerű írással.
    • A NILFS2 megtakarítja az SSD erőforrásait, mivel szinte nincs írási szorzótényező.
      Pontosabban, ez nem több, mint 2.A helyzet az, hogy a teljes lemez ciklikus újraírásakor a NILFS2 megváltoztathatatlan adatokat továbbít új darabokra (darabokra).

      Ha 10% változatlan adat van a lemezen, akkor 10 teljes átírással 1% írásnövekedést kapunk. Nos, 50%-os növekedés az eszköz 50%-os telítettsége esetén a lemez 1 teljes újraírása esetén.

      A maximális írási nyereség 2. Ez nagyon alacsony, tekintve, hogy mindent szekvenciálisan írnak. Általánosságban elmondható, hogy az írási animáció kisebb, mint egy hagyományos, 4096 bájtos szektorral rendelkező töredezett fájlrendszeré. (A gondolat ihlette megjegyzés).

  • A replikáció távoli NILFS2 FS-re való egyszerű megvalósítása

NILFS2 for /home

A Unix-szerű operációs rendszerekben általában van egy /home mappa, amelyben a felhasználói adatok tárolódnak. Különféle programok ebbe a mappába mentik a felhasználóspecifikus beállításaikat.

És ki hibázik leggyakrabban, ha nem a felhasználók? Ezért, ahogy mondják, maga Isten rendelte el a NILFS2 használatát a /home oldalon.

Sőt, az SSD-k széles körű elterjedésével már nem kell aggódnunk a súlyos leállásoktól a CoW fájlrendszerek használatakor.

Igen, tetszőleges gyakorisággal készíthetünk FS-pillanatképeket ZFS-ben és BTRFS-ben, de mindig fennáll annak a veszélye, hogy egy elveszett fájlmódosítás a pillanatképek közé kerül. A képeket pedig még adminisztrálni kell: a régieket törölni kell. A NILFS2-ben mindez automatikusan, szó szerint néhány másodpercenként történik.

Létrehoztam egy logikai kötetet az lvcreate segítségével (az nvme kötetcsoportban vékony pool vékony). Javaslom az lvm kötetre való létrehozását, mert később könnyen bővíthető. Azt javaslom, hogy legyen 50% szabad lemezterület a NILFS2-vel a megfelelő verziómélység érdekében.

lvcreate -V10G -T nvme/thin -n home

és formázta NILFS2-ben:

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

Ezt követően minden adatot át kell másolnia az aktuális /home fájlból.

Ezt közvetlenül a számítógép indítása után tettem meg, mielőtt root felhasználóként bejelentkeztem volna a fiókomba. Ha felhasználóként jelentkeznék be, bizonyos programok a felhasználó /home/user mappájában lévő socketeket és fájlokat nyitnának meg, ami megnehezítené a tiszta másolást. Mint tudod, a root felhasználó saját mappája általában a /root elérési úton található, így a /home partíción nem nyílnak meg fájlok.

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

Az utolsó sort lásd статью.

Ezután szerkesztjük az /etc/fstab fájlt, amelybe a /home fájlrendszer fel van szerelve

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

választási lehetőség noatime a teljesítmény javításához szükséges, hogy az időpont ne változzon minden egyes fájlhozzáféréssel. Ezután újraindítjuk.

Képtípusok a NILFS2-ben.

A törléssel szembeni védettség nélküli szokásos pillanatképet ellenőrzőpontnak vagy helyreállítási pontnak nevezzük.
Az automatikus törléstől védett pillanatfelvételt pillanatképnek, majd egyszerűen pillanatképnek nevezzük.

Az ellenőrzőpontok megtekintése az lscp paranccsal történik

Pillanatképek megtekintése lscp -s

Bármikor magunk is készíthetünk pillanatképeket és ellenőrzőpontokat a következő használatával:

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

Visszaállítjuk az adatokat.

A NILFS lehetővé teszi, hogy a fő FS-ággal párhuzamosan annyi régi pillanatképet csatoljunk, amennyit csak akarunk. De csak olvasási módban.

Minden így van elrendezve. A NILFS2 által készített rendszeres ellenőrzőpontok bármikor automatikusan törölhetők (ha kifogy a lemezterület, vagy a nilfs_cleanerd szabályok szerint), így telepítés előtt át kell alakítanunk az ellenőrzőpontot pillanatképpé, vagy oroszul beszélve a pillanatképet rögzíteni.

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

Ezt követően felcsatolhatjuk a pillanatképet, például így:

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

Ezután átmásoljuk a visszaállított fájlokat a pillanatképből a /home mappába.
Ezt követően eltávolítjuk a nem törölhető jelzőt a pillanatképről, hogy a jövőben az automatikus szemétgyűjtő eltávolíthassa az elavult adatokat:

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

Segédprogramok a NILFS2 számára

De ez a probléma. Igen, természetesen létrehozhatunk fájlrendszert, online módosíthatjuk a méretét, megtekinthetjük a kihívások listáját, létrehozhatjuk és törölhetjük azokat. A nilfs2-utils csomag minimális úri szettet biztosít.

Mivel az NTT megnyirbálta a finanszírozását, nincsenek gyors, alacsony szintű segédprogramok, amelyek lehetővé tennék a fájlváltozások előzményeinek megjelenítését vagy a pillanatképek közötti különbségtételt.

Az n2u segédprogramom

Ennek a vákuumnak a kitöltésére írtam az n2u segédprogramot, amely képes megjeleníteni egy adott fájl/könyvtár változástörténetét:

n2u log filename

A kimenet valami ilyesmi:

          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

A választott megvalósítási módnál meglehetősen gyorsan működik: felező módszerrel keresi a fájlok közötti különbségeket, gyorsan felcsatolja és összehasonlítja a fájlt/könyvtárat különböző pillanatképekben.

A gomb segítségével számos ellenőrzőpontot állíthat be -cp CP1:CP2 vagy -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Azt is láthatja, hogy mi a különbség egy adott fájl vagy könyvtár ellenőrzőpontjai között:

n2u diff -r cp1:cp2 filename

Megjelenítheti a változtatások teljes kronológiáját: az összes különbséget egy adott fájl/könyvtár ellenőrzőpontjai között:

n2u blame [-r cp1:cp2] filename

Ebben a parancsban a dátum intervallum is támogatott.

Kiáltás a fejlesztőknek

Habréval kapcsolatban sok szakember foglalkozik. Kérjük, fejezze be a NILFS2-t. Készítsen replikációt, alacsony szintű gyors különbséget a változatok között, linkelést és egyéb finomságokat!

referenciák

Hivatalos NILFS weboldal.

Adattárak:
NILFS2.
NILFS2 segédprogramok és modulok.

Hírlevelek:
E-mail hírlevél NILFS2 fejlesztőknek. A linux-nilfs előfizetés azonosítója.
Hírlevél archívum.

nilfs_cleanerd beállítási útmutató.
Benchmarking EXT4, Btrfs, XFS és NILFS2 teljesítménytesztek.

Köszönetnyilvánítás:

  • NILFS2 fejlesztők: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi és Satoshi Moriai. További jelentős közreműködők: Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitry Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vyacheslav Dubeyko.
  • Az Amblin Entertainmentnek és a Universal Picturesnek egy csodálatos filmsorozatért. "Vissza a jövőbe". A bejegyzés első képe a „Vissza a jövőbe 3” című filmből származik.
  • Vállalatok RUVDS támogatásért és a Habré blogon való közzététel lehetőségéért.

PS Az észlelt hibákat privát üzenetben kérjük jelezni. Növelem ezért a karmám.

Kísérletezhet a NILFS2-vel, ha virtuális gépet rendel RUVDS az alábbi kuponnal. Minden új ügyfél számára 3 napos ingyenes próbaidőszak áll rendelkezésre.

NILFS2 - golyóálló fájlrendszer a /home számára

Forrás: will.com

Hozzászólás