
Si është e njohur, nëse një problem mund të ndodhë, ai do të ndodhë patjetër. Ndoshta, të gjithë kemi pasur raste kur aksidentalisht është fshirë një skedar i rëndësishëm ose është fshirë teksti në një redaktues teksti.
Nëse jeni hostues ose pronar i një faqeje, ndoshta keni hasur në hakime të llogarive të përdoruesve ose të faqes suaj. Në raste të tilla, është e rëndësishme të riktheni kronologjinë, të gjeni mënyrën e depërtimit dhe dobësinë që përdori sulmuesi.
Për zgjidhjen e problemeve të tilla, sistemi i skedarëve NILFS2 është një zgjidhje e shkëlqyer.
Ai është i pranishëm në bërthamën Linux që nga versioni 2.6.30.
Karakteristika e këtij sistemi skedari është se ai është si një sistem kontrolli versioni: gjithmonë mund të ktheheni pas në gjendjen e sistemit dhe të shihni si ishte ai disa kohë më parë.
Për të siguruar këtë funksionalitet, nuk keni nevojë të konfiguroni skripte Cron, të bëni snapshot-e etj. Sistemi i skedarëve NILFS2 e bën këtë automatikisht. Ai nuk shkruan kurrë të dhëna të vjetra dhe gjithmonë shkruan në zona të reja të disku, nëse ka mjaft hapësirë të lirë në disk. Në përputhje të plotë me parimin Copy-on-Write.
Faktikisht, çdo ndryshim në skedarin shkakton krijimin automatik të një snapshot-i të ri të sistemit të skedarëve, kështu që mund ta përdorni këtë FS si një makinë kohezjacente dhe të ktheni gjendjen e skedarëve pas.
Historia
NILFS2 u zhvillua nga , në fakt, një kompani e shtetit (aq më shumë e ka kontrollin) dhe kompania më e madhe e telekomunikacionit në Japoni. Më konkretisht, në laboratorin CyberSpace Laboratories nën drejtimin e .
Për çfarë është zhvilluar konkretisht, nuk dihet, megjithatë, mund të supozojmë se një sistem i tillë i skedarëve, me funksionalitetin e tij "makina e kohës", është ideal për ruajtjen e të dhënave në të cilat mund të ketë dëshirë që agjencitë e sigurisë të hetojnë, për t'i riparë të gjitha ngjarjet e SMS-ve, e-maileve etj.
NILFS2 gjithashtu është një mjet shumë i vlefshëm për shërbimet e sigurisë së brendshme, pasi lejon rikthimin e të gjitha e-maileve të fshira në bazën e të dhënave postare, për të zbuluar gabimet e punonjësve, të cilët më vonë mund të përpiqen t'i maskojnë duke fshirë ose duke ndryshuar skedarët e tyre.
Si mund të ndjekim të gjithë historinë e korrespondencës?Në Linux në servera (dhe në të vërtetë, pikërisht aty ku duhet të vendoset NILFS2 për qëllime të sigurisë së brendshme), shpesh përdoret mënyra e ruajtjes së mesazheve përmes sistemeve të skedarëve. Formati i njohur si Bëhet mjaft e thjeshtë që të instaloni dhe të konfiguroni ruajtjen e e-maileve në Maildir. Formati tjetër përbëhet nga një skedar i madh tekstual që lehtë mund të parse në mesazhe të veçanta.
NĂ«se serveri i postĂ«s pĂ«rdor njĂ« bazĂ« tĂ« dhĂ«nash, atĂ«herĂ« NILFS2 do tĂ« ofrojĂ« mundĂ«sinĂ« pĂ«r tĂ« rikthyer kohĂ«n e saktĂ« tĂ« ndryshimeve tĂ« bazĂ«s dhe mundĂ«sinĂ« pĂ«r tĂ« rikthyer bazĂ«n nĂ« çdo nga kĂ«to momente. MĂ« pas, duhet tĂ« pĂ«rdorni mjetet e DB pĂ«r tĂ« parĂ« se çfarĂ« kishte nĂ« tĂ« nĂ« atĂ« moment kohorâŠ
Megjithatë, diçka shkoi keq. Mund të jetë që qeveria japoneze ka ndryshuar mendje për të spiunuar të gjithë (siç është parimi i Jarovaya), apo se performanca e NILFS2 në HDD tradicionale rezultoi të ishte shumë e ulët, dhe NILFS2 u lëshua nën licencën GPL dhe shumë shpejt hyri në bërthamën Linux, pasi nuk kishte pretendime të veçanta ndaj kodit të shkruar nga inxhinierët e kualifikuar japonezë.
Si i ngjan NILFS2?
Nga pikĂ«pamja e pĂ«rdorimit: si njĂ« sistem kontrolli versioni. . Ădo pikĂ« kontrolli i FS Ă«shtĂ« njĂ« komit qĂ« bĂ«het automatikisht pa e ditur pĂ«rdoruesi nĂ« çdo ndryshim: qoftĂ« fshirja, ndryshimi i pĂ«rmbajtjes sĂ« skedarit apo tĂ« privilegjeve. Ădo komit ka njĂ« numĂ«r qĂ« rritet linearisht.
Nga pikëpamja e programuesit: si një buffer cilindrik. Sistemi i skedarëve grumbullon ndryshimet dhe i shkruan ato në një copë të barabartë me rreth 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 copëza. Shkrimi ndodh në menyra të rregullta. Kur mbaron hapësira e lirë, snapshot-at më të vjetër fshihen, dhe copëzat riprogramohen.
Pikat kryesore të NILFS2
- Versionizimi!!!
- Procedura e rikthimit të FS pas një dështimi është elementare: gjatë ngarkimit, kërkohet copëza më e fundit që ka një gjithëpërfshirëse të saktë të kontrollit dhe superbloku vendoset mbi të. Kjo është një operacion praktikisht momental.
- Duke qenë se shkrimi gjithmonë ndodh linear, atëherë:
- mund të tregojë rezultate të mira në punën mbi SSD, me shkrim të ngadaltë të rastësishëm.
- NILFS2 kursen burimet e SSD, pasi nuk ka faktor të multiplicimit të shkrimit.
Më saktësisht, ai nuk është më shumë se 2.E vërteta është se gjatë ripërtypjes ciklike të tërë diskut, NILFS2 do të zhvendosi të dhënat që nuk ndryshojnë në copa të reja (Chunks).Nëse kemi 10% të dhënash të pandryshuara në disk, atëherë do të kemi një rritje të shkarkimit prej 10% gjatë një ripërtypjeje të plotë. Dhe gjithashtu një rritje prej 50% nëse 50% e pajisjes është e mbushur gjatë një ripërtypjeje të plotë të diskut.
Koeficienti maksimal i forcës së shkarkimit është 2. Kjo është shumë pak në krahasim me faktin se gjithçka shkruhet në mënyrë të vazhdueshme. Në përgjithësi, shumëfishimi i shkarkimit do të jetë më i ulët se ai i një sistemi skedarësh të zakonshëm të fragmentuar me sektor prej 4096 bytes. ).
- Thjeshtësia e mundshme e realizimit të replikimit në një sistem skedarësh NILFS2 të largët
NILFS2 për /home
Në sistemet operative të ngjashme me Unix, zakonisht ekziston dosja /home, ku ruhen të dhënat e përdoruesve. Programet e ndryshme ruajnë në këtë dosje cilësimet që lidhen me përdoruesin specifik.
Dhe kush, nëse jo përdoruesit, shpeshherë bën gabime? Prandaj, siç thuhet, vetë Zoti na e ka urdhëruar të përdorim NILFS2 për /home.
Për më tepër, me shpërndarjen e gjerë të SSD-ve, tani nuk kemi pse të shqetësohemi për rëniet e mëdha gjatë përdorimit të sistemeve skedarësh me CoW.
Po, ne mund të krijojmë sa të duam skena (snapshot) në ZFS dhe BTRFS, por gjithmonë ka rrezik që ndonjë ndryshim i humbur në skedar të mbetet mes skenave. Dhe skenat duhet gjithashtu të administrohen: të fshihen ato të vjetra. Në NILFS2, gjithçka ndodh automatikisht çdo pak sekonda.
Unë krijova një vëllim logjik me ndihmën e lvcreate (në grupin e vëllimeve nvme, pellg me hollësi të hollë). Rekomandoj të krijoni saktësisht në vëllimin lvm, pasi mund të zgjerohet lehtësisht më vonë. Rekomandoj të keni 50% hapësirë të lirë në disk me NILFS2 për një thellësi të kënaqshme të versioneve.
lvcreate -V10G -T nvme/thin -n homedhe e formatuam në NILFS2:
mkfs.nilfs2 -L nvme_home /dev/nvme/home
mkfs.nilfs2 (nilfs-utils 2.1.5)
Fillon të shkruajë të dhënat fillestare të sistemit të skedarëve në pajisje
Blocksize:4096 Pajisja:/dev/nvme/home1 Madhësia e Pajisjes:10737418240
Inizializimi i sistemit të skedarëve përfundoi me sukses !!
Pas kësaj, është e nevojshme të kopjoni të gjitha të dhënat nga /home aktuale.
Unë e bëra këtë menjëherë pas ngarkimit të kompjuterit, para se të hyja në llogarinë time, nga përdoruesi root. Nëse do të isha futur me përdoruesin tim, ndonjë program do të kishte hapur soket dhe skedarë në dosjen time /home/user, duke e bërë 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 nuk do të hapet asnjë skedar në ndarjen /home.
mkdir /mnt/newhome
mount -t nilfs2 /dev/nvme/home /mnt/newhome
cp -a /home/. /mnt/newhome Për sa i përket rreshtit të fundit, shihni më poshtë. .
Më pas redaktoni /etc/fstab, ku sistemi i skedarëve montohet për /home, në
/dev/disk/by-label/nvme_home /home nilfs2Â Â noatime 0 0
Opcioni noatime nevojitet për të përmirësuar performancën, në mënyrë që kur të aksesohen skedarët, atime të mos ndryshojë. Më pas, rindezim.
Llojet e skenave në NILFS2.
Një skenë e zakonshme pa imunitet ndaj fshirjes quhet pikë kontrolli (checkpoint).
Një skenë me mbrojtje ndaj fshirjes automatik quhet skenë (snapshot), e më pas thjesht skenë.
Për të parë pikë kontrolli, përdorim komandën lscp
Për të parë skenat (snapshots) lscp -s
Ne mund të krijojmë edhe vet skena dhe pikë kontrolli në çdo kohë me:
mkcp [-s] pajisjeRivendosim të dhënat.
NILFS na lejon të montojmë sa të duam skena të vjetra në mënyrë paralel me punën në degën kryesore të sistemit të skedarëve. Por vetëm në modalitetin për lexim.
E gjithë kjo funksionon kështu. Pikët e zakonshme të kontrollit që bën NILFS2 mund të fshihen automatikisht në çdo kohë (kur të përfundojë hapësira e diskut ose sipas rregullave të nilfs_cleanerd), prandaj para montimit, ne duhet të kalojmë pikën e kontrollit në skenë ose, siç quhet në rusisht, të regjistrojmë skenën.
chcp ss numri_pikës_kontrolluesePas kësaj, mund të montojmë skenën, për shembull, kështu:
mount -t nilfs2 -r -o cp=numri_pikës_kontrolluese /dev/nvme/home /mnt/nilfs/numri_pikës_kontrolluese Pas kësaj, ne kopjojmë skedarët që do të rikthehen nga skena në /home.
Dhe më pas heqim flamurin e papërputhshmërisë nga skena, që në të ardhmen ndihmuesi automatik i riciklimit të mund të fshijë të dhënat e vjetra:
chcp cp numri_pikës_kontrollueseUtilitetet për NILFS2
Këtu kemi probleme. Po, me siguri, mund të krijojmë sisteme skedarësh, të ndryshojmë madhësinë e tyre online, të shohim listën e pikëve të kontrollit, t'i bëjmë dhe t'i fshijmë ato. Pakoja nilfs2-utils ofron një grup minimal të mjeteve.
Dhe ndërsa NTT e ndaloi financimin, nuk ka mjete të shpejta dhe të nivelit të ulët që lejojnë të shikohet historia e ndryshimeve të skedarëve, të bëhet diferenca midis skenave.
Utiliteti im n2u
Për të mbushur këtë boshllëk, shkrova , i cili mund të nxjerrë historinë e ndryshimeve për një skedar/directory specifik:
n2u log emri_skedarTë dhënat dalin më pak kështu:
CHECKPOINT DATA KOHA LLOJI GJERSIA MODI
1787552 2019-11-24 22:08:00 i parë 7079 cp
1792659 2019-11-25 23:09:05 ndryshuar 7081 cpFunksionon mjaft shpejt për metodën e preferuar të implementimit: kërkon diferencat midis skedarëve përmes metodës së ndarjes në gjysmë, duke montuar dhe krahasuar shpejt skedarin/direktorinë në pamje të ndryshme.
Mund të caktoni një gamë kontrollesh duke përdorur çelësin -cp CP1:CP2 ose -cp {YEAR-MM-DD}:{YEAR-MM-DD}.
Gjithashtu mund të shihni diferencën midis kontrolleve për një skedë apo direktorion specifike:
n2u diff -r cp1:cp2 emri_i_skedaritMund të nxirrni të gjithë historinë e ndryshimeve: të gjitha diferencat midis kontrolleve të një skedari/direktorie të caktuar:
n2u blame [-r cp1:cp2] emri_i_skedaritIntervali i datave në këtë komandë gjithashtu mbështetet.
Thirrje për zhvilluesit
Në Habra ka shumë specialistë. Ju lutem, përmirësoni NILFS2. Bëni replikimin, diferencën e shpejtë në nivel të ulët midis revizionëve, reflink dhe karakteristika të tjera!
Linke
.
Repozitoret:
.
.
Abonimet:
. Identifikues për abonim linux-nilfs.
.
.
.
Falënderime:
- Zhvilluesit e NILFS2: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi dhe Satoshi Moriai. Kontributorë të tjerë të mëdhenj 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 Amblin Entertainment dhe Universal Pictures pĂ«r serinĂ« e mrekullueshme tĂ« filmave . Imazhi i parĂ« i postĂ«s Ă«shtĂ« marrĂ« nga filmi «Kthehu nĂ« tĂ« Ardhmen â 3».
- Kompania për mbështetje dhe mundësinë e publikimit në blogun e tij në Habrë.
P.S. Dërgoni gabimet e vërejtura në mesazh privat. Po e rris karmën për këtë.
Mund të provoni NILFS2 duke porositur një makinë virtuale nga me kuponin më poshtë. Për të gjithë klientët e rinj, periudhë prove falas prej 3 ditësh.
Burimi: habr.com
