Amazon’s Elastic File System (EFS) is a scalable storage solution that can be used for general purpose workloads. An EFS can be attached to multiple Amazon Web Services (AWS) compute instances and on-premises servers, providing a common resource for applications and data storage in many different environments.
Let’s look at how an EFS functions and the benefits it provides organizational computing environments, including:
- What is an EFS?
- Advantages to using an EFS
- Disadvantages to using an EFS
- Use cases for EFS volumes
- Creating an EFS
- Mounting an EFS on an on-premises server
- EFS pricing
- Creating & using an EFS
(This article is part of our AWS Guide. Use the right-hand menu to navigate.)
What is an EFS?
An EFS is a Network File System (NFS) that organizes data in a logical file hierarchy. Data is stored in a path-based system, where data files are organized in folders and sub-folders.
Mapped file server drives and detachable USB drives both use hierarchical file systems, so the concept should be familiar to anyone who has ever dealt with personal computers and servers.
EFSs are ideal candidates for storing:
- Organizational data
- File server
- Individual data
- Application data
Amazon states that a single EFS can be simultaneously connected to thousands of Elastic Compute Cloud (EC2) instances or on-premise resources, allowing you to share EFS data with as many resources as needed.
Access to shared EFS folders and data is provided through native operating system interfaces.
Advantages to using an EFS
An Amazon EFS is elastic. That means its storage capacity can be automatically scaled up (add more storage) or scaled down (shrink storage capacity) as folders and files are added to or removed from the system. This is a major advantage over traditional storage solutions—you can add or remove capacity without disrupting users or applications.
Importantly, EFS storage is permanent. When attached to an AWS compute instance, data will not disappear when that instance is relaunched.
Disadvantages to using an EFS
Amazon EFSs do have a couple limitations:
- No Windows instances. Amazon EFSs are not supported on AWS Windows EC2 instances. EFS volumes can only be used with non-Windows instances, such as Linux, that support NFS volumes.
- No system boot volumes. Amazon EFS volumes also cannot be used for system boot volumes. AWS EC2 instances must use Elastic Block Store (EBS) volumes for booting their systems. EBS volumes are like EFS volumes with one exception. An EBS volume can only be connected to one EC2 instance or server, while EFS volumes can be connected to several EC2 instances and on-premises resources.
Use cases for EFS volumes
An EFS is suitable for the following use cases:
- Web serving and content management
- Enterprise application usage
- Media and entertainment
- Shared and home directories
- Database backups
- Developer and application tools
- Container storage
- Big data analytics
- Other applications where you need to connect a common data source to a single server or multiple servers
Creating an EFS
An EFS is created within an AWS Virtual Private Cloud (AWS VPC) and must be attached to EC2 instances within the same VPC.
All the resources associated with an EFS—VPC, EC2 instances, and the EFS itself—must reside in the same AWS region. To host an EFS, you can use a default VPC or a custom VPC.
(Learn how VPCs work in our AWS VPCs introduction.)
You can create and manage an EFS using:
- The AWS Management Console
- An AWS Command Line Interface (CLI)
- AWS API interfaces
Setup is relatively easy. AWS EC2 instances can mount existing EFSs to store and access data.
Mounting an EFS on an on-premises server
You can also mount an EFS on an on-premises server using AWS Direct Connect or AWS VPN. Using an EFS from on-premises servers allows you to:
- Migrate data to EFS
- Backup on-premises storage
- Perform additional tasks
EFS File system throughput scales automatically as capacity grows. Throughput can also be provisioned independent of capacity, if needed.
EFS storage can be provisioned under several different AWS pricing models, depending on:
- Whether your EFS data will be accessed frequently or infrequently
- Whether an EFS will store data in one or several AWS zones
- Whether you are using throughput provisioning
- What AWS storage class is used
How to practice creating & using an EFS
AWS offers a Getting Started exercise where you can create a sample Amazon Elastic File System, attach it to an EC2 instance, and transfer files to your new EFS using AWS DataSync (AWS account required).
This exercise also provides instructions for deleting the AWS sample resources you create, so your account is not charged after your EFS testing.
For more information on using an Amazon EFS for your data needs, consult the Amazon site directly.