Linus Torvalds sentenzia: non usate ZFS

Linus Torvalds sentenzia: non usate ZFS

Il fondatore di Linux chiarisce su un forum alcuni aspetti di una modifica apportata lo scorso anno al kernel che ha ostacolato ZFS su Linux, scoraggiandone l'uso. Ma alcune sue parole sono parse fuori luogo

di , Riccardo Robecchi pubblicata il , alle 09:01 nel canale Sistemi Operativi
LinuxOracle
 

Linus Torvalds, fondatore del sistema operativo Linux e attualmente capo-maintainer del progetto, si è lasciato andare lo scorso lunedì ad alcune dichiarazioni abbastanza incisive in merito al filesystem ZFS che non hanno mancato di sollevare un po' di disappunto nella community di amministratori di sistema. Le dichiarazioni giungono in chiusura alla risposta data ad un utente sul forum realworldtech.com il quale ha chiesto delucidazioni su una vicenda che ha suscitato scalpore lo scorso anno e che ha condizionato lo stato di ZFS nel sistema operativo del pinguino. Per contestualizzare la vicenda è necessario fare un piccolo passo indietro a gennaio del 2019 e seguire la disamina che Jim Salter conduce su Ars Technica.

Cosa è successo con ZFS su Linux?

Lo scorso anno Greg Kroah-Hartman, importante sviluppatore del kernel Linux, ha deciso di apportare una modifica importante, disabilitando l'esportazione di determinati simboli del kernel verso moduli del kernel caricabili coperti da licenza diversa da GPL. L'esportazione di simboli kernel è un'operazione che permette di mettere a disposizione dei moduli caricabili informazioni interne riguardanti lo stato del kernel.

E' il simbolo _kernel_fpu_ a trovarsi al centro di questo dibattito: esso ha lo scopo di tenere traccia dello stato della FPU - Floating Point Unit - del processore e in particolare di consentire l'accesso al codice di preservazione dello stato che ha l'obiettivo di preservare e ripristinare lo stato originale della FPU quando il controllo viene rilasciato ad altri moduli kernel che possano essere dipendenti dagli ultimi valori letti nei registri della FPU. In mancanza dei quel simbolo, i moduli esterni che accedono direttamente alla FPU devono affidarsi ad un codice di state preservation per loro conto.

Dal punto di vista tecnico, la conseguenza non è tanto quella di prevenire che i moduli accedano direttamente alla FPU, ma di evitare che usino le funzionalità di gestione dello stato proprie del kernel per preservare e ripristinare il suo stato. Ciò rende necessario, come detto, che gli sviluppatori terzi scrivano un loro codice di state-preservation, eventualità che può aumentare la probabilità di errori anche gravi all'interno del kernel, dal momento che un codice di ripristino stato scritto in maniera impropria può condurre in ultima istanza ad un crash del kernel.

Cosa c'entra tutto ciò con ZFS? Ebbene, ZFS è presente nel mondo Linux come OpenZFS, progetto esterno allo sviluppo del kernel (in gergo si dice che non è "mainline") che in quanto tale deve essere caricato come modulo per poter essere utilizzato. Il problema riguardo il simbolo _kernel_fpu_ sta nel fatto che di norma ZFS fa uso delle ottimizzazioni SIMD SSE/AVX, gestite dalla FPU, per velocizzare determinate operazioni. Non potendo accedere al simbolo _kernel_fpu_, gli sviluppatori di OpenZFS hanno dovuto inizialmente disabilitare in toto le ottimizzazioni SIMD, con un conseguente impatto negativo sulle prestazioni reali.

Torvalds: è semplice, non usate ZFS

E' su questa modifica che l'utente Gionatan Danti chiede delucidazioni a Torvalds, precedentemente intervenuto in una discussione:

"Ho una domanda su una recente modifica che ha rotto un importante modulo di terze parti: zfs. Non voglio creare flame e sentiti libero di non rispondere se pensi che sia così. Di recente un importante simbolo fpu è stato dichiarato GPL-only, con problemi significativi sul progetto ZoL (ZFS on Linux). Cosa ne pensi? Puoi parlarci delle motivazioni alle spalle di questa decisione?".

La replica di Torvalds:

"E' il caso di notare che il motto "we don't break users" si riferisce letteralmente alle applicazioni user-space, e al kernel che io mantengo. Se qualcuno aggiunge un modulo kernel come ZFS, lo fanno per loro conto. Io non lo posso mantenere e non posso essere vincolato ai cambiamenti al kernel di altre persone. E onestamente non posso effettuare il merge (incorporazione di codice in un progetto -ndr) di quanto prodotto da ZFS a meno che non riceva una lettera ufficiale di Oracle (sviluppatore del Filesystem - ndr) che sia firmata dal loro rappresentante legale o preferibilmente dallo stesso Larry Ellison che dica che sì, va bene farlo e trattare il risultato finale secondo la licenza GPL (ZFS è sotto licenza CDDL, e potrebbe porre incompatibilità legali con GPL - ndr ). Altri pensano che possa andare bene fare il merge del codice ZFS nel kernel e che l'interfaccia del modulo sistemi le cose, ed è una loro decisione. Ma considerando la querela facile di Oracle e i dubbi circa la licenza, non c'è nessun modo in cui io possa operare che mi faccia sentire tranquillo nel farlo. E non sono per nulla interessato in alcun "ZFS shim layer"(uno strato che si frappone tra il kernel e il modulo, facendo sì che i due non si "tocchino" mai realmente e aggirando dunque le clausole legali del kernel sulla licenza GPL - ndr) che qualche persona sembra pensare isolerebbe i due progetti. Questo non aggiunge nessun valore lato nostro, e date le azioni legali di Oracle (Java per esempio) non penso nemmeno che ci possa essere la possibilità di avere ragione su un contenzioso per la licenza. Non usate ZFS. E' semplice. Credo che sia sempre stata poco più che una buzzword e i problemi di licenza lo bloccano sul nascere per quanto mi riguarda. I benchmark che ho visto non mi fanno sembrare ZFS questa gran cosa. E per quel che posso dire non ha più nessun mantenimento alle spalle, quindi da un punto di vista di stabilità a lungo termine perché lo si vuole usare in primo luogo?"

La prima parte della risposta di Torvalds può essere o meno condivisibile a seconda dei punti di vista, ma è senza dubbio legittima: in qualità di fondatore e sviluppatore capo del kernel Linux ha il diritto di stabilire cosa può e cosa non può farne parte (soprattutto nel momento in cui si rischia di andare a calpestare l'insidioso terreno dei diritti di licenza) e quali regole debbano seguire coloro i quali vogliono aggiungere un modulo kernel.

Una risposta che piace a metà

Ciò che invece ha destato disappunto è l'ultima parte della replica, in cui Torvalds si lascia andare a convizioni personali su un argomento per il quale, almeno per le parole che ha speso, non sembra essere adeguatamente informato. Infatti nella discussione sul forum non sono mancati alcuni appunti alla sua posizione.

Lo stesso Danti, che si mostra d'accordo sulle ragioni che Torvalds ha esposto, replica:

"Non voglio elogiare ZFS rispetto ad altri filesystem, ma l'unico filesystem Linux con funzionalità simili è BTRFS che, per l'utilizzo che ne faccio, l'hosting di macchine virtuali, funziona straordinariamente male. Basta considerare come il suggerimento ufficiale di disabilitare CoW (Copy-on-Write, tecnica che prevede che le modifiche vengano scritte su una copia del dato originale - ndr) per le macchine virtuali porta a disabilitare anche il checksum e gli snapshot riabilitiano automaticamente CoW. VDO+thinp+XFS è una valida alternativa, ma manca di alcune funzionalità. Riguardo alle prestazioni, ho misurato estensivamente ZFS sui miei impieghi e ARC ha un hit rate molto più alto rispetto al pagecache di linux. Questo significa che anche i i dischi meno recenti performano molto meglio dell'atteso.

Un altro utente, John Scott, fa poi notare a Torvalds che lo sviluppo di OpenZFS è invece particolarmente attivo. Tuttavia è importante operare una piccola precisazione: nel 2010 Sun Microsoystem (dove il filesystem ZFS ha avuto origine nella prima metà degli anni 2000) è stata acquisita da Oracle e ZFS è diventato un suo marchio registrato. Oracle ha sospeso il rilascio di codice sorgente per nuovi sviluppi del sistema operativo OpenSolaris e ZFS trasformando, di fatto, ZFS in un progetto closed source. La conseguenza è stata la nascita del progetto illumos, per mantenere e migliorare la versione open source allora esistente di Solaris, e nel 2013 la fondazione di OpenZFS per coordinare lo sviluppo di ZFS open source. OpenZFS ha l'obiettivo di mantenere e gestire il codice ZFS core. ZFS e OpenZFS sono quindi due progetti distinti, ed evidentemente Torvalds si è riferito proprio a ZFS "di Oracle".

L'utente supernovas invece risponde in maniera più piccata:

"Evitare di farti in quattro per supportare ZFS è un conto. Lo capiamo perfettamente. Farsi in quattro per rompere deliberatamente FS è un altro. Gli sviluppatori del kernel sono degli stronzi a farlo!"

Cosa ne pensiamo?

Il "caso ZFS" nasce da un duplice problema esistente da lungo tempo nel mondo Linux e già noto per altri casi simili, come quello dei driver per le schede video NVIDIA. Da un lato c'è la questione della licenza GPL: teoricamente qualunque codice scritto per essere integrato con un programma GPL deve essere reso GPL se ha dipendenze sostanziali e funzionali dal programma. Per questo sono stati sviluppati i famosi "shim layer", ovvero strati da frapporre fra il kernel e il codice interessato: si tratta di una scappatoia la cui legittimità è dubbia e proprio per questo Torvalds usa particolare cautela al riguardo. NVIDIA riesce a mantenere il codice dei suoi driver chiuso grazie all'uso di questi strati, ma non è l'unico caso.

Dall'altro lato c'è la questione della stabilità delle interfacce messe a disposizione del kernel. È politica di Torvalds il dire "we don't break users", ma ciò significa che il kernel va incontro a frequenti cambiamenti che rendono lo sviluppo di moduli particolarmente impegnativo.

Queste due problematiche messe insieme comportano numerosi grattacapi sia agli sviluppatori che agli utenti, ma si basano entrambe su principi corretti: da un lato la necessità di garantire che il kernel accolga al suo interno codice che non dia problemi a livello legale a sviluppatori e utenti, dall'altro la necessità di innovare e apportare cambiamenti necessari internamente al kernel senza dover creare complicati arzigogoli per mantenere la retrocompatibilità.

Torvalds ha dunque ragione nella sua posizione contraria all'inserimento del codice di OpenZFS, almeno da questa prospettiva, ma le critiche mosse a lui e a Kroah-Hartman relativamente alla decisione di non esporre più il simbolo _kernel_fpu_ sono sensate. Sembra che Torvalds e Kroah-Hartman abbiano un'opposizione ideologica a ZFS che non trova riscontro nei fatti. Come più volte lo stesso Torvalds ha ribadito, però, bisogna concentrarsi sui fatti e non sulle questioni ideologiche: quello che conta è il codice e il codice di ZFS ha più volte dimostrato di garantire un'affidabilità impossibile su altri file system.

11 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - info
jepessen16 Gennaio 2020, 10:58 #1
Che Linus non abbia tempo voglia ed altro per integrare ZFS e' una roba decisamente legittima. Impedirlo a chi vuole farlo per conto proprio pagandone le coseguenze (sia in positivo che in negativo) e' una ston@ata ideologica e basta, ed ha torto.
Nui_Mg16 Gennaio 2020, 11:23 #2
Vuole pararsi il culo dalle eventuali future "aggressioni" legali (tutt'altro che remote conoscendo oracle) da parte di Oracle, direi che non ha proprio tutti i torti.
luke@16 Gennaio 2020, 11:46 #3
Originariamente inviato da: jepessen
Che Linus non abbia tempo voglia ed altro per integrare ZFS e' una roba decisamente legittima. Impedirlo a chi vuole farlo per conto proprio pagandone le coseguenze (sia in positivo che in negativo) e' una ston@ata ideologica e basta, ed ha torto.



dall'articolo
Se qualcuno aggiunge un modulo kernel come ZFS, lo fanno per loro conto. Io non lo posso mantenere e non posso essere vincolato ai cambiamenti al kernel di altre persone.


condizione
a meno che non riceva una lettera ufficiale di Oracle (sviluppatore del Filesystem - ndr) che sia firmata dal loro rappresentante legale o preferibilmente dallo stesso Larry Ellison che dica che sì, va bene farlo e trattare il risultato finale secondo la licenza GPL (ZFS è sotto licenza CDDL, e potrebbe porre incompatibilità legali con GPL - ndr ).


dargli torto...
jepessen16 Gennaio 2020, 14:23 #4
Originariamente inviato da: Nui_Mg
Vuole pararsi il culo dalle eventuali future "aggressioni" legali (tutt'altro che remote conoscendo oracle) da parte di Oracle, direi che non ha proprio tutti i torti.


Che non voglia mettere zfs nel kernel direttamente è sacrosanto. Che lo impedisca ad una comunità intera per ideologie sue no.
tino8416 Gennaio 2020, 14:45 #5
Non capisco il motivo della discussione: Torvalds mantiene il kernel ufficiale, ma questo non impedisce che chi interessato possa introdurre il supporto a Zfs, se lo desidera. Lui non lo fa, ed ha ampiamente spiegato il motivo.
pabloski16 Gennaio 2020, 15:19 #6
Originariamente inviato da: jepessen
Che non voglia mettere zfs nel kernel direttamente è sacrosanto. Che lo impedisca ad una comunità intera per ideologie sue no.


ma non è vero

Torvalds ha fatto notare 2 cose banalissime:

(1) Oracle è rognosa e finchè non ci sarà una liberatoria scritta, chiunque deve considerarsi potenziale vittima di un futuro attacco legale
(2) i kernel developer mantengono SOLO i driver inclusi nel mainline

quindi dove hai letto che Torvalds impedisce attivamente, per pura scelta ideologica, lo sviluppo di driver non copyleft?

solo che l'inclusione nel mainline è concessa SOLAMENTE a quei driver con licenze compatibili con la gpl...e infatti ci sono vagonate di driver con licenze bsd, mit e apache

perchè altrimenti la causa legale è dietro l'angolo
pabloski16 Gennaio 2020, 15:24 #7
Originariamente inviato da: tino84
Non capisco il motivo della discussione: Torvalds mantiene il kernel ufficiale, ma questo non impedisce che chi interessato possa introdurre il supporto a Zfs, se lo desidera. Lui non lo fa, ed ha ampiamente spiegato il motivo.


E' la ciclica diatriba delle API e ABI stabili. Questione vecchia e su cui si è espresso con precisione Hartman https://github.com/torvalds/linux/b...pi-nonsense.rst

ZoL è fuori dal kernel e deve pulirsi il fondoschiena da solo

solo che un utente si è lamentato proprio di questo fatto

chi mantiene un driver del genere, sa benissimo che deve mantenerne la compatibilità con tutte le versioni del kernel supportate

l'alternativa è l'inclusione nel kernel, che per ZoL è impossibile, vista la licenza
s-y16 Gennaio 2020, 16:50 #8
si, è una specie di scontro ideologico, ma viene da chiedersi chi sia quello più dogmatico...
c'è una posizione ufficiale da parte di oracle al riguardo?
omerook16 Gennaio 2020, 17:03 #9
Non capisco la faccia tosta di certi personaggi. Non solo pretendono di usare in modo improprio roba proprietaria ma hanno anche la pretesa che qualcuno si sbatta per permerteglielo . Bene ha fatto linus a cassarli.
pabloski16 Gennaio 2020, 17:29 #10
Originariamente inviato da: s-y
c'è una posizione ufficiale da parte di oracle al riguardo?


sarebbe bello

Oracle sguazza nel dubbio

poi, se un giorno ZFS dovesse arrivare ad uno share a due cifre, tada...una bella letterina dai loro avvocati e si ricomincia

cioè parliamo della gente che ha preteso di brevettare i nomi delle funzioni!

Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".

La discussione è consultabile anche qui, sul forum.
 
^