
Nagu teada, kui häda võib juhtuda, siis see kindlasti juhtub. Kindlasti on igaühel olnud juhtumeid, kui on kogemata kustutatud värske ja oluline fail või eemaldatud tekst tekstiredaktorist.
Kui olete hostija või veebisaidi omanik, olete ilmselt silmitsi seisnud kasutajakontode või oma saidi häkkimisega. Sellistes olukordades on oluline taastada ajalugu, leida pääsenud tee ja haavatavus, mida kurjategija kasutas.
Selliste probleemide lahendamiseks sobib suurepäraselt failisüsteem NILFS2.
See on olemas Linuxi tuumas alates versioonist 2.6.30.
Antud failisüsteemi iseloomustab see, et see on sarnane versioonihaldussüsteemiga: teil on alati võimalus süsteemi olek tagasi kerida ja vaadata, milline see mõni aeg tagasi oli.
Selle funktsionaalsuse tagamiseks ei pea te seadistama Cron-skripte, tegemist ei ole töötlussnapshote jne. Failisüsteem NILFS2 teeb seda kõike ise. See ei kirjuta kunagi vanu andmeid üle ning kirjutab alati uusi andmeid uutesse ketta aladesse, kui see on piisavalt vaba ketta ruumi. Täpselt vastavalt Copy-on-Write põhimõttele.
Tegelikult, iga faili muutmine toob automaatselt kaasa uue failisüsteemi snapshot'i loomise, seega võite seda failisüsteemi kasutada nagu ajamasinat, et tagasi kerida failide seisundit.
Ajalugu
NILFS2 on välja töötatud , mis on tegelikult riigi (omab kontrollpaketti) ja Jaapani suurim telekommunikatsioonifirma. Täpsemalt öeldes, CyberSpace Laboratories laboris Ryusuke Konishi juhtimisel. .
Täpselt, mille jaoks see välja töötati, ei ole teada, kuid võib eeldada, et selline failisüsteem oma “ajamasina” funktsionaalsusega on ideaalne andmete salvestamiseks, milles võib tekkida soov uurida neid, et taasesitada kogu SMS-de, e-kirjade jne pilti.
NILFS2 on samuti potentsiaalselt väga väärtuslik tööriist sisejulgeoleku teenuste jaoks, kuna see võimaldab taastada kõik kustutatud kirjad postituste andmebaasis, paljastada töötajate eksimusi, kes võivad seejärel proovida neid maskida, eemaldades või muutes oma faile.
Kuidas jälgida kogu suhtluse ajaluguLinuxi serverites (ja just sinna tasub NILFS2 paigaldada sisejulgeoleku eesmärkidel) kasutatakse e-kirjade salvestamiseks sageli failipõhist salvestusmeetodit. Nii öeldakse . Piisab, kui paigaldada ja konfigureerida kirjade salvestamine Maildir formaadis. Teine formaat esindab suurt tekstifaili, mida on lihtne analüüsida eraldi sõnumiteks.
Kui postiserver kasutab andmebaasi, siis NILFS2 võimaldab taastada täpset muudatuste ajakava ja taastada andmebaasi mis tahes nendel hetkedel. Edasi tuleb kasutada andmebaasi tööriistu, et vaadata, mis seal sellel ajahetkel oli...
Kuid midagi läks valesti. Kas Jaapani valitsus otsustas mitte enam kõiki jälgida (nagu Yarovi printsiip), või osutus NILFS2 jõudlus traditsioonilistel HDD-del madalaks ning NILFS2 anti välja GPL litsentsi all, nii et see pääses kiiresti Linuxi tuumasse, kuna Linuxi tuumaarendajatel ei olnud mingeid erilisi pretensioone Jaapani kõrgelt kvalifitseeritud inimeste kirjutatud koodi osas.
Millele NILFS2 sarnaneb?
Kasutamise tasandil: nagu versioonihaldussüsteem . Iga failisüsteemi kontrollpunkt on automaatne kommit, mis toimub kasutaja teadmata igasuguse muutuse korral: olgu see siis faili kustutamine, sisu muutmine või juurdepääsuõiguste muutmine. Igal kommitil on number, mis suureneb lineaarselt.
Programmeerija vaatepunktist: nagu ringikujuline puhver. Failisüsteem kogub muudatusi ja kirjutab need umbes 8 MB suuruses tüki (2000 * 4096, kus 2000 on elementide arv plokis ja 4096 on mälu lehe suurus). Kogu ketas jagatakse sellisteks tükkideks. Kirjutamine toimub järjestikku. Kui vaba ruum lõppeb, siis vanimad pildid kustutatakse ja tükid kirjutatakse üle.
NILFS2 peamised eelised
- Versioonitus!!!
- Faili süsteemi taastamise protseduur on lihtne: käivitamisel otsitakse viimast plokki, millel on õige kontrollsumma, ja sellele seotakse superplokk. See on praktiliselt kohene operatsioon.
- Kuna kirjutamine toimub alati suunaline, siis:
- võib SSD-de kasutamisel näidata häid tulemusi, aeglase juhusliku kirjutamise korral.
- NILFS2 säästab SSD ressursse, kuna kirjutamise mitmekordistamise tegur on peaaegu puuduv.
Täpsemalt öeldes, see ei ületa kahte.Asi on selles, et NILFS2 tsüklilise uuesti kirjutamise korral kannab see muutumatud andmed uutesse plokkidesse.Kui meil on kettal 10% muutumatuid andmeid, saame 10% kirjutamise kasvu ühe täieliku kirjutamise korral. Ja 50% kasu 50% seadme täituvuse puhul ühe täieliku kettakirjutamise korral.
Kirjutamise maksimaalne kordusfaktor on 2. See on väga vähe, arvestades, et kõik kirjutatakse järjestikku. Üldiselt on kirjutamise mitmekordistamine väiksem kui tavalisel killustatud failisüsteemil, mille sektori suurus on 4096 baiti. (Mõtted toob esile ).
- Kaug-NILFS2 failisüsteemi replikatsiooni potentsiaalne lihtsus
NILFS2 jaoks /home
Unix-põhistes operatsioonisüsteemides on tavaliselt kaust /home, kuhu salvestatakse kasutajate andmed. Erinevad programmid salvestavad selles kaustas oma seadistused, mis on seotud konkreetse kasutajaga.
Kes, kui mitte kasutajad, teeb kõige rohkem vigu? Seetõttu, nagu öeldakse, on Jumal ise soovitanud kasutada /home jaoks NILFS2.
Veelgi enam, SSD-de laialdase leviku tõttu ei pea me nüüd muretsema suurte languste pärast CoW failisüsteemide kasutamisel.
Jah, failisüsteemi ehk FS-i hetkpilte (snapshot'e) saame luua nii ZFS-is kui ka BTRFS-is nii sageli kui soovime, kuid alati on oht, et kaotatud faili muudatus jääb hetkpiltide vahele. Ja hetkpilte tuleb veel hallata: vanu eemaldada. NILFS2-s toimub see kõik automaatselt, sõna otseses mõttes iga paar sekundi tagant.
Loomiseks kasutasin lvcreate käsku (nvme grupis, õhuke bassein). Soovitan luua see just LVM-i mahus, kuna hiljem saab seda kergesti laiendada. Soovitan NILFS2-l diskil hoida 50% vabast mahust, et tagada korralik versioonide sügavus.
lvcreate -V10G -T nvme/thin -n homeja vormindasin selle NILFS2-se:
mkfs.nilfs2 -L nvme_home /dev/nvme/home
mkfs.nilfs2 (nilfs-utils 2.1.5)
Alustatakse failisüsteemi algsete andmete kirjutamist seadmesse
Blocksize: 4096 Seade: /dev/nvme/home1 Seadmest suurus: 10737418240
Failisüsteemi initsialiseerimine õnnestus !!
Seejärel tuleb kopeerida kõik andmed praegusest /home'ist.
Tegin seda kohe pärast arvuti käivitamist, enne oma kontole sisselogimist, root kasutaja alt. Kui oleksin sisse loginud oma kasutaja alt, oleksid mõned programmid avanud sokette ja faile minu kasutaja kaustas /home/user, mis oleks puhta kopeerimise keeruliseks teinud. Nagu teada, asub root kasutaja kodu kaust tavaliselt teel /root, seega ei avata /home osas mingit faili.
mkdir /mnt/newhome
mount -t nilfs2 /dev/nvme/home /mnt/newhome
cp -a /home/. /mnt/newhome Viimase rea osas vt. .
Seejärel redigeerime /etc/fstab, kuhu on monteeritud failisüsteem /home jaoks, järgmisega
/dev/disk/by-label/nvme_home /home nilfs2 noatime 0 0
Valik noatime on vajalik jõudluse parandamiseks, et failide juurdepääsu korral ei muudetaks atime'i. Edasi taaskäivitame.
NILFS2 snapshots tüübid.
Tavaline snapshot ilma kustutamise immuunsuseta nimetatakse kontrollpunktiks (checkpoint või taastumise punkt).
Kaitstud snapshot automaatse kustutamise vastu nimetatakse lihtsalt snapshot'iks.
Kontrollige kontrollpunkte käsu lscp abil
Kontrollige snapsid (snepšotid) lscp -s
Saame ise luua snapsid ja kontrollpunkte igal ajal, kasutades:
mkcp [-s] seadeTaastame andmed.
NILFS võimaldab meil mountida nii palju vanu snapsid, kui soovime, samal ajal töötades põhiharude FS-iga. Kuid ainult lugemisrežiimis.
Asjad on korraldatud nii. Tavalised kontrollpunktid, mida NILFS2 teeb, võivad igal ajal automaatselt kustutada (kui kettaruumi ei jätku või nilfs_cleanerdi reeglite järgi), seega enne mountimist peame kontrollpunkti muundama snapshotiks või, nagu venekeelselt öeldakse, fikseerima snapsi.
chcp ss kontrollpunkti_numbrPärast seda saame mountida snap, näiteks nii:
mount -t nilfs2 -r -o cp=kontrollpunkti_numbr /dev/nvme/home /mnt/nilfs/kontrollpunkti_numbr Pärast seda kopeerime taastatavad failid snapshotsse kausta /home.
Ja hiljem eemaldame snapshotilt kustutamatuse sildi, et tulevikus automaatne prügikoguja saaks kustutada vananenud andmeid:
chcp cp kontrollpunkti_numbrNILFS2 tööriistad
Siin on probleem. Jah, me saame luua FS, muuta selle suurust reaalajas, vaadata checkpointide loendit ning neid luua ja kustutada. Pakett nilfs2-utils pakub minimaalset tööriistade komplekti.
Kuna NTT on rahastamise lõpetanud, ei ole kiireid madalama taseme tööriistu, mis võimaldaksid vaadata failide muudatusajalugu ja teha erinevusi hetkepiltide vahel.
Minu tööriist n2u
Selle tühimiku täitmiseks kirjutasin , mis oskab näidata konkreetse faili/direktori muudatusajalugu:
n2u log filenameVäljund näeb välja umbes selline:
CHECKPOINT KUUPÄEV AEG Tüüp SUURUS REŽIIM
1787552 2019-11-24 22:08:00 first 7079 cp
1792659 2019-11-25 23:09:05 changed 7081 cpSee töötab üsna kiiresti eelistatud rakenduse formaadi tõttu: otsib failide erinevusi biseektsioonimeetodi abil, kiiresti monteerides ja võrreldes faili/direktori erinevates hetkepiltides.
Checkpointide vahemikku saab määrata võtmega -cp CP1:CP2 või -cp {AASTA-KUU-PÄEV}:{AASTA-KUU-PÄEV}.
Samuti saab vaadata erinevust checkpointide vahel teatud faili või direktorina:
n2u diff -r cp1:cp2 filenameSaate kuvada kogu muudatuste ajalugu: kõik erinevused teatud faili/kausta kontrollpunktide vahel:
n2u blame [-r cp1:cp2] failinimiKuupäeva vahemikku toetatakse ka selles käsus.
Kutse arendajatele
Habré on palju spetsialiste. Palun, viimistlege NILFS2. Tehke replikatsioon, madala taseme kiire diff muudatuste vahel, reflink ja teised boonused!
Lingid
.
Repoo
.
.
Uudiskirjad:
. Tellimuse ID linux-nilfs.
.
.
.
Aitäh:
- NILFS2 arendajad: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi ja Satoshi Moriai. Teised peamised panustajad on: 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 ja Universal Pictures'i ettevõtetele imetlusväärse filmi seeria eest . Esimene postipilt on võetud filmist „Tagasi tulevikku — 3”.
- Ettevõte toetuse ja võimaluse eest avaldada oma blogis Habras.
P.S. Tehtud vigade suunamine minu postkasti. Tõstan selle eest karma.
Saate NILFS2-ga katsetada, tellides oma virtuaalmasina allpool oleva kupongiga. Kõikidele uutele klientidele tasuta 3-päevane prooviperiood.
Allikas: habr.com
