NILFS2 - in kûgelfrij bestânsysteem foar /home

NILFS2 - in kûgelfrij bestânsysteem foar /home

Lykas jo witte, as problemen kinne barre, sil it perfoarst barre. Wierskynlik hat elkenien gefallen hân doe't in resinte wichtich bestân by ûngelok wiske waard, of tekst waard per ûngelok selektearre en ferneatige yn in tekstbewurker.

As jo ​​​​in hoster of webside-eigner binne, dan hawwe jo wierskynlik hacking fan brûkersakkounts of jo webside tsjinkaam. Yn sokke gefallen is it wichtich om de gronology te herstellen, de metoade fan yngong te finen en de kwetsberens brûkt troch de oanfaller.

It NILFS2-bestânsysteem is perfekt foar it oplossen fan sokke problemen.

It is oanwêzich yn 'e Linux kernel sûnt ferzje 2.6.30.

De eigenaardichheid fan dit bestânsysteem is dat it fergelykber is mei in ferzjekontrôlesysteem: jo kinne de steat fan it systeem altyd weromrôlje en sjen hoe't it in skoft lyn wie.

Om dizze funksjonaliteit te leverjen, hoege jo gjin Cron-skripts te konfigurearjen, snapshots te nimmen, ensfh. It NILFS2-bestânsysteem docht dit allegear sels. It oerskriuwt nea âlde gegevens en skriuwt altyd nei nije gebieten fan 'e skiif as d'r genôch frije skiifromte is. Yn folslein oerienstimming mei it Copy-on-Write prinsipe.

Yn feite makket elke wiziging yn in bestân automatysk in nije momintopname fan it bestânsysteem, sadat jo dizze FS kinne brûke as in tiidmasine en de steat fan bestannen weromdraaie.

История

NILFS2 - in kûgelfrij bestânsysteem foar /homeNILFS2 waard ûntwikkele yn 'e djipten fan Nippon Telegraph and Telephone Corporation, yn feite, de steat-eigendom (it hat in kontrolearjende belang) en de grutste telekommunikaasje bedriuw yn Japan. Mear spesifyk, yn 'e CyberSpace Laboratories ûnder lieding Ryusuke Konishi.

Wêr't it krekt foar ûntwikkele is, is ûnbekend, lykwols kin oannommen wurde dat sa'n FS, mei syn "tiidmasine"-funksjonaliteit, ideaal is foar it opslaan fan gegevens dêr't de ynljochtingetsjinsten miskien yn grave wolle om it hiele byld fan wer te spyljen. SMS, e-mails, ensfh....

NILFS2 is ek potinsjeel in heul weardefol ark foar ynterne feiligenstsjinsten, om't it jo alle ferwidere brieven yn 'e e-postdatabase kinne weromhelje, wêrtroch't de jambs fan meiwurkers sjen litte dy't letter kinne besykje se te fermoardzjen troch har bestannen te wiskjen of te feroarjen.

Hoe kinne jo jo heule korrespondinsjeskiednis folgje?Op Linux-tsjinners (en dit is wêr't NILFS2 moat wurde ynstalleare foar ynterne feiligensdoelen), wurdt de triemmetoade foar it opslaan fan e-posten heul faak brûkt om e-postberjochten op te slaan. De saneamde opmaak Maildir. Genôch om te setten Courier Mail Server en konfigurearje e-post opslach yn Maildir. Oare format mbox is in grut tekstbestân dat maklik yn yndividuele berjochten kin wurde parseard.

As de e-posttsjinner in databank brûkt, dan sil NILFS2 it mooglik meitsje om de krekte timing fan databankwizigingen en de mooglikheid om de databank op ien fan dizze mominten te herstellen. En dan moatte jo database-ark brûke om te sjen wat der op dat stuit yn stie ...

Der gie lykwols wat mis. Of de Japanske regearing feroare har gedachten oer it kontrolearjen fan elkenien (a la it Yarovaya-prinsipe), of de prestaasjes fan NILFS2 op tradisjonele HDD's die bliken ûnder par te wêzen, en NILFS2 waard frijlitten ûnder de GPL-lisinsje en kaam heul gau yn 'e Linux-kernel, sûnt d'r wiene gjin bepaalde klachten oer de koade skreaun heech kwalifisearre Japansk, de ûntwikkelders fan 'e Linux kernel hienen it net.

Hoe is NILFS2?

Ut in gebrûk eachpunt: op in ferzje kontrôle systeem SVN. Elk FS-kontrôlepunt is in commit dy't automatysk wurdt makke sûnder de kennis fan 'e brûker as d'r in feroaring is: of it no wiskje, de ynhâld fan in bestân feroarje of tagongsrjochten feroarje. Elke commit hat in nûmer dat lineêr ferheget.

Ut it eachpunt fan in programmeur: in sirkulêre buffer. It bestânsysteem sammelet feroaringen en skriuwt se yn in brok gelyk oan likernôch 8 MB (2000 * 4096, wêrby't 2000 it oantal eleminten yn it blok is en 4096 de grutte fan 'e ûnthâldside is). De hiele skiif is ferdield yn sokke brokken. De opname giet opfolgjend troch. As de frije romte op is, wurde de âldste snapshots wiske en wurde de brokken oerskreaun.

Basis NILFS2 goodies

  • Ferzje!!!
  • De proseduere foar it werstellen fan in bestânsysteem nei in mislearring is ienfâldich: by it laden wurdt it lêste stik socht dat de juste kontrôlesum hat, en der wurdt in superblok ynstalleare. Dit is in hast instant operaasje.
  • Troch it feit dat de opname altyd lineêr ferrint, dan:
    • kin sjen litte goede resultaten as jo rinne op in SSD mei trage willekeurige skriuwt.
    • NILFS2 besparret SSD-boarne, om't d'r hast gjin skriuwfermannichfâldigingsfaktor is.
      Mear krekter, it is net mear as 2.It feit is dat by it syklysk oerskriuwen fan de hiele skiif, NILFS2 sil oerdrage ûnferoarlike gegevens nei nije stikken (brokken).

      As wy 10% fan net feroarjende gegevens op 'e skiif hawwe, dan krije wy in skriuwferheging fan 10% mei 1 folsleine herskriuwing. No, in ferheging fan 50% by 50% folsleinens fan it apparaat foar 1 folsleine herskriuwe fan 'e skiif.

      De maksimale skriuwwinst is 2. Dit is heul leech yn betinken dat alles sequentieel skreaun is. Yn 't algemien sil de skriuwanimaasje minder wêze as dy fan in konvinsjoneel fragmintearre bestânsysteem mei in 4096-bytesektor. (gedachte ynspireare troch kommentaar).

  • Potinsjele gemak fan ymplemintaasje fan replikaasje nei in ôfstân NILFS2 FS

NILFS2 foar / thús

Yn Unix-like bestjoeringssystemen is d'r yn 'e regel in map /home wêryn brûkersgegevens wurde opslein. Ferskate programma's bewarje har brûkersspesifike ynstellings yn dizze map.

En wa, as net brûkers, makket flaters it meast? Dêrom, lykas se sizze, God sels bestelde it gebrûk fan NILFS2 op /home.

Boppedat, mei it wiidferspraat gebrûk fan SSD's, hoege wy no gjin soargen mear te meitsjen oer swiere ûntbrekken by it brûken fan CoW-bestânsystemen.

Ja, wy kinne FS-snapshots sa faak meitsje as wy wolle yn ZFS en BTRFS, mar d'r is altyd in risiko dat in ferlerne triemferoaring tusken de snapshots einiget. En de foto's moatte noch administrearre wurde: âlde moatte wiske wurde. Yn NILFS2 bart dit alles automatysk, letterlik elke pear sekonden.

Ik makke in logyske folume mei help fan lvcreate (yn de nvme folume groep, tinne pool tinne). Ik advisearje it oan te meitsjen op it lvm-folume, om't it letter maklik kin wurde útwreide. Ik riede oan 50% frije skiifromte mei NILFS2 foar fatsoenlike ferzje djipte.

lvcreate -V10G -T nvme/thin -n home

en formatte it yn 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 !!

Hjirnei moatte jo alle gegevens kopiearje fan 'e hjoeddeistige /home.

Ik die dit fuortendaliks nei it booten fan 'e kompjûter, foardat ik oanmelde op myn akkount, as de root-brûker. As ik my oanmelde as myn brûker, soene guon programma's sockets en bestannen iepenje yn 'e /thús/brûkersmap fan myn brûker, wat in skjinne kopy lestich soe meitsje. Sa't jo witte, is de thúsmap foar de root-brûker meastentiids op it / root-paad, sadat gjin bestannen sille iepenje op 'e / home partition.

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

Foar de lêste rigel, sjoch in artikel.

Folgjende bewurkje wy /etc/fstab, wêryn it bestânsysteem foar /home is monteard, nei

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

Opsje noatime nedich om prestaasjes te ferbetterjen sadat de tiid net feroaret mei elke triemtagong. Folgjende we reboot.

Soarten ôfbyldings yn NILFS2.

In gewoane momintopname sûnder immuniteit foar wiskjen wurdt in kontrôlepunt of herstelpunt neamd.
In momintopname beskerme tsjin automatysk wiskjen wurdt in momintopname neamd, dan gewoan in momintopname.

It besjen fan kontrôlepunten wurdt dien mei it lscp kommando

Besjoch snapshots lscp -s

Wy kinne op elk momint sels snapshots en kontrôlepunten meitsje mei:

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

Wy restaurearje gegevens.

NILFS lit ús mount safolle âlde snapshots as wy wolle parallel mei wurkjen mei de wichtichste FS tûke. Mar allinich yn lêsmodus.

Alles is sa regele. Reguliere kontrôlepunten dy't NILFS2 makket kinne op elk momint automatysk wiske wurde (as skiifromte op is of neffens de regels fan nilfs_cleanerd), dus foar ynstallaasje moatte wy it kontrôlepunt omsette yn in momintopname of, yn Russysk sprekkend, de momintopname fange.

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

Dêrnei kinne wy ​​​​de snapshot montearje, bygelyks sa:

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

Hjirnei kopiearje wy de restaurearre bestannen fan 'e snapshot nei /home.
En dêrnei ferwiderje wy de net-deletebere flagge fan 'e snapshot, sadat de automatyske garbage collector yn' e takomst ferâldere gegevens kin fuortsmite:

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

Utilities foar NILFS2

Mar dit is it probleem. Ja, fansels, wy kinne in bestânsysteem oanmeitsje, de grutte online feroarje, de list mei útdagingspunten besjen, se oanmeitsje en wiskje. It pakket nilfs2-utils biedt in minimale gentleman's set.

Sûnt NTT syn finansiering hat beheine, binne d'r gjin snelle nutsbedriuwen op leech nivo wêrmei jo de skiednis fan bestânwizigingen kinne werjaan of ferskil meitsje tusken snapshots.

Myn n2u utility

Om dit fakuüm te foljen skreau ik dyn n2u nut, dy't de skiednis fan wizigingen yn in spesifike triem/map sjen kin:

n2u log filename

De útfier is sa'n ding:

          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

It wurket frij rap foar de keazen ymplemintaasjemetoade: it siket nei ferskillen tusken bestannen mei de biseksjemetoade, fluch montearje en fergelykje de triem / map yn ferskate snapshots.

Jo kinne in berik fan kontrôlepunten ynstelle mei de kaai -cp CP1:CP2 of -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Jo kinne ek it ferskil sjen tusken kontrôlepunten foar in spesifike triem of map:

n2u diff -r cp1:cp2 filename

Jo kinne de folsleine gronology fan feroaringen werjaan: alle ferskillen tusken de kontrôlepunten fan in spesifike triem/map:

n2u blame [-r cp1:cp2] filename

Datum ynterval yn dit kommando wurdt ek stipe.

In gjalp foar de ûntwikkelders

D'r binne in protte spesjalisten op Habré. Folgje asjebleaft NILFS2. Meitsje replikaasje, fluch ferskil op leech nivo tusken ferzjes, reflink en oare guod!

referinsjes

Offisjele NILFS webside.

Repositories:
NILFS2.
NILFS2 nutsbedriuwen en modules.

Nijsbrieven:
E-nijsbrief foar NILFS2-ûntwikkelders. ID foar linux-nilfs abonnemint.
Nijsbrief argyf.

nilfs_cleanerd setup guide.
Benchmarking EXT4, Btrfs, XFS & NILFS2 Performance Tests.

Tank:

  • NILFS2-ûntwikkelders: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi en Satoshi Moriai. Oare grutte bydragen binne: Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitry Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vyacheslav Dubeyko.
  • Oan Amblin Entertainment en Universal Pictures foar in prachtige rige films. "Werom nei de takomst". De earste foto fan 'e post is nommen út' e film "Back to the Future 3".
  • Bedriuwen RUVDS foar stipe en de kâns om te publisearjen op myn blog op Habré.

PS Stjoer asjebleaft alle flaters dy't jo opfalle yn in priveeberjocht. Ik ferheegje myn karma foar dit.

Jo kinne eksperimintearje mei NILFS2 troch it bestellen fan in firtuele masine út RUVDS mei de coupon hjirûnder. Foar alle nije kliïnten is d'r in fergese proefperioade fan 3 dagen.

NILFS2 - in kûgelfrij bestânsysteem foar /home

Boarne: www.habr.com

Add a comment