
Nagu teada, kui on oht, et midagi halba juhtub, siis see kindlasti juhtub. Ehk on igaĂŒhel olnud juhtumeid, kui oluline uus fail on kogemata kustutatud vĂ”i kui tekst on juhuslikult tekstiredaktoris vĂ€lja valitud ja hĂ€vitatud.
Kui olete hostija vÔi veebisaidi omanik, siis olete tÔenÀoliselt kokku puutunud kasutajakontode vÔi oma saidi hÀkkimisega. Sellistes olukordades on oluline taastada ajaloo, leida sisse tungimise viis ja haavatavus, mida kurjategija kasutas.
Sarnaste probleemide lahendamiseks sobib suurepĂ€raselt failisĂŒsteem NILFS2.
See on olemas Linuxi tuumas alates versioonist 2.6.30.
Selle failisĂŒsteemi eripĂ€ra on see, et see sarnaneb versioonihaldussĂŒsteemile: saate alati sĂŒsteemi olekule tagasi rullida ja vaadata, milline see mĂ”ni aeg tagasi oli.
Selle funktsionaalsuse tagamiseks ei ole teil vaja seadistada Cron-skeeme, teha snapshots jne. FailisĂŒsteem NILFS2 teeb kĂ”ike ise. See ei kunagi ĂŒle kirjuta vanu andmeid ja kirjutab alati uusi andmeid uutesse ketta piirkondadesse, kui piisavalt kettaruum on vaba. TĂ€pselt kooskĂ”las Copy-on-Write pĂ”himĂ”ttega.
Tegelikult toob faili iga muutmine automaatselt kaasa uue failisĂŒsteemi pildi loomise, seega saate kasutada seda failisĂŒsteemi kui ajakapslit ja tagasi rullida failide olekuid.
Ajalugu
NILFS2 töötati vÀlja , mis on tegelikult riigihankija (tal on kontrollpakett) ja Jaapani suurim telekommunikatsiooniettevÔte. TÀpsemalt CyberSpace Laboratories laboris, Ryusuke Konishi juhendamisel. .
NILFS2 on samuti potentsiaalselt vÀga vÀÀrtuslik tööriist sisejulgeoleku teenistuste jaoks, kuna see vÔimaldab taastada kÔik kustutatud kirjad postituse andmebaasis, paljastada töötajate eksimusi, kes vÔivad hiljem proovida neid varjata, kustutades vÔi muutes oma faile.
Kuidas jÀlgida kogu suhtluse ajalugu.
Kuidas saada jĂ€lgida kogu suhtluse ajaluguLinuxi serverites (just sinna on soovitatav paigaldada NILFS2 sisemise turvalisuse eesmĂ€rkidel) kasutatakse e-kirjade salvestamiseks vĂ€ga tihti failipĂ”hist salvestusmeetodit. Nii nimetatud formaat . Piisab, kui seadistada ja konfigureerida kirjade salvestamine Maildir'is. Teine formaat on suur tekstifail, mida on kerge analĂŒĂŒsida eraldi sĂ”numiteks.
Kui aga postiserver kasutab andmebaasi, siis NILFS2 annab vÔimaluse taastada tÀpse muudatuste ajakava andmebaasis ning vÔimaluse taastada andmebaasi igal hetkel. Ja seejÀrel tuleb kasutada andmebaasi tööriistu, et vaadata, mis sellel ajal seal oli...
Siiski lÀks midagi valesti. Kas Jaapani valitsus otsustas mitte kÔiki jÀlgida (nagu JarovÔi pÔhimÔte), vÔi oli NILFS2 jÔudlus traditsioonilistel HDD-del ÀÀrmiselt madal ning NILFS2 vabastati GPL litsentsi alusel ning jÔudis kiiresti Linuxi tuumasse, kuna arendajatel ei olnud erilisi pretensioone kÔrge kvalifikatsiooniga jaapanlaste kirjutatud koodi suhtes.
Millele sarnaneb NILFS2?
Kasutamise seisukohalt: versioonihaldussĂŒsteemile . Iga FS kontrollpunkt on automaatselt tehtud commit, mis toimub ilma kasutaja teadmata igasuguste muudatuste korral: olgu need siis failide kustutamine, sisu muutmine vĂ”i Ă”iguste muutmine. Igal commit'il on number, mis suureneb lineaarselt.
Programmeeri vaatepunktist: ringikujuline puhversĂŒsteem. FailisĂŒsteem kogub muudatusi ja salvestab need tĂŒkki, mis on enam-vĂ€hem 8 MB (2000 * 4096, kus 2000 on elemendid plokis ja 4096 on mĂ€lu lehe suurus). Kogu ketas on jagatud sellisteks tĂŒkkideks. Kirjutamine toimub jĂ€rjestikku. Kui vabade kohtade maht lĂ”ppeb, siis vanimad pildid kustutatakse ja tĂŒkid kirjutatakse ĂŒle.
NILFS2 peamised eelised
- Versioonilisus!!!
- FailisĂŒsteemi taaste protseduur pĂ€rast riket on elementaarne: laadimise ajal otsitakse viimane tĂŒkk, millel on Ă”ige kontrollsumm ja sellele installitakse superplokk. See on praktiliselt hetkeline operatsioon.
- Kuna kirjutamine toimub alati lineaarselt, siis:
- vÔib nÀidata hÀid tulemusi SSD-dega töötamisel, aeglase juhusliku kirjutamise korral.
- NILFS2 sÀÀstab SSD ressurssi, kuna kirjutamise mitmekordistumise tegur on praktiliselt puudulik.
TĂ€psemalt öeldes ei ĂŒleta see 2.As a result of cyclically rewriting the entire disk, NILFS2 will move immutable data to new chunks.If we have 10% of unchanging data on the disk, we will see a 10% increase in writing after one full rewrite. And a 50% increase when the device is 50% full during one full disk rewrite.
The maximum write amplification factor is 2. This is quite low considering that everything is written sequentially. Overall, write amplification will be less than that of a regular fragmented FS with a 4096-byte sector. ).
- The potential simplicity of implementing replication on a remote NILFS2 FS
NILFS2 for /home
In Unix-like OS, there is usually a /home folder where user data is stored. Various programs save their settings related to specific users in this folder.
And who, if not users, usually makes mistakes? So, as they say, itâs a divine command to use NILFS2 on /home.
Moreover, with the widespread adoption of SSDs, we no longer have to worry about significant drops in performance when using CoW file systems.
Yes, we can create snapshots of the FS as often as we want in ZFS and BTRFS, but there's always a risk that a lost file change will be between snapshots. And snapshots need to be managed: deleting the old ones. In NILFS2, all this happens automatically, literally every few seconds.
I created a logical volume using lvcreate (in the nvme volume group, thin pool). I recommend creating it specifically on an LVM volume, as it can be easily expanded later. I suggest keeping 50% of free disk space on NILFS2 for a decent versioning depth.
lvcreate -V10G -T nvme/thin -n homeand formatted it to NILFS2:
mkfs.nilfs2 -L nvme_home /dev/nvme/home
mkfs.nilfs2 (nilfs-utils 2.1.5)
Start writing filesystem initial data to the device
Blocksize: 4096 Device: /dev/nvme/home1 Device Size: 10737418240
Filesystem initialization succeeded !!
After that, you need to copy all data from the current /home.
Tehtud kohe pÀrast arvuti kÀivitamist, enne oma kontole sisenemist, kasutades root-kasutajat. Kui ma oleksin sisse loginud oma kasutajaga, oleksid mÔned programmid avanud sokid ja failid minu kasutaja /home/user kaustas, mis oleks teinud puhta kopeerimise keeruliseks. Nagu on teada, asub root-kasutaja kodukaust tavaliselt teel /root, seega ei avata mitte mingeid faile /home jaos.
mkdir /mnt/newhome
mount -t nilfs2 /dev/nvme/home /mnt/newhome
cp -a /home/. /mnt/newhome Seoses viimase reaga vt. .
SeejĂ€rel muudame /etc/fstab, kus on mÀÀratud failisĂŒsteem /home jaoks, aadressil
/dev/disk/by-label/nvme_home /home nilfs2Â Â noatime 0 0
Valik noatime on vajalik jĂ”udluse suurendamiseks, et failide juurde pÀÀsemisel ei muudetaks atimeâi. SeejĂ€rel taaskĂ€ivitage.
NILFS2 pilditĂŒĂŒbid.
Tavalist pilti ilma kustutamise immuunsuseta nimetatakse kontrollpunktiks (checkpoint vÔi taastamiskoht).
Pilt, millel on kaitse automaatse kustutamise eest, nimetatakse jÀÀdvustamiseks (snapshot), edaspidi lihtsalt pildiks.
Kontrollpunktide vaatamine toimub kÀsu lscp abil
Piltide (jÀÀdvustuste) vaatamine lscp -s
Saame ka ise luua pilte ja kontrollpunkte igal ajal, kasutades:
mkcp [-s] seadeTaastame andmed.
NILFS vĂ”imaldab meil monteerida nii palju vanu pilte paralleelselt pĂ”hiharudega, kuid ainult lugemisreĆŸiimis.
Kogu sĂŒsteem on selline. Tavalised kontrollpunktid, mida NILFS2 loob, vĂ”ivad igal hetkel automaatselt kustutada (kui kettaruumi on vĂ€he vĂ”i nilfs_cleanerd'i reeglite tĂ”ttu), seega peame enne monteerimist kontrollpunkti jÀÀdvustama, ehk siis kindlustama pildi.
chcp ss kontrollpunkti_numbrPÀrast seda saame pildi monteerida, nÀiteks nii:
mount -t nilfs2 -r -o cp=kontrollpunkti_numbr /dev/nvme/home /mnt/nilfs/kontrollpunkti_numbr SeejÀrel kopeerime taastatavad failid pildist /home.
Ja hiljem eemaldame pildi kustutamatuse lipu, et tulevikus saaks automaatne prĂŒgi koguja eemaldada vanarenenud andmed:
chcp cp kontrollpunkti_numbrNILFS2 tööriistad
Kuid see on keeruline. Jah, me saame luua failisĂŒsteeme, muuta selle suurust reaalajas, vaadata kontrollpunktide loendit, neid luua ja kustutada. Pakett nilfs2-utils pakub minimaalset meeste komplekti.
Kuna NTT lÔpetas rahastamise, on kiirem madalama taseme utiliitide puudumine, mis vÔimaldaks nÀidata failide muudatuste ajalugu ja teha erinevusi sÔnumite vahel.
Minu utiliit n2u
Selle tĂŒhimiku tĂ€itmiseks kirjutasin , mis oskab nĂ€idata konkreetse faili/katalooge muudatuste ajalugu:
n2u log filenameVÀlja on enam-vÀhem selline:
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 cpSee töötab ĂŒsna kiiresti valitud rakendusmeetodi jaoks: otsib failide erinevusi binaarse otsingumeetodiga, kiiresti mountides ja vĂ”rreldes faili/katalooge erinevates sĂ”numites.
Saate mÀÀrata kontrollpunktide vahemiku kasutades vÔtit -cp CP1:CP2 vÔi -cp {YEAR-MM-DD}:{YEAR-MM-DD}.
Saate vaadata erinevusi kontrollpunktide vahel teatud faili vÔi katalooge jaoks:
n2u diff -r cp1:cp2 filenameSaate kuvada kogu muudatuste ajalugu: kÔik erinevused teatud faili/katalooge kontrollpunktide vahel:
n2u blame [-r cp1:cp2] filenameSelles kÀsklus toetatakse ka kuupÀevavahemikke.
Kutse arendajatele
HabrĂ© on palju spetsialiste. Palun, viimistlege NILFS2. Tehke replikatsioon, madalmaise taseme kiire erinevus versioonide vahel, reflink ja muid hĂŒvesid!
Viidatud lingid
.
Reposiidid:
.
.
Meililistid:
. Telli ID linux-nilfs.
.
.
.
TĂ€nud:
- 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.
- EttevĂ”tetele Amblin Entertainment ja Universal Pictures suurepĂ€rase filmisarja eest . Esimene postitus pilt on pĂ€rit filmist âTagasi tulevikku â 3â.
- EttevÔttele toetuse ja vÔimaluse eest avaldada oma blogis Habras.
P.S. Tuvastatud vead suunake isikliku sÔnumi kaudu. TÔstame selle eest karmaat.
Saate NILFS2 katsetada, tellides virtuaalse masina alloleva kupongiga. KÔikidele uutele klientidele on tasuta prooviperiood 3 pÀeva.
Allikas: habr.com
