Lobject storage (conosciuto anche come archiviazione basata su oggetti) è una tipologia di memorizzazione che gestisce i dati come oggetti, al contrario di altre architetture di storage come i file system che gestiscono i dati come una gerarchia di file, e l'archiviazione a blocchi all'interno di settori e tracce. Ogni oggetto in genere include i dati stessi, una quantità variabile di metadati, e un identificatore univoco globale. Lo storage a oggetti può essere implementato a più livelli, tra cui il livello di dispositivo (dispositivo di archiviazione a oggetti), il livello di sistema e il livello di interfaccia. In ogni caso con l'object storage si ha la possibilità di abilitare funzionalità non indirizzate da altre architetture di storage, come interfacce direttamente programmabili dall'applicazione, uno spazio dei nomi che può estendersi su più istanze di hardware fisico e funzioni di gestione dei dati come replica dei dati e distribuzione degli stessi a livello di granularità.
Lo storage di oggetti è utilizzato per vari scopi tra cui la memorizzazione di oggetti come video e foto su Facebook, canzoni su Spotify o file nei servizi di collaborazione online, come Dropbox. Una delle limitazioni dello storage di oggetti è che non è destinato a dati transazionali, poiché il sistema non è stato progettato per sostituire l'accesso e la condivisione di file NAS, non supporta i meccanismi di blocco e condivisione necessari per mantenere una singola versione aggiornata di un file.
Storia Origini Nel 1995, una ricerca condotta da Garth Gibson sui NAS promoveva per la prima volta il concetto di dividere le operazioni meno comuni, come le manipolazioni dello spazio dei nomi, dalle operazioni comuni come la lettura e la scrittura, per ottimizzare le prestazioni e la scalabilità di entrambe. Nello stesso anno, è stata istituita una società belga, la FilePool, per costruire le basi per le funzioni di archiviazione. Lo stoccaggio di oggetti è stato proposto nel laboratorio della Carnegie Mellon University di Gibson come progetto di ricerca nel 1996. Un altro concetto chiave è stato l'astrazione della scrittura e della lettura dei dati in container più flessibili defintii "oggetti". Il controllo di accesso fine-grained attraverso l'architettura di archiviazione oggetti è stato descritto ulteriormente da uno dei membri del team NASD, Howard Gobioff, che successivamente fu uno degli inventori del Google File System. Altri lavori correlati includono il progetto del file system Coda al Carnegie Mellon, iniziato nel 1987, che ha generato il file system Lustre. C'è anche il progetto OceanStore presso l'UC Berkeley, iniziato nel 1999, e il progetto Logistic Networking presso l'Università del Tennessee Knoxville, iniziato in 1998. Nel 1999, Gibson fondò Panasas per diffondere i concetti sviluppati dal team NASD.
Sviluppo Seagate Technology ha svolto un ruolo centrale nello sviluppo dello storage di oggetti. Secondo la Storage Networking Industry Association SNIA "L'archiviazione di oggetti ha avuto origine alla fine degli anni '90: le specifiche di Seagate dal 1999 introdussero alcuni primi comandi e la rimozione effettiva del sistema operativo dai consumi dello storage".Object Storage: What, How and Why?, NSF (Networking Storage Forum), SNIA (Storage Networking Industry Association), Live Webcast February 19, 2020
Una versione preliminare della "OBJECT Based Storage Devices Command Set Proposal" del 25 ottobre 1999 è stata presentata da Seagate ed edita da Dave Anderson ed è stata il prodotto di lavoro del National Storage Industry Consortium (NSIC) che comprende i contributi di Carnegie Mellon University, Seagate, IBM, Quantum e StorageTek. Il presente documento è stato presentato all'INCITS T-10 (Comitato internazionale per le norme sulle tecnologie dell'informazione) con l'obiettivo di costituire un comitato e di elaborare una specifica basata sul protocollo di interfaccia SCSI. Questo ha definito gli oggetti come dati astratti, con identificatori e metadati unici, come gli oggetti si relazionano ai sistemi di file, insieme a molti altri concetti innovativi. Anderson ha presentato molte di queste idee alla conferenza SNIA nell'ottobre 1999. La presentazione ha rivelato un accordo di proprietà industriale firmato nel febbraio 1997 tra i collaboratori originali (con Seagate rappresentato da Anderson e Chris Malakapalli) che copriva i vantaggi dello storage di oggetti, dell'informatica scalabile, dell'indipendenza della piattaforma e della gestione dello storage.Object Based Storage: A Vision, slide presentation, Dave Anderson and Seagate Technology, October 13, 1999 https://www.t10.org/ftp/t10/document.99/99-341r0.pdf
Architettura
Astrazione dello storage Uno dei principi di progettazione dello storage di oggetti è quello di astrarre alcuni livelli inferiori, quelli lontani dagli amministratori e dalle applicazioni. I dati vengono così esposti e gestiti come oggetti invece di blocchi o file. Gli oggetti contengono proprietà descrittive aggiuntive che possono essere utilizzate per una migliore gestione e ne permette anche l'indicizzazione. Gli amministratori così non devono eseguire funzioni di archiviazione di livello inferiore come la costruzione e la gestione di volumi logici per utilizzare la capacità del disco o impostare i livelli RAID per affrontare problemi ai dischi.
L'object storage consente anche l'indirizzamento e l'identificazione di singoli oggetti da più di un semplice nome del file e dal percorso: viene aggiunti infatti un identificatore univoco all'interno di un bucket, o nell'intero sistema, per supportare spazi dei nomi molto più grandi ed eliminare le collisioni dei nomi.
Inclusione di metadati personalizzati all'interno dell'oggetto Lo storage di oggetti separa esplicitamente i metadati dei file dai dati per supportare funzionalità aggiuntive.
A differenza dei metadati fissi nei file system (nome del file, data di creazione, tipo, ecc.), lo storage di oggetti prevede metadati personalizzati a livello di oggetto al fine di:
Acquisite informazioni specifiche dell'applicazione o dell'utente per migliorare l'indicizzazione; Definire la gestione dei dati di supporto (ad esempio una politica per guidare il movimento degli oggetti da un livello di storage ad un altro); Centralizzare la gestione dello storage su singoli nodi e cluster; Ottimizzare l'archiviazione dei metadati (ad esempio archiviazione incapsulata, database o valore chiave) e la memorizzazione nella cache/indicizzazione (quando i metadati autorevoli sono incapsulati con i metadati all'interno dell'oggetto) indipendentemente dall'archiviazione dei dati (ad esempio archiviazione binaria non strutturata)
Inoltre, in alcune implementazioni di file system basate su oggetti:
I client del file system contattano i server dei metadati solo una volta aperti e poi ottengono il contenuto direttamente tramite server di archiviazione di oggetti (per contro, file system basati su blocchi richiedono un accesso costante ai metadati); Gli oggetti possono essere definiti per file con lo scopo di consentire l'adattamento dell'espansione, anche su più server di archiviazione di oggetti, supportando ottimizzazioni di larghezza della banda e input/output.
I dispositivi di archiviazione basati su oggetti (OSD) e alcune implementazioni software (ad esempio, DataCore Swarm) gestiscono i metadati e i dati a livello di dispositivi di archiviazione:
Invece di fornire un'interfaccia orientata ai blocchi che legge e scrive dati di dimensioni fisse, i dati sono organizzati in contenitori di varie grandezze, chiamati oggetti; Ogni oggetto ha sia dati (una sequenza non interpretata di byte) che metadati (un insieme estensibile di attributi che descrivono l'oggetto); incapsulare entrambi insieme beneficia della recuperabilità; L'interfaccia di comando include i comandi per creare e eliminare oggetti, scrivere e leggere byte da e verso oggetti specifici, e per impostare ed ottenere attributi su oggetti; I meccanismi di sicurezza forniscono il controllo di accesso per singolo oggetto e per singolo comando;
Gestione programmatica dei dati Object storage fornisce interfacce programmatiche per consentire alle applicazioni di manipolare i dati. A livello base, questo include funzioni minime per creazione, lettura, aggiornamento ed eliminazione di dati (CRUD). Alcune implementazioni di object storage vanno oltre, supportando funzionalità aggiuntive come controllo delle versioni di oggetti/file, replica di oggetti, gestione del ciclo di vita e movimento di oggetti tra diversi livelli e tipi di storage. La maggior parte delle implementazioni API sono REST permettendo l'utilizzo di molte chiamate standard HTTPS.
Implentazione Storage cloud La stragrande maggioranza dello storage cloud disponibile sul mercato utilizza un'architettura di archiviazione di oggetti. Alcuni esempi notevoli sono Amazon Web Services S3, che è debuttato nel marzo 2006, Microsoft Azure Blob Storage, Rackspace Cloud Files (il cui codice è stato donato nel 2010 al progetto OpenStack e rilasciato come OpenStack Swift) e Google Cloud Storage rilasciato nel maggio 2010.
I file system basati su oggetti Alcuni file system distribuiti utilizzano un'architettura basata su oggetti, in cui i metadati dei file sono memorizzati nei server e i dati dei file sono archiviati nei server di archiviazione oggetti. Il software client del file system interagisce con i diversi server e li astrae al fine di disporre all'utente e alle applicazioni un file system completo.
Sistemi di archiviazione degli oggetti Alcune prime tipologie di object storage sono state utilizzate per l'archiviazione, poiché le implementazioni sono state ottimizzate per l'immutabilità, non per le prestazioni. EMCCentera ed Hitachi HCP (precedentemente conosciuti come HCAP) sono due prodotti per l'archiviazione di oggetti comunemente citati. Un altro esempio è la piattaforma di archiviazione di oggetti Quantum ActiveScale.
Più sistemi di archiviazione di oggetti a scopo generale sono arrivati sul mercato intorno al 2008. Attirati dall'incredibile crescita dei sistemi di archiviazione "captive" all'interno di applicazioni web come Yahoo Mail e dal primo successo dello storage cloud, i sistemi di archiviazione di oggetti promettevano la scalabilità, le capacità dello storage cloud e la possibilità di implementare il sistema all'interno dell'azienda o presso un fornitore di servizi di archiviazione cloud.
Storage unificato di file e oggetti Alcuni sistemi di archiviazione di oggetti supportano la memorizzazione unificata di file e di oggetti, consentendo ai clienti di memorizzare oggetti su un sistema di memorizzazione, mentre altri clienti memorizzano simultaneamente file sullo stesso sistema di memorizzazione. Altri fornitori nell'area dello storage cloud ibrido utilizzano gateway di storage cloud per fornire un livello di accesso ai file su un archivio di oggetti, implementando protocolli di accesso a file come SMB e NFS.
Storage di oggetti "captive" Alcune grandi aziende di servizi digitali hanno sviluppato il proprio software quando i prodotti di archiviazione di oggetti non erano ancora disponibili in commercio o quando i casi d'uso erano molto specifici. Facebook ha inventato il proprio software di archiviazione di oggetti, denominato in codice Haystack, per soddisfare in modo efficiente le proprie esigenze di gestione delle foto su larga scala.
Dispositivi di archiviazione basati su oggetti
Adozione sul mercato Uno dei primi prodotti di archiviazione di oggetti, Lustre, è utilizzato nel 70% dei primi 100 supercomputer e circa il 50% dei Top 500. A partire dal 16 giugno 2013, questo include 7 dei primi 10, tra cui il quarto sistema più veloce - il cineme Tianhe-2 - e il settimo più veloce, il supercomputer Titan all'Oak Ridge National Laboratory.