NILFS2 - գնդակակայուն ֆայլային համակարգ /home-ի համար

NILFS2 - գնդակակայուն ֆայլային համակարգ /home-ի համար

Ինչպես գիտեք, եթե անախորժություններ կարող են լինել, դա անպայման տեղի կունենա: Հավանաբար բոլորն էլ ունեցել են դեպքեր, երբ վերջերս որևէ կարևոր ֆայլ պատահաբար ջնջվել է, կամ տեքստը պատահաբար ընտրվել և ոչնչացվել է տեքստային խմբագրիչում:

Եթե ​​դուք հոսթեր կամ կայքի սեփականատեր եք, ապա հավանաբար բախվել եք օգտատերերի հաշիվների կամ ձեր կայքի կոտրման հետ: Նման դեպքերում կարևոր է վերականգնել ժամանակագրությունը, գտնել մուտքի մեթոդը և հարձակվողի կողմից օգտագործվող խոցելիությունը։

NILFS2 ֆայլային համակարգը կատարյալ է նման խնդիրների լուծման համար:

Այն առկա է Linux միջուկում 2.6.30 տարբերակից:

Այս ֆայլային համակարգի առանձնահատկությունն այն է, որ այն նման է տարբերակների կառավարման համակարգին. միշտ կարող եք հետ գլորել համակարգի վիճակը և տեսնել, թե ինչպիսին էր այն որոշ ժամանակ առաջ:

Այս ֆունկցիոնալությունն ապահովելու համար ձեզ հարկավոր չէ կարգավորել Cron սկրիպտները, լուսանկարել նկարներ և այլն: NILFS2 ֆայլային համակարգը այս ամենը ինքնուրույն է անում: Այն երբեք չի վերագրում հին տվյալները և միշտ գրում է սկավառակի նոր տարածքներ, եթե կա բավարար ազատ սկավառակի տարածք: Լիովին համապատասխան Copy-on-Write սկզբունքին:

Փաստորեն, ֆայլի ցանկացած փոփոխություն ավտոմատ կերպով ստեղծում է ֆայլային համակարգի նոր պատկեր, այնպես որ դուք կարող եք օգտագործել այս FS-ը որպես ժամանակի մեքենա և հետ շրջել ֆայլերի վիճակը:

Պատմություն

NILFS2 - գնդակակայուն ֆայլային համակարգ /home-ի համարNILFS2-ը մշակվել է խորքերում Nippon Telegraph and Telephone Corporation, փաստորեն, պետական ​​(այն ունի վերահսկիչ բաժնետոմս) և Ճապոնիայի խոշորագույն հեռահաղորդակցական ընկերությունը։ Ավելի կոնկրետ՝ ղեկավարությամբ կիբերտարածության լաբորատորիաներում Ռյուսուկե Կոնիշի.

Թե կոնկրետ ինչի համար է այն մշակվել, անհայտ է, այնուամենայնիվ, կարելի է ենթադրել, որ նման FS-ն իր «ժամանակի մեքենա» ֆունկցիոնալությամբ իդեալական է տվյալների պահպանման համար, որոնք հետախուզական ծառայությունները կարող են ցանկանալ փորել՝ ամբողջ պատկերը վերարտադրելու համար։ SMS, նամակներ և այլն...

NILFS2-ը նաև պոտենցիալ շատ արժեքավոր գործիք է ներքին անվտանգության ծառայությունների համար, քանի որ այն թույլ է տալիս վերականգնել բոլոր ջնջված տառերը փոստի տվյալների բազայում՝ բացահայտելով աշխատակիցների խցանումները, որոնք հետագայում կարող են փորձել քողարկել դրանք՝ ջնջելով կամ փոխելով իրենց ֆայլերը:

Ինչպե՞ս կարող եք հետևել ձեր նամակագրության ամբողջ պատմությանը:Linux սերվերների վրա (և այստեղ NILFS2-ը պետք է տեղադրվի ներքին անվտանգության նպատակներով), էլփոստի հաղորդագրությունները պահելու ֆայլային մեթոդը շատ հաճախ օգտագործվում է էլ.փոստի հաղորդագրությունները պահելու համար: Այսպես կոչված ձևաչափը Maildir. Բավական է դնել Սուրհանդակային փոստի սերվեր և կարգավորեք փոստի պահեստը Maildir-ում: Այլ ձևաչափ մբոքս մեծ տեքստային ֆայլ է, որը հեշտությամբ կարելի է վերլուծել առանձին հաղորդագրությունների մեջ:

Եթե ​​փոստային սերվերն օգտագործում է տվյալների բազա, ապա NILFS2-ը հնարավորություն կտա վերականգնել տվյալների բազայի փոփոխությունների ճշգրիտ ժամանակը և տվյալների բազան վերականգնելու հնարավորությունը այս պահերից որևէ մեկում: Եվ հետո դուք պետք է օգտագործեք տվյալների բազայի գործիքները, որպեսզի տեսնեք, թե ինչ կար դրա մեջ ժամանակի այդ պահին...

Այնուամենայնիվ, ինչ-որ բան սխալ է տեղի ունեցել: Կամ Ճապոնիայի կառավարությունը փոխել է իր միտքը բոլորին վերահսկելու մասին (a la Yarovaya սկզբունքը), կամ NILFS2-ի կատարումը ավանդական HDD-ների վրա պարզվել է, որ ցածր է, և NILFS2-ը թողարկվել է GPL լիցենզիայի ներքո և շատ արագ մտել Linux միջուկ, քանի որ բարձր որակավորում ունեցող ճապոներեն գրված կոդի վերաբերյալ առանձնապես դժգոհություններ չեն եղել, Linux միջուկի մշակողները դա չեն ունեցել։

Ինչպիսի՞ն է NILFS2-ը:

Օգտագործման տեսանկյունից՝ տարբերակի կառավարման համակարգի վրա SVN- ը. Յուրաքանչյուր FS անցակետը պարտավորություն է, որը կատարվում է ավտոմատ կերպով՝ առանց օգտատիրոջ իմացության, երբ որևէ փոփոխություն կա՝ լինի դա ջնջում, ֆայլի բովանդակության փոփոխություն կամ մուտքի իրավունքի փոփոխություն: Յուրաքանչյուր commit ունի մի թիվ, որը գծային աճում է:

Ծրագրավորողի տեսանկյունից՝ շրջանաձև բուֆեր։ Ֆայլային համակարգը կուտակում է փոփոխությունները և դրանք գրում է մոտավորապես 8 ՄԲ-ի չափով (2000 * 4096, որտեղ 2000-ը բլոկի տարրերի քանակն է, իսկ 4096-ը՝ հիշողության էջի չափը): Ամբողջ սկավառակը բաժանված է նման կտորների. Ձայնագրությունն ընթանում է հաջորդաբար։ Երբ ազատ տարածքը սպառվում է, ամենահին նկարները ջնջվում են, իսկ կտորները վերագրվում են:

Հիմնական NILFS2 բարիքներ

  • Տարբերակում!!!
  • Խափանումից հետո ֆայլային համակարգը վերականգնելու կարգը պարզ է. բեռնելիս որոնվում է վերջին հատվածը, որն ունի ճիշտ ստուգիչ գումար, և դրա վրա տեղադրվում է սուպերբլոկ: Սա գրեթե ակնթարթային գործողություն է:
  • Շնորհիվ այն բանի, որ ձայնագրությունը միշտ ընթանում է գծային, ապա.
    • կարող է լավ արդյունքներ ցույց տալ, երբ աշխատում է SSD-ով դանդաղ պատահական գրություններով:
    • NILFS2-ը խնայում է SSD ռեսուրսը, քանի որ գրելու բազմապատկման գործակից գրեթե չկա:
      Ավելի ճիշտ՝ 2-ից ոչ ավել։Փաստն այն է, որ ամբողջ սկավառակը ցիկլային կերպով վերագրելիս, NILFS2-ը անփոփոխ տվյալներ կփոխանցի նոր կտորների (կտորների):

      Եթե ​​մենք ունենք 10% անփոփոխ տվյալներ սկավառակի վրա, ապա մենք կստանանք 10% գրության ավելացում 1 ամբողջական վերաշարադրմամբ։ Դե, 50% աճ սարքի 50% լրիվության դեպքում սկավառակի 1 ամբողջական վերաշարադրման համար:

      Գրելու առավելագույն շահույթը 2 է: Սա շատ ցածր է, հաշվի առնելով, որ ամեն ինչ գրված է հաջորդաբար: Ընդհանուր առմամբ, գրելու անիմացիան ավելի քիչ կլինի, քան սովորական մասնատված ֆայլային համակարգի 4096 բայթ հատվածով: (Մտք ոգեշնչված է մեկնաբանել).

  • Հեռավոր NILFS2 FS-ում կրկնօրինակման իրականացման հնարավոր հեշտությունը

NILFS2 / տան համար

Unix-ի նման օպերացիոն համակարգերում, որպես կանոն, կա /home թղթապանակ, որտեղ պահվում են օգտվողի տվյալները։ Տարբեր ծրագրեր այս թղթապանակում պահում են իրենց օգտատիրոջ հատուկ կարգավորումները:

Իսկ ո՞վ է, եթե ոչ օգտատերերը, ամենից հաճախ սխալներ թույլ տալիս։ Ուստի, ինչպես ասում են, Աստված ինքն է հրամայել օգտագործել NILFS2-ը /home-ում։

Ավելին, SSD-ների լայնածավալ կիրառմամբ մենք այլևս կարիք չունենք անհանգստանալու CoW ֆայլային համակարգեր օգտագործելիս լուրջ անկումների մասին:

Այո, մենք կարող ենք ստեղծել FS snapshots այնքան հաճախ, որքան ցանկանում ենք ZFS-ում և BTRFS-ում, բայց միշտ վտանգ կա, որ կորցրած ֆայլի փոփոխությունը կավարտվի նկարների միջև: Իսկ նկարները դեռ պետք է տնօրինվեն. հինները պետք է ջնջվեն։ NILFS2-ում այս ամենը տեղի է ունենում ավտոմատ կերպով, բառացիորեն ամեն մի քանի վայրկյանը մեկ:

Ես ստեղծել եմ տրամաբանական ծավալ՝ օգտագործելով lvcreate (nvme ծավալի խմբում, thin pool thin): Ես խորհուրդ եմ տալիս ստեղծել այն lvm ծավալով, քանի որ այն կարող է հեշտությամբ ընդլայնվել ավելի ուշ: Ես խորհուրդ եմ տալիս ունենալ 50% ազատ սկավառակի տարածություն NILFS2-ի հետ՝ տարբերակի պատշաճ խորության համար:

lvcreate -V10G -T nvme/thin -n home

և ձևաչափեց այն 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 !!

Դրանից հետո դուք պետք է պատճենեք բոլոր տվյալները ընթացիկ /home-ից:

Ես դա արեցի համակարգիչը բեռնելուց անմիջապես հետո, նախքան իմ հաշիվ մուտք գործելը, որպես արմատային օգտվող: Եթե ​​ես մուտք գործեի որպես իմ օգտվող, որոշ ծրագրեր կբացեին վարդակներ և ֆայլեր իմ օգտվողի /home/user թղթապանակում, ինչը կդժվարացներ մաքուր պատճենումը: Ինչպես գիտեք, հիմնական օգտատիրոջ հիմնական թղթապանակը սովորաբար գտնվում է /root ուղու վրա, ուստի ոչ մի ֆայլ չի բացվի /home բաժանման վրա:

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

Վերջին տողի համար տե՛ս статью.

Այնուհետև մենք խմբագրում ենք /etc/fstab-ը, որում տեղադրված է /home-ի ֆայլային համակարգը

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

Տարբերակ noatime անհրաժեշտ է կատարելագործումը կատարելագործելու համար, որպեսզի ժամանակը չփոխվի յուրաքանչյուր ֆայլի մուտքի հետ: Հաջորդը մենք վերաբեռնում ենք:

Պատկերների տեսակները NILFS2-ում:

Հերթական լուսանկարը, առանց ջնջման անձեռնմխելիության, կոչվում է անցակետ կամ վերականգնման կետ:
Ավտոմատ ջնջումից պաշտպանված լուսանկարը կոչվում է ակնթարթ, այնուհետև պարզապես լուսանկար:

Անցակետերի դիտումն իրականացվում է lscp հրամանի միջոցով

Դիտեք snapshots lscp -s

Մենք ցանկացած պահի կարող ենք ինքներս ստեղծել նկարներ և անցակետեր՝ օգտագործելով.

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

Մենք վերականգնում ենք տվյալները:

NILFS-ը մեզ թույլ է տալիս տեղադրել այնքան հին նկարներ, որքան ցանկանում ենք հիմնական FS ճյուղի հետ աշխատելուն զուգահեռ: Բայց միայն կարդալու ռեժիմում:

Ամեն ինչ դասավորված է այսպես. NILFS2-ի ստեղծած կանոնավոր անցակետերը կարող են ավտոմատ կերպով ջնջվել ցանկացած պահի (երբ սկավառակի տարածքը սպառվում է կամ համաձայն nilfs_cleanrd կանոնների), այնպես որ նախքան տեղադրումը մենք պետք է անցակետը փոխարկենք լուսանկարի կամ, ռուսերեն լեզվով ասած, լուսանկարենք լուսանկարը:

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

Դրանից հետո մենք կարող ենք տեղադրել snapshot-ը, օրինակ, այսպես.

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

Որից հետո մենք պատճենում ենք վերականգնված ֆայլերը snapshot-ից /home:
Եվ այնուհետև մենք հանում ենք չջնջվող դրոշը նկարից, որպեսզի ապագայում ավտոմատ աղբահանը կարողանա հեռացնել հնացած տվյալները.

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

Կոմունալ ծառայություններ NILFS2-ի համար

Բայց սա է խնդիրը։ Այո, իհարկե, մենք կարող ենք ստեղծել ֆայլային համակարգ, փոխել դրա չափը առցանց, դիտել մարտահրավերների ցանկը, ստեղծել և ջնջել դրանք: Nilfs2-utils փաթեթը ապահովում է մինիմալ ջենթլմենական հավաքածու:

Քանի որ NTT-ը կրճատել է իր ֆինանսավորումը, չկան արագ ցածր մակարդակի կոմունալ ծառայություններ, որոնք թույլ են տալիս ցուցադրել ֆայլերի փոփոխությունների պատմությունը կամ տարբերել նկարների միջև:

Իմ n2u կոմունալ

Այս վակուումը լրացնելու համար ես գրեցի ձեր n2u կոմունալ, որը կարող է ցուցադրել որոշակի ֆայլի/տեղեկատուի փոփոխությունների պատմությունը.

n2u log filename

Արդյունքը մոտավորապես այսպիսին է.

          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

Այն բավականին արագ է աշխատում ընտրված իրականացման մեթոդի համար. այն փնտրում է տարբերություններ ֆայլերի միջև՝ օգտագործելով բիսեկցիոն մեթոդը, արագ մոնտաժելով և համեմատելով ֆայլը/գրացուցակը տարբեր նկարներում:

Դուք կարող եք սահմանել մի շարք անցակետեր՝ օգտագործելով ստեղնը -cp CP1:CP2 կամ -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Կարող եք նաև տեսնել որոշակի ֆայլի կամ գրացուցակի անցակետերի միջև տարբերությունը.

n2u diff -r cp1:cp2 filename

Դուք կարող եք ցուցադրել փոփոխությունների ամբողջ ժամանակագրությունը՝ որոշակի ֆայլի/տեղեկատուի անցակետերի միջև եղած բոլոր տարբերությունները.

n2u blame [-r cp1:cp2] filename

Այս հրամանի ամսաթվերի միջակայքը նույնպես աջակցվում է:

Լաց մշակողների համար

Habré-ում շատ մասնագետներ կան։ Խնդրում ենք ավարտել NILFS2-ը: Կրկնօրինակեք, ցածր մակարդակի արագ տարբերությունը վերանայումների, վերահղման և այլ լավությունների միջև:

Սայլակ

NILFS-ի պաշտոնական կայքը.

Պահեստներ:
NILFS2.
NILFS2 կոմունալ ծառայություններ և մոդուլներ.

Տեղեկագրեր:
Էլեկտրոնային փոստի տեղեկագիր NILFS2 մշակողների համար. ID-ն՝ linux-nilfs-ի բաժանորդագրության համար:
Տեղեկագրի արխիվ.

nilfs_cleanrd տեղադրման ուղեցույց.
Հենանիշ EXT4, Btrfs, XFS և NILFS2 կատարողականության թեստեր.

Շնորհակալություն:

  • NILFS2 ծրագրավորողներ՝ Ռյուսուկե Կոնիշի, Կոջի Սատո, Նարուհիկո Կամիմուրա, Սեյջի Կիհարա, Յոշիջի Ամագայ, Հիսաշի Հիֆումի և Սատոշի Մորիայ: Մյուս հիմնական ներդրողներն են՝ Անդրեաս Ռոները, Դեն ՄակԳին, Դեյվիդ Արենդտը, Դեյվիդ Սմիդը, Դեքսեն ԴեՎրիսը, Դմիտրի Սմիրնովը, Էրիկ Սանդին, Ժիրո ՍԵԿԻԲԱ, Մատեո Ֆրիգո, Հիտոշի Միտակե, Տակաշի Իվայ, Վյաչեսլավ Դուբեյկո:
  • Amblin Entertainment-ին և Universal Pictures-ին հրաշալի ֆիլմերի շարքի համար: "Վերադառնալ դեպի ապագա". Գրառման առաջին նկարը վերցված է «Վերադարձ դեպի ապագա 3» ֆիլմից։
  • Ընկերություններ ՌՈՒՎԴՍ աջակցության և Habré-ում ձեր բլոգում հրապարակելու հնարավորության համար:

PS Խնդրում ենք նկատած սխալները ուղարկել անձնական նամակով։ Ես մեծացնում եմ իմ կարման դրա համար:

Դուք կարող եք փորձարկել NILFS2-ի հետ՝ պատվիրելով վիրտուալ մեքենա ՌՈՒՎԴՍ ստորև բերված կտրոնով։ Բոլոր նոր հաճախորդների համար գործում է 3 օր անվճար փորձաշրջան:

NILFS2 - գնդակակայուն ֆայլային համակարգ /home-ի համար

Source: www.habr.com

Добавить комментарий