NILFS2 - kuglorezista dosiersistemo por /home

NILFS2 - kuglorezista dosiersistemo por /home

Kiel vi scias, se problemo povas okazi, ĝi certe okazos. Verŝajne ĉiuj havis kazojn kiam lastatempa grava dosiero estis hazarde forigita, aŭ teksto estis hazarde elektita kaj detruita en tekstredaktilo.

Se vi estas gastiganto aŭ reteja posedanto, tiam vi verŝajne renkontis hakadon de uzantkontoj aŭ vian retejon. En tiaj kazoj, gravas restarigi la kronologion, trovi la metodon de eniro kaj la vundeblecon uzata de la atakanto.

La dosiersistemo NILFS2 estas perfekta por solvi tiajn problemojn.

Ĝi ĉeestas en la Linukso-kerno ekde versio 2.6.30.

La propreco de ĉi tiu dosiersistemo estas, ke ĝi similas al versio-kontrola sistemo: vi ĉiam povas retrorigi la staton de la sistemo kaj rigardi kiel ĝi estis antaŭ iom da tempo.

Por provizi ĉi tiun funkcion, vi ne bezonas agordi Cron-skriptojn, preni momentfotojn ktp. La dosiersistemo NILFS2 faras ĉi tion per si mem. Ĝi neniam anstataŭigas malnovajn datumojn kaj ĉiam skribas al novaj areoj de la disko se estas sufiĉe da libera diskospaco. Plene konforme al la principo Copy-on-Write.

Fakte, ajna ŝanĝo al dosiero aŭtomate kreas novan momentfoton de la dosiersistemo, do vi povas uzi ĉi tiun FS kiel tempomaŝinon kaj rebobeni la staton de dosieroj.

История

NILFS2 - kuglorezista dosiersistemo por /homeNILFS2 estis evoluigita en la profundoj de Nippon Telegraph kaj Telephone Corporation, fakte, la ŝtata (ĝi havas kontrolantan akcion) kaj la plej granda telekomunika kompanio en Japanio. Pli specife, en la CyberSpace Laboratorioj sub la gvidado Ryusuke Konishi.

Por kio ĝuste ĝi estis evoluigita estas nekonata, tamen oni povas supozi, ke tia FS, kun sia "tempomaŝino" funkcieco, estas ideala por stoki datumojn, kiujn la spionservoj eble volas fosi por reludi la tutan bildon de SMS, retpoŝtoj, ktp....

NILFS2 ankaŭ estas eble tre valora ilo por internaj sekurecaj servoj, ĉar ĝi ebligas al vi reakiri ĉiujn forigitajn leterojn en la poŝta datumbazo, malkaŝante la jambojn de dungitoj, kiuj poste povas provi maski ilin forigante aŭ ŝanĝante siajn dosierojn.

Kiel vi povas spuri vian tutan korespondan historion?Sur Linuksaj serviloj (kaj ĉi tie devus esti instalita NILFS2 por internaj sekurecaj celoj), la dosiermetodo de stokado de retpoŝtoj estas tre ofte uzata por konservi retpoŝtajn mesaĝojn. La tiel nomata formato Maildir. Sufiĉe por meti Kuriera Poŝta Servilo kaj agordi poŝtan stokadon en Maildir. Alia formato mbox estas granda tekstdosiero kiu povas esti facile analizita en individuajn mesaĝojn.

Se la poŝtservilo uzas datumbazon, tiam NILFS2 ebligos restarigi la ĝustan tempon de datumbazaj ŝanĝoj kaj la kapablon restarigi la datumbazon en iu ajn el ĉi tiuj momentoj. Kaj tiam vi devas uzi datumbazajn ilojn por vidi kio estis en ĝi en tiu momento...

Tamen io misfunkciis. Aŭ la japana registaro ŝanĝis sian opinion pri monitorado de ĉiuj (la la Yarovaya principo), aŭ la agado de NILFS2 sur tradiciaj HDD-oj montriĝis sub la paro, kaj NILFS2 estis liberigita sub la GPL-licenco kaj tre rapide eniris la Linuksan kernon, ĉar ne estis apartaj plendoj pri la kodo verkita tre kvalifikita japano, la programistoj de la Linukso-kerno ne havis ĝin.

Kia estas NILFS2?

El uzpunkto: sur versio-kontrolsistemo SVN. Ĉiu FS-kontrolpunkto estas transdono, kiu estas farita aŭtomate sen la scio de la uzanto kiam ajn estas ajna ŝanĝo: ĉu ĝi estas forigo, ŝanĝado de la enhavo de dosiero aŭ ŝanĝado de alirrajtoj. Ĉiu komit havas nombron kiu pliiĝas linie.

El vidpunkto de programisto: cirkla bufro. La dosiersistemo amasigas ŝanĝojn kaj skribas ilin en pecon egalan al proksimume 8 MB (2000 * 4096, kie 2000 estas la nombro da elementoj en la bloko kaj 4096 estas la grandeco de la memorpaĝo). La tuta disko estas dividita en tiajn pecojn. La registrado daŭrigas sinsekve. Kiam libera spaco finiĝas, la plej malnovaj momentfotoj estas forigitaj kaj la pecoj estas anstataŭitaj.

Bazaj NILFS2-bonaĵoj

  • Versionado!!!
  • La procedo por restarigi dosiersistemon post malsukceso estas simpla: dum ŝarĝo, la lasta peco, kiu havas la ĝustan kontrolsumon, estas serĉata, kaj superbloko estas instalita sur ĝi. Ĉi tio estas preskaŭ tuja operacio.
  • Pro la fakto ke registrado ĉiam daŭrigas linie, tiam:
    • povas montri bonajn rezultojn kiam funkcias sur SSD kun malrapidaj hazardaj skriboj.
    • NILFS2 ŝparas SSD-rimedon, ĉar preskaŭ ne ekzistas skriba multiplika faktoro.
      Pli precize, ĝi estas ne pli ol 2.La fakto estas, ke dum cikle reverkado de la tuta disko, NILFS2 transdonos neŝanĝeblajn datumojn al novaj pecoj (pecoj).

      Se ni havas 10% de senŝanĝaj datumoj sur la disko, tiam ni ricevos 10% skriba kreskon kun 1 kompleta reverko. Nu, 50% pliiĝo je 50% pleneco de la aparato por 1 kompleta reverko de la disko.

      La maksimuma skriba gajno estas 2. Ĉi tio estas tre malalta konsiderante ke ĉio estas skribita sinsekve. Ĝenerale, la skriba animacio estos malpli ol tiu de konvencia fragmenta dosiersistemo kun 4096-bajta sektoro. (Penso inspirita de komento).

  • Ebla facileco de efektivigo de reproduktado al malproksima NILFS2 FS

NILFS2 por /hejmo

En Unikso-similaj operaciumoj, kiel regulo, ekzistas /home dosierujo en kiu uzantdatenoj estas stokitaj. Diversaj programoj konservas siajn uzantspecifajn agordojn en ĉi tiu dosierujo.

Kaj kiu, se ne uzantoj, faras erarojn plej ofte? Tial, kiel oni diras, Dio mem ordonis la uzon de NILFS2 sur /home.

Krome, kun la disvastigita uzo de SSD-oj, ni nun ne plu devas zorgi pri severaj malaltiĝoj dum uzado de CoW-dosiersistemoj.

Jes, ni povas krei FS-fotojn tiel ofte kiel ni volas en ZFS kaj BTRFS, sed ĉiam estas risko, ke perdita dosierŝanĝo finiĝos inter la momentfotoj. Kaj la bildoj ankoraŭ devas esti administritaj: malnovaj devas esti forigitaj. En NILFS2, ĉio ĉi okazas aŭtomate, laŭvorte ĉiujn kelkajn sekundojn.

Mi kreis logikan volumon uzante lvcreate (en la nvme volumgrupo, thin pool thin). Mi rekomendas krei ĝin sur la lvm-volumo, ĉar ĝi povas esti facile vastigita poste. Mi rekomendas havi 50% liberan diskospacon kun NILFS2 por deca versio-profundo.

lvcreate -V10G -T nvme/thin -n home

kaj formatis ĝin en NILFS2:

mkfs.nilfs2 -L nvme_home /dev/nvme/home

mkfs.nilfs2 (nilfs-utils 2.1.5)
Start writing file system initial data to the device
      Blocksize:4096  Device:/dev/nvme/home1  Device Size:10737418240
File system initialization succeeded !!

Post ĉi tio, vi devas kopii ĉiujn datumojn de la nuna /home.

Mi faris tion tuj post ekŝargo de la komputilo, antaŭ ol ensaluti en mian konton, kiel la radika uzanto. Se mi ensalutus kiel mia uzanto, iuj programoj malfermus ingojn kaj dosierojn en la dosierujo de mia uzanto /home/user, kio malfaciligus puran kopion. Kiel vi scias, la hejma dosierujo por la radika uzanto kutime situas sur la /root-vojo, do neniuj dosieroj malfermiĝos sur la /home-disko.

mkdir /mnt/newhome
mount -t nilfs2 /dev/nvme/home /mnt/newhome
cp -a /home/. /mnt/newhome

Por la lasta linio, vidu artikolo.

Poste ni redaktas /etc/fstab, en kiu la dosiersistemo por /home estas muntita, al

/dev/disk/by-label/nvme_home /home nilfs2    noatime 0 0

Opcio noatime bezonata por plibonigi rendimenton por ke la tempo ne ŝanĝu kun ĉiu dosiera aliro. Poste ni rekomencas.

Tipoj de bildoj en NILFS2.

Regula momentfoto sen imuneco al forigo estas nomita transirejo aŭ reakiro.
Momentfoto protektita kontraŭ aŭtomata forigo nomiĝas momentfoto, tiam simple momentfoto.

Vidado de kontrolpunktoj estas farita per la komando lscp

Rigardu momentfotojn lscp -s

Ni mem povas krei momentfotojn kaj kontrolpunktojn iam ajn uzante:

mkcp [-s] устройство

Ni restarigas datumojn.

NILFS permesas al ni munti tiom da malnovaj momentfotoj kiom ni volas paralele kun laborado kun la ĉefa FS-branĉo. Sed nur en legoreĝimo.

Ĉio estas aranĝita tiel. Regulaj kontrolpunktoj kiujn faras NILFS2 povas esti aŭtomate forigitaj en ajna momento (kiam diskspaco elĉerpiĝas aŭ laŭ la reguloj de nilfs_cleanerd), do antaŭ instalo ni devas konverti la kontrolpunkton en momentfoton aŭ, en la rusa parolado, kapti la momentfoton.

chcp ss номер_чекпоинта

Post tio, ni povas munti la momentfoton, ekzemple, jene:

mount -t nilfs2 -r -o cp=номер_чекпоинта /dev/nvme/home /mnt/nilfs/номер_чекпоинта

Post tio ni kopias la restarigitajn dosierojn de la momentfoto al /home.
Kaj poste ni forigas la neforigeblan flagon de la momentfoto, por ke estonte la aŭtomata rubokolektanto povu forigi malmodernajn datumojn:

chcp cp номер_чекпоинта

Iloj por NILFS2

Sed ĉi tio estas la problemo. Jes, kompreneble, ni povas krei dosiersistemon, ŝanĝi ĝian grandecon interrete, vidi la liston de defipunktoj, krei kaj forigi ilin. La pako nilfs2-utils provizas minimuman aron de sinjoro.

Ĉar NTT limigis sian financadon, ne ekzistas rapidaj malaltnivelaj utilecoj, kiuj ebligas al vi montri la historion de dosierŝanĝoj aŭ fari diferencojn inter momentfotoj.

Mia n2u-ilaĵo

Por plenigi ĉi tiun vakuon mi skribis via n2u-ilaĵo, kiu povas montri la historion de ŝanĝoj al specifa dosiero/dosierujo:

n2u log filename

La eligo estas io kiel ĉi tio:

          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    cp

Ĝi funkcias sufiĉe rapide por la elektita efektivigmetodo: ĝi serĉas diferencojn inter dosieroj uzante la bisekcmetodon, rapide muntante kaj komparante la dosieron/dosierujon en malsamaj momentfotoj.

Vi povas agordi gamon da kontrolpunktoj uzante la ŝlosilon -cp CP1:CP2-cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Vi ankaŭ povas vidi la diferencon inter kontrolpunktoj por specifa dosiero aŭ dosierujo:

n2u diff -r cp1:cp2 filename

Vi povas montri la tutan kronologion de ŝanĝoj: ĉiujn diferencojn inter la kontrolpunktoj de specifa dosiero/dosierujo:

n2u blame [-r cp1:cp2] filename

Datintervalo en ĉi tiu komando ankaŭ estas subtenata.

Krio al la programistoj

Estas multaj specialistoj pri Habré. Bonvolu fini NILFS2. Faru reproduktadon, malaltnivelan rapidan diferencon inter revizioj, reflink kaj aliaj bonaĵoj!

referencoj

Oficiala retejo de NILFS.

Deponejoj:
NILFS2.
NILFS2 iloj kaj moduloj.

Informiloj:
Retpoŝta bulteno por programistoj de NILFS2. ID por abono linux-nilfs.
Informilo-arkivo.

nilfs_cleanerd agordgvidilo.
Benchmarking EXT4, Btrfs, XFS & NILFS2 Performance Tests.

Dankon:

  • Programistoj de NILFS2: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi kaj Satoshi Moriai. Aliaj gravaj kontribuantoj estas: Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitry Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vyacheslav Dubeyko.
  • Al Amblin Entertainment kaj Universal Pictures por mirinda serio de filmoj. "Reen al la Estonteco". La unua bildo de la afiŝo estas prenita de la filmo "Reen al la Estonteco 3".
  • Kompanioj RUVDS por subteno kaj la ŝanco publikigi en via blogo ĉe Habré.

PS Bonvolu sendi iujn ajn erarojn, kiujn vi rimarkas en privata mesaĝo. Mi pliigas mian karmon por ĉi tio.

Vi povas eksperimenti kun NILFS2 mendante virtualan maŝinon de RUVDS kun la suba kupono. Por ĉiuj novaj klientoj estas senpaga provperiodo de 3 tagoj.

NILFS2 - kuglorezista dosiersistemo por /home

fonto: www.habr.com

Aldoni komenton