Block Storage vs File Storage vs Object Storage
The are different levels of abstractions. From low to high:
- Block storage:
- the traditional storage type. Lowest level, no file systems.
- data is arbitrarily organized, evenly sized.
- mountable: can be attached or detached from virtual machines. (think of USB drives)
- usually deployed in storage-area network (SAN) environments and must be tied to a functioning server.
- can either be HDD or SSD.
- high latency comparing to databases; but faster comparing to File storage due to the lack of file hierarchy. Good for storing rich media.
- comparable to SAN
- File storage:
- data is organized as a hierarchy of files in folders
- on top of a file system; easier to use and navigate
- comparable to NAS
- Object storage:
- get and put any file you want via a REST API
- high level web services provided by cloud providers (most notably AWS S3)
- not mountable, a storage service, not a device
Major cloud providers have solutions for different data storage usecases:
|Object Storage||S3||Google Cloud Storage||Azure Blob Storage|
|File Storage||EFS||Google Cloud Filestore||Azure Files|
|Block Storage||EBS||Persistent Disk||Azure Disk Storage|
- DAS: direct-attached storage.
- NAS: network-attached storage. At file-level as opposed to block-level storage.
- SAN: storage area network.
- DAS vs NAS: DAS is simply an extension to an existing server and is not necessarily networked. NAS is networked, typically provides access to files using network file sharing protocols such as NFS, SMB, or AFP.
- NAS vs SAN: NAS provides both storage and a file system. SAN only provides block-based storage. For the client OS:
- NAS appears to be a file server
- SAN appears to be a disk: visible in disk and volume management utilities along with local disks, and available to be formatted with a file system and mounted.