
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
