ZFS-ի թողարկում Linux 0.8.0-ում, ZFS-ի իրականացում Linux միջուկի համար

Մոտ երկու տարվա զարգացումից հետո ներկայացված արձակել ZFS Linux 0.8.0-ում, ZFS ֆայլային համակարգի ներդրում, որը փաթեթավորված է որպես Linux միջուկի մոդուլ։ Մոդուլը փորձարկվել է Linux միջուկներով 2.6.32-ից մինչև 5.1: Շուտով պատրաստ տեղադրման փաթեթներ կպատրաստվի Linux-ի հիմնական բաշխումների համար, ներառյալ Debian, Ubuntu, Fedora, RHEL/CentOS: ZFS Linux մոդուլն արդեն ներառված է Debian, Ubuntu, Gentoo, Sabayon Linux և ALT Linux բաշխումներում:

Որպես Linux-ի ZFS-ի մաս, պատրաստվել է ZFS բաղադրիչների ներդրում, որոնք առնչվում են ինչպես ֆայլային համակարգի աշխատանքին, այնպես էլ ծավալի կառավարչի գործունեությանը: Մասնավորապես, ներդրված են հետևյալ բաղադրիչները՝ SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) և ZPL (ZFS POSIX Layer): Բացի այդ, նախագիծը հնարավորություն է տալիս օգտագործել ZFS-ը որպես Luster կլաստերի ֆայլային համակարգի հետին պլան: Նախագծի աշխատանքը հիմնված է բնօրինակ ZFS կոդի վրա, որը ներմուծվել է OpenSolaris նախագծից և բարելավվել է Illumos համայնքի բարելավումներով և ուղղումներով: Նախագիծը մշակվում է Լիվերմորի ազգային լաբորատորիայի աշխատակիցների մասնակցությամբ՝ ԱՄՆ էներգետիկայի նախարարության հետ կնքված պայմանագրով։

Կոդը տարածվում է անվճար CDDL լիցենզիայի ներքո, որն անհամատեղելի է GPLv2-ի հետ, որը թույլ չի տալիս Linux-ի ZFS-ին ինտեգրվել Linux միջուկի հիմնական ճյուղին, քանի որ GPLv2 և CDDL լիցենզիաների ներքո կոդ խառնելը չի ​​թույլատրվում: Այս լիցենզիայի անհամատեղելիությունը շրջանցելու համար որոշվեց ամբողջ արտադրանքը տարածել CDDL լիցենզիայի ներքո որպես առանձին բեռնվող մոդուլ, որը մատակարարվում է առանցքից առանձին: ZFS-ի կայունությունը Linux կոդերի բազայի վրա գնահատվում է որպես համեմատելի Linux-ի այլ ֆայլային համակարգերի հետ:

Խոշոր փոփոխություններ.

  • Ավելացվեց ներկառուցված աջակցություն ֆայլային համակարգի և միջնապատերի մակարդակով պահված տվյալների կոդավորման համար: Գաղտնագրման լռելյայն ալգորիթմը aes-256-ccm է: Կոդավորման բանալիները բեռնելու համար առաջարկվել է «zfs load-key» հրամանը.
  • Իրականացրել է «zfs ուղարկել» և «zfs ստանալ» հրամանները կատարելիս կոդավորված տվյալներ փոխանցելու հնարավորությունը: «-w» տարբերակը նշելիս լողավազանում արդեն գաղտնագրված տվյալները փոխանցվում են մեկ այլ լողավազան, ինչպես կա, առանց միջանկյալ ապակոդավորման: Նման պատճենման դեպքում տվյալները մնում են պաշտպանված ուղարկողի բանալիով, ինչը թույլ է տալիս օգտագործել այս ռեժիմը անվստահելի համակարգերում պահուստավորման համար (ստացողի փոխզիջման դեպքում հարձակվողը չի կարողանա մուտք գործել տվյալներ առանց բանալին);
  • Ավելացվեց հիմնական կրիչներ պահեստային լողավազանից հեռացնելու աջակցություն, որը միացված է ինչպես առանձին, այնպես էլ հայելու մաս: Հեռացումն իրականացվում է «zpool remove» հրամանով։ Ջնջման գործընթացը պատճենում է տվյալները բացառված դրայվից դեպի լողավազանի մնացած հիմնական կրիչներ.
  • Ավելացվեց «zpool checkpoint» հրամանը՝ լողավազանի ներկայիս վիճակը պահպանելու համար՝ պահպանված պահի հետագա փոփոխությունները ժամանակին հետ վերադարձնելու հնարավորությամբ (ստեղծվում է ամբողջ լողավազանի լուսանկարը): Այս հատկությունը կարող է օգտակար լինել պոտենցիալ վտանգավոր բարդ վարչական աշխատանք կատարելու գործընթացում, որը նորմալ պայմաններում հանգեցնում է անդառնալի փոփոխությունների (օրինակ՝ նոր ZFS ֆունկցիոնալության դրոշների ակտիվացում կամ տվյալների մաքրում);
  • «zpool trim» հրամանն ավելացվել է՝ լողավազանում օգտագործվող կրիչներն այլևս չօգտագործվող հատվածների մասին տեղեկացնելու համար: TRIM օպերացիայի օգտագործումը հնարավորություն է տալիս բարձրացնել SSD-ների արդյունավետությունը և կանխել դրանց կատարողականի վատթարացումը: Առաջարկվել է նոր «autotrim» հատկություն, որը հնարավորություն կտա TRIM հրամանների փոխանցման շարունակական ֆոնային գործընթացը.
  • Ավելացվեց «zpool initialize» հրամանը՝ ամբողջ չբաշխված սկավառակի տարածքը սկզբնավորելու համար, ինչը թույլ է տալիս այն ակնթարթորեն պատրաստ լինել օգտագործման համար՝ առանց կատարողականի վատթարացման առաջին մուտքի դեպքում (օրինակ՝ վիրտուալացված պահեստներ հոսթինգի ժամանակ, ինչպիսին է VMware VMDK-ը);
  • Ավելացվել է հաշվապահական հաշվառման և նախագծի մակարդակի քվոտաների աջակցություն՝ ի լրումն նախկինում հասանելի օգտագործողների և խմբի մակարդակի քվոտաների: Ըստ էության, նախագծերը առանձին նույնացուցիչի (նախագծի ID) հետ կապված օբյեկտների առանձին տարածություն են։ Կապը սահմանվում է «chattr -p» գործողության կամ հատկանիշի ժառանգման միջոցով: Ծրագրի կառավարման համար ներկայացված են «zfs project» և «zfs projectspace» հրամանները, որոնք թույլ են տալիս կառավարել նախագծերի ստեղծումը և դրանց համար սահմանել սկավառակի տարածքի սահմանափակումներ.
  • Ավելացվեց Lua սկրիպտներ ստեղծելու հնարավորություն՝ ZFS-ի հետ տարբեր աշխատանքներ ավտոմատացնելու համար: Սկրիպտները գործարկվում են հատուկ մեկուսացված միջավայրերում՝ օգտագործելով «zpool program» հրամանը;
  • Գործարկվել է նոր գրադարան պիզֆս, որն ապահովում է կայուն API՝ Python հավելվածներից ZFS կառավարելու համար։ Գրադարանը փաթաթում է libzfs_core-ի շուրջը և ապահովում է գործառույթների նույնական շարք, բայց օգտագործում է Python-ի ավելի մոտ տեսակները.
  • arcstat, arcsummary և dbufstat կոմունալ ծրագրերը համատեղելի են դարձել Python 3-ի հետ:
  • Ավելացվել է Linux Direct IO (O_DIRECT) միջուկի ինտերֆեյսի աջակցությունը, որը թույլ է տալիս մուտք գործել տվյալներ առանց բուֆերացման և շրջանցելու քեշը;
  • Ներկայացված կատարողականի օպտիմալացումներ.
    • «Scrub» և «resilver» հրամանների աշխատանքը արագացվել է երկու փուլերի բաժանվելու պատճառով (առանձին փուլ է հատկացվել մետատվյալների սկանավորման և սկավառակի վրա տվյալների հետ բլոկների գտնվելու վայրը որոշելու համար, ինչը թույլ է տալիս հետագա ստուգում ՝ օգտագործելով հաջորդական տվյալները: ընթերցում);
    • Ավելացված է աջակցություն հատկացման դասերի համար,
      թույլ տալով համեմատաբար փոքր SSD-ներ միավորել և օգտագործել միայն որոշակի տեսակի սովորաբար օգտագործվող բլոկների պահպանման համար, ինչպիսիք են մետատվյալները, DDT տվյալները և փոքր ֆայլերի բլոկները.

    • Բարելավված է ադմինիստրատորի հրամանների կատարումը, ինչպիսիք են
      «zfs list» և «zfs get»՝ դրանց շահագործման համար անհրաժեշտ մետատվյալները քեշավորելով.

    • Ավելացվել է բլոկի բաշխման գործողությունների զուգահեռացման աջակցություն՝ յուրաքանչյուր մետասալաքարային խմբի համար առանձին բաշխիչ գործընթացներ գործարկելով: Սովորական համակարգերի վրա կա կատարողականի 5-10% աճ, բայց խոշորների վրա (8 128 ԳԲ SSD, 24 միջուկային NUMA, 256 ԳԲ օպերատիվ հիշողություն), բլոկի բաշխման գործառնությունների աճը կարող է հասնել 25%;
    • Ավելացվեց «resilver» հրամանի հետաձգված կատարման հնարավորությունը (վերակառուցում տվյալների բաշխումը` հաշվի առնելով սկավառակների կազմաձևման փոփոխությունները) - եթե նախորդը դեռ չի ավարտվել նոր գործողություն սկսելիս, ապա նոր կառավարիչը կսկսի կատարել միայն այն բանից հետո, երբ նախորդի վերջը;
    • Օպտիմալացումները ավելացվել են ZIL-ին (ZFS Intent Log)՝ թույլ տալու համար ստեղծել և մշակել բլոկներ՝ բլոկների առկայության դեպքում, որոնք դեռ մշակվում են պահեստի կողմից.
    • Համակարգում բաժանումների (zvol) գրանցման ժամանակի կրճատում: Երբ լողավազանը պարունակում է մեծ թվով միջնորմներ, դրանք այժմ հասանելի են «zpool import» անելուց անմիջապես հետո;
    • Ավելացվել է SHA256 հեշերի ապարատային արագացված հաշվարկի և AES-GSM գաղտնագրման գործողությունների աջակցություն՝ Intel QAT (Quick Assist Technology) չիպերի միջոցով: Ավելացվել է Intel C62x չիպսեթի և CPU Atom C3000-ի ապարատային արագացման աջակցություն:

Source: opennet.ru

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