This post was originally on the Zesty blog
EBS vs. EFS–which makes the most sense for your business? Unfortunately, there’s no one size fits all approach.
Choosing the correct storage solution for your AWS workloads can sometimes be quite confusing–and this is especially true when you try to balance efficiency, performance, flexibility and costs for constantly changing applications. There are many services available with different storage types and feature sets, so it’s easy to get overwhelmed when you’re in the comparison stage of your cloud optimization journey.
In this article, we’ll compare two major storage services: Amazon Elastic Block Storage (Amazon EBS), and Amazon Elastic File Service (Amazon EFS). Both of these services offer great solutions if your application needs access to data via filesystem.
Amazon EBS
Amazon Elastic Block Store (EBS) is a highly performant block storage service that creates standalone virtual hard drives in the cloud and attaches those volumes to Amazon Elastic Compute Cloud (EC2) virtual machines.
AWS customers have been using EBS since its early days for almost all types of demanding workloads like databases, applications, email, file storage, backup, or websites. EBS volumes are easy to create and configure and can be scaled to deliver extremely high IO performance. These volumes are also highly available and durable. Although EBS volumes are not replicated across multiple Availability Zones, they are copied to multiple servers in the same AZ, thus offering 99.99% availability and up to 99.999% durability. Users can also encrypt EBS volumes for data security at rest.
Amazon Elastic File System (EFS)
Amazon Elastic File System (EFS) is a managed Network File System (NFS) designed for Linux-based EC2 instances, selected AWS managed services, and on-premise servers. There’s a similar storage system for Windows hosts called the Amazon FSx for Windows File Server. FSx uses the Server Message Block (SMB) protocol while EFS uses NFS.
Comparing EBS vs. EFS Systems
While EFS is a managed elastic file system designed for use across different machines and availability zones, EBS is designed as a fast and reliable block storage volume for single machines (although EBS multi-attach is an exception to this that applies only on very specialized scenarios).
There are other differences between the two storage systems which we’ll specify below.
Data Access
Like a physical hard drive, an EBS volume can be attached to a single EC2 instance (except for multi-attach use cases). The EC2 instance needs to be in the same availability zone as the EBS volume. Files in an EBS volume are accessible by filesystems like ext3, ext4, or xfs.
EFS filesystems, on the other hand, can be mounted on multiple machines from any availability zone or even from on-premise servers. Thousands of machines can connect to the same EFS folder. File system access is via the NFS protocol.
EBS volumes can be attached to both Windows and non-Windows EC2 machines, whereas EFS volumes are designed for Linux-based hosts only.
Storage Size
While the maximum size of an EBS volume can be up to 16 TB, EFS volume sizes are practically unlimited. The maximum size of a file in EFS is 47.9 TB.
Availability and Scalability
Although EBS volumes are not replicated across multiple Availability Zones, they are copied to multiple servers in the same AZ, thus offering 99.99% availability and up to 99.999% durability. Users can also encrypt EBS volumes for data security at rest.
Like EBS, EFS also offers high durability. However, the main difference lies in scalability. EFS volumes can scale up quickly and automatically to meet abrupt spikes in workload demand and scale down with a decreased load. This makes EFS more flexible and better at handling dynamic workloads than EBS.
This scalability also means EFS volumes don’t need to be pre-provisioned with a specific size for an anticipated load, which ultimately saves costs. Similar to EBS, you can also specify a provisioned throughput for EFS volumes.
Backup and Encryption
Backups and encryption-at-rest are available for both systems.
EFS also offers lifecycle management, a price-saving feature similar to S3 lifecycle management. EFS lifecycle management enables the automatic and transparent transfer of infrequently accessed data to a separate storage class.
Performance
You can configure EBS volumes to minimize disk latency. You can do this by choosing different types of storage (SSD, HDD, etc.), specifying provisioned IOPS, and selecting EBS-optimized EC2 instances.
EFS, on the other hand, isn’t as configurable as EBS. Although the baseline performance is fast enough for most workloads, it’s unable to provide low disk latency per IO operation like EBS. On the other hand, EFS – being a distributed file storage system – can handle a much higher throughput per second compared to EBS.
Check AWS documentation for more details on EFS performance, and download our EBS e-book to learn how to adjust EBS performance.
Cost
Costs will increase in both EBS or EFS with increasing provisioned performance. However, as a rule of thumb, EBS will be less expensive than EFS for the same performance per GB.
That said, mounting an EFS volume to multiple EC2 instances will have the same cost as mounting it to a single instance. In comparison, creating and attaching EBS volumes for every node may quickly add up to the bill.
Conclusion
So where should you use one and not the other? Here’s a checklist.
If you need to access data from different machines or from different availability zones, EFS is probably your best option.
EFS volumes are best suited for enterprise-wide file servers, backup systems, Big Data clusters, Massively Parallel Processing (MPP) systems, Content Distribution Networks (CDN), and other such large use cases.
Systems requiring a lot of throughput can also benefit from EFS.
If you need very low-latency disk operations, EBS is probably the best choice. EBS volumes are best suited for relational and NoSQL databases, enterprise applications like ERP systems, mail servers, SharePoint, web servers, directory servers, DNS servers, or middleware. That’s because these systems typically don’t run on large clusters, and therefore don’t need commonly mounted volume. Replication between servers is done on the application level, not on disk level. The performance requirements of these workloads can also be met by existing EBS volume types.
We hope you enjoyed this overview of two of AWS’s most popular storage systems, EBS and EFS. Whichever storage system you choose, we wish you an efficient and smooth cloud experience that enables you to scale as quickly and cost-effectively as possible.
Refer to this blog post to learn more about Zesty Disk, our solution for making EBS disks more dynamic and flexible than ever.
Top comments (2)
quite a useful article.
Thank you! Glad to hear you found it informative :)