
Kao što je poznato, ako se nešto loše može dogoditi, to će se sigurno i dogoditi. Vjerojatno je svatko od nas imao situacije kada je slučajno izbrisan važan svježi datotek, ili je slučajno označen i uništen tekst u tekstualnom uređivaču.
Ako ste hosting pružatelj ili vlasnik web stranice, vjerojatno ste se suočili s hakerskim napadima na korisničke račune ili vašu stranicu. U takvim slučajevima važno je obnoviti kronologiju, pronaći način provale i ranjivost koju je koristio zločinac.
Za rješavanje sličnih problema odlično odgovara datotečni sustav NILFS2.
Ona je prisutna u Linux jezgru od verzije 2.6.30.
Karakteristika ovog datotečnog sustava je da je sličan sustavu kontrole verzija: uvijek možete vratiti stanje sustava unatrag i pogledati kako je izgledao u nekom trenutku u prošlosti.
Za osiguranje ove funkcionalnosti ne trebate postavljati Cron skripte, raditi snimke i slično. Datotečni sustav NILFS2 to sve radi sam. Nikada ne prepisuje stare podatke i uvijek zapisuje u nove dijelove diska, ako ima dovoljno slobodnog prostora na disku. U potpunosti u skladu s načelom Copy-on-Write.
Zapravo, svaka promjena datoteke automatski stvara novu snimku datotečnog sustava, tako da ovu FS možete koristiti kao vremensku mašinu i vraćati unatrag stanje datoteka.
Povijest
NILFS2 je razvijen u , praktički državnoj (ima kontrolni paket) i najvećoj telekomunikacijskoj tvrtki Japana. Konkretno u laboratoriju CyberSpace Laboratories pod vodstvom .
Zašto je konkretno razvijena — nije poznato, međutim, može se pretpostaviti da je sličan FS, sa svojom funkcionalnošću “vremenske mašine” idealan za pohranu podataka u kojima može doći do potrebe za istragom od strane obavještajnih agencija, kako bi se ponovo prožvakala cijela slika SMS-ova, e-mailova itd…
NILFS2 također, potencijalno, vrlo vrijedan alat za interne sigurnosne službe, jer omogućuje oporavak svih izbrisanih poruka u bazi podataka e-pošte, otkrivanje propusta zaposlenika, koji kasnije mogu pokušati prikriti, brišući ili mijenjajući svoje datoteke.
Kako se može pratiti cijela povijest prepiskeNa Linux poslužiteljima (a upravo tamo je preporučljivo instalirati NILFS2 za interne sigurnosne svrhe) za pohranu e-mail poruka često se koristi datotečni način pohrane e-mailova. Takozvani format . Dovoljno je instalirati i konfigurirati pohranu poruka u Maildir. Drugi format predstavlja veliki tekstualni datoteka koja se lako analizira na pojedinačne poruke.
Ako poštanski poslužitelj koristi bazu podataka, NILFS2 će omogućiti obnovu točne kronologije promjena u bazi i mogućnost obnove baze u bilo kojem od tih trenutaka. Potrebno je zatim iskoristiti alate DB-a kako bi se vidjelo što je u toj bazi bilo u to vrijeme…
Međutim, nešto nije u redu. Ili je japanska vlada odustala od praćenja svih (nalik principu Jarovoj), ili je performanse NILFS2 na tradicionalnim HDD-ima bile ispod svakog nivoa, pa je NILFS2 objavljena pod GPL licencom i brzo je uključena u Linux kernel, jer nije bilo posebnih pritužbi na kod koji su napisali visoko kvalificirani Japanci.
Na što liči NILFS2?
S gledišta korištenja: na sustav kontrole verzija . Svaki kontrolna točka FS-a je commit koji se automatski bilježi bez znanja korisnika prilikom svake promjene: bilo da se radi o brisanju, promjeni sadržaja datoteke ili prava pristupa. Svaki commit ima broj koji se linearno povećava.
S gledišta programera: na ciklični buffer. Datotečni sustav pohranjuje promjene i zapisuje ih u komad otprilike 8 MB (2000 * 4096, gdje je 2000 broj elemenata u bloku, a 4096 veličina stranice memorije). Cijeli disk je podijeljen na takve dijelove. Zapis ide sekvencijalno. Kada se završi slobodni prostor, najstarije snimke se brišu, a dijelovi se prepisuju.
Glavne prednosti NILFS2
- Verzioniranje!!!
- Postupak oporavka FS-a nakon kvara je jednostavan: prilikom pokretanja pronalazi se posljednji dio koji ima ispravnu kontrolnu sumu, i na njega se postavlja superblok. Ovo je praktički trenutna operacija.
- S obzirom na to da zapis uvijek ide linearno, to:
- može pokazivati dobre rezultate prilikom rada na SSD-ima, s sporim slučajnim zapisima.
- NILFS2 štedi resurse SSD-a, jer gotovo ne postoji faktor multiplikacije zapisa.
Točnije rečeno, nije više od 2.Naime, kada NILFS2 ciklički prepisuje cijeli disk, nepromjenjivi podaci se premještaju u nove dijelove (chunkove).Ako imamo 10% nepromjenjivih podataka na disku, dobit ćemo 10% povećanja ispisivanja prilikom jednog potpunog prepisivanja. Također, dobit ćemo 50% povećanja pri 50% popunjenosti uređaja uz 1 potpuno prepisivanje diska.
Maksimalni koeficijent pojačanja ispisivanja je 2. To je vrlo malo s obzirom na to da se sve zapisuje sekvencijalno. Općenito, umnožavanje ispisivanja će biti manje nego kod običnog fragmentiranog FS s sektorom od 4096 bajtova. (To je izazvalo razmišljanje ).
- Potencijalna jednostavnost implementacije replikacije na udaljenu NILFS2 FS
NILFS2 za /home
U Unix-podobnim OS-ovima obično postoji mapa /home, u kojoj se pohranjuju korisnički podaci. Različiti programi pohranjuju svoje postavke koji se odnose na određenog korisnika u ovoj mapi.
A tko, ako ne korisnici, najčešće pravi greške? Zato, kako se kaže, sam Bog je rekao da koristite NILFS2 za /home.
Tim više što s rasprostranjenošću SSD-a više ne moramo brinuti o naglom padu performansi pri korištenju CoW datotečnih sustava.
Da, možemo neograničeno često stvarati snimke FS (snapshotove) u ZFS-u i BTRFS-u, ali uvijek postoji rizik da će izgubljena promjena datoteke završiti između snimaka. A snimke treba administrirati: brisati stare. U NILFS2 se sve to događa automatski, doslovno svake nekoliko sekundi.
Stvorio sam logički volumen pomoću lvcreate (u grupi volumena nvme, tanki bazen). Preporučujem da se stvara upravo na LVM volumenu, jer se kasnije može lako proširiti. Preporučam da imate 50% slobodnog prostora na disku s NILFS2 za pristojnu dubinu verzioniranja.
lvcreate -V10G -T nvme/thin -n homei formatirao ga u NILFS2:
mkfs.nilfs2 -L nvme_home /dev/nvme/home
mkfs.nilfs2 (nilfs-utils 2.1.5)
Započinjemo pisanje inicijalnih podataka datotečnog sustava na uređaj
Veličina bloka:4096 Uređaj:/dev/nvme/home1 Veličina uređaja:10737418240
Inicijalizacija datotečnog sustava je uspjela !!
Nakon toga treba kopirati sve podatke s trenutnog /home.
To sam učinio odmah nakon pokretanja računala, prije nego što sam se prijavio u svoj račun, kao korisnik root. Da sam se prijavio kao svoj korisnik, neka bi se programa otvorila s portovima i datotekama u mapi mog korisnika /home/user, što bi otežalo čisto kopiranje. Kao što je poznato, domaća mapa za korisnika root obično se nalazi na putu /root, tako da se na dijelu /home ne otvaraju nikakve datoteke.
mkdir /mnt/newhome
mount -t nilfs2 /dev/nvme/home /mnt/newhome
cp -a /home/. /mnt/newhome Što se tiče posljednje linije, vidi. .
Zatim ispravljamo /etc/fstab, u kojoj se montira datotečni sustav za /home, na
/dev/disk/by-label/nvme_home /home nilfs2 noatime 0 0
Opcija noatime je potrebna za poboljšanje performansi, kako se vrijeme posljednjeg pristupa datotekama ne bi promijenilo pri svakom pristupu. Zatim se ponovno pokrećemo.
Tipovi snimaka u NILFS2.
Obični snimak bez zaštite od brisanja naziva se checkpoint (čekpoint ili točka vraćanja).
Snimak s zaštitom od automatskog brisanja naziva se snapshot (snepšot), nakon čega jednostavno snimak.
Pregled čekpointa se vrši pomoću naredbe lscp
Pregled snimaka (snepšotova) lscp -s
Možemo sami kreirati snimke i čekpointe u svakom trenutku pomoću:
mkcp [-s] uređajObnovimo podatke.
NILFS nam omogućuje montiranje neograničenog broja starih snimaka paralelno s radom na glavnoj grani FS-a. No, samo u načinu rada za čitanje.
Sve je postavljeno tako. Obični čekpointi koje NILFS2 pravi mogu se automatski ukloniti u bilo kojem trenutku (kada ponestane prostora na disku ili prema pravilima nilfs_cleanerd), stoga moramo prije montaže prevesti čekpoint u snepšot, ili, drugim riječima, potvrditi snimak.
chcp ss broj čekpointaNakon toga možemo montirati snimak, na primjer, ovako:
mount -t nilfs2 -r -o cp=broj_čekpointa /dev/nvme/home /mnt/nilfs/broj_čekpointa Nakon toga kopiramo datoteke koje se vraćaju iz snimka u /home.
A potom skidamo oznaku nebrisivosti sa snimka, kako bi u budućnosti automatski sakupljač smeća mogao ukloniti zastarjele podatke:
chcp cp broj čekpointaAlati za NILFS2
E tu je problem. Da, naravno, možemo kreirati FS, mijenjati njezinu veličinu online, pregledati popis čekpointa, praviti ih i brisati. Paket nilfs2-utils pruža minimalni džentlmenski skup.
Budući da je NTT obustavio financiranje, nema brzih nisko razinskih alata koji omogućuju prikaz povijesti izmjena datoteka, izvršiti diff između snimaka.
Moj alat n2u
Kako bih ispunio tu prazninu, napisao sam , koji može prikazati povijest izmjena određenih datoteka/direktorija:
n2u log naziv_datotekeIzlaz je otprilike ovakav:
CHECKPOINT DATUM VRIJEME TIP VELIČINA MOD
1787552 2019-11-24 22:08:00 prvi 7079 cp
1792659 2019-11-25 23:09:05 promijenjeno 7081 cpRadi prilično brzo za odabrani način implementacije: pronalazi razlike između datoteka metodom bisekcije, brzo montirajući i uspoređujući datoteku/direktorij u različitim snimkama.
Možete odrediti raspon checkpointa pomoću opcije -cp CP1:CP2 ili -cp {GODINA-MJESEC-DAN}:{GODINA-MJESEC-DAN}.
Također možete vidjeti razliku između checkpointa za određenu datoteku ili direktorij:
n2u diff -r cp1:cp2 naziv_datotekeMožete prikazati cijelu kronologiju izmjena: sve razlike između checkpointa određene datoteke/direktorija:
n2u blame [-r cp1:cp2] naziv_datotekeInterval datuma u ovoj komandi također se podržava.
Poziv programerima
Na Habru ima mnogo stručnjaka. Molim vas, doradite NILFS2. Uvedite replikaciju, brzi nisko razinski diff između revizija, reflink i druge pogodnosti!
Linkovi
.
Repozitoriji:
.
.
Newsletter:
. Identifikator za pretplatu linux-nilfs.
.
.
.
Zahvale:
- Programerima NILFS2: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi i Satoshi Moriai. Ostali glavni suradnici su: Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitry Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vyacheslav Dubeyko.
- Tvrtkama Amblin Entertainment i Universal Pictures za prekrasnu filmsku seriju . Prva slika posta preuzeta je iz filma „Povratak u budućnost — 3”.
- Tvrtki za podršku i mogućnost objavljivanja na svom blogu na Habru.
P.S. Uočene greške molim vas javi u privatnoj poruci. Zbog toga dodeljujem karme.
Možete eksperimentirati s NILFS2, naručujući virtualnu mašinu kod s kuponom u nastavku. Za sve nove klijente besplatni probni period od 3 dana.
Izvor: habr.com
