AWS Storage Core Services: File Storage with Amazon EFS
·CloudAWSCertificationsProfessionalDevelopers

AWS Storage Core Services: File Storage with Amazon EFS

Discover Amazon Elastic File System (EFS), AWS's scalable and elastic file storage solution. Understand its shared access characteristics, common use cases, and how it differs from S3 and EBS for persistent data storage in the cloud.

Collaborative Storage: Understanding Amazon EFS (Elastic File System)

Welcome to the final lesson of Module 11: Storage Core Services! We've now explored object storage with Amazon S3 (ideal for massive, static content) and block storage with Amazon EBS (perfect for single-instance, high-performance attached disks). However, many traditional applications, especially those running on Linux, require a shared file system that can be accessed concurrently by multiple instances. This is where Amazon Elastic File System (EFS) steps in. For the AWS Certified Cloud Practitioner exam, it's important to understand what file storage is, EFS's unique characteristics, and how it fits into the broader AWS storage landscape.

This lesson will extensively cover Amazon EFS, explaining what shared file storage is, its key characteristics (shared access, elastic scalability, high availability), typical use cases, and how it differs fundamentally from S3 and EBS. We'll provide examples and illustrate how multiple EC2 instances can seamlessly share an EFS file system, enabling collaborative workflows and simplifying application architectures.

1. What is File Storage?

File storage (also known as file-level or file-based storage) is a method of storing data in a hierarchical structure of files and folders, similar to what you find on your computer's hard drive. It allows multiple users and applications to access the same data simultaneously using standard file protocols like NFS (Network File System).

Key Characteristics:

  • Hierarchical Structure: Data is organized into directories, subdirectories, and files.
  • Shared Access: Multiple compute instances can access the same file system concurrently.
  • File Protocols: Typically accessed via network file sharing protocols (e.g., NFS).
  • Managed File System: The storage service provides and manages the file system.

2. Introducing Amazon Elastic File System (EFS)

Amazon Elastic File System (EFS) provides a simple, scalable, elastic, and highly available file storage for use with AWS Cloud services and on-premises resources. It is designed to be highly available and durable, automatically scaling storage capacity up or down as you add or remove files.

Key Features:

  • Shared Access: Multiple EC2 instances, AWS Lambda functions, or even on-premises servers can access the same EFS file system concurrently.
  • Elasticity and Scalability: EFS automatically grows and shrinks, meaning you don't need to provision storage capacity beforehand. You only pay for what you use.
  • Highly Available and Durable: Designed for high availability and durability across multiple Availability Zones within a Region. Data is stored redundantly.
  • NFS Support: EFS supports the Network File System (NFS) v4.0 and v4.1 protocols, making it compatible with existing Linux-based applications.
  • Performance Modes: Offers different performance modes (General Purpose, Max I/O) and throughput modes (Bursting, Provisioned) to match various workload needs.
  • Security: Access control is managed through NFS-level permissions, IAM, and VPC security groups. Encryption at rest and in transit is supported.

3. How EFS Differs from S3 and EBS

Understanding the distinctions between S3, EBS, and EFS is a crucial element for the Cloud Practitioner exam, as they cater to different use cases.

FeatureAmazon S3 (Object Storage)Amazon EBS (Block Storage)Amazon EFS (File Storage)
Access ProtocolREST API via HTTP/HTTPSBlock-level via iSCSI (attached directly to OS)File-level via NFS (Network File System)
Primary UseStoring objects (files) with metadataBoot volumes, databases, single-attached high-perf storageShared file systems for multiple EC2 instances
ScalabilityVirtually unlimited (petabytes to exabytes)Scalable per volume (up to 16TB), but attached to single instanceAutomatically scales to petabytes, shared by multiple instances
ConcurrencyObjects accessed via unique URLsSingle EC2 instance attachment (mostly)Multiple EC2 instances can access concurrently
PersistenceIndependent of EC2 instance lifeIndependent of EC2 instance lifeIndependent of EC2 instance life
Data OrganizationFlat structure (objects in buckets)Raw unformatted blocks, OS manages filesystemHierarchical file system (files/folders)
Use CasesWebsites, backups, archives, data lakesOS boot volumes, databases, app logsWeb serving, content management, dev environments, shared data

Exam Tip:

  • If a question involves sharing a file system across multiple Linux instances, think EFS.
  • If it asks for object storage for static website hosting or data lakes, think S3.
  • If it asks for boot volumes or high-performance databases attached to a single instance, think EBS.

4. Typical Use Cases for Amazon EFS

EFS is well-suited for workloads that require shared access to file data, particularly in Linux environments.

  • Content Management Systems (CMS): Hosting WordPress, Drupal, or Joomla where multiple web servers need to access the same static files, user uploads, or themes.
  • Development and Testing Environments: Providing a shared code repository or common data sets for development teams working on multiple EC2 instances.
  • Media Processing Workflows: Storing and processing large media files (images, videos) that need to be accessed by multiple encoding or rendering servers.
  • Big Data Analytics: Storing data for analytics applications like Apache Spark or Hadoop (when not using HDFS) that require a shared file system.
  • Home Directories: Providing persistent, shared home directories for users across a fleet of EC2 instances.
  • Container Storage: Persistent storage for Docker containers or Kubernetes Pods (using EFS CSI driver).

5. Visualizing Shared Access with EFS

graph TD
    subgraph "AWS Region"
        subgraph "VPC"
            subgraph "Availability Zone 1"
                EC2A[EC2 Instance A]
                MountTargetA[EFS Mount Target AZ1]
            end
            subgraph "Availability Zone 2"
                EC2B[EC2 Instance B]
                MountTargetB[EFS Mount Target AZ2]
            end
            subgraph "Availability Zone 3"
                EC2C[EC2 Instance C]
                MountTargetC[EFS Mount Target AZ3]
            end
        end

        EFS[Amazon EFS File System]
    end

    EC2A -- Mounts NFS --> MountTargetA
    EC2B -- Mounts NFS --> MountTargetB
    EC2C -- Mounts NFS --> MountTargetC

    MountTargetA -- Connects to --> EFS
    MountTargetB -- Connects to --> EFS
    MountTargetC -- Connects to --> EFS

    style EC2A fill:#FFD700,stroke:#333,stroke-width:2px,color:#000
    style EC2B fill:#FFD700,stroke:#333,stroke-width:2px,color:#000
    style EC2C fill:#FFD700,stroke:#333,stroke-width:2px,color:#000
    style EFS fill:#90EE90,stroke:#333,stroke-width:2px,color:#000

This diagram clearly shows how multiple EC2 instances, potentially residing in different Availability Zones within the same Region, can all mount and share a single EFS file system.

6. Practical Example: Creating and Mounting an EFS File System

This AWS CLI example demonstrates how to create an EFS file system and conceptually illustrates how it would be mounted on an EC2 instance.

# 1. Create an EFS File System
# This creates a file system in your default VPC and Region.
# You can specify other options like performance mode, throughput mode, encryption.

FILE_SYSTEM_ID=$(aws efs create-file-system \
    --performance-mode generalPurpose \
    --tags Key=Name,Value=MySharedEFS \
    --query 'FileSystemId' --output text)

echo "EFS File System ID: $FILE_SYSTEM_ID created."

# 2. Create Mount Targets for each Availability Zone where you have EC2 instances
#    EFS automatically creates mount targets in all AZs of the VPC by default if not specified.
#    You would typically need to get subnet IDs for your VPC for this step.
#    For simplicity, this step is often handled automatically by EFS or via CloudFormation.

# Conceptual step:
# aws efs create-mount-target --file-system-id $FILE_SYSTEM_ID --subnet-id subnet-xxxxxxxxxxxxxxxxx

# 3. Mount the EFS file system on an EC2 instance (requires SSH access to the EC2 instance)
#    This is typically done via SSH on the EC2 instance.

# Example commands to run on an EC2 instance to mount EFS:
# sudo yum install -y amazon-efs-utils  # Install EFS client for Amazon Linux
# sudo mkdir /mnt/efs
# sudo mount -t efs -o tls $FILE_SYSTEM_ID:/ /mnt/efs
# echo "$FILE_SYSTEM_ID:/ /mnt/efs efs _netdev,tls 0 0" | sudo tee -a /etc/fstab # Auto-mount on reboot

# Clean up (conceptual steps)
# aws efs delete-file-system --file-system-id $FILE_SYSTEM_ID --output text --no-paginate --yes

Explanation:

  • aws efs create-file-system: Creates the EFS file system. By default, it creates mount targets in all subnets of your default VPC.
  • sudo mount -t efs ...: This command, executed on an EC2 instance, mounts the EFS file system. The tls option ensures encrypted communication.
  • /etc/fstab entry: Configures the EC2 instance to automatically mount the EFS file system every time it reboots.

This demonstrates the ease with which you can provision and integrate a shared file system in AWS, enabling multi-instance access to common data.

Conclusion: Shared Access Made Simple with EFS

Amazon Elastic File System (EFS) provides a powerful, scalable, and highly available file storage solution for Linux-based workloads in AWS. By offering shared access via NFS, EFS fills a critical gap between object storage (S3) and block storage (EBS), enabling collaborative workflows, simplifying application architectures, and ensuring data persistence and availability across multiple EC2 instances. Understanding EFS's unique characteristics and its appropriate use cases is essential for the AWS Certified Cloud Practitioner exam and for designing versatile, cloud-native storage solutions.

Knowledge Check

?Knowledge Check

A company needs to host a Content Management System (CMS) like WordPress on AWS. They require multiple web servers (EC2 instances) to access the same static files and user-uploaded media concurrently. Which AWS storage service is best suited for this requirement?

Subscribe to our newsletter

Get the latest posts delivered right to your inbox.

Subscribe on LinkedIn