ZFS on Linux 0.8.0 väljaanne, ZFS teostus Linuxi tuumale

Peaaegu kahe aasta arendustöö järel esitatud väljalase ZFS Linuxil 0.8.0, ZFS failussüsteemi rakendamise, mis on loodud Linuxi tuuma moodulina. Mooduli töö on testitud Linuxi kernidega alates 2.6.32 kuni 5.1. Valmis installipaketid valmistatakse peamistele Linuxi distributsioonidele, sealhulgas Debian, Ubuntu, Fedora, RHEL/CentOS. Moodul ZFS Linuxil on juba osa Debian, Ubuntu, Gentoo, Sabayon Linuxi ja ALT Linuxi distributsioonidest.

ZFS Linuxi raames on ette valmistatud ZFS komponentide rakendamine, mis on seotud nii failussüsteemi töö kui ka mahuhalduri toimimisega. Konkreetsemalt on rakendatud järgmised komponendid: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) ja ZPL (ZFS POSIX Layer). Täiendavalt on projekt pakkunud võimalust kasutada ZFS-i klastrifailussüsteemi Lustre taustana. Projekti arendustöö põhineb originaalkoodil ZFS, mis on imporditud projektist OpenSolaris ja laiendatud Illumose kogukonna parenduste ja parandustega. Projekt areneb Livermore'i rahvuslabori töötajate osalusel USA energiaministeeriumi lepingul.

Kood on välja antud CDDL-i tasuta litsentsi alusel, mis ei ühildu GPLv2-ga, mis takistab ZFS-i integreerimist Linuxi põhijuurde, kuna GPLv2 ja CDDL litsentside koodi segamine ei ole lubatud. Selle litsentsi ühilduvuse probleemist möödumiseks otsustati välja anda toode täielikult CDDL litsentsi alusel eraldi laaditava moodulina, mis on eraldatud tuumast. ZFS-i koodibaasi stabiilsus Linuxis on võrreldav teiste Linuxi failisüsteemidega.

Peamised muudatused:

  • Lisatud on sisse ehitatud tugi andmete krüpteerimisele failisüsteemi ja jagude tasandil. Vaikimisi kasutatakse krüpteerimiseks algoritmi aes-256-ccm. Krüpteerimise võtmete laadimiseks on ette nähtud käsk «zfs load-key»;
  • Rohkem võimalusi on realiseeritud krüpteeritud andmete edastamiseks käskude „zfs send“ ja „zfs receive“ täitmisel. Kui valitakse valik „-w“, edastatakse juba krüpteeritud andmed puulis teise puuli nagu on, ilma vahepealse dekrüpteerimiseta. Sellise kopeerimise korral jäävad andmed saatva poole võtme alla kaitstuks, mis võimaldab kasutada seda režiimi usaldamatutel süsteemidel varundamiseks (vastuvõtja kompromiteerimise korral ei saa ründaja ilma võtmeta andmetele juurde pääseda);
  • Lisatud tugi algsete salvestusseadmiste eemaldamiseks salvestuspuljast, mis on ühendatud nii eraldi kui ka peegeldusena. Eemaldamine toimub käsu „zpool remove“ kaudu. Eemaldamise protsessis kopeeritakse andmed eemaldatavalt seadmel allesjäänud algsetesse salvestusseadmetesse puulis;
  • Lisatud käsk «zpool checkpoint», mis võimaldab salvestada basseinide praegust olekut, andes võimaluse tagasi pöörduda salvestatud hetke juurde (kogu basseini snapshot'i loomine). Esitatud võimalus võib osutuda kasulikuks potentsiaalselt ohtlike keerukate haldustööde teostamisel, mis tavaliselt toovad kaasa pöördumatud muudatused (näiteks ZFS uute funktsioonide lippude aktiveerimine või andmete kustutamine);
  • Lisatud käsk «zpool trim», mis võimaldab teavitada basseinis kasutatavaid kettaid sektoritest, mis ei ole enam kasutuses. TRIM-i operatsiooni rakendamine võimaldab parandada SSD-kettaste tõhusust ja vältida nende jõudluse halvenemist. Pideva taustprotsessi TRIM-käskude edastamiseks on ette nähtud uus omadus «autotrim»;
  • Lisatud käsk «zpool initialize» kogu jaotamata kettaruumiga tutvumiseks, mis tagab selle kohese kasutusvalmiduse ilma esimese ligipääsu ajal jõudluse langemiseta (nt virtualiseeritud salvestuste, nagu VMware VMDK, majutamisel);
  • Lisatud projekti taseme arvutustasu ja kvootide tugi, mis täiendavad varem saadaval olnud kasutaja ja grupi taseme kvoote. Põhimõtteliselt on projektid eraldi objektide ruum, mis on seotud eraldi identifikaatoriga (projekt ID). Sidumine toimub käsu ‘chattr -p’ kaudu või atribuutide pärimise teel. Projektide haldamiseks on saadaval käsud «zfs project» ja «zfs projectspace», mis võimaldavad projekte luua ja nende jaoks kettaruumi piire määrata;
  • Lisatud võimalus luua Lua-skripte ZFS-iga seotud erinevate tööprotsesside automatiseerimiseks. Skriptid käivitatakse spetsiaalsetes isoleeritud keskkondades käsu «zpool program» abil;
  • Tehtud uus teek pyzfs, mis pakkub stabiilset API ZFS-i haldamiseks Pythonis loodud rakendustest. Teek on libzfs_core'i mähis ja pakub identset funktsioonide komplekti, kuid rakendab Pythonile sobivamaid tüüpide kasutamist;
  • Käitusprogrammid arcstat, arcsummary ja dbufstat on kooskohased Python 3-ga. Failid arcstat.py, arc_summary.py ja dbufstat.py on ümber nimetatud .py-välja jäänud versioonideks;
  • Lisatud on Linuxi tuuma otse I/O (O_DIRECT) toe, mis võimaldab andmetele juurde pääseda ilma puhversalvestuseta ja vahepealsest mälust mööda;
  • Esitatud on jõudluse optimeerimised:
    • Käskude «scrub» ja «resilver» töö kiirus on suurenenud, jagades need kaheks faasiks (üheks faasiks eraldatud metainfot skaneerimise ja andmeplokkide asukoha määramise jaoks, võimaldades järgnevate kontrollide teostamist järjestikku andmete lugemisega);
    • Lisatud on andmete paigutamise klasside toetus (Allocation classes),
      , mis võimaldavad mahutisse lisada suhteliselt väikeseid SSD-seadmeid ja kasutada neid ainult teatud tüüpi sageli kasutatavatele plokkidele, nagu metainfot, DDT andmed ja väikesed failiplokid;
    • Parandatud administratiivsete tööriistade nagu
      „zfs list“ ja „zfs get“ jõudlust, tänu nende toimimiseks vajalike metaandmete vahemälule;
    • Lisatud tugi plokkide jaotamise toimingute paralleelseks teostamiseks, käivitades iga metaslab'i grupi jaoks eraldi „allocator“ protsessid. Tavalistes süsteemides on jõudluse tõus 5–10%, kuid suurtes (8 128 GB SSD, 24-core NUMA, 256 GB RAM) võib plokkide jaotamise tõus ulatuda 25%-ni;
    • Lisatud uuenduse võimalus käskluse „resilver“ (andmete jaotamise ümberkorraldamine seadmete konfiguratsiooni muutumise korral) viivitusega teostamiseks — kui uus operatsioon käivitatakse enne eelneva lõpetamist, siis uus töötleja alustab tööd alles pärast eelneva lõpetamist;
    • ZIL (ZFS Intent Log) ajakirjas on optimeeritud, et võimaldada plokkide loomist ja töötlemist, kui on olemas veel töötlemiseks mõeldud plokid;
    • Käivitusaega on lühenenud süsteemi jaotuste (zvol) registreerimisel. Kui puuli sisaldab suurt hulka jaotusi, on need nüüd saadaval kohe pärast „zpool import“ täitmist;
    • Lisatud tugi SHA256-hashide arvutamise ja AES-GSM krüptimise riistvarakiirusest, kasutades Intel QAT (Quick Assist Technology) toetavaid kiipe. Lisatud tugi Intel C62x kiibistikult ja Atom C3000 protsessorilt pärit riistvarakiirusest.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster