What is Object Storage?
There are two types of traditional storage systems:
Block storage, which manages data as blocks within sectors and tracks, and file storage, which manages files organized into hierarchical file systems. Block storage is used by Storage Area Networks (SANs), where a SAN disk array is connected via a SCSI, iSCSI (SCSI over Ethernet) or Fibre Channel network to servers. File storage exists in two forms: File Servers and Networked Attached Storage (NAS). NAS is a file server appliance. File storage provides standard network file sharing protocols to exchange file content between systems. Standard file sharing protocols include NFS and SMB (fka CIFS). Index tables include: inode tables, records of where the data resides on the physical storage devices or appliances, and file paths, which provide the addresses of those files. Standard file system metadata, stored separately from the file itself, record basic file attributes such as the file name, the length of the contents of a file, and the file creation date.
Object storage is designed to be massively scalable and as such is fundamentally different from traditional block or file storage systems. Object storage organizes information into containers of flexible sizes, referred to as objects. Each object includes the data itself as well as its associated metadata and has a globally unique identifier, instead of a file name and a file path. These unique identifiers are arranged in a flat address space, which removes the complexity and scalability challenges of a hierarchical file system based on complex file paths.
Metadata in object storage systems can be augmented with custom attributes to handle additional file-related information. Doing so with a traditional storage system would require a custom application and database to manage the metadata (these are known as “extended attributes”).
|Block (SAN)||File (NAS)||Object|
|The oldest, most basic form of storage||Builds on top of block storage||Abstracts file and block|
|Stores data as blocks, typically 512 bytes||Stores data as files, typically in 4KB blocks||Stores data as objects, typically in large MB+ chunks|
|Has no knowledge of the information it is storing - context is all in the application layer||Has a hierarchical map of files to blocks (paths), and system metadata, but no other knowledge||Has a flat namespace of objects, managed by a relational or key/value database - can have rich knowledge of objects|
|Best for IOPs intensive workloads, because each application IO is consistent to the storage block size||Middle of the road, serves many different workloads||Best for bandwidth intensive workloads and large capacities|