Skip to content

Instantly share code, notes, and snippets.

@CMCDragonkai
Last active January 8, 2024 16:48
Show Gist options
  • Save CMCDragonkai/fe2c7b8c3a70b06f9d60001b5f40b5f8 to your computer and use it in GitHub Desktop.
Save CMCDragonkai/fe2c7b8c3a70b06f9d60001b5f40b5f8 to your computer and use it in GitHub Desktop.
Storage Tiers

Storage Tiers

  1. Block Devices
  2. Filesystems
  3. Object Storage
  4. Application Domain

Block Devices

At the bottom we have block devices supplied by HDDs and SSDs. These use a protocol like SCSI or ATA or SAS or SATA.

They are presented as block devices to the operating system. Use lsblk to see all the connected block devices.

This is what operating systems "hosts" require (at least to boot).

Networked Variant:

  • iSCSI (AWS offers Storage Gateway, a cloud-managed iSCSI target)
  • ATA over Ethernet

Filesystems

Filesystems backed by some set of block devices. They present a POSIX filesystem interface that most Unix applications expect.

This is what the marketing term of "Block Storage" usually refers to.

This is what containers require.

Networked Variant:

  • NFS
  • Ceph
  • IPFS

Object Storage

These systems abstract filesystem semantics into a simpler key-value semantics. Every object has a key and a value. Amazon S3 is a typical example.

Almost all object storage systems are intended to be served over a network.

Application Domain

These present a more domain-specific stateful interface. But any application which maintains "memory" in some form will present some interface to storage.

Almost all application domain state are intended to be served over a network.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment