martedì 24 dicembre 2013

E la Seagate inventò il Kinetic

La maggioranza dei grossi servizi internet (Facebook, Twitter, Blogspot, Youtube...) consiste in un database in cui vengono effettuate solo operazioni del tipo "inserisci oggetto" (una volta sola) e "leggi oggetto" (tutte le volte successive), generalmente senza mai più bisogno di modificarlo (al più è richiesta la sola cancellazione). Gli "oggetti" possono essere status, video, tweet, foto, pagine di blog, eccetera: cioè quantità più o meno lunghe di bytes che nella quasi totalità dei casi non vengono mai più modificati dopo l'inserimento. Già oggi in molti database, in caso di "modifica", semplicemente si cancella (o "ignora") l'oggetto precedente e lo si sostituisce con quello appena modificato (si "inserisce" un nuovo oggetto, uguale a quello cancellato ma con la modifica dell'utente).

Anche alla Seagate si sono accorti del piccolo inconveniente tecnico: gli hard disk (e tutti gli storage in generale) sono un'enorme quantità di settori (blocchi di dimensione fissa, tipicamente 512 o 4096 bytes) da scrivere, ordinare, organizzare. Fino ad oggi i dischi si limitano a fare il più velocemente possibile le operazioni di lettura/scrittura/cancellazione dei settori, delegando al sistema operativo e al software l'organizzazione e l'ottimizzazione (un file consiste in un elenco di settori sparpagliati sul disco, la deframmentazione consiste nel riorganizzare i settori di ogni file in modo che siano vicini e cioè leggibili più velocemente, eccetera).

La soluzione che la Seagate intende commercializzare nel 2014 è un nuovo tipo di hard disk in cui come interfaccia c'è solo la ethernet via cavo, e come operazioni accettate ci sono solo inserimenti, letture e cancellazioni di "oggetti" (non più di "settori"), più un sistema di autenticazione e di smistamento (in modo che una serie di dischi del genere collegati insieme possano scambiarsi tra di loro gli oggetti in modo da "bilanciare" il carico di lavoro senza obbligare il software a decidere in quale disco va messo un oggetto). La soluzione della Seagate si chiama "Kinetic".



Quando l'utente chiede di inserire un oggetto (per esempio una foto) parte una sequenza di operazioni su più livelli:
  • il database deve scriverlo da qualche parte, invocando le funzioni standard Posix del sistema operativo (fopen, fwrite, fsync...)
  • il sistema operativo deve lavorare sul file-system appropriato (ext4, xfs, reiser4...) 
  • il file-system appartiene ad un logical volume manager il cui driver sceglie a quale interfaccia competono quei dati (cioè li manda al controller SAS, SATA, SCSI...)
  • il controller smista i dati secondo le proprie regole RAID (duplicazione, ridondanza, checksum...), avvalendosi di una cache per evitare di ridurre le letture e per posticipare il momento effettivo delle scritture (in modo da dichiararle completate subito)
  • infine i dati arrivano all'hard disk che li deve "mappare" nei settori (large block addressing, cylinder/head/sector)
Domani col Kinetic la "catena" sarebbe ridotta a soli due passaggi:
  • il database invia l'oggetto (con indicate le relative autorizzazioni alla lettura) alla catena di dischi Kinetic attraverso l'interfaccia ethernet
  • di tutta la catena, il disco con più spazio libero (o con minor carico di lavoro) se ne assume il compito e risponde confermando l'avvenuto inserimento.
"Ethernet" significa anche che la catena di dischi non deve stare necessariamente sulla rete locale ma può stare in qualsiasi luogo raggiungibile da internet, tipicamente attraverso un canale criptato (SSL, secure socket layer).

Il NAS (network attached storage) è una versione molto rozza del Kinetic perché si tratta di un normale disco (cylinder, head, sector) a cui è associato un computer che risponde su una ethernet, e che come "oggetti" accetta solo operazioni coi files.

Per inventare il Kinetic, alla Seagate hanno dovuto affrontare varie sfide:
  1. sostituire la tipica interfaccia SATA con la tipica interfaccia ethernet
  2. creare un firmware che accetti richieste di read/write/delete di oggetti anziché di settori
  3. aggiungere al firmware la possibilità di scambiare oggetti col resto della eventuale "catena" di dischi (in modo da sostituire le funzionalità RAID)
  4. aggiungere al firmware un sistema di crittografia (autenticazioni e chiavi) tale da evitare che una intercettazione della connessione faccia leggere i dati in transito
  5. aggiungere al firmware la possibilità di aggiungere o togliere dischi ad una "catena" già viva (in modo da non dover spegnerla per aggiungere dischi o per sostituire un disco prossimo a guastarsi); questo include la possibilità di comandare ad un singolo disco di svuotarsi (sparpagliare i propri oggetti sul resto della catena)
  6. aggiungere al firmware un sistema per spezzettare gli oggetti troppo lunghi, in modo da poter utilizzare i dischi Kinetic anche per il normale uso in un PC (cioè scrivere files, cancellare files, copiare files, senza passare per tutta la trafila di ext4, lvm, RAID, cylinder/head/sector): la ethernet sarà anche velocissima, ma un conto è inserirvi un video di 200 megabyte, altra storia è inserirvi il backup di un blu-ray.

Nessun commento:

Posta un commento