NILFS2 - գնդակակայուն ֆայլային համակարգ /home-ի համար
Ինչպես գիտեք, եթե անախորժություններ կարող են լինել, դա անպայման տեղի կունենա: Հավանաբար բոլորն էլ ունեցել են դեպքեր, երբ վերջերս որևէ կարևոր ֆայլ պատահաբար ջնջվել է, կամ տեքստը պատահաբար ընտրվել և ոչնչացվել է տեքստային խմբագրիչում:
Եթե դուք հոսթեր կամ կայքի սեփականատեր եք, ապա հավանաբար բախվել եք օգտատերերի հաշիվների կամ ձեր կայքի կոտրման հետ: Նման դեպքերում կարևոր է վերականգնել ժամանակագրությունը, գտնել մուտքի մեթոդը և հարձակվողի կողմից օգտագործվող խոցելիությունը։
NILFS2 ֆայլային համակարգը կատարյալ է նման խնդիրների լուծման համար:
Այն առկա է Linux միջուկում 2.6.30 տարբերակից:
Այս ֆայլային համակարգի առանձնահատկությունն այն է, որ այն նման է տարբերակների կառավարման համակարգին. միշտ կարող եք հետ գլորել համակարգի վիճակը և տեսնել, թե ինչպիսին էր այն որոշ ժամանակ առաջ:
Այս ֆունկցիոնալությունն ապահովելու համար ձեզ հարկավոր չէ կարգավորել Cron սկրիպտները, լուսանկարել նկարներ և այլն: NILFS2 ֆայլային համակարգը այս ամենը ինքնուրույն է անում: Այն երբեք չի վերագրում հին տվյալները և միշտ գրում է սկավառակի նոր տարածքներ, եթե կա բավարար ազատ սկավառակի տարածք: Լիովին համապատասխան Copy-on-Write սկզբունքին:
Փաստորեն, ֆայլի ցանկացած փոփոխություն ավտոմատ կերպով ստեղծում է ֆայլային համակարգի նոր պատկեր, այնպես որ դուք կարող եք օգտագործել այս FS-ը որպես ժամանակի մեքենա և հետ շրջել ֆայլերի վիճակը:
Պատմություն
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
Տարբերակ 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-ը: Կրկնօրինակեք, ցածր մակարդակի արագ տարբերությունը վերանայումների, վերահղման և այլ լավությունների միջև:
Amblin Entertainment-ին և Universal Pictures-ին հրաշալի ֆիլմերի շարքի համար: "Վերադառնալ դեպի ապագա". Գրառման առաջին նկարը վերցված է «Վերադարձ դեպի ապագա 3» ֆիլմից։
Ընկերություններ ՌՈՒՎԴՍ աջակցության և Habré-ում ձեր բլոգում հրապարակելու հնարավորության համար:
PS Խնդրում ենք նկատած սխալները ուղարկել անձնական նամակով։ Ես մեծացնում եմ իմ կարման դրա համար:
Դուք կարող եք փորձարկել NILFS2-ի հետ՝ պատվիրելով վիրտուալ մեքենա ՌՈՒՎԴՍ ստորև բերված կտրոնով։ Բոլոր նոր հաճախորդների համար գործում է 3 օր անվճար փորձաշրջան: