Bcachefs-ի խթանում Linux միջուկին

Քենթ Օվերսթրիթը՝ BCache SSD բլոկի սարքերի քեշավորման համակարգի հեղինակը, որը Linux միջուկի մաս է կազմում, ամփոփել է Bcachefs ֆայլային համակարգի առաջմղման աշխատանքների արդյունքները LSFMM 2023 կոնֆերանսի իր ելույթում (Linux Storage, Filesystem, Memory Management): & BPF Summit) մտել Linux միջուկի հիմնական կազմի մեջ և խոսել այս FS-ի հետագա զարգացման ծրագրերի մասին: Մայիսին, Bcachefs FS-ի ներդրմամբ թարմացված patches-ը առաջարկվեց վերանայման և Linux միջուկի հիմնական կազմի մեջ ներառելու համար: FS Bcachefs-ը զարգանում է մոտ 10 տարի: Bcachefs-ի իրականացումը վերանայելու պատրաստակամության մասին նախքան հիմնականում ներառելը հայտարարվել է 2020 թվականի վերջում, իսկ patches-ի ներկայիս տարբերակը հաշվի է առնում նախորդ վերանայման ընթացքում հայտնաբերված մեկնաբանությունները և թերությունները:

Bcachefs-ի մշակման նպատակն է հասնել XFS մակարդակի կատարման, հուսալիության և մասշտաբայնության առումով՝ միաժամանակ տրամադրելով Btrfs-ին և ZFS-ին բնորոշ լրացուցիչ հնարավորություններ, ինչպիսիք են՝ մի քանի սարքերի ընդգրկումը միջնորմում, բազմաշերտ պահեստավորման դասավորությունները, կրկնօրինակումը (RAID 1/10): քեշավորում, տվյալների թափանցիկ սեղմում (LZ4, gzip և ZSTD ռեժիմներ), վիճակի հատվածներ (պատկերներ), ամբողջականության ստուգում ստուգումների միջոցով, Reed-Solomon սխալի ուղղման կոդերը պահելու ունակություն (RAID 5/6), տեղեկատվության կոդավորված պահպանում (ChaCha20 և Poly1305): օգտագործվում են). Կատարման առումով Bcachefs-ը առաջ է անցնում Btrfs-ից և Copy-on-Write մեխանիզմի վրա հիմնված այլ ֆայլային համակարգերից և ցուցադրում է Ext4-ին և XFS-ին մոտ կատարողականություն:

Bcachefs-ի մշակման վերջին ձեռքբերումներից նշվում է գրելու համար մատչելի snapshot-ների իրականացման կայունացումը։ Համեմատած Btrfs-ի հետ, Bcachefs-ի snapshot-ներն այժմ շատ ավելի լայնածավալ են և զերծ են Btrfs-ին բնորոշ խնդիրներից: Գործնականում snapshots-ի աշխատանքը փորձարկվել է MySQL կրկնօրինակումներ կազմակերպելիս։ Bcachefs-ը նաև մեծ աշխատանք է կատարել մասշտաբայնությունը բարելավելու ուղղությամբ. ֆայլային համակարգը լավ է աշխատել 100 TB պահեստում փորձարկելու ժամանակ, և մոտ ապագայում սպասվում է, որ Bcachefs-ը կներդրվի 1 PB պահեստում: Նոր nocow ռեժիմ է ավելացվել՝ «copy-on-write» (nocow) մեխանիզմն անջատելու համար։ Ամռան ընթացքում նրանք նախատեսում են սխալների ուղղման կոդերի և RAIDZ-ի ներդրումը բերել կայուն վիճակի, ինչպես նաև լուծել հիշողության մեծ սպառման հետ կապված խնդիրները fsck կոմունալով ֆայլային համակարգերը վերականգնելիս և ստուգելիս:

Ապագայի ծրագրերից նշվում է Bcachefs-ի զարգացման մեջ Rust լեզուն օգտագործելու ցանկությունը։ Ըստ Bcachefs-ի հեղինակի՝ նա սիրում է կոդավորել, այլ ոչ թե կարգաբերել կոդ, իսկ հիմա խելագարություն է կոդ գրել C-ով, երբ ավելի լավ տարբերակ կա։ Rust-ն արդեն ներգրավված է Bcachefs-ում օգտատերերի տարածքի որոշ կոմունալ ծառայությունների իրականացման մեջ: Ավելին, գաղափար է ստեղծվում աստիճանաբար ամբողջությամբ վերաշարադրել Bcachefs-ը Rust-ում, քանի որ այս լեզվի օգտագործումը զգալիորեն խնայում է վրիպազերծման ժամանակը:

Ինչ վերաբերում է Bcachefs-ը Linux միջուկի հիմնական հոսք տեղափոխելուն, ապա ընդունման գործընթացը կարող է հետաձգվել փոփոխությունների մեծ չափի պատճառով (2500 patches և շուրջ 90 հազար տող կոդ), ինչը դժվար է վերանայել: Վերանայումն արագացնելու համար որոշ մշակողներ առաջարկել են պատչերի շարքը բաժանել ավելի փոքր և տրամաբանորեն առանձնացված մասերի: Քննարկման ընթացքում որոշ մասնակիցներ նաև ուշադրություն հրավիրեցին նախագծի մշակման վրա մեկ ծրագրավորողի կողմից և այն վտանգի վրա, որ կոդը կարող է չպահպանվել, եթե դրա մշակողի հետ ինչ-որ բան պատահի (Red Hat-ի երկու աշխատակիցներ հետաքրքրված են նախագծով, բայց նրանց աշխատանքը դեռ շարունակվում է. սահմանափակ վրիպակների շտկումներ):

Bcachefs-ը մշակվել է Bcache բլոկ սարքի մշակման մեջ արդեն փորձարկված տեխնոլոգիաների միջոցով, որոնք նախատեսված են արագ SSD-ների վրա դանդաղ կոշտ սկավառակների հասանելիությունը քեշավորելու համար (ներառված են միջուկում 3.10 թողարկումից հետո): Bcachefs-ը օգտագործում է Copy-on-Write (COW) մեխանիզմը, որի դեպքում փոփոխությունները չեն հանգեցնում տվյալների վերագրանցման. նոր վիճակը գրվում է նոր վայրում, որից հետո փոխվում է ընթացիկ վիճակի ցուցիչը:

Bcachefs-ի առանձնահատկությունն այն է, որ ապահովում է սկավառակների բազմաշերտ կապը, որտեղ պահեստը բաղկացած է մի քանի շերտերից. ամենաարագ կրիչները (SSD-ները) միացված են ներքևի շերտին, որոնք օգտագործվում են հաճախակի օգտագործվող տվյալների քեշավորման համար, իսկ վերին շերտը ձևավորվում է: ավելի տարողունակ և էժան սկավառակներ, որոնք պահում են ավելի քիչ պահանջված տվյալներ: Գրելու քեշավորումը կարող է օգտագործվել շերտերի միջև: Սկավառակներ կարող են դինամիկ կերպով ավելացվել և անջատվել բաժանմունքից՝ առանց ֆայլային համակարգի օգտագործումը ընդհատելու (տվյալներն ինքնաբերաբար տեղափոխվում են):

Source: opennet.ru

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