Liberazione di ZFS in Linux 0.8.0, una implementazione di ZFS per u kernel Linux

Dopu à quasi dui anni di sviluppu prisentatu liberazione ZFS nantu à Linux 0.8.0, una implementazione di u sistema di schedari ZFS, cuncepitu cum'è un modulu per u kernel Linux. U modulu hè statu pruvatu cù kernels Linux da 2.6.32 à 5.1. Pacchetti di installazione pronti venenu prestu sarà preparatu per i principali distribuzioni Linux cumprese Debian, Ubuntu, Fedora, RHEL / CentOS. U modulu ZFS in Linux hè digià inclusu in e distribuzioni Debian, Ubuntu, Gentoo, Sabayon Linux è ALT Linux.

Comu parte di ZFS in Linux, l'implementazione di cumpunenti ZFS ligati à u funziunamentu di u sistema di fugliale è u funziunamentu di u gestore di volumi hè stata preparata. In particulare, i seguenti cumpunenti sò implementati: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) è ZPL (ZFS POSIX Layer). Inoltre, u prugettu furnisce l'abilità di utilizà ZFS cum'è backend per u sistema di file cluster Luster. U travagliu di u prugettu hè basatu annantu à u codice ZFS originale, impurtatu da u prughjettu OpenSolaris è allargatu cù miglioramenti è correzioni da a cumunità Illumos. U prugettu hè sviluppatu cù a participazione di l'impiegati di u Laboratoriu Naziunale di Livermore sottu un cuntrattu cù u Dipartimentu di l'Energia di i Stati Uniti.

U codice hè distribuitu sottu una licenza CDDL libera, chì hè incompatibile cù GPLv2, chì ùn permettenu micca ZFS in Linux per esse integratu in u ramu principale di u kernel Linux, postu chì mischjà u codice sottu licenze GPLv2 è CDDL hè inacceptable. Per evità sta incompatibilità di licenze, hè statu decisu di distribuisce tuttu u pruduttu sottu a licenza CDDL cum'è un modulu scaricabile separatamente, chì hè furnitu separatamente da u kernel. A stabilità di a basa di codice ZFS in Linux hè valutata cum'è paragunabili à altri sistemi di fugliale per Linux.

I cambiamenti principali:

  • Aghjunghje un supportu integratu per a criptografia di dati almacenati in u sistema di schedari è i livelli di partizione. L'algoritmu di criptografia predeterminatu hè aes-256-ccm. Per carricà e chjave di criptografia, u cumandimu "zfs load-key" hè prupostu;
  • A capacità di trasmette dati criptati quandu eseguisce l'ordine "zfs send" è "zfs receive" hè stata implementata. Quandu si specifica l'opzione "-w", i dati digià criptati in a piscina sò trasferiti à un altru pool cum'è, senza decifrazione intermedia. Duranti tali copia, i dati restanu prutetti da a chjave di u partitu di l'inviu, chì permette stu modu per esse utilizatu per a copia di salvezza à i sistemi untrustworthy (se u destinatariu hè cumprumissu, senza a chjave l'attaccante ùn puderà micca accede à i dati);
  • Aghjunghje un supportu per a rimozione di unità primarie da una piscina di almacenamiento, cunnessa sia individualmente sia cum'è parte di un specchiu. A rimozione hè fatta cù u cumandimu "zpool remove". Durante u prucessu di eliminazione, i dati da l'unità sguassata sò copiati in i unità primarie restante in a piscina;
  • Aggiuntu u cumandamentu "zpool checkpoint" per salvà u statu attuale di a piscina cù a capacità di rinvià più cambiamenti à u puntu salvatu in u tempu (una snapshot di tutta a piscina hè creata). A funzione presentata pò esse utile in u prucessu di eseguisce un travagliu amministrativu cumplessu potenzialmente periculoso chì normalmente portanu à cambiamenti irreversibili (per esempiu, attivendu bandiere per a nova funziunalità ZFS o sguassate dati);
  • Aggiuntu u cumandamentu "zpool trim" per informà i drive utilizati in una piscina nantu à i settori chì ùn sò più in usu. Utilizà l'operazione TRIM permette di aumentà l'efficienza di e unità SSD è impedisce a degradazione di u so rendiment. Per attivà un prucessu di fondu cuntinuu per passà cumandamenti TRIM, una nova pruprietà "autotrim" hè stata pruposta;
  • Aghjunghjite u cumandamentu "zpool initialize" per inizializà tuttu u spaziu di discu micca allocatu, assicurendu chì hè immediatamente pronta per l'usu senza impactà u rendiment à u primu accessu (per esempiu, quandu ospitu un almacenamentu virtualizatu cum'è VMware VMDK);
  • Aghjunghje un supportu per a cuntabilità è e quote à livellu di prughjettu, cumplementendu e quote d'utilizatori è di gruppu dispunibuli prima. Essenzialmente, i prughjetti sò un spaziu separatu di l'uggetti assuciati cù un identificatore separatu (ID di prughjettu). L'associazione hè determinata per l'operazione "chattr -p" o per l'eredità di l'attributi. Per gestisce i prughjetti, i cumandamenti "zfs project" è "zfs projectspace" sò furniti, chì permettenu di gestisce a creazione di prughjetti è stabilisce limiti di spaziu di discu per elli;
  • Aggiunta l'abilità di creà script Lua per automatizà diversi travaglii cù ZFS. I scripts sò lanciati in ambienti isolati speciali cù u cumandimu "zpool program";
  • A nova biblioteca hè implementata pyzfs, chì furnisce una API stabile per amministrari ZFS da applicazioni Python. A biblioteca hè un wrapper sopra libzfs_core è furnisce un inseme identicu di funzioni, ma usa tipi più vicinu à Python;
  • L'utilità arcstat, arcsummary è dbufstat sò avà cumpatibili cù Python 3. L'utilità arcstat.py, arc_summary.py è dbufstat.py sò stati rinominati in versioni senza l'estensione ".py";
  • Aghjunghje supportu per l'interfaccia di kernel Linux Direct IO (O_DIRECT), chì permette di accede à e dati senza buffering è bypassa a cache;
  • Ottimisazioni di rendiment presentate:
    • U travagliu di i cumandamenti "scrub" è "resilver" hè statu acceleratu dividendu in duie fasi (una fase separata hè attribuita per scanning metadata è determinazione di u locu di blocchi di dati nantu à u discu, chì permette più verificazione cù a lettura di dati sequenziale) ;
    • Aggiuntu supportu per e classi di Allocazione,
      permettendu unità SSD relativamente chjuche per esse incluse in una piscina è utilizata per almacenà solu certi tipi di blocchi spessu usati, cum'è metadata, dati DDT è blocchi chjuchi cù schedari;

    • A prestazione aumentata di cumandamenti per l'amministrazione, cum'è
      "zfs list" è "zfs get", per via di caching di i metadati necessarii per u so funziunamentu;

    • Aghjunghje un supportu per parallelizà l'operazioni di allocazione di blocchi lanciando prucessi separati di "allocatore" per ogni gruppu di metaslab. In i sistemi rigulari, ci hè un aumentu di u rendiment di 5-10%, ma nantu à i grandi (8 GB SSD, 128 core NUMA, 24 GB RAM), l'aumentu di l'operazione di allocazione di blocchi pò ghjunghje à 256%;
    • Aggiunta a pussibilità di l'esekzione ritardata di u cumandimu "resilver" (ricustruendu a distribuzione di dati tenendu in contu i cambiamenti in a cunfigurazione di l'unità) - se quandu si principia una nova operazione, a precedente ùn hè micca finita, allora u novu gestore cumminciarà à eseguisce solu. dopu chì u precedente hè finitu;
    • L'ottimisazioni sò state fatte à u logu ZIL (ZFS Intent Log) per permettà a creazione è a trasfurmazioni di blocchi quandu ci sò blocchi chì sò sempre processati da u almacenamiento;
    • U tempu per registrà partizioni (zvol) in u sistema hè stata ridutta. Quandu una piscina cuntene un gran numaru di partizioni, sò oghji dispunibuli immediatamente dopu à eseguisce "zpool import";
    • Aghjunghje supportu per l'accelerazione hardware di i calculi di hash SHA256 è l'operazioni di crittografia AES-GSM cù chips chì supportanu Intel QAT (Tecnulugia d'Assistenza Rapida). Aghjunghje supportu per l'arnesi di accelerazione hardware per u chipset Intel C62x è CPU Atom C3000.

Source: opennet.ru

Add a comment