skip to content

Search

Syspirit
EN

AWS Storage

Pick the right AWS storage: S3, EBS, EFS, FSx, classes, volumes and transfers!

AWS
Published on
Karl Certa

AWS storage services fall into three families (block, file, object), plus tools for data transfer and hybrid setups with a datacenter. This sheet helps you pick the right service and know the limits that matter.

🧱 The three families

How the data is accessed decides the family, and therefore the service.

📌 Family☁️ Services🔌 Access🏢 On-prem equivalent
BlockEBS (Elastic Block Store), Instance StoreDisk attached to an EC2 (Elastic Compute Cloud) instanceLocal disk, SAN array LUN
FileEFS (Elastic File System), Amazon FSxNetwork share over NFS (Network File System) or SMB (Server Message Block)NAS, file server
ObjectS3 (Simple Storage Service)HTTPS API: a key points to an object stored in a bucketObject storage
  • Block: the instance OS formats the disk with its own file system. An EBS volume is a network disk tied to a single AZ (Availability Zone), which is where its placement constraints come from.
  • File: the file system is managed by the service, and several clients mount it at the same time.
  • Object: you read and write whole objects through the API. In a general purpose bucket, “folders” are just prefixes in the key name.

🧭 Need → service

📌 Need☁️ Service to use
System disk or database for an EC2 instanceEBS gp3
Database needing high IOPS (input/output operations per second) and steady latencyEBS io2 Block Express
Cache, buffer, temporary data you can afford to loseInstance Store
Files shared between Linux instances spread across several AZsEFS
Windows file share (SMB) integrated with Active DirectoryFSx for Windows File Server
HPC (High Performance Computing), ML model trainingFSx for Lustre
Moving off a NetApp array (ONTAP is the OS of these arrays)FSx for NetApp ONTAP
Moving off a ZFS server or a low-latency NFS serverFSx for OpenZFS
Backups, logs, data lake, static filesS3
Rarely read archives, regulatory retentionS3 Glacier Flexible Retrieval or Deep Archive
Keep NFS, SMB or iSCSI access on-prem with data stored in AWSStorage Gateway
Migrate or sync large datasets over the networkDataSync
Receive or send files to partners over SFTP or FTPSTransfer Family

🪣 S3 storage classes

The colder the class, the cheaper each stored GB. In return, reads are charged and a minimum storage duration applies.

📌 Class⏱️ Data access📅 Min. billed duration🏢 AZs🎯 Use case
StandardMillisecondsNone≥ 3Active data
Intelligent-TieringMilliseconds (except optional archive tiers)None≥ 3Unpredictable access
Standard-IA (Infrequent Access)Milliseconds30 days≥ 3Backups read about once a month
One Zone-IAMilliseconds30 days1Re-creatable data, secondary copies
Express One ZoneSingle-digit millisecondsNone1Highly latency-sensitive applications
Glacier Instant RetrievalMilliseconds90 days≥ 3Archives read about once a quarter
Glacier Flexible RetrievalRestore: minutes to hours90 days≥ 3Archives read about once a year
Glacier Deep ArchiveRestore: 12 h to 48 h180 days≥ 3Archives read less than once a year
  • Every class is designed for 99.999999999% durability (11 nines). One Zone-IA and Express One Zone do not survive the loss of their AZ: keep them for data you can rebuild.
  • Standard-IA, One Zone-IA and Glacier Instant Retrieval bill any object under 128 KB as if it were 128 KB.
  • Flexible Retrieval and Deep Archive add 40 KB of billed metadata per object: archiving thousands of small files gets expensive, so bundle them into one archive first.

Restoring from Glacier

Flexible Retrieval and Deep Archive cannot be read directly: you request a restore, which creates a temporary copy billed at the Standard rate on top of the archive.

📌 Option⚡ Flexible Retrieval🐢 Deep Archive
Expedited1 to 5 min (objects under 250 MB)Not available
Standard (default)3 to 5 hWithin 12 h
Bulk5 to 12 h, freeWithin 48 h

Intelligent-Tiering

S3 moves each object based on its last access date, with no retrieval fees but a per-object monitoring fee. Objects under 128 KB are not monitored and stay in Frequent Access.

📌 Tier⏳ Moves⏱️ Access
Frequent AccessOn uploadMilliseconds
Infrequent AccessAfter 30 days without accessMilliseconds
Archive Instant AccessAfter 90 days without accessMilliseconds
Archive Access (optional)After at least 90 days, configurableRestore: minutes to hours
Deep Archive Access (optional)After at least 180 daysRestore: up to 12 h (Standard)

📦 S3 key facts

📌 Item📊 Value or behavior
Max object size50 TB
Upload in a single PUT request5 GB maximum
Multipart uploadAdvised from 100 MB, required above 5 GB
Multipart parts10,000 maximum, 5 MiB to 5 GiB each (the last one can be smaller)
Upload from the console160 GB maximum
VersioningDisabled by default. Once enabled, it can only be suspended
Delete in a versioned bucketAdds a delete marker, older versions stay and are billed
Lifecycle: transitionChanges the class after N days (objects under 128 KB excluded by default)
Lifecycle: expirationDeletes objects or noncurrent versions after N days
Lifecycle: incomplete multipartAbortIncompleteMultipartUpload removes orphaned parts that take up storage

The legacy Amazon Glacier service (vaults and dedicated API) has not accepted new customers since December 15, 2025. The S3 Glacier classes above are not affected.

💽 EBS volume types

SSDs are sized in IOPS (small random reads/writes, databases). HDDs are sized in throughput (large files read sequentially).

📌 Type📏 Size⚡ Max IOPS🚀 Max throughput🥾 Boot🎯 Use case
gp3 (general purpose SSD)1 GiB to 64 TiB80,0002,000 MiB/sYesDefault choice: boot, apps, mid-size databases
gp2 (previous generation SSD)1 GiB to 16 TiB16,000250 MiB/sYesLegacy: gp3 costs up to 20% less per GB
io2 Block Express (provisioned IOPS SSD)4 GiB to 64 TiB256,0004,000 MiB/sYesCritical databases, average latency under 500 µs
io1 (provisioned IOPS SSD)4 GiB to 16 TiB64,0001,000 MiB/sYesLegacy: AWS recommends io2
st1 (throughput optimized HDD)125 GiB to 16 TiB500500 MiB/sNoBig data, log processing, data warehouse
sc1 (cold HDD)125 GiB to 16 TiB250250 MiB/sNoRarely read data, lowest cost
  • gp3 includes 3,000 IOPS and 125 MiB/s whatever the size. Beyond that, you provision IOPS and throughput separately (up to 500 IOPS per GiB, so 80,000 IOPS from 160 GiB).
  • gp2 ties IOPS to size (3 IOPS per GiB, 100 minimum). Below 1 TiB it bursts to 3,000 IOPS using credits: once the credits run out, a small volume drops back to its baseline performance.
  • Durability: 99.999% for io2, 99.8 to 99.9% for the others. AWS does not back up volumes for you: schedule snapshots (Data Lifecycle Manager or AWS Backup).

⚖️ EBS vs EFS vs Instance Store

📌 Criterion💽 EBS📁 EFS⚡ Instance Store
NatureNetwork disk (block)NFSv4.0/4.1 file systemPhysical disk on the host (block)
ScopeOne AZRegional (≥ 3 AZs) or One ZoneThe instance it was given to at launch
Concurrent accessOne instance (Multi-Attach: io1/io2, 16 Nitro instances in the same AZ)Many EC2 instances, ECS/EKS containers, LambdaOne instance, cannot be detached
PersistenceIndependent of the instanceIndependent of the instanceKept on reboot, erased on stop, hibernation or termination
SizeProvisioned, can grow while in useElastic, billed on storage usedSet by the instance type
ClientsLinux and WindowsLinux (Windows not supported)Linux and Windows
  • Moving an EBS volume to another AZ: create a snapshot, then a volume from that snapshot in the target AZ. Snapshots are incremental, stored in S3 and replicated across every AZ in the Region.
  • Elastic Volumes: size (increase only), type, IOPS and throughput can be changed without detaching the volume. Limit of 4 modifications per rolling 24 h, and you then need to extend the partition and file system in the OS.
  • Multi-Attach: requires a clustered file system, because XFS or ext4 cannot handle concurrent writes from several servers. Not usable as a boot volume.
  • DeleteOnTermination: the root volume created at launch is deleted with the instance, while a data volume attached after launch is kept and keeps being billed.

📁 EFS settings

📌 Setting📊 Options💡 Recommendation
File system typeRegional or One ZoneRegional for production
Performance modeGeneral Purpose or Max I/OGeneral Purpose: Max I/O is previous generation with higher latency
Throughput modeElastic, Provisioned or BurstingElastic (default) for variable load, Provisioned for a known load
Storage classStandard, Infrequent Access, ArchiveLifecycle management to move cold files down
  • IA and Archive: first-byte latency in the tens of ms, reads are charged, at least 128 KiB billed per file. Archive requires 90 days minimum and Elastic mode.
  • Bursting: baseline throughput is 50 KiB/s per GiB stored in Standard. A small file system in Bursting mode therefore stays slow once its credits are spent.

🗄️ Amazon FSx variants

📌 Variant🔌 Protocols🖥️ Clients🏢 Deployment🎯 Typical case
Windows File ServerSMBWindows, Linux, macOSSingle-AZ or Multi-AZWindows file server, Active Directory, DFS namespaces
LustreLustre client (POSIX)Linux onlyScratch or PersistentHPC, ML, automatic import/export from an S3 bucket
NetApp ONTAPNFS, SMB, iSCSIWindows, Linux, macOSSingle-AZ or Multi-AZNetApp migration, SnapMirror replication
OpenZFSNFS v3 to v4.2Windows, Linux, macOSSingle-AZ or Multi-AZZFS or NFS migration, latency under 0.5 ms
  • Lustre Scratch: no replication, files on a failed server are lost. Keep it for short processing jobs. Persistent replicates data and replaces a failed server within minutes.
  • Windows Single-AZ: about 30 minutes of downtime during a failure or maintenance. Multi-AZ fails over to the standby AZ in under 30 seconds, and is the advised choice for production.
  • iSCSI (Internet Small Computer Systems Interface) carries disk commands over IP: ONTAP can therefore also serve block volumes.

🔁 Storage Gateway

Virtual appliance (VMware ESXi, Hyper-V, KVM, Nutanix AHV) or EC2 instance that exposes AWS storage over standard protocols, with a local cache.

📌 Type🔌 Protocol☁️ Where the data lives🎯 Use case
S3 File GatewayNFS (v3, v4.1), SMB (v2, v3)Files stored as objects in S3File share backed by S3
Volume Gateway, cachediSCSIIn S3, local cache of hot dataReduce local primary storage
Volume Gateway, storediSCSIOn-prem, asynchronous snapshots to S3Local latency and offsite backup, can be restored to EC2
Tape GatewayVTL (Virtual Tape Library)Virtual tapes archived in Glacier Flexible Retrieval or Deep ArchiveReplace a physical tape infrastructure

FSx File Gateway has not been offered to new customers since October 28, 2024.

🚚 Transfer and hybrid

📌 Need☁️ Service📊 Key point
Migrate or sync over the network, on a scheduleDataSyncSources: NFS, SMB, HDFS (Hadoop Distributed File System), object storage, other clouds
Copy between S3, EFS and FSx in the same accountDataSyncNo agent, traffic stays on the AWS network
Permanent on-prem access to AWS storageStorage GatewayLocal cache, standard protocols
Exchanges with partnersTransfer FamilySFTP, FTPS, FTP, AS2 (Applicability Statement 2) or web app, to S3 or EFS
Physical transfer, new customerData Transfer Terminal or AWS PartnerYou bring your own drives to an AWS site
Physical transfer, existing Snow customerSnowball EdgeNo longer orderable by new customers since November 7, 2025
  • DataSync: the agent is a VM (ESXi, KVM, Hyper-V) or an EC2 instance. It can transfer only what changed, encrypts with TLS, checks integrity and keeps permissions and metadata. A single task can use a full 10 Gbps link.
  • Transfer Family: billed per hour for each enabled protocol, plus per GB transferred. A stopped server is still billed: you have to delete it.
  • Snow Family: Snowcone has not been orderable since November 12, 2024. For edge computing, AWS now points to Outposts.

Related posts