Liberigo de ZFS sur Linukso 0.8.0, efektivigoj de ZFS por la Linukso-kerno

Post preskaŭ du jaroj da evoluo prezentita liberigi ZFS sur Linukso 0.8.0, efektivigo de la ZFS-dosiersistemo pakita kiel modulo por la Linukso-kerno. La modulo estis testita per Linukso-kernoj de 2.6.32 ĝis 5.1. Baldaŭ venos pretaj instalpakaĵoj estos preta por ĉefaj Linukso-distribuoj inkluzive de Debian, Ubuntu, Fedora, RHEL/CentOS. La ZFS sur Linukso-modulo jam estas inkluzivita en Debian, Ubuntu, Gentoo, Sabayon Linux kaj ALT Linukso-distribuoj.

Kiel parto de ZFS sur Linukso, efektivigo de ZFS-komponentoj rilataj al kaj la funkciado de la dosiersistemo kaj la funkciado de la volummanaĝero estis preparita. Aparte, la sekvaj komponantoj estas efektivigitaj: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) kaj ZPL (ZFS POSIX Layer). Aldone, la projekto disponigas la kapablon uzi ZFS kiel backend por la Luster cluster dosiersistemo. La laboro de la projekto baziĝas sur originala ZFS-kodo importita de la projekto OpenSolaris kaj plibonigita per plibonigoj kaj korektoj de la komunumo Illumos. La projekto estas disvolvita kun la partopreno de dungitoj de la Livermore Nacia Laboratorio sub kontrakto kun la Usona Departemento de Energio.

La kodo estas distribuita sub libera CDDL-licenco, kiu estas malkongrua kun GPLv2, kiu ne permesas ZFS sur Linukso esti integrita en la ĉefbranĉon de la Linukso-kerno, ĉar miksado de kodo sub GPLv2 kaj CDDL-licencoj ne estas permesita. Por eviti ĉi tiun licencan nekongruecon, estis decidite distribui la tutan produkton sub la CDDL-licenco kiel aparte ŝargebla modulo, kiu estas liverita aparte de la kerno. La stabileco de la ZFS sur Linukso-kodbazo estas taksita kiel komparebla al aliaj dosiersistemoj por Linukso.

Ĉefaj ŝanĝoj:

  • Aldonita enkonstruita subteno por ĉifrado de stokitaj datumoj je la nivelo de la dosiersistemo kaj sekcioj. La defaŭlta ĉifrada algoritmo estas aes-256-ccm. La komando "zfs load-key" estis proponita por ŝargi ĉifrajn ŝlosilojn;
  • Efektivigis la kapablon transdoni ĉifritajn datumojn dum plenumado de la komandoj 'zfs send' kaj 'zfs receive'. Kiam oni specifas la opcion "-w", datumoj jam ĉifritaj en la naĝejo estas transdonitaj al alia naĝejo kiel estas, sen meza malĉifrado. Kun tia kopiado, la datumoj restas protektitaj per la ŝlosilo de la sendinto, kio permesas uzi ĉi tiun reĝimon por sekurkopio al nefidindaj sistemoj (se la ricevanto estas endanĝerigita, la atakanto ne povos aliri la datumojn sen la ŝlosilo);
  • Aldonita subteno por forigo de primaraj diskoj de stokado, konektita kaj individue kaj kiel parto de spegulo. Forigo estas farita per la komando "zpool remove". La foriga procezo kopias la datumojn de la ekskludita disko al la ceteraj primaraj diskoj en la naĝejo;
  • Aldonis la komandon "zpool checkpoint" por konservi la nunan staton de la naĝejo kun la kapablo refari pliajn ŝanĝojn al la konservita tempopunkto (momentfoto de la tuta naĝejo estas kreita). Ĉi tiu funkcio povas esti utila en la procezo de plenumi potenciale danĝeran kompleksan administran laboron, kiu en normalaj kondiĉoj kondukas al neinversigeblaj ŝanĝoj (ekzemple, aktivigi flagojn por nova ZFS-funkcio aŭ purigi datumojn);
  • La komando "zpool trim" estis aldonita por informi la diskojn uzatajn en la naĝejo pri sektoroj kiuj ne plu estas uzataj. La uzo de la operacio TRIM ebligas pliigi la efikecon de SSD-oj kaj malhelpi degeneron de ilia agado. Nova "aŭtotrim" posedaĵo estis proponita por ebligi la kontinuan fonprocezon de elsendado de TRIM-komandoj;
  • Aldonita "zpool initialize" komando por pravalorigi la tutan neasignitan diskospacon, kio ebligas al ĝi esti tuj preta por uzo, sen rendimento degenero ĉe unua aliro (ekzemple, kiam gastigado de virtualigitaj stokaĵoj kiel VMware VMDK);
  • Aldonita subteno por kontado kaj projekt-nivelaj kvotoj, krom antaŭe disponeblaj uzant- kaj grup-nivelaj kvotoj. En esenco, projektoj estas aparta spaco de objektoj asociitaj kun aparta identigilo (projekta ID). La ligado estas difinita per la operacio 'chattr -p' aŭ per atribua heredo. Por administrado de projektoj, la komandoj "zfs project" kaj "zfs projectspace" estas prezentitaj, kiuj ebligas al vi administri la kreadon de projektoj kaj agordi diskspaclimojn por ili;
  • Aldonis la kapablon krei Lua-skriptojn por aŭtomatigi diversajn laborojn kun ZFS. Skriptoj estas rulitaj en specialaj izolitaj medioj uzante la komandon "zpool program";
  • Nova biblioteko efektivigita pyzfs, kiu disponigas stabilan API por administri ZFS de Python-aplikoj. La biblioteko estas envolvaĵo ĉirkaŭ libzfs_core kaj disponigas identan aron de funkcioj, sed uzas pli proksimajn Python-tipojn;
  • La utilecoj arcstat, arcsummary kaj dbufstat fariĝis kongruaj kun Python 3. La utilecoj arcstat.py, arc_summary.py kaj dbufstat.py estis renomitaj al versioj sen la etendo ".py";
  • Aldonita subteno por la Linuksa Rekta IO (O_DIRECT) kerna interfaco, kiu permesas aliri datumojn sen bufro kaj preterpasi la kaŝmemoron;
  • Efikecoptimumigoj lanĉitaj:
    • La laboro de la komandoj "scrub" kaj "resilver" akceliĝis pro dividiĝo en du fazojn (aparta fazo estis asignita por skanado de metadatenoj kaj determini la lokon de blokoj kun datumoj sur la disko, kio permesas plian konfirmon uzante sinsekvajn datumojn. legado);
    • Aldonita subteno por Asignaj klasoj,
      permesante al relative malgrandaj SSD-oj esti kunigitaj kaj uzitaj por stoki nur certajn specojn de ofte uzitaj blokoj, kiel ekzemple metadatenoj, DDT-datenoj, kaj malgrandaj dosierblokoj;

    • Plibonigita rendimento de administraj komandoj kiel ekzemple
      "zfs list" kaj "zfs get", konservante la metadatenojn necesajn por ilia funkciado;

    • Aldonita subteno por paraleligo de blokaj asigno-operacioj per funkciado de apartaj asignatorprocezoj por ĉiu metaslab-grupo. Sur konvenciaj sistemoj, estas rendimento pliiĝo de 5-10%, sed sur grandaj (8 128 GB SSD, 24 kerno NUMA, 256 GB da RAM), la pliiĝo en blokaj asigno operacioj povas atingi 25%;
    • Aldonita la eblecon de prokrastita ekzekuto de la komando "resilver" (rekonstruado de distribuado de datumoj konsiderante ŝanĝojn en la agordo de stiradoj) - se la antaŭa ankoraŭ ne finiĝis kiam oni komencas novan operacion, tiam la nova prizorganto komencos ekzekuti nur post kiam la antaŭa finiĝis;
    • Optimumigoj estis aldonitaj al la ZIL (ZFS Intent Log) por permesi krei kaj prilabori blokojn en la ĉeesto de blokoj kiuj ankoraŭ estas prilaboritaj de la stokado;
    • Reduktita registra tempo por sekcioj (zvol) en la sistemo. Kiam naĝejo enhavas grandan nombron da sekcioj, ili nun disponeblas tuj post fari "zpool import";
    • Aldonita subteno por aparataro akcelita kalkulo de SHA256 hashes kaj AES-GSM ĉifrado operacioj uzante Intel QAT (Quick Assist Technology) blatoj. Aldonita subteno por hardvarakcelo de la Intel C62x pecetaro kaj CPU Atom C3000.

fonto: opennet.ru

Aldoni komenton