
Si është e njohur, nëse një ngjarje e pakëndshme mund të ndodhë, ajo patjetër do të ndodh. Ndoshta, secili ka përjetuar raste kur gabimisht është fshirë një skedar i rëndësishëm, ose kur është përzgjedhur dhe shkatërruar teksti në një redaktues teksti.
Nëse jeni një hostues ose pronar siti, ndoshta keni hasur në sulme të llogarive të përdoruesve ose të vetë faqes tuaj. Në këto raste, është e rëndësishme të rikthehet kronologjia, të gjendet mënyra e hyrjes dhe vulnerabiliteti që ka përdorur sulmuesi.
Për zgjidhjen e problemeve të tilla përshtatet shumë mirë sistemi i skedarëve NILFS2.
Ai është i pranishëm në kernelin Linux që nga versioni 2.6.30.
Një veçori e këtij sistemi skedarësh është se ai është si një sistem kontrolli versioni: ju gjithmonë mund ta ktheni sistemin prapa dhe të shihni se si ishte ai disa kohë më parë.
Për të siguruar këtë funksionalitet, nuk ju nevojitet të konfiguroni skriptet Cron, të bëni snapshot dhe të tjerë. Sistemi i skedarëve NILFS2 e bën këtë vetë. Ai kurrë nuk i shkruan të dhënat e vjetra dhe gjithmonë shkruan në zona të reja të diskut, nëse ka hapësirë të mjaftueshme të lirë në disk. Në përputhje të plotë me parimin Copy-on-Write.
Faktikisht, çdo ndryshim i skedarit rezulton në krijimin automatik të një snapshoti të ri të sistemit të skedarëve, prandaj mund ta përdorni këtë FS si një makinë kohe dhe të ktheni mbrapa gjendjen e skedarëve.
Historia
NILFS2 është zhvilluar në brendësi të , në fakt, një kompani shtetërore (ajo ka një paketë kontrolluese) dhe kompanisë më të madhe të telekomunikacionit në Japoninë. Konkretisht në laboratorin CyberSpace Laboratories nën drejtimin e .
. Për çfarë është zhvilluar konkretisht, nuk dihet, megjithatë, mund të supozohet se një FS e tillë, me funksionalitetin e saj "makinës së kohës", është ideale për ruajtjen e të dhënave, në të cilat mund të ketë dëshira për hetim nga shërbimet speciale, për të përsëritur të gjithë skenarin e SMS-ve, emaileve etj...
NILFS2 gjithashtu, potencialisht, është një instrument shumë i çmuar për shërbimet e sigurisë së brendshme, pasi lejon të rikthehen të gjitha email-et e fshira në bazën e të dhënave të postës elektronike, për të zbuluar gabimet e punonjësve, të cilët më vonë mund të tentojnë t'i fshehin ato duke fshirë ose ndryshuar skedarët e tyre.
Si mund të ndiqet e gjithë historia e komunikimitNë Linux në serverat (aty ku është e nevojshme të instalohet NILFS2 për qëllime të sigurisë së brendshme) për ruajtjen e mesazheve elektronike shumë shpesh përdoret mënyra e skedarit për ruajtjen e e-maileve. Formati i njohur si . Mjafton të instalohet dhe të konfigurohet ruajtja e email-eve në Maildir. Formati tjetër paraqet një skedar të madh tekstual, i cili lehtësisht mund të analizohen në mesazhe të veçanta.
Nëse serveri i postës përdor një bazë të dhënash, atëherë NILFS2 do t'i japë mundësinë për të rindërtuar kohën e saktë të ndryshimeve të bazës dhe mundësinë për të rikuperuar bazën në çfarëdo nga këto momente. Më pas, duhet të përdoren mjetet e BD, për të parë se çfarë kishte në atë moment kohor...
Megjithatë, diçka shkoi keq. Ndoshta qeveria japoneze ndryshoi mendje për të ndjekur të gjithë (në stilin e principit të Jarovoj), ose ndoshta produktiviteti i NILFS2 në HDD tradicionale doli të ishte i ulët, dhe NILFS2 u publikua nën licencën GPL dhe shumë shpejt hyri në bërthamën e Linux-it, pasi zhvilluesit e bërthamës nuk kishin asnjë pretendim të veçantë ndaj kodit të shkruar nga japonezë me kualifikime të larta.
Si duket NILFS2?
Nga pikĂ«pamja e pĂ«rdorimit: si njĂ« sistem kontrolli versioni . Ădo pikĂ« kontrolli FS Ă«shtĂ« njĂ« commit, i cili bĂ«het automatikisht pa dijeni tĂ« pĂ«rdoruesit nĂ« çdo ndryshim: qoftĂ« fshirje, ndryshim i pĂ«rmbajtjes sĂ« skedarit apo tĂ« drejtave tĂ« aksesit. Ădo commit ka njĂ« numĂ«r, i cili rritet linear.
Nga pikëpamja e programuesit: si një bufër ciklik. Sistemi i skedarëve ruan ndryshimet dhe i shkruan ato në një copë me madhësi të përafërt 8 MB (2000 * 4096, ku 2000 është numri i elementeve në bllok, dhe 4096 është madhësia e faqes së memories). I gjithë disku është i ndarë në këto çaste. Shkruarja bëhet në mënyrë të renditur. Kur mbaron hapësira e lirë, atëherë skenat më të vjetra fshihen dhe çastet rishkruhen.
Pikat kryesore të NILFS2
- Versionizimi!!!
- Procedura e rikuperimit të FS pas një dështimi është elementare: gjatë ngarkimit kërkohet pika e fundit që ka një kontrolle të saktë, dhe mbi të vendoset superblok. Kjo është një operacion praktikisht momental.
- Meqenëse shkruarja është gjithmonë lineare, atëherë:
- mund të tregojë rezultate të mira gjatë punës në SSD, me shkruarje të rastësishme të ngadalshme.
- NILFS2 kursen burimet e SSD, pasi faktori i shumëzimit të shkruarjes është pothuajse i papërfillshëm.
MĂ« saktĂ«sisht, ai nuk Ă«shtĂ« mĂ« shumĂ« se 2.ĂĂ«shtja Ă«shtĂ« se gjatĂ« ripĂ«rtypjes ciklike tĂ« gjithĂ« diskut, NILFS2 do tĂ« transferojĂ« tĂ« dhĂ«nat e pandryshueshme nĂ« copa tĂ« reja (shkĂ«mbinjtĂ«).NĂ«se kemi nĂ« disk 10% tĂ« dhĂ«nash tĂ« pandryshueshme, atĂ«herĂ« do tĂ« kemi njĂ« rritje tĂ« shkrimit prej 10% me njĂ« ripĂ«rtypje tĂ« plotĂ«. Dhe njĂ« rritje prej 50% me 50% mbushje tĂ« pajisjes nĂ« njĂ« ripĂ«rtypje tĂ« plotĂ« tĂ« diskut.
Koeficienti maksimal i forcimit të shkrimit është 2. Kjo është shumë e ulët duke pasur parasysh se gjithçka shkruhet në mënyrë të njëpasnjëshme. Në përgjithësi, shumëzimi i shkrimit do të jetë më pak se ai i një sistemi dosjeve të zakonshëm të fraksionuar me sektor prej 4096 bajtësh. (Kjo është frymëzuar nga ).
- Thjeshtësia potenciale e realizimit të replikimit në një FS NILFS2 të largët.
NILFS2 për \/home
Në sistemet operative që i ngjajnë Unix-it, zakonisht ekziston një dosje \/home, në të cilën ruhen të dhënat e përdoruesve. Programe të ndryshme ruajnë në këtë dosje cilësimet e tyre, të lidhura me përdoruesin specifik.
E kush, përveç përdoruesve, bën më shumë gabime? Prandaj, siç thuhet, vetë Zotit i erdhi në ndihmë të përdorim NILFS2 në \/home.
Për më tepër, me përhapjen e gjithanshme të SSD-ve, tani mund të mos shqetësohemi për rënien e madhe kur përdorim sisteme dosjesh me CoW.
Po, mund të krijojmë sa të duam fotografi të FS (snapshot) në ZFS dhe BTRFS, por gjithmonë ka rrezik që një ndryshim i humbur në skedarin të mbetet midis snapshot-eve. Dhe fotografitë duhet gjithashtu të administrohen: të hiqen të vjetra. Në NILFS2, gjithçka ndodh automatikisht, për bukuri çdo disa sekonda.
Krijova një volum logjik përmes lvcreate (në grupin e volumit nvme, pool-i i hollë thin). Rekomandoj të krijoni pikërisht në volum lvm, pasi në të ardhmen ai mund të zgjerohet lehtësisht. Rekomandoj të keni 50% hapësirë të lirë në disk me NILFS2 për një thellësi të arsyeshme versioning.
lvcreate -V10G -T nvme\/thin -n homedhe e formatuar atë në NILFS2:
mkfs.nilfs2 -L nvme_home \/dev\/nvme\/home
mkfs.nilfs2 (nilfs-utils 2.1.5)
Filloni të shkruani të dhënat fillestare të sistemit të dosjeve në pajisje
Blocksize:4096 Pajisja: \/dev\/nvme\/home1 Madhësia e Pajisjes: 10737418240
Inizializimi i sistemit të dosjeve përfundoi me sukses !!
Pas kësaj, duhet të kopjoni të gjitha të dhënat nga \/home aktual.
E kam bërë këtë menjëherë pas ngarkimit të kompjuterit, para se të regjistrohesha në llogarinë time, si përdorues root. Sikurse e dimë, nëse do të isha regjistruar si përdorues i zakonshëm, disa programe do të kishin hapur sockete dhe skedarë në dosjen time /home/user, çka do të bënte kopjimin e pastër të vështirë. Siç dihet, dosja e shtëpisë për përdoruesin root zakonisht ndodhet në rrugën /root, prandaj në ndarjen /home nuk do të hapen asnjë skedare.
mkdir /mnt/newhome
mount -t nilfs2 /dev/nvme/home /mnt/newhome
cp -a /home/. /mnt/newhome NĂ« lidhje me rreshtin e fundit shiko. .
Më pas modifikojmë /etc/fstab, në të cilin montohet sistemi i skedave për /home, në
/dev/disk/by-label/nvme_home /home nilfs2Â Â noatime 0 0
Opcioni noatime nevojitet për të rritur performancën, në mënyrë që çdo herë që qasje bëhet në skedarë, atime të mos ndryshohet. Më pas, rindezim.
Llojet e skenave në NILFS2.
Një skenë e zakonshme pa imunitet ndaj fshirjes quhet checkpoint (pikë rikuperimi).
Një skenë me mbrojtje nga fshirja e automatizuar quhet snapshot, më pas thjesht skenë.
Shikimi i kontrollpiktave bëhet me komandën lscp
Shikimi i skenave (snapshot) lscp -s
Ne mund të krijojmë gjithashtu skena dhe kontrollpikta në çdo moment me anë të:
mkcp [-s] pajisjaRikthejmë të dhënat.
NILFS na lejon të montojmë një numër të pafund skenash të vjetra paralelisht me punën në degën kryesore të FS. Por vetëm në modalitetin për lexim.
E gjithë struktura është kështu. Kontrollpikat e zakonshme, të cilat NILFS2 i krijon, mund të fshihen automatikisht në çdo moment (kur përfundon hapësira në disk ose sipas rregullave të nilfs_cleanerd), prandaj para montimit duhet ta konvertojmë kontrollpikën në një skenë ose, në fjalë shqip, ta ndalojmë skenën.
chcp ss numri_kontrollpikësPas kësaj ne mund ta montojmë skenën, për shembull, kështu:
mount -t nilfs2 -r -o cp=numri_kontrollpikës /dev/nvme/home /mnt/nilfs/numri_kontrollpikës Pas kësaj, ne kopjojmë skedarët që duhet rikthyer nga skena në /home.
Dhe më pas heqim flamurin e papërfshirshmërisë nga skena, në mënyrë që në të ardhmen mbledhësi automatizuar i mbeturinave të mund të fshijë të dhënat e vjetra:
chcp cp numri_kontrollpikësInstrumentet për NILFS2
Kjo është një problem. Po, natyrisht, ne mund të krijojmë FS, të ndryshojmë madhësinë e saj on-line, të shIKojmë listën e kontrollpikave, t'i krijojmë dhe t'i fshijmë ato. Paketa nilfs2-utils ofron një paketë minimale gentleman.
Pasi NTT ka ndërprerë financimin, nuk ka asnjë mjet të shpejtë dhe të nivelit të ulët që lejon të shfaqet historia e ndryshimeve të skedarëve, duke bërë diff midis snapshot-eve.
Mjeti im n2u
Për të mbushur këtë vakuum, shkrova , i cili mund të shfaqë historinë e ndryshimeve të një skedari/directory specifike:
n2u log emri_skedaritDalja duket pak si kjo:
CHECKPOINT DATA KOHA LLOJI SIZE MODI
1787552 2019-11-24 22:08:00 i pari 7079 cp
1792659 2019-11-25 23:09:05 ndryshuar 7081 cpFunksionon mjaft shpejt për stilin e veprimit të zgjedhur: kërkon dallimet midis skedarëve në mënyrë bisektive, duke montuar dhe krahasuar skedarin/directory në snapshot-e të ndryshme.
Mund tĂ« caktoni njĂ« gamĂ« checkpoint-esh duke pĂ«rdorur çelĂ«sin -cp CP1:CP2 ose -cp {VITI-MUAJ-DITĂ}:{VITI-MUAJ-DITĂ}.
Gjithashtu mund të shihni dallimin midis checkpoint-eve për një skedar ose directory të caktuar:
n2u diff -r cp1:cp2 emri_skedaritMund të shfaqni të gjithë historinë e ndryshimeve: të gjitha dallimet midis checkpoint-eve të një skedari/directory të caktuar:
n2u blame [-r cp1:cp2] emri_skedaritIntervali i datave në këtë komandë gjithashtu mbështetet.
Thirrje për zhvilluesit
Në Habrë ka shumë specialistë. Ju lutem, përfundoni NILFS2. Bëni replikimin, diff të shpejtë të nivelit të ulët midis rishikimeve, reflink dhe funskione të tjera!
Linket
.
Repozitorët:
.
.
Listat e postimeve:
. Identifikuesi për abonim linux-nilfs.
.
.
.
Falënderime:
- Zhvilluesve të NILFS2: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi dhe Satoshi Moriai. Kontribuesit e tjerë kryesorë janë: Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitry Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vyacheslav Dubeyko.
- Kompani tĂ« Amblin Entertainment dhe Universal Pictures pĂ«r serinĂ« e shkĂ«lqyer tĂ« filmave . Imazhi i parĂ« i postimeve Ă«shtĂ« marrĂ« nga filmi «Kthimi nĂ« tĂ« Ardhmen â 3».
- Kompani për mbështetje dhe mundësinë për publikim në blogun e vet në Habrë.
P.S. Gabimet e vĂ«rejtura dĂ«rgoni nĂ« mesazhe private. Po e rrit karmĂn time pĂ«r kĂ«tĂ«.
Mund të eksperimentoni me NILFS2 duke porositur një makinë virtuale nga me kuponin e mëposhtëm. Për të gjithë klientët e rinj, periudha provuese falas 3 ditë.
Burimi: habr.com
