NILFS2 - 'n koeëlvaste lêerstelsel vir /home

NILFS2 - 'n koeëlvaste lêerstelsel vir /home

Soos u weet, as moeilikheid kan gebeur, sal dit beslis gebeur. Waarskynlik het almal gevalle gehad waar 'n onlangse belangrike lêer per ongeluk uitgevee is, of teks per ongeluk gekies en vernietig is in 'n teksredigeerder.

As jy 'n gasheer of webwerf-eienaar is, het jy waarskynlik teëgekom om gebruikersrekeninge of jou webwerf te hack. In sulke gevalle is dit belangrik om die chronologie te herstel, die metode van toegang te vind en die kwesbaarheid wat deur die aanvaller gebruik word.

Die NILFS2-lêerstelsel is perfek om sulke probleme op te los.

Dit is teenwoordig in die Linux-kern sedert weergawe 2.6.30.

Die eienaardigheid van hierdie lêerstelsel is dat dit soortgelyk is aan 'n weergawebeheerstelsel: jy kan altyd die toestand van die stelsel terugrol en kyk hoe dit 'n tyd gelede was.

Om hierdie funksionaliteit te verskaf, hoef jy nie Cron-skrifte op te stel, foto's te neem, ens. Die NILFS2-lêerstelsel doen dit alles op sigself. Dit oorskryf nooit ou data nie en skryf altyd na nuwe areas van die skyf as daar genoeg vrye skyfspasie is. In volle ooreenstemming met die Kopieer-op-skryf-beginsel.

Trouens, enige verandering aan 'n lêer skep outomaties 'n nuwe momentopname van die lêerstelsel, sodat jy hierdie FS as 'n tydmasjien kan gebruik en die toestand van lêers kan terugspoel.

Story

NILFS2 - 'n koeëlvaste lêerstelsel vir /homeNILFS2 is ontwikkel in die dieptes van Nippon Telegraph and Telephone Corporation, trouens die staatsbeheerde (dit het 'n beherende belang) en die grootste telekommunikasiemaatskappy in Japan. Meer spesifiek, in die CyberSpace Laboratories onder leiding Ryusuke Konishi.

Waarvoor dit presies ontwikkel is, is onbekend, daar kan egter aanvaar word dat so 'n FS, met sy "tydmasjien" funksionaliteit, ideaal is vir die stoor van data waarin die intelligensiedienste dalk wil delf om die hele prentjie van weer te speel. SMS, e-pos, ens....

NILFS2 is ook potensieel 'n baie waardevolle hulpmiddel vir interne sekuriteitsdienste, aangesien dit jou toelaat om alle geskrapte briewe in die posdatabasis te herwin, wat die stampe van werknemers openbaar wat hulle later kan probeer vermom deur hul lêers uit te vee of te verander.

Hoe kan jy jou hele korrespondensiegeskiedenis opspoor?Op Linux-bedieners (en dit is waar NILFS2 vir interne sekuriteitsdoeleindes geïnstalleer moet word), word die lêermetode om e-posse te stoor baie dikwels gebruik om e-posboodskappe te stoor. Die sogenaamde formaat Maildir. Genoeg om te sit Koerier-posbediener en stel posberging in Maildir op. Ander formaat mbox is 'n groot tekslêer wat maklik in individuele boodskappe ontleed kan word.

As die posbediener 'n databasis gebruik, sal NILFS2 dit moontlik maak om die presiese tydsberekening van databasisveranderings en die vermoë om die databasis op enige van hierdie oomblikke te herstel, te herstel. En dan moet jy databasisnutsgoed gebruik om te sien wat op daardie tydstip daarin was ...

Iets het egter verkeerd geloop. Óf die Japannese regering het van plan verander oor die monitering van almal (a la die Yarovaya-beginsel), óf die werkverrigting van NILFS2 op tradisionele HDD's blyk onder peil te wees, en NILFS2 is vrygestel onder die GPL-lisensie en het baie vinnig die Linux-kern betree, aangesien daar was geen spesifieke klagtes oor die kode geskryf hoogs gekwalifiseerde Japannees, die ontwikkelaars van die Linux kern het dit nie.

Hoe is NILFS2?

Vanuit 'n gebruiksoogpunt: op 'n weergawebeheerstelsel SVN. Elke FS-kontrolepunt is 'n commit wat outomaties sonder die gebruiker se medewete gemaak word wanneer daar enige verandering is: hetsy dit uitvee, die inhoud van 'n lêer verander of toegangsregte verander. Elke commit het 'n getal wat lineêr toeneem.

Vanuit 'n programmeerder se oogpunt: 'n sirkelvormige buffer. Die lêerstelsel versamel veranderinge en skryf dit in 'n stuk gelykstaande aan ongeveer 8 MB (2000 * 4096, waar 2000 die aantal elemente in die blok is en 4096 die grootte van die geheuebladsy is). Die hele skyf is in sulke stukke verdeel. Die opname gaan opeenvolgend voort. Wanneer vrye spasie opraak, word die oudste kiekies uitgevee en die stukke word oorgeskryf.

Basiese NILFS2 lekkernye

  • Weergawe!!!
  • Die prosedure vir die herstel van 'n lêerstelsel na 'n mislukking is eenvoudig: wanneer dit gelaai word, word die laaste stuk wat die korrekte kontrolesom het, gesoek, en 'n superblok word daarop geïnstalleer. Dit is 'n byna onmiddellike operasie.
  • As gevolg van die feit dat opname altyd lineêr verloop, dan:
    • kan goeie resultate toon wanneer jy op 'n SSD hardloop met stadige ewekansige skryfwerk.
    • NILFS2 bespaar SSD-hulpbron, aangesien daar byna geen skryfvermenigvuldigingsfaktor is nie.
      Meer presies, dit is nie meer as 2 nie.Die feit is dat wanneer die hele skyf siklies herskryf word, NILFS2 onveranderlike data na nuwe stukke (stukke) sal oordra.

      As ons 10% onveranderlike data op die skyf het, sal ons 'n 10% skryfverhoging kry met 1 volledige herskryf. Wel, 'n 50% toename by 50% volheid van die toestel vir 1 volledige herskryf van die skyf.

      Die maksimum skryfwins is 2. Dit is baie laag as in ag geneem word dat alles opeenvolgend geskryf word. Oor die algemeen sal die skryf-animasie minder wees as dié van 'n konvensionele gefragmenteerde lêerstelsel met 'n 4096-grepe sektor. (Gedagte geïnspireer deur kommentaar lewer).

  • Potensiële gemak van implementering van replikasie na 'n afgeleë NILFS2 FS

NILFS2 vir /huis

In Unix-agtige bedryfstelsels is daar as 'n reël 'n /home-lêergids waarin gebruikersdata gestoor word. Verskeie programme stoor hul gebruikerspesifieke instellings in hierdie vouer.

En wie, indien nie gebruikers nie, maak die meeste foute? Daarom, soos hulle sê, het God self die gebruik van NILFS2 op /home beveel.

Boonop, met die wydverspreide gebruik van SSD's, hoef ons nou nie meer bekommerd te wees oor ernstige onttrekkings wanneer ons CoW-lêerstelsels gebruik nie.

Ja, ons kan FS-kiekies so gereeld skep as wat ons wil in ZFS en BTRFS, maar daar is altyd 'n risiko dat 'n verlore lêerverandering tussen die foto's sal beland. En die prente moet nog geadministreer word: oues moet uitgevee word. In NILFS2 gebeur dit alles outomaties, letterlik elke paar sekondes.

Ek het 'n logiese volume geskep deur lvcreate te gebruik (in die nvme volume groep, thin pool thin). Ek beveel aan om dit op die lvm-volume te skep, aangesien dit later maklik uitgebrei kan word. Ek beveel aan om 50% vrye skyfspasie met NILFS2 te hê vir ordentlike weergawe-diepte.

lvcreate -V10G -T nvme/thin -n home

en dit in NILFS2 geformateer:

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

Hierna moet u alle data vanaf die huidige /home kopieer.

Ek het dit onmiddellik gedoen nadat ek die rekenaar opgelaai het, voordat ek by my rekening aangemeld het, as die wortelgebruiker. As ek as my gebruiker sou aanmeld, sal sommige programme voetstukke en lêers in my gebruiker se /home/user-lêergids oopmaak, wat 'n skoon kopie moeilik sal maak. Soos u weet, is die tuisgids vir die wortelgebruiker gewoonlik op die /root-pad geleë, so geen lêers sal op die /home-partisie oopmaak nie.

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

Vir die laaste reël, sien 'n artikel.

Volgende redigeer ons /etc/fstab, waarin die lêerstelsel vir /home gemonteer is, na

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

opsie noatime nodig om werkverrigting te verbeter sodat die tyd nie met elke lêertoegang verander nie. Volgende herlaai ons.

Tipes beelde in NILFS2.

'n Gereelde momentopname sonder immuniteit teen uitvee word 'n kontrolepunt of herstelpunt genoem.
'n Momentopname wat beskerm word teen outo-uitwissing, word 'n momentopname genoem, dan bloot 'n momentopname.

Bekyk kontrolepunte word gedoen met behulp van die lscp-opdrag

Bekyk momentopnames lscp -s

Ons kan enige tyd self foto's en kontrolepunte skep deur:

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

Ons herstel data.

NILFS stel ons in staat om soveel ou foto's te monteer as wat ons wil, parallel met die werk met die hoof FS-tak. Maar slegs in leesmodus.

Alles is so gereël. Gereelde kontrolepunte wat NILFS2 maak, kan enige tyd outomaties uitgevee word (wanneer skyfspasie opraak of volgens die nilfs_cleanerd-reëls), so voor installasie moet ons die kontrolepunt omskep in 'n momentopname of, in Russiessprekend, die momentopname vasvang.

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

Daarna kan ons die kiekie monteer, byvoorbeeld, soos volg:

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

Daarna kopieer ons die herstelde lêers vanaf die momentopname na /home.
En daarna verwyder ons die nie-uitvee-vlag van die momentopname sodat die outomatiese vullisverwyderaar in die toekoms verouderde data kan verwyder:

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

Hulpprogramme vir NILFS2

Maar dit is die probleem. Ja, natuurlik, ons kan 'n lêerstelsel skep, die grootte daarvan aanlyn verander, die lys uitdagingspunte bekyk, dit skep en uitvee. Die nilfs2-utils-pakket bied 'n minimale gentleman's set.

Aangesien NTT sy befondsing ingekort het, is daar geen vinnige lae-vlak nutsprogramme wat jou toelaat om die geskiedenis van lêerveranderinge te vertoon of verskil tussen momentopnames te maak nie.

My n2u nut

Om hierdie vakuum te vul het ek geskryf jou n2u nut, wat die geskiedenis van veranderinge aan 'n spesifieke lêer/gids kan vertoon:

n2u log filename

Die uitset is iets soos hierdie:

          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

Dit werk redelik vinnig vir die gekose implementeringsmetode: dit soek na verskille tussen lêers deur die biseksie-metode te gebruik, die lêer/gids vinnig op verskillende momentopnames te monteer en te vergelyk.

Jy kan 'n reeks kontrolepunte stel met die sleutel -cp CP1:CP2 of -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Jy kan ook die verskil tussen kontrolepunte vir 'n spesifieke lêer of gids sien:

n2u diff -r cp1:cp2 filename

U kan die hele chronologie van veranderinge vertoon: al die verskille tussen die kontrolepunte van 'n spesifieke lêer/gids:

n2u blame [-r cp1:cp2] filename

Datum interval in hierdie opdrag word ook ondersteun.

'n Kreet vir die ontwikkelaars

Daar is baie spesialiste op Habré. Voltooi asseblief NILFS2. Maak replikasie, lae-vlak vinnige verskil tussen hersienings, herskakel en ander lekkernye!

verwysings

Amptelike NILFS webwerf.

Bewaarplekke:
NILFS2.
NILFS2 nutsprogramme en modules.

Nuusbriewe:
E-pos nuusbrief vir NILFS2 ontwikkelaars. ID vir linux-nilfs-intekening.
Nuusbrief argief.

nilfs_cleanerd opstelgids.
Benchmarking EXT4, Btrfs, XFS & NILFS2 Prestasietoetse.

Dankie:

  • NILFS2-ontwikkelaars: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi en Satoshi Moriai. Ander groot bydraers is: Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitry Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vyacheslav Dubeyko.
  • Aan Amblin Entertainment en Universal Pictures vir 'n wonderlike reeks films. "Terug na die toekoms". Die eerste foto van die plasing is geneem uit die fliek "Back to the Future 3".
  • Maatskappye RUVDS vir ondersteuning en die geleentheid om op jou blog op Habré te publiseer.

PS Stuur asseblief enige foute wat jy opmerk in 'n privaat boodskap. Ek verhoog my karma hiervoor.

Jy kan eksperimenteer met NILFS2 deur 'n virtuele masjien van te bestel RUVDS met die koepon hieronder. Vir alle nuwe kliënte is daar 'n gratis proeftydperk van 3 dae.

NILFS2 - 'n koeëlvaste lêerstelsel vir /home

Bron: will.com

Voeg 'n opmerking