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
In the Cloud
Major cloud providers have solutions for different data storage usecases:
| Amazon | Google Cloud | Azure | |
|---|---|---|---|
| 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 |
Related: DAS vs NAS vs SAN
- DAS: direct-attached storage.
- NAS: network-attached storage. At file-level as opposed to block-level storage.
- SAN: storage area network.
Key differences:
- 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.
Recommended ReadingSponsored
Versus
32-bit vs 64-bit
AES vs RSA
Agent vs Agentless
Annotations vs Decorators
Terraform vs Ansible
BASH vs ZSH
BigQuery vs Bigtable
Block Storage vs File Storage vs Object Storage
Canvas vs SVG
cgroupfs vs systemd
Constructor vs Init() vs Factory
Container Image vs Helm Chart vs OCI Bundle
Containers vs Virtual Machines (VMs)
C vs C++
Java vs C++
Rust vs C++
crictl vs ctr
Dagger vs Guice
DMA vs RDMA
DOM vs Virtual DOM vs Shadow DOM
DQL vs DDL vs DCL vs DML
eBPF vs Sidecar
Flux vs Redux
Full Disk Encryption vs Partition Encryption
Gatekeeper vs OPA
Google vs Open Source
Why MCP uses JSON-RPC 2.0 instead of grpc
gRPC vs OpenAPI
gtag.js vs Google Tag Manager (GTM)
Versus
Kotlin vs Java
Jetty vs Netty
.js vs .jsx vs .ts vs .tsx
Kata Containers vs KubeVirt
Linux Namespace vs Kubernetes Namespace
Linux vs BSD
LLVM vs JVM
Data Mining vs Machine Learning vs Artificial Intelligence vs Data Science
Managed Kubernetes vs Self-managed Kubernetes
Management Plane vs Control Plane vs Data Plane
Microcontroller vs Microprocessor vs Computer
MMU vs IOMMU
Single-tenant vs Multi-tenant vs Multi-single-tenant
Multithreading vs Multiprocessing vs Distributed Systems
Node.js vs Erlang
OCI Image vs Docker Image
OCI vs CRI
OpenSSH vs OpenSSL
Pass-by-value vs Pass-by-reference
Podman vs nerdctl
POSIX vs SUS vs LSB
Private Key vs Public Key vs Certificate
Proto Edition 2024 vs Proto Edition 2023
Proto2 vs Proto3 vs Proto Editions
Message Queue vs PubSub
React vs Flutter vs Angular
REST vs SOAP
RSA vs ECDSA
select vs. poll vs. epoll
SLI vs SLO vs SLA
Spanner vs Bigtable
Static Site Generation vs Server-side Rendering vs Client-side Rendering
Stack based VM vs Register based VM
Stateless vs Stateful
Strong Consistency vs Eventual Consistency
stubs vs mocks vs fakes
Subroutines vs Coroutines vs Generators
Software Engineer vs Site Reliability Engineer
Symlinks vs Hard Links
JAX vs Tensorflow
Tensorflow vs PyTorch
Terminal vs Shell
Throttling vs Load Shedding
Unix Domain Sockets vs Network Sockets
Unix Domain Sockets vs Shared Memory
URI vs URN vs URL vs URC
Valkey vs Redis vs Memcached
Vi vs Vim vs gVim vs Neovim
WAL vs rollback journal

