NILFS2 - ložu necaurlaidīga failu sistēma /home

NILFS2 - ložu necaurlaidīga failu sistēma /home

Kā zināms, ja var gadÄ«ties nepatikÅ”anas, tās noteikti notiks. DroÅ”i vien ikvienam ir bijuÅ”i gadÄ«jumi, kad kāds nesen nozÄ«mÄ«gs fails tika nejauÅ”i izdzēsts vai teksts tika nejauÅ”i atlasÄ«ts un iznÄ«cināts teksta redaktorā.

Ja esat mitinātājs vai vietnes Ä«paÅ”nieks, iespējams, esat saskāries ar lietotāju kontu vai vietnes uzlauÅ”anu. Šādos gadÄ«jumos ir svarÄ«gi atjaunot hronoloÄ£iju, atrast ievadÄ«Å”anas metodi un uzbrucēja izmantoto ievainojamÄ«bu.

NILFS2 failu sistēma ir lieliski piemērota Ŕādu problēmu risināŔanai.

Tas ir pieejams Linux kodolā kopŔ versijas 2.6.30.

Šīs failu sistēmas īpatnība ir tāda, ka tā ir līdzīga versiju kontroles sistēmai: jūs vienmēr varat atgriezt sistēmas stāvokli un apskatīties, kāds tas bija pirms kāda laika.

Lai nodroÅ”inātu Å”o funkcionalitāti, jums nav jākonfigurē Cron skripti, jāuzņem momentuzņēmumi utt. NILFS2 failu sistēma to visu dara pati. Tas nekad nepārraksta vecos datus un vienmēr raksta uz jauniem diska apgabaliem, ja diskā ir pietiekami daudz brÄ«vas vietas. PilnÄ«bā saskaņā ar Copy-on-Write principu.

Faktiski jebkuras izmaiņas failā automātiski izveido jaunu failu sistēmas momentuzņēmumu, lai jÅ«s varētu izmantot Å”o FS kā laika maŔīnu un attÄ«t failu stāvokli.

Stāsts

NILFS2 - ložu necaurlaidÄ«ga failu sistēma /homeNILFS2 tika izstrādāts dziļumā Nippon Telegraph and Telephone Corporation, faktiski valstij piederoÅ”s (tam ir kontrolpakete) un lielākais telekomunikāciju uzņēmums Japānā. Konkrētāk, Kibertelpas laboratorijās vadÄ«bā Ryusuke Konishi.

Kam tieÅ”i tā izstrādāta, nav zināms, tomēr var pieņemt, ka Ŕāda FS ar savu ā€œlaika maŔīnasā€ funkcionalitāti ir ideāli piemērota tādu datu glabāŔanai, kurus izlÅ«koÅ”anas dienesti varētu vēlēties iedziļināties, lai atkārtoti atskaņotu visu SMS, e-pasti utt....

NILFS2 ir arÄ« potenciāli ļoti vērtÄ«gs rÄ«ks iekŔējās droŔības dienestiem, jo ā€‹ā€‹tas ļauj atgÅ«t visus dzēstos vēstules pasta datu bāzē, atklājot darbinieku sastrēgumus, kuri vēlāk var mēģināt tos maskēt, dzÄ“Å”ot vai mainot savus failus.

Kā jÅ«s varat izsekot visai sarakstes vēsturei?Linux serveros (un tieÅ”i Å”eit iekŔējās droŔības nolÅ«kos ir jāinstalē NILFS2) e-pasta ziņojumu glabāŔanai ļoti bieži tiek izmantota failu metode. Tā sauktais formāts Maildir. Pietiekami likt Kurjerpasta serveris un konfigurējiet pasta krātuvi programmā Maildir. Cits formāts mbox ir liels teksta fails, ko var viegli parsēt atseviŔķos ziņojumos.

Ja pasta serveris izmanto datu bāzi, tad NILFS2 ļaus atjaunot precÄ«zu datu bāzes izmaiņu laiku un iespēju atjaunot datu bāzi jebkurā no Å”iem brīžiem. Un tad jums ir jāizmanto datu bāzes rÄ«ki, lai redzētu, kas tajā brÄ«dÄ« bija...

Tomēr kaut kas nogāja greizi. Vai nu Japānas valdÄ«ba mainÄ«ja savas domas par visu uzraudzÄ«bu (a la Yarovaya princips), vai arÄ« NILFS2 veiktspēja tradicionālajos HDD izrādÄ«jās zemāka par nominālvērtÄ«bu, un NILFS2 tika izlaists saskaņā ar GPL licenci un ļoti ātri iekļuva Linux kodolā, jo Ä«paÅ”u sÅ«dzÄ«bu par kodu rakstÄ«ts augsti kvalificēts japāņu valodā nebija, Linux kodola izstrādātājiem tā nebija.

Kā ir NILFS2?

No lietoÅ”anas viedokļa: versiju kontroles sistēmā SVN. Katrs FS kontrolpunkts ir apņemÅ”anās, kas tiek veikta automātiski bez lietotāja ziņas ikreiz, kad tiek veiktas izmaiņas: vai tā ir dzÄ“Å”ana, faila satura maiņa vai piekļuves tiesÄ«bu maiņa. Katrai apņemÅ”anai ir skaitlis, kas lineāri palielinās.

No programmētāja viedokļa: apļveida buferis. Failu sistēma uzkrāj izmaiņas un ieraksta tās daļā, kas vienāda ar aptuveni 8 MB (2000 * 4096, kur 2000 ir elementu skaits blokā un 4096 ir atmiņas lapas lielums). Viss disks ir sadalÄ«ts Ŕādos gabalos. IerakstÄ«Å”ana notiek secÄ«gi. Kad brÄ«vā vieta beidzas, vecākie momentuzņēmumi tiek dzēsti un fragmenti tiek pārrakstÄ«ti.

Pamata NILFS2 labumi

  • Versiju izstrāde!!!
  • Failu sistēmas atjaunoÅ”anas procedÅ«ra pēc kļūmes ir vienkārÅ”a: ielādes laikā tiek meklēts pēdējais fragments, kuram ir pareizā kontrolsumma, un tajā tiek instalēts superbloks. Å Ä« ir gandrÄ«z tÅ«lÄ«tēja darbÄ«ba.
  • Sakarā ar to, ka ierakstÄ«Å”ana vienmēr notiek lineāri, tad:
    • var uzrādÄ«t labus rezultātus, strādājot ar SSD ar lēnu nejauÅ”u rakstÄ«Å”anu.
    • NILFS2 ietaupa SSD resursus, jo gandrÄ«z nav rakstÄ«Å”anas reizināŔanas koeficienta.
      Precīzāk, tas nav lielāks par 2.Fakts ir tāds, ka, cikliski pārrakstot visu disku, NILFS2 pārsūtīs nemaināmus datus uz jauniem gabaliem (gabaliem).

      Ja mums diskā ir 10% nemainÄ«gu datu, tad mēs saņemsim 10% rakstÄ«Å”anas pieaugumu ar 1 pilnÄ«gu pārrakstÄ«Å”anu. Nu, 50% pieaugums pie 50% ierÄ«ces pilnÄ«bas 1 pilnÄ«gai diska pārrakstÄ«Å”anai.

      Maksimālais rakstÄ«Å”anas pastiprinājums ir 2. Tas ir ļoti zems, ņemot vērā, ka viss tiek rakstÄ«ts secÄ«gi. Kopumā rakstÄ«Å”anas animācija bÅ«s mazāka nekā parastajai sadrumstalotai failu sistēmai ar 4096 baitu sektoru. (Domu iedvesmojusi komentēt).

  • Iespējama vienkārŔāka replikācijas ievieÅ”ana attālā NILFS2 FS

NILFS2 vietnei /home

Unix līdzīgās operētājsistēmās, kā likums, ir /home mape, kurā tiek glabāti lietotāja dati. Šajā mapē dažādas programmas saglabā savus lietotāja iestatījumus.

Un kurÅ”, ja ne lietotāji, kļūdās visbiežāk? Tāpēc, kā saka, pats Dievs pavēlēja lietot NILFS2 vietnē /home.

Turklāt, plaÅ”i izmantojot SSD, mums vairs nav jāuztraucas par nopietniem iztrÅ«kumiem, izmantojot CoW failu sistēmas.

Jā, mēs varam izveidot FS momentuzņēmumus tik bieži, cik mums patÄ«k ZFS un BTRFS, taču vienmēr pastāv risks, ka starp momentuzņēmumiem tiks pazaudētas faila izmaiņas. Un bildes vēl jāadministrē: vecās jādzÄ“Å”. Programmā NILFS2 tas viss notiek automātiski, burtiski ik pēc dažām sekundēm.

Es izveidoju loÄ£isku sējumu, izmantojot lvcreate (nvme sējumu grupā, plānā baseinā). Iesaku to izveidot lvm sējumā, jo vēlāk to var viegli paplaÅ”ināt. Es iesaku iegÅ«t 50% brÄ«vas vietas diskā ar NILFS2, lai nodroÅ”inātu pienācÄ«gu versiju dziļumu.

lvcreate -V10G -T nvme/thin -n home

un formatēja to 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 !!

Pēc tam jums ir jākopē visi dati no paÅ”reizējās /home.

Es to izdarÄ«ju tÅ«lÄ«t pēc datora palaiÅ”anas, pirms pieteicos savā kontā kā root lietotājs. Ja es pieteiktos kā mans lietotājs, dažas programmas atvērtu ligzdas un failus mana lietotāja mapē /home/user, kas apgrÅ«tinātu tÄ«ras kopijas izveidi. Kā zināms, saknes lietotāja mājas mape parasti atrodas /root ceļā, tāpēc /home nodalÄ«jumā faili netiks atvērti.

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

Par pēdējo rindiņu sk raksts.

Tālāk mēs rediģējam /etc/fstab, kurā ir uzstādīta /home failu sistēma

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

Opcija noatime nepiecieÅ”ams, lai uzlabotu veiktspēju, lai laiks nemainās ar katru piekļuvi failam. Tālāk mēs pārstartējam.

Attēlu veidi programmā NILFS2.

Parasts momentuzņēmums bez imunitātes pret dzÄ“Å”anu tiek saukts par kontrolpunktu vai atkopÅ”anas punktu.
Momentuzņēmums, kas ir aizsargāts pret automātisku dzÄ“Å”anu, tiek saukts par momentuzņēmumu, pēc tam vienkārÅ”i par momentuzņēmumu.

Kontrolpunktu apskate tiek veikta, izmantojot komandu lscp

Skatīt momentuzņēmumus lscp -s

Mēs jebkurā laikā varam izveidot momentuzņēmumus un kontrolpunktus, izmantojot:

mkcp [-s] устрŠ¾Š¹ŃŃ‚Š²Š¾

Mēs atjaunojam datus.

NILFS ļauj mums uzstādÄ«t tik daudz vecu momentuzņēmumu, cik mēs vēlamies paralēli darbam ar galveno FS filiāli. Bet tikai lasÄ«Å”anas režīmā.

Viss ir sakārtots Ŕādi. Regulāros kontrolpunktus, ko veido NILFS2, var automātiski dzēst jebkurā laikā (kad beidzas diska vieta vai saskaņā ar nilfs_cleanerd noteikumiem), tāpēc pirms instalÄ“Å”anas mums ir jāpārvērÅ” kontrolpunkts momentuzņēmumā vai, krieviski runājot, momentuzņēmums ir jāuztver.

chcp ss Š½Š¾Š¼ŠµŃ€_чŠµŠŗŠæŠ¾ŠøŠ½Ń‚Š°

Pēc tam mēs varam uzstādÄ«t momentuzņēmumu, piemēram, Ŕādi:

mount -t nilfs2 -r -o cp=Š½Š¾Š¼ŠµŃ€_чŠµŠŗŠæŠ¾ŠøŠ½Ń‚Š° /dev/nvme/home /mnt/nilfs/Š½Š¾Š¼ŠµŃ€_чŠµŠŗŠæŠ¾ŠøŠ½Ń‚Š°

Pēc tam mēs kopējam atjaunotos failus no momentuzņēmuma uz /home.
Un pēc tam no momentuzņēmuma noņemam neizdzÄ“Å”anas karogu, lai turpmāk automātiskais atkritumu savācējs varētu noņemt novecojuÅ”os datus:

chcp cp Š½Š¾Š¼ŠµŃ€_чŠµŠŗŠæŠ¾ŠøŠ½Ń‚Š°

Utilītas NILFS2

Bet Ŕī ir problēma. Jā, protams, mēs varam izveidot failu sistēmu, mainÄ«t tās lielumu tieÅ”saistē, apskatÄ«t izaicinājumu punktu sarakstu, izveidot un dzēst tos. Nilfs2-utils pakete nodroÅ”ina minimālu džentlmeņu komplektu.

Tā kā NTT ir samazinājis savu finansējumu, nav ātru zema lÄ«meņa utilÄ«tu, kas ļautu parādÄ«t failu izmaiņu vēsturi vai veikt atŔķirÄ«bas starp momentuzņēmumiem.

Mana n2u utilīta

Lai aizpildÄ«tu Å”o vakuumu, es uzrakstÄ«ju jÅ«su n2u utilÄ«ta, kas var parādÄ«t izmaiņu vēsturi noteiktā failā/direktorijā:

n2u log filename

Izvade ir aptuveni Ŕāda:

          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

Tas darbojas diezgan ātri izvēlētajai ievieÅ”anas metodei: tā meklē atŔķirÄ«bas starp failiem, izmantojot bisection metodi, ātri uzstādot un salÄ«dzinot failu/direktoriju dažādos momentuzņēmumos.

Izmantojot taustiņu, varat iestatīt virkni kontrolpunktu -cp CP1:CP2 vai -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Varat arÄ« redzēt atŔķirÄ«bu starp kontrolpunktiem konkrētam failam vai direktorijam:

n2u diff -r cp1:cp2 filename

Varat parādÄ«t visu izmaiņu hronoloÄ£iju: visas atŔķirÄ«bas starp konkrēta faila/direktorija kontrolpunktiem:

n2u blame [-r cp1:cp2] filename

Šajā komandā tiek atbalstīts arī datuma intervāls.

Kliedziens izstrādātājiem

Habrē ir daudz speciālistu. LÅ«dzu, pabeidziet NILFS2. Veiciet replikāciju, zema lÄ«meņa ātru atŔķirÄ«bu starp pārskatÄ«jumiem, atgriezenisko saiti un citus labumus!

atsauces

Oficiālā NILFS vietne.

Krātuves:
NILFS2.
NILFS2 utilītas un moduļi.

Biļeteni:
E-pasta biļetens NILFS2 izstrādātājiem. ID linux-nilfs abonementam.
Biļetenu arhīvs.

nilfs_cleanerd iestatīŔanas rokasgrāmata.
EXT4, Btrfs, XFS un NILFS2 veiktspējas testu salÄ«dzinoÅ”ais novērtējums.

Paldies:

  • NILFS2 izstrādātāji: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi un Satoshi Moriai. Citi lielākie lÄ«dzstrādnieki ir: Andreas Rohner, Den McGee, David Arendt, David Smid, dexen deVries, Dmitrijs Smirnovs, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vjačeslavs Dubeiko.
  • Amblin Entertainment un Universal Pictures par brÄ«niŔķīgu filmu sēriju. "Atpakaļ uz nākotni". Ieraksta pirmais attēls ir ņemts no filmas ā€œAtpakaļ uz nākotni 3ā€.
  • Uzņēmumi RUVDS par atbalstu un iespēju publicēties savā emuārā vietnē HabrĆ©.

PS Pamanītās kļūdas lūdzu sūtiet privātā ziņojumā. Par to es vairoju savu karmu.

Varat eksperimentēt ar NILFS2, pasÅ«tot virtuālo maŔīnu no RUVDS ar kuponu zemāk. Visiem jaunajiem klientiem ir pieejams 3 dienu bezmaksas izmēģinājuma periods.

NILFS2 - ložu necaurlaidīga failu sistēma /home

Avots: www.habr.com

Pievieno komentāru