Efter nÀstan tvÄ Ärs utveckling utgivning , implementeringen av filsystemet ZFS, utformat som en modul för Linux-kÀrnan. Modulen har testats med Linux-kÀrnor frÄn 2.6.32 till 5.1. FÀrdiga installationspaket kommer snart. för de större distributionerna av Linux, inklusive Debian, Ubuntu, Fedora, RHEL/CentOS. Modulen ZFS pÄ Linux ingÄr redan i distributionerna Debian, Ubuntu, Gentoo, Sabayon Linux och ALT Linux.
Inom ramen för ZFS pÄ Linux har det förberetts en implementering av ZFS-komponenter kopplade till bÄde filsystemets funktion och volymhanterarens funktion. SÀrskilt har komponenterna SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) och ZPL (ZFS POSIX Layer) implementerats. Dessutom har projektet möjliggjort anvÀndning av ZFS som backend för det klusterbaserade filsystemet Lustre. Projektets arbete bygger pÄ den ursprungliga ZFS-koden, importerad frÄn OpenSolaris-projektet och utvidgad med förbÀttringar och rÀttelser frÄn Illumos-gemenskapen. Projektet utvecklas med deltagande av anstÀllda vid Livermore National Laboratory under kontrakt med USA:s energidepartement.
Koden distribueras under den fria licensen CDDL, vilken inte Àr kompatibel med GPLv2, vilket förhindrar att ZFS pÄ Linux integreras i den huvudsakliga grenen av Linux-kÀrnan, eftersom blandning av kod under GPLv2- och CDDL-licenser Àr oacceptabelt. För att kringgÄ denna licenskonflikt har det beslutats att distribuera produkten helt under CDDL-licensen som en separat nedladdningsbar modul, som levereras separat frÄn kÀrnan. Stabiliteten i kodbasen för ZFS pÄ Linux bedöms vara jÀmförbar med andra filsystem för Linux.
Huvudsakliga förÀndringar:
- Inbyggt stöd för kryptering av lagrade data pÄ filsystem- och partitionsnivÄ har lagts till. Som standard anvÀnds algoritmen aes-256-ccm för kryptering. För att ladda krypteringsnycklar föreslÄs kommandot «zfs load-key»;
- Möjligheten att överföra krypterade data vid utförandet av kommandona «zfs send» och «zfs receive» har implementerats. NÀr alternativet «-w» anges överförs redan krypterade data i poolen till en annan pool som de Àr, utan mellanliggande dekryptering. Vid liknande kopiering förblir data skyddade av avsÀndarens nyckel, vilket gör att denna lÀge kan anvÀndas för sÀkerhetskopiering pÄ otillförlitliga system (i hÀndelse av att mottagaren komprometteras, kan angriparen utan nyckel inte fÄ tillgÄng till datan);
- Stöd för att ta bort primĂ€ra enheter frĂ„n lagringspoolen har lagts till, bĂ„de anslutna individuellt och som del av ett spegel. Borttagning sker med kommandot âzpool removeâ. Under borttagningen kopieras data frĂ„n den uteslutna enheten till de kvarvarande primĂ€ra enheterna i poolen;
- Kommandot âzpool checkpointâ har lagts till för att spara det aktuella tillstĂ„ndet av poolen med möjlighet att Ă„tergĂ„ till den sparade tidpunkten (en snapshot av hela poolen skapas). Denna funktion kan vara anvĂ€ndbar vid potentiellt farliga, komplexa administrativa uppgifter som normalt leder till oĂ„terkalleliga förĂ€ndringar (till exempel aktivering av flaggor för ny ZFS-funktionalitet eller rensning av data);
- Kommandot âzpool trimâ har lagts till, vilket gör det möjligt att informera de enheter som anvĂ€nds i poolen om sektorer som inte lĂ€ngre anvĂ€nds. AnvĂ€ndningen av TRIM-operationen gör att man kan öka effektiviteten hos SSD-enheter och förhindra degradering av deras prestanda. För att aktivera en kontinuerlig bakgrundsprocess för överföring av TRIM-kommandon har en ny egenskap âautotrimâ föreslagits;
- Kommandot âzpool initializeâ har lagts till för att initiera hela den oallokerade diskytan, vilket gör att den omedelbart Ă€r redo att anvĂ€ndas utan prestandaförlust vid första Ă„tkomsten (till exempel vid placering av virtualiserade lagringssystem som VMware VMDK);
- Stöd för projektredovisning och kvoter har lagts till, vilket kompletterar de tidigare tillgĂ€ngliga kvoterna pĂ„ anvĂ€ndar- och gruppnivĂ„. I grund och botten Ă€r projekten ett separat rum för objekt kopplade till ett specifikt ID (project ID). Kopplingen definieras genom operationen âchattr -pâ eller genom arv av attribut. Kommandona âzfs projectâ och âzfs projectspaceâ har lagts till för att hantera skapandet av projekt och sĂ€tta grĂ€nser för diskytan;
- Möjligheten att skapa Lua-skript för automatisering av olika arbeten med ZFS har lagts till. Skripten körs i speciella isolerade miljöer med hjĂ€lp av kommandot âzpool programâ;
- En ny bibliotek har implementerats , som tillhandahÄller ett stabilt API för administration av ZFS frÄn applikationer skrivna i Python. Biblioteket Àr en kapsling av libzfs_core och erbjuder en identisk uppsÀttning funktioner men anvÀnder mer Python-liknande datatyper;
- Kompatibilitet med verktygen arcstat, arcsummary och dbufstat för Python 3 har sÀkerstÀllts. Verktygen arcstat.py, arc_summary.py och dbufstat.py har döpts om till varianter utan filÀndelsen «.py»;
- Stöd för Linux-kernelets Direct IO (O_DIRECT) har lagts till, vilket möjliggör Ätkomst till data utan buffring och utan att anvÀnda cache;
- Prestandaoptimeringar har presenterats:
- Arbetet med kommandona «scrub» och «resilver» har pÄskyndats genom att dela upp dem i tvÄ faser (en separat fas för att skanna metadata och bestÀmma platsen för datablok pÄ disken, vilket gör det möjligt att utföra ytterligare verifiering med hjÀlp av sekventiell datainlÀsning);
- Stöd för datalokalisering (Allocation classes) har lagts till,
vilket gör det möjligt att inkludera relativt smÄ SSD-enheter i poolen och anvÀnda dem för lagring av endast specifika typer av ofta anvÀnda block, som metadata, DDT-data och smÄ filblock; - Prestandan för administrativa kommandon, sÄsom
«zfs list» och «zfs get», har ökat genom cachning av de metadata som krĂ€vs för deras funktion; - Stöd för parallellisering av blockallokeringsoperationer har lagts till genom att starta separata «allocator»-processer för varje metaslab-grupp. PĂ„ vanliga system noteras en prestandaförbĂ€ttring pĂ„ nivĂ„er av 5â10 %, men pĂ„ stora system (8 128 GB SSD, 24-kĂ€rnig NUMA, 256 GB RAM) kan prestandaförbĂ€ttringen vid blockallokering nĂ„ upp till 25%;
- Möjligheten till fördröjd körning av kommandot «resilver» (omstrukturering av datalokalisering med hĂ€nsyn till förĂ€ndringar i lagringskonfigurationen) har lagts till â om den nya operationen startas innan den föregĂ„ende har slutförts börjar den nya bearbetaren inte köras förrĂ€n den föregĂ„ende Ă€r klar;
- Optimeringar har införts i ZIL-loggen (ZFS Intent Log) som möjliggör skapande och bearbetning av block Àven nÀr block fortfarande bearbetas av lagringen;
- Tiden för registrering av partitioner (zvol) i systemet har minskats. NÀr poolen innehÄller ett stort antal partitioner blir de nu tillgÀngliga omedelbart efter att «zpool import» har genomförts;
- Stöd för hÄrdvaruaccelerering av SHA256-hashberÀkningar och AES-GCM-krypteringsoperationer har lagts till med anvÀndning av chip som stöder Intel QAT (Quick Assist Technology). Stöd för hÄrdvaruaccelereringsverktyg frÄn Intel C62x-chipset och CPU Atom C3000 har lagts till.
KĂ€lla: opennet.ru
