Linux միջուկը 6.2-ը կներառի Btrfs-ում RAID5/6-ի բարելավումներ

Btrfs-ի բարելավումներ են առաջարկվել Linux 6.2 միջուկում ներառելու համար RAID 5/6 ներդրման մեջ «գրելու անցքի» խնդիրը շտկելու համար: Խնդրի էությունը հանգում է նրան, որ եթե ձայնագրման ժամանակ վթար է տեղի ունենում, ի սկզբանե անհնար է հասկանալ, թե որ բլոկի վրա է RAID սարքը ճիշտ գրված, և որում ձայնագրությունը չի ավարտվել։ Եթե ​​դուք փորձեք վերականգնել RAID-ն այս իրավիճակում, ապա ծածկագրված բլոկներին համապատասխան բլոկները կարող են ոչնչացվել, քանի որ RAID բլոկների վիճակը համաժամանակյա չէ: Այս խնդիրն առաջանում է ցանկացած RAID1/5/6 զանգվածում, որտեղ հատուկ միջոցներ չեն ձեռնարկվել այս էֆեկտի դեմ պայքարելու համար:

RAID իրականացման դեպքում, ինչպես RAID1-ը btrfs-ում, այս խնդիրը լուծվում է երկու օրինակներում էլ ստուգիչ գումարների օգտագործմամբ, եթե առկա է անհամապատասխանություն, տվյալները պարզապես վերականգնվում են երկրորդ օրինակից: Այս մոտեցումը գործում է նաև, եթե որոշ սարք սկսում է սխալ տվյալներ ուղարկել ամբողջական ձախողման փոխարեն:

Այնուամենայնիվ, RAID5/6-ի դեպքում ֆայլային համակարգը չի պահում ստուգման գումարները հավասարության բլոկների համար. նորմալ իրավիճակում բլոկների վավերականությունը ստուգվում է նրանով, որ դրանք բոլորը ստուգված են, և հավասարության բլոկը կարող է վերակառուցվել: տվյալներից։ Այնուամենայնիվ, մասնակի ձայնագրման դեպքում այս մոտեցումը կարող է չաշխատել որոշակի իրավիճակներում: Այս դեպքում զանգվածը վերականգնելիս հնարավոր է, որ թերի գրառման տակ ընկած բլոկները սխալ վերականգնվեն։

Btrfs-ի դեպքում այս խնդիրն առավել արդիական է, եթե արտադրվող ձայնագրությունն ավելի փոքր է, քան շերտագիծը: Այս դեպքում ֆայլային համակարգը պետք է կատարի կարդալ-փոփոխել-գրել գործողություն (կարդալ-փոփոխել-գրել, RMW): Եթե ​​սա բախվում է թերի գրավոր բլոկների, ապա RMW գործողությունը կարող է առաջացնել կոռուպցիա, որը չի հայտնաբերվի՝ անկախ ստուգիչ գումարներից: Մշակողները փոփոխություններ են կատարել, որոնցում RMW օպերացիան այս գործողությունն իրականացնելուց առաջ ստուգում է բլոկների ստուգման գումարը, իսկ եթե անհրաժեշտ է տվյալների վերականգնում, ապա գրանցումից հետո ստուգում է նաև ստուգաչափերը։ Ցավոք, թերի շերտ (RMW) գրելու իրավիճակում դա հանգեցնում է չեկային գումարների հաշվարկման լրացուցիչ ծախսերի, բայց զգալիորեն մեծացնում է հուսալիությունը: RAID6-ի համար նման տրամաբանությունը դեռ պատրաստ չէ, այնուամենայնիվ, RAID6-ում նման ձախողման համար անհրաժեշտ է, որ գրելը ձախողվի միանգամից 2 սարքի վրա, ինչը քիչ հավանական է։

Բացի այդ, մենք կարող ենք նշել մշակողների կողմից RAID5/6-ի օգտագործման առաջարկությունները, որոնց էությունն այն է, որ Btrfs-ում մետատվյալները և տվյալների պահպանման պրոֆիլը կարող են տարբերվել: Այս դեպքում մետատվյալների համար կարող եք օգտագործել RAID1 պրոֆիլը (հայելին) կամ նույնիսկ RAID1C3 (3 օրինակ), իսկ տվյալների համար՝ RAID5 կամ RAID6: Սա մի կողմից ապահովում է մետատվյալների հուսալի պաշտպանություն և «գրելու անցքի» բացակայություն, մյուս կողմից՝ RAID5/6-ին բնորոշ տարածության ավելի արդյունավետ օգտագործում: Սա թույլ է տալիս խուսափել մետատվյալների կոռուպցիայից և հնարավոր է շտկել տվյալների կոռուպցիան:

Կարելի է նաև նշել, որ 6.2 միջուկում Btrfs-ի SSD-ների համար «մերժել» գործողության ասինխրոն կատարումը կակտիվացվի լռելյայն (նշելով ազատված բլոկները, որոնք այլևս ֆիզիկապես պահպանման կարիք չունեն): Այս ռեժիմի առավելությունը բարձր կատարողականությունն է՝ շնորհիվ հերթում «մերժման» գործողությունների արդյունավետ խմբավորման և ֆոնային պրոցեսորի կողմից հերթի հետագա մշակման, ինչի պատճառով նորմալ FS գործողությունները չեն դանդաղում, ինչպես դա տեղի է ունենում սինխրոնի դեպքում: հեռացնել», քանի որ բլոկները ազատվում են, և SSD-ը կարող է ավելի լավ որոշումներ կայացնել: Մյուս կողմից, դուք այլևս կարիք չեք ունենա օգտագործելու կոմունալ ծառայություններ, ինչպիսիք են fstrim-ը, քանի որ բոլոր հասանելի բլոկները կջնջվեն FS-ում առանց լրացուցիչ սկանավորման և առանց գործողությունների դանդաղեցման:

Source: opennet.ru

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