Paglabas ng ZFS sa Linux 0.8.0, mga pagpapatupad ng ZFS para sa Linux kernel

Matapos ang halos dalawang taong pag-unlad ipinakita pakawalan ZFS sa Linux 0.8.0, isang pagpapatupad ng ZFS file system na nakabalot bilang isang module para sa Linux kernel. Ang module ay nasubok sa Linux kernels mula 2.6.32 hanggang 5.1. Paparating na ang mga handa na pakete ng pag-install ay ihahanda para sa mga pangunahing pamamahagi ng Linux kabilang ang Debian, Ubuntu, Fedora, RHEL/CentOS. Ang ZFS sa Linux module ay kasama na sa Debian, Ubuntu, Gentoo, Sabayon Linux at ALT Linux distributions.

Bilang bahagi ng ZFS sa Linux, isang pagpapatupad ng mga bahagi ng ZFS na nauugnay sa parehong operasyon ng file system at ang paggana ng volume manager ay inihanda. Sa partikular, ang mga sumusunod na bahagi ay ipinatupad: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) at ZPL (ZFS POSIX Layer). Bukod pa rito, ang proyekto ay nagbibigay ng kakayahang gamitin ang ZFS bilang backend para sa Lustre cluster file system. Ang gawain ng proyekto ay batay sa orihinal na ZFS code na na-import mula sa proyekto ng OpenSolaris at pinahusay ng mga pagpapabuti at pag-aayos mula sa komunidad ng Illumos. Ang proyekto ay binuo na may partisipasyon ng mga empleyado ng Livermore National Laboratory sa ilalim ng isang kontrata sa US Department of Energy.

Ang code ay ipinamahagi sa ilalim ng isang libreng lisensya ng CDDL, na hindi tugma sa GPLv2, na hindi pinapayagan ang ZFS sa Linux na maisama sa pangunahing sangay ng kernel ng Linux, dahil ang paghahalo ng code sa ilalim ng GPLv2 at mga lisensya ng CDDL ay hindi pinapayagan. Upang iwasan ang hindi pagkakatugma ng lisensyang ito, napagpasyahan na ipamahagi ang buong produkto sa ilalim ng lisensya ng CDDL bilang isang hiwalay na na-load na module, na ibinibigay nang hiwalay mula sa core. Ang katatagan ng ZFS sa Linux codebase ay na-rate bilang maihahambing sa iba pang mga file system para sa Linux.

Pangunahing pagbabago:

  • Nagdagdag ng built-in na suporta para sa pag-encrypt ng nakaimbak na data sa antas ng file system at mga partisyon. Ang default na algorithm ng pag-encrypt ay aes-256-ccm. Ang utos na "zfs load-key" ay iminungkahi na i-load ang mga encryption key;
  • Ipinatupad ang kakayahang maglipat ng naka-encrypt na data kapag isinasagawa ang mga command na 'zfs send' at 'zfs receive'. Kapag tinukoy ang opsyong "-w", ang data na naka-encrypt na sa pool ay ililipat sa isa pang pool gaya ng dati, nang walang intermediate decryption. Sa ganoong pagkopya, ang data ay nananatiling protektado ng susi ng nagpadala, na nagbibigay-daan sa paggamit ng mode na ito para sa pag-backup sa mga hindi mapagkakatiwalaang sistema (kung ang tatanggap ay nakompromiso, hindi maa-access ng umaatake ang data nang walang susi);
  • Nagdagdag ng suporta para sa pag-alis ng mga pangunahing drive mula sa isang storage pool, parehong nakakonekta nang isa-isa at bilang bahagi ng salamin. Isinasagawa ang pag-alis gamit ang utos na "zpool remove". Kinokopya ng proseso ng pagtanggal ang data mula sa ibinukod na drive patungo sa natitirang mga pangunahing drive sa pool;
  • Idinagdag ang command na "zpool checkpoint" upang i-save ang kasalukuyang estado ng pool na may kakayahang ibalik ang mga karagdagang pagbabago sa na-save na punto sa oras (isang snapshot ng buong pool ay nalikha). Ang tampok na ito ay maaaring maging kapaki-pakinabang sa proseso ng pagsasagawa ng potensyal na mapanganib na kumplikadong administratibong gawain, na sa ilalim ng normal na mga kondisyon ay humahantong sa mga hindi maibabalik na pagbabago (halimbawa, pag-activate ng mga flag para sa bagong pagpapagana ng ZFS o pag-clear ng data);
  • Ang command na "zpool trim" ay idinagdag upang ipaalam sa mga drive na ginagamit sa pool ang tungkol sa mga sektor na hindi na ginagamit. Ang paggamit ng operasyon ng TRIM ay ginagawang posible upang mapataas ang kahusayan ng mga SSD at maiwasan ang pagkasira ng kanilang pagganap. Ang isang bagong "autotrim" na pag-aari ay iminungkahi upang paganahin ang tuluy-tuloy na proseso sa background ng pagpapadala ng mga TRIM na utos;
  • Idinagdag ang utos na "zpool initialize" upang simulan ang lahat ng hindi inilalaang puwang sa disk, na nagbibigay-daan ito upang agad itong maging handa para sa paggamit, nang walang pagbaba ng pagganap sa unang pag-access (halimbawa, kapag nagho-host ng mga virtualized na storage gaya ng VMware VMDK);
  • Nagdagdag ng suporta para sa accounting sa antas ng proyekto at mga quota, bilang karagdagan sa mga dating available na quota sa antas ng user at pangkat. Sa esensya, ang mga proyekto ay isang hiwalay na espasyo ng mga bagay na nauugnay sa isang hiwalay na identifier (project ID). Ang pagbubuklod ay tinukoy sa pamamagitan ng 'chattr -p' na operasyon o sa pamamagitan ng pamana ng katangian. Para sa pamamahala ng proyekto, ipinakita ang mga utos na "zfs project" at "zfs projectspace", na nagpapahintulot sa iyo na pamahalaan ang paglikha ng mga proyekto at magtakda ng mga limitasyon sa espasyo sa disk para sa kanila;
  • Idinagdag ang kakayahang lumikha ng mga script ng Lua upang i-automate ang iba't ibang gawain sa ZFS. Ang mga script ay pinapatakbo sa mga espesyal na nakahiwalay na kapaligiran gamit ang "zpool program" na utos;
  • Ipinatupad ang bagong library pyzfs, na nagbibigay ng isang matatag na API para sa pangangasiwa ng ZFS mula sa mga aplikasyon ng Python. Ang library ay isang wrapper sa paligid ng libzfs_core at nagbibigay ng magkatulad na hanay ng mga function, ngunit gumagamit ng mas malapit na mga uri ng Python;
  • Ang arcstat, arcsummary, at dbufstat utilities ay ginawang tugma sa Python 3. Ang arcstat.py, arc_summary.py, at dbufstat.py utility ay pinalitan ng pangalan sa mga bersyon na walang extension na ".py";
  • Nagdagdag ng suporta para sa Linux Direct IO (O_DIRECT) kernel interface, na nagbibigay-daan sa pag-access ng data nang walang buffering at pag-bypass sa cache;
  • Ipinakilala ang mga pag-optimize ng pagganap:
    • Ang gawain ng "scrub" at "resilver" na mga utos ay pinabilis dahil sa paghahati sa dalawang yugto (isang hiwalay na yugto ay inilaan para sa pag-scan ng metadata at pagtukoy ng lokasyon ng mga bloke na may data sa disk, na nagbibigay-daan sa karagdagang pag-verify gamit ang sunud-sunod na data pagbabasa);
    • Nagdagdag ng suporta para sa mga klase ng Allocation,
      nagbibigay-daan sa mga medyo maliliit na SSD na ma-pool at magamit upang mag-imbak lamang ng ilang uri ng karaniwang ginagamit na mga bloke, tulad ng metadata, DDT data, at maliliit na file block;

    • Pinahusay na pagganap ng mga utos ng admin tulad ng
      "zfs list" at "zfs get", sa pamamagitan ng pag-cache ng metadata na kinakailangan para sa kanilang operasyon;

    • Nagdagdag ng suporta para sa parallelizing block allocation operations sa pamamagitan ng pagpapatakbo ng hiwalay na proseso ng allocator para sa bawat metaslab group. Sa mga maginoo na sistema, mayroong isang pagtaas ng pagganap ng 5-10%, ngunit sa mga malalaking (8 128 GB SSD, 24 core NUMA, 256 GB ng RAM), ang pagtaas sa mga pagpapatakbo ng block allocation ay maaaring umabot sa 25%;
    • Idinagdag ang posibilidad ng pagkaantala sa pagpapatupad ng "resilver" na utos (muling pagtatayo ng pamamahagi ng data na isinasaalang-alang ang mga pagbabago sa pagsasaayos ng mga drive) - kung ang nauna ay hindi pa nakumpleto kapag nagsisimula ng isang bagong operasyon, ang bagong handler ay magsisimulang magsagawa lamang pagkatapos tapos na ang nauna;
    • Ang mga pag-optimize ay idinagdag sa ZIL (ZFS Intent Log) upang payagan ang paggawa at pagproseso ng mga bloke sa pagkakaroon ng mga bloke na pinoproseso pa rin ng storage;
    • Nabawasan ang oras ng pagpaparehistro para sa mga partisyon (zvol) sa system. Kapag ang isang pool ay naglalaman ng isang malaking bilang ng mga partisyon, ang mga ito ay magagamit kaagad pagkatapos gawin ang "zpool import";
    • Nagdagdag ng suporta para sa pinabilis na hardware na pagkalkula ng SHA256 na mga hash at AES-GSM encryption operations gamit ang Intel QAT (Quick Assist Technology) chips. Nagdagdag ng suporta para sa hardware acceleration ng Intel C62x chipset at CPU Atom C3000.

Pinagmulan: opennet.ru

Magdagdag ng komento