NILFS2 - fayilo ya bulletproof ya /home

NILFS2 - fayilo ya bulletproof ya /home

Monga mukudziwa, ngati vuto lichitika, lidzachitikadi. Mwinamwake aliyense wakhala ndi zochitika pamene fayilo yofunikira posachedwa idafufutidwa mwangozi, kapena malemba adasankhidwa mwangozi ndikuwonongeka mumkonzi wa malemba.

Ngati ndinu ochereza kapena eni webusayiti, ndiye kuti mwakumanapo ndi kubedwa kwamaakaunti a ogwiritsa ntchito kapena tsamba lanu. Zikatero, ndikofunika kubwezeretsa nthawi, kupeza njira yolowera ndi chiwopsezo chogwiritsidwa ntchito ndi wowukirayo.

Dongosolo la mafayilo a NILFS2 ndilabwino kuthetsa mavuto otere.

Yakhalapo mu Linux kernel kuyambira mtundu wa 2.6.30.

Chodabwitsa cha mawonekedwe a fayiloyi ndikuti ndi ofanana ndi mawonekedwe owongolera: mutha kubweza momwe dongosololi likubwerera ndikuwona momwe zidalili kale.

Kuti mupereke izi, simuyenera kukonza zolemba za Cron, kujambula zithunzi, ndi zina. NILFS2 file system imachita izi yokha. Simalembanso deta yakale ndipo nthawi zonse imalemba kumadera atsopano a disk ngati pali malo okwanira a disk. Mogwirizana kwathunthu ndi mfundo ya Copy-on-Write.

M'malo mwake, kusintha kulikonse pafayilo kumapanga chithunzithunzi chatsopano cha fayilo, kotero mutha kugwiritsa ntchito FS iyi ngati makina anthawi ndikubwezeretsanso mafayilo.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ

NILFS2 - fayilo ya bulletproof ya /homeNILFS2 idapangidwa mu kuya kwa Malingaliro a kampani Nippon Telegraph and Telephone Corporation, kwenikweni, a boma (ali ndi gawo lolamulira) ndi kampani yaikulu kwambiri ya telecommunication ku Japan. Makamaka, mu CyberSpace Laboratories motsogozedwa ndi utsogoleri Ryusuke Konishi.

Zomwe zidapangidwira sizidziwika, komabe, tingaganize kuti FS yotereyi, yokhala ndi "makina anthawi" ndi yabwino kusunga deta yomwe mabungwe anzeru angafune kukumbamo kuti abwereze chithunzi chonsecho. SMS, maimelo, etc....

NILFS2 ndiyonso chida chofunikira kwambiri pachitetezo chamkati, chifukwa imakupatsani mwayi wopezanso zilembo zonse zomwe zachotsedwa munkhokwe yamakalata, kuwulula zovuta za ogwira ntchito omwe pambuyo pake amayesa kuwabisa pochotsa kapena kusintha mafayilo awo.

Kodi mungayang'anire bwanji mbiri yanu yonse yamakalata?Pa maseva a Linux (ndipo apa ndi pomwe NILFS2 iyenera kukhazikitsidwa pazolinga zachitetezo chamkati), njira yamafayilo yosungira maimelo imagwiritsidwa ntchito nthawi zambiri kusunga maimelo. Zomwe zimatchedwa mawonekedwe Maildir. Zokwanira kuyika Courier Mail Server ndi kukonza zosungirako makalata ku Maildir. Mtundu wina mbox ndi fayilo yayikulu yomwe imatha kugawidwa mosavuta kukhala mauthenga amodzi.

Ngati seva yamakalata imagwiritsa ntchito nkhokwe, ndiye kuti NILFS2 ipangitsa kuti zitheke kubwezeretsa nthawi yeniyeni yakusintha kwa database komanso kuthekera kobwezeretsanso nkhokwe nthawi iliyonse iyi. Kenako muyenera kugwiritsa ntchito zida za database kuti muwone zomwe zinali mmenemo panthawiyo ...

Komabe, chinachake chinalakwika. Mwina boma la Japan lidasintha malingaliro ake okhudza kuyang'anira aliyense (a la the Yarovaya mfundo), kapena magwiridwe antchito a NILFS2 pama HDD achikhalidwe adakhala pansi, ndipo NILFS2 idatulutsidwa pansi pa chiphaso cha GPL ndipo mwachangu kwambiri idalowa mu Linux kernel, popeza panalibe madandaulo apadera pa code yomwe inalembedwa ku Japan oyenerera kwambiri, omwe amapanga Linux kernel analibe.

Kodi NILFS2 ndi chiyani?

Kuchokera pamawonekedwe ogwiritsira ntchito: pamakina owongolera mtundu SVN. Kufufuza kulikonse kwa FS ndi ntchito yomwe imapangidwa zokha popanda wogwiritsa kudziwa nthawi iliyonse pakusintha kulikonse: kaya kufufutidwa, kusintha zomwe zili mufayilo kapena kusintha ufulu wofikira. Kudzipereka kulikonse kumakhala ndi nambala yomwe imawonjezeka motsatira.

Kuchokera pamalingaliro a wopanga mapulogalamu: chotchinga chozungulira. Mafayilo amasonkhanitsa zosintha ndikuzilemba mu chunk yofanana ndi pafupifupi 8 MB (2000 * 4096, pomwe 2000 ndi kuchuluka kwa zinthu zomwe zili mu block ndi 4096 ndi kukula kwa tsamba lokumbukira). Diski yonse imagawidwa m'magulu oterowo. Kujambulira kumachitika motsatizana. Malo aulere akatha, zithunzi zakale kwambiri zimachotsedwa ndipo ma chunks amalembedwa.

Zoyambira za NILFS2

  • Zasinthidwa !!!
  • Njira yobwezeretsanso fayilo pambuyo polephera ndiyosavuta: mukatsitsa, chunk yomaliza yomwe ili ndi cheke yolondola imafufuzidwa, ndipo superblock imayikidwa pamenepo. Ichi ndi ntchito pafupifupi pompopompo.
  • Chifukwa chojambulira nthawi zonse chimayenda motsatira, ndiye:
    • imatha kuwonetsa zotsatira zabwino mukathamanga pa SSD ndikulemba pang'onopang'ono mwachisawawa.
    • NILFS2 imasunga gwero la SSD, popeza palibe pafupifupi cholembera chochulukitsa.
      Kunena zowona, sikuposa 2.Chowonadi ndi chakuti polembanso disk yonse, NILFS2 imasamutsa deta yosasinthika ku zidutswa zatsopano (chunks).

      Ngati tili ndi 10% ya data yosasinthika pa diski, ndiye kuti tidzapeza 10% yolemba yowonjezera ndi 1 kulembanso kwathunthu. Chabwino, kuwonjezeka kwa 50% pa 50% kudzaza kwa chipangizo pa 1 kulembedwanso kwathunthu kwa disk.

      Kupindula kwakukulu kolemba ndi 2. Izi ndizochepa kwambiri poganizira kuti zonse zimalembedwa motsatizana. Nthawi zambiri, makanema ojambula adzakhala ocheperako poyerekeza ndi mafayilo amtundu wamba omwe ali ndi gawo la 4096-byte. (Maganizo ouziridwa ndi ndemanga).

  • Kuthekera kogwiritsa ntchito kubwereza ku NILFS2 FS yakutali

NILFS2 ya /home

M'machitidwe ogwiritsira ntchito a Unix, monga lamulo, pali chikwatu / kunyumba komwe deta ya osuta imasungidwa. Mapulogalamu osiyanasiyana amasunga zokonda zawo za ogwiritsa ntchito mufoda iyi.

Ndipo ndani, ngati si ogwiritsa ntchito, amalakwitsa nthawi zambiri? Chifukwa chake, monga akunena, Mulungu mwiniyo adalamula kugwiritsa ntchito NILFS2 pa /nyumba.

Kuphatikiza apo, ndikugwiritsa ntchito kwambiri ma SSD, sitiyeneranso kuda nkhawa ndi zovuta kwambiri tikamagwiritsa ntchito mafayilo a CoW.

Inde, tikhoza kupanga zojambula za FS nthawi zambiri monga momwe timakonda mu ZFS ndi BTRFS, koma nthawi zonse pali chiopsezo kuti kusintha kwa fayilo kutayika kudzatha pakati pazithunzi. Ndipo zithunzi zikufunikabe kuyendetsedwa: zakale ziyenera kuchotsedwa. Mu NILFS2, zonsezi zimachitika zokha, kwenikweni masekondi angapo aliwonse.

Ndidapanga voliyumu yomveka pogwiritsa ntchito lvcreate (mgulu la voliyumu ya nvme, dziwe lopyapyala). Ndikupangira kupanga pa voliyumu ya lvm, chifukwa imatha kukulitsidwa mosavuta pambuyo pake. Ndikupangira kukhala ndi 50% malo a disk aulere ndi NILFS2 pakuzama kwamawonekedwe abwino.

lvcreate -V10G -T nvme/thin -n home

ndikusintha mu 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 !!

Pambuyo pake, muyenera kukopera deta yonse kuchokera panopa /home.

Ndidachita izi nditangotsegula kompyuta, ndisanalowe muakaunti yanga, monga wogwiritsa ntchito mizu. Ndikadalowa ngati wogwiritsa ntchito, mapulogalamu ena amatsegula ma socket ndi mafayilo mufoda yanga ya /home/user, zomwe zingapangitse kukopera koyera kukhala kovuta. Monga mukudziwira, chikwatu chakunyumba kwa wogwiritsa ntchito mizu nthawi zambiri chimakhala pa /root path, kotero palibe mafayilo omwe adzatsegulidwe pa /home partition.

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

Kwa mzere wotsiriza, onani nkhani.

Kenako timasintha /etc/fstab, momwe mafayilo amafayilo a /home amayikidwa, kuti

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

Yankho noatime zofunika kukonza magwiridwe antchito kuti nthawi isasinthe ndi fayilo iliyonse. Kenako timayambiranso.

Mitundu ya zithunzi mu NILFS2.

Chithunzi chokhazikika chopanda chitetezo chokwanira kuchotsedwa chimatchedwa checkpoint kapena recovery point.
Chithunzi chotetezedwa kuti chisachotsedwe chokha chimatchedwa chithunzithunzi, kenako chithunzithunzi chabe.

Kuwona ma checkpoints kumachitika pogwiritsa ntchito lamulo la lscp

Onani zithunzi za lscp -s

Titha kupanga zowonera tokha nthawi iliyonse pogwiritsa ntchito:

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

Timabwezeretsa deta.

NILFS imatilola kukweza zithunzi zakale monga momwe tikufunira kufananizira ndikugwira ntchito ndi nthambi yayikulu ya FS. Koma mu kuwerenga mode.

Zonse zimakonzedwa motere. Zoyang'anira nthawi zonse zomwe NILFS2 imapanga zimatha kuchotsedwa nthawi iliyonse (pamene danga la disk likatha kapena molingana ndi malamulo a nilfs_cleanerd), kotero tisanakhazikitse tiyenera kutembenuza malowa kukhala chithunzithunzi kapena, mukulankhula Chirasha, jambulani chithunzithunzi.

chcp ss Π½ΠΎΠΌΠ΅Ρ€_Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚Π°

Pambuyo pake, tikhoza kukwera chithunzithunzi, mwachitsanzo, motere:

mount -t nilfs2 -r -o cp=Π½ΠΎΠΌΠ΅Ρ€_Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚Π° /dev/nvme/home /mnt/nilfs/Π½ΠΎΠΌΠ΅Ρ€_Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚Π°

Pambuyo pake timakopera mafayilo obwezeretsedwa kuchokera pazithunzi kupita ku /home.
Ndipo pambuyo pake timachotsa mbendera yosasinthika pachithunzichi kuti mtsogolomo wotolera zinyalala achotse deta yakale:

chcp cp Π½ΠΎΠΌΠ΅Ρ€_Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚Π°

Zothandizira za NILFS2

Koma ili ndiye vuto. Inde, titha kupanga fayilo, kusintha kukula kwake pa intaneti, kuwona mndandanda wazovuta, kupanga ndikuchotsa. Phukusi la nilfs2-utils limapereka ma seti ochepa a njonda.

Popeza NTT yachepetsa ndalama zake, palibe zida zotsika zomwe zimakupatsani mwayi wowonetsa mbiri yakusintha kwamafayilo kapena kupanga kusiyana pakati pazithunzi.

Chida changa cha n2u

Kudzaza chopanda ichi ndinalemba ntchito yanu ya n2u, yomwe imatha kuwonetsa mbiri yakusintha kwa fayilo/kalozera:

n2u log filename

Zotsatira zake ndi izi:

          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

Zimagwira ntchito mwachangu panjira yosankhidwa: imayang'ana kusiyana pakati pa mafayilo pogwiritsa ntchito njira ya bisection, kukwera mwachangu ndikufanizira fayilo / kalozera muzithunzi zosiyanasiyana.

Mutha kukhazikitsa macheke osiyanasiyana pogwiritsa ntchito kiyi -cp CP1:CP2 kapena -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Mutha kuwonanso kusiyana pakati pa macheke a fayilo kapena chikwatu china:

n2u diff -r cp1:cp2 filename

Mutha kuwonetsa nthawi yonse ya zosintha: kusiyana konse pakati pa cheke cha fayilo/chikwatu:

n2u blame [-r cp1:cp2] filename

Nthawi ya deti mu lamulo ili imathandizidwanso.

Kulira kwa opanga

Pali akatswiri ambiri pa Habre. Chonde malizitsani NILFS2. Pangani kubwereza, kutsika mwachangu kusiyana pakati pa kukonzanso, reflink ndi zina zabwino!

powatsimikizira

Tsamba lovomerezeka la NILFS.

Zosungira:
NILFS2.
NILFS2 zothandiza ndi ma module.

Nkhani zamakalata:
Kalata ya imelo ya opanga NILFS2. ID ya kulembetsa kwa linux-nilfs.
Nkhani zamakalata zakale.

nilfs_cleanerd khwekhwe kalozera.
Benchmarking EXT4, Btrfs, XFS & NILFS2 Mayeso Ogwira Ntchito.

Zikomo:

  • Madivelopa a NILFS2: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi ndi Satoshi Moriai. Ena omwe adathandizira kwambiri ndi: Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitry Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vyacheslav Dubeyko.
  • Kwa Amblin Entertainment ndi Universal Pictures pamakanema odabwitsa. "Back to the Future". Chithunzi choyamba cha positi chikutengedwa mu kanema "Back to the Future 3".
  • Makampani Zithunzi za RUVDS kuti muthandizidwe komanso mwayi wofalitsa pa blog yanu pa HabrΓ©.

PS Chonde tumizani zolakwika zilizonse zomwe mungazindikire mu uthenga wachinsinsi. Ndikuwonjezera karma yanga pa izi.

Mutha kuyesa NILFS2 poyitanitsa makina enieni kuchokera Zithunzi za RUVDS ndi kuponi pansipa. Kwa makasitomala onse atsopano pali nthawi yaulere ya masiku atatu.

NILFS2 - fayilo ya bulletproof ya /home

Source: www.habr.com

Kuwonjezera ndemanga