Object, Block and File Storage: Which One You Need
Three kinds of cloud storage with very different prices and properties. Using the wrong one is expensive and awkward.
Cloud storage comes in three shapes. They are priced very differently, they behave very differently, and choosing the wrong one produces systems that are both slow and expensive.
The three shapes
| Object | Block | File | |
|---|---|---|---|
| Accessed by | HTTP API | Attached as a disk | Network mount |
| Shared access | Many readers and writers | Usually one instance | Many instances |
| Partial updates | No — replace the object | Yes | Yes |
| Capacity | Effectively unlimited | Fixed, resizable | Elastic |
| Relative cost | Lowest | Moderate | Highest |
| Latency | Tens of milliseconds | Sub-millisecond | Low milliseconds |
| Use for | Media, backups, static assets, data lakes | Databases, operating systems | Shared application data, legacy apps |
Examples: S3, Cloud Storage, Blob Storage and Spaces are object. EBS, Persistent Disk and managed disks are block. EFS, Filestore and Azure Files are file.
Object storage: use it more than you think
It is the cheapest and most durable option, and a large share of what applications store on local disk belongs here instead.
- User uploads, images and documents.
- Backups and database dumps.
- Static site assets, served through a CDN.
- Logs and analytics data.
- Machine learning datasets and model artefacts.
- Anything written once and read many times.
Moving uploads from instance disk to object storage is often the single change that makes an application horizontally scalable, because it removes local state.
Storage classes
Object storage is tiered by access frequency. Cheaper storage costs more to read.
| Class | Storage cost | Retrieval | For |
|---|---|---|---|
| Standard | Highest | Free, instant | Active data |
| Infrequent access | Lower | Charged per GB | Monthly access |
| Archive | Very low | Charged, minutes to hours | Compliance, old backups |
| Deep archive | Lowest | Charged, up to 12 hours | Long-term retention |
Use lifecycle rules to move data automatically. Watch minimum storage durations — deleting an archived object early often incurs a charge for the remaining minimum period, which can make aggressive tiering counterproductive for short-lived data.
Block storage
Behaves like a physical disk. Attach it to one instance, format it, mount it. Databases and operating systems need it, because they require low-latency random access and partial writes.
- Performance often scales with volume size — see cloud disk types.
- Snapshots are the backup mechanism, and they accumulate cost silently.
- Volumes can usually grow but not shrink, so start conservatively.
- A volume left attached to nothing still bills. This is the most common source of storage waste.
File storage: useful and expensive
A network file system several instances can mount simultaneously. It solves shared-state problems for applications that expect a filesystem, and it costs several times more per gigabyte than object storage.
Legitimate uses: legacy applications that cannot be changed, shared configuration or content directories, and workloads genuinely needing POSIX semantics across machines. If the application could use object storage instead, it should.
Choosing
- Does it need to look like a disk to a database or operating system? Block.
- Do several machines need simultaneous filesystem access to the same data? File.
- Is it read and written as whole items over the network? Object.
- Unsure, and the application will accept it? Object — cheapest and most durable.
Common questions
Can I run a database on object storage?
Traditional databases, no — they need block semantics. Some analytics engines query data directly in object storage, which is a different architecture with different trade-offs.
Which is most durable?
Object storage, typically with eleven nines of durability through automatic replication. Block storage is durable but replicated within a smaller scope, which is why snapshots still matter.
Is object storage slow?
Higher latency per request than block, and very high aggregate throughput with parallel requests. For its intended uses the latency is irrelevant.
How do I choose a storage class?
By access pattern, not by age. Data read weekly belongs in standard even if it is old; data never read after a month belongs in archive even if it is new.