Skip to main content

Amazon Elastic File System (EFS)

1. Amazon EFS là gì?

Amazon Elastic File System (Amazon EFS) là dịch vụ lưu trữ tệp (file storage) phi máy chủ (serverless), hoàn toàn được quản lý (fully managed), cho phép bạn thiết lập, mở rộng và chia sẻ hệ thống tệp tin trên AWS Cloud một cách dễ dàng.

EFS giống như một NAS (Network Attached Storage) khổng lồ trên mây. Bạn có thể gắn (mount) nó vào hàng nghìn EC2 instance, AWS Lambda function, hay container cùng một lúc. Nó tự động co giãn dung lượng khi bạn thêm hoặc xóa file, bạn không cần phải tính toán hay format ổ đĩa trước như EBS.

Các lợi ích chính

  • Shared Access: Hàng nghìn máy chủ có thể đọc/ghi vào cùng một EFS file system cùng lúc.
  • Elastic: Tự động tăng/giảm dung lượng theo nhu cầu thực tế, không cần cấp phát trước (provision).
  • Fully Managed: Không cần vá lỗ hổng (patching), không cần bảo trì phần cứng.
  • Multi-AZ: Dữ liệu được lưu trữ dự phòng trên nhiều Availability Zone (với loại Standard), đảm bảo an toàn ngay cả khi một AZ gặp sự cố.

2. Core Concepts

  1. Kiến trúc & Giao thức

    • NFSv4 Protocol: EFS hỗ trợ giao thức Network File System version 4 (NFSv4.0 và NFSv4.1). Điều này cho phép hàng nghìn máy trạm (EC2, on-premise servers) kết nối đồng thời.
    • Distributed Storage: Dữ liệu trong EFS Standard được lưu trữ phân tán trên nhiều Availability Zones (AZs) trong một Region, loại bỏ điểm lỗi đơn lẻ (single point of failure).
  2. Storage Classes

    • EFS cung cấp nhiều lớp lưu trữ để tối ưu hóa chi phí dựa trên tần suất truy cập:
    • EFS Standard:
    • Lưu trữ dữ liệu trên SSD, sao chép qua nhiều AZ.
    • Độ trễ thấp (single-digit millisecond).
    • Dành cho dữ liệu "nóng" (hot data) truy cập thường xuyên.
  • EFS Infrequent Access (IA):
    • Chi phí lưu trữ thấp hơn (~92% so với Standard).
    • Độ trễ cao hơn một chút (double-digit millisecond) cho byte đầu tiên.
    • Dành cho dữ liệu ít truy cập (truy cập vài lần mỗi quý).
  • EFS Archive:
    • Chi phí rẻ nhất (ngang ngửa S3 Glacier).
    • Dành cho dữ liệu cực hiếm truy cập (vài lần mỗi năm).
  • EFS One Zone:
    • Lưu trữ dữ liệu chỉ trong một AZ duy nhất.
    • Rủi ro mất dữ liệu nếu AZ đó bị hỏng hoàn toàn.
    • Có phiên bản One Zone - IA để tiết kiệm chi phí hơn nữa.
    • Dành cho dev/test hoặc dữ liệu có thể tái tạo.
Lifecycle Management

Bạn nên bật tính năng này để EFS tự động di chuyển file sang lớp IA hoặc Archive sau một khoảng thời gian không truy cập (ví dụ: 30 ngày), giúp tiết kiệm chi phí tự động.

  1. Throughput Modes

    • Quyết định tốc độ băng thông của File System:
    • Elastic (Khuyến nghị): Tự động mở rộng băng thông theo workload thực tế. Bạn trả tiền cho lượng dữ liệu đọc/ghi (Pay-as-you-use). Phù hợp cho hầu hết các workload khó đoán trước.
    • Provisioned: Bạn đặt một mức băng thông cố định (ví dụ: 1024 MiB/s). Bạn trả tiền cho mức đã đặt, bất kể có dùng hết hay không. Phù hợp cho workload ổn định yêu cầu băng thông cao liên tục.
    • Bursting (Chế độ cũ): Băng thông cơ sở phụ thuộc vào dung lượng lưu trữ (Size càng lớn, băng thông càng cao). Có cơ chế tích lũy "Credits" khi rảnh rỗi để dùng khi cần tăng tốc (burst).
  2. Performance Modes

    • Quyết định chỉ số IOPS và độ trễ:
    • General Purpose (Mặc định): Độ trễ thấp nhất. Phù hợp cho web server, CMS, home directories, code repositories.
    • Max I/O: Hỗ trợ hàng trăm nghìn tiến trình truy cập song song với IOPS cực cao. Đổi lại, độ trễ cơ sở sẽ cao hơn General Purpose một chút. Phù hợp cho Big Data, media processing clusters.
  3. Data Consistency

    • Close-to-open consistency: EFS tuân thủ chuẩn NFS. Khi một ứng dụng đóng file (close()), mọi thay đổi sẽ được ghi bền vững. Các ứng dụng khác mở file đó ngay sau đó sẽ thấy dữ liệu mới nhất.

3. Lifecycle

Để sử dụng Amazon EFS, bạn thường đi qua các bước sau:

  1. Create File System:
    • Chọn VPC.
    • Chọn loại lưu trữ (Regional hoặc One Zone).
    • Cấu hình Lifecycle Policy (ví dụ: tự động chuyển sang lớp lưu trữ rẻ hơn sau 30 ngày).
  2. Create Mount Targets: Tạo Mount Target trong các Subnet (AZ) mà bạn muốn EC2 truy cập vào. Cần gán Security Group cho phép port 2049 (NFS).
  3. Mount EFS:
    • Trên EC2 (Linux), cài đặt amazon-efs-utils (khuyến nghị) hoặc dùng nfs-utils.
    • Dùng lệnh mount -t efs fs-xxxx:/ /mnt/efs để mount.
    • Cấu hình /etc/fstab để tự động mount khi khởi động lại.
  4. Manage and Monitor: Sử dụng CloudWatch để theo dõi dung lượng và Throughput.
  5. Clean up: Xóa File System nếu không dùng để tránh phát sinh chi phí. EFS tính tiền dựa trên dung lượng lưu trữ thực tế.

4. Storage Classes & Lifecycle Management

EFS cung cấp các lớp lưu trữ khác nhau để tối ưu chi phí:

  1. EFS Standard: Mặc định. Dùng cho dữ liệu truy cập thường xuyên.
  2. EFS Infrequent Access (IA): Cho dữ liệu ít dùng. Độ trễ cao hơn một chút (lần đầu).
  3. EFS Archive: Cho dữ liệu cực hiếm dùng (lưu trữ dài hạn).
Intelligent Tiering

Nên bật Lifecycle Management. EFS sẽ tự động theo dõi, nếu file không được đọc/ghi trong X ngày (VD: 30 ngày), nó tự động chuyển sang IA để tiết kiệm tiền. Khi bạn đọc lại file đó, nó tự động chuyển về Standard.


5. Performance & Throughput Modes

Hiệu năng của EFS phức tạp hơn EBS một chút vì nó phụ thuộc vào cả dung lượng lưu trữ và chế độ cấu hình.

Performance Modes

  1. General Purpose (Mặc định): Độ trễ thấp nhất. Phù hợp cho web server, CMS, home directories.
  2. Max I/O: Độ trễ cao hơn nhưng hỗ trợ hàng trăm nghìn IOPS song song. Dùng cho Big Data, rendering farm.

Throughput Modes (Quyết định tốc độ băng thông)

Chế độMô tảUse Case
Elastic (Khuyến nghị)Tự động tăng giảm băng thông theo workload. Bạn trả tiền cho lượng dữ liệu đọc/ghi (pay-as-you-use).Workload không đoán trước được, đột biến (spiky).
ProvisionedBạn đặt cố định mức băng thông (VD: 500 MiB/s). Trả tiền cho mức đã đặt, bất kể có dùng hết hay không.Workload ổn định, cần đảm bảo băng thông cao liên tục.
Bursting (Cũ)Băng thông dựa trên dung lượng lưu trữ (càng lưu nhiều càng nhanh). Tích lũy "Burst Credit" khi rảnh rỗi để dùng khi cao điểm.Các file system nhỏ, ít traffic.

6. Các tính năng nâng cao

Access Points

  • Là cổng vào (entry point) cụ thể cho EFS.
  • Giúp đơn giản hóa việc quản lý quyền truy cập cho AWS LambdaContainer. Bạn có thể quy định User ID (UID), Group ID (GID) và thư mục gốc (Root Directory) cho từng Access Point.

Encryption (Mã hóa)

  • Hỗ trợ mã hóa dữ liệu At-rest (dùng AWS KMS) và In-transit (dùng TLS).
  • Nên bật mặc định khi tạo file system.

Replication

  • Có thể sao chép dữ liệu EFS sang một Region khác (Cross-Region) hoặc cùng Region (Same-Region) để Disaster Recovery (DR).

AWS Backup

  • Tích hợp chặt chẽ với AWS Backup để quản lý lịch sao lưu, retention policy tập trung.

7. So sánh EFS và EBS

Đặc điểmAmazon EBS (Block)Amazon EFS (File)
Truy cậpSingle-AZ (Thường chỉ 1 EC2, trừ io2).Multi-AZ (Hàng nghìn EC2 cùng lúc).
Giao thứcBlock level (như ổ cứng vật lý).File level (NFSv4).
Hệ điều hànhLinux, Windows.Chỉ Linux.
Độ trễ (Latency)Thấp nhất (Sub-millisecond).Thấp (Low millisecond), nhưng cao hơn EBS.
Lưu trữChọn dung lượng trước (Provisioned).Co giãn tự động (Elastic).
Giá cảRẻ hơn nếu dùng hết dung lượng.Đắt hơn EBS (~3 lần) nếu so Standard tier.
Use CaseDatabase, OS root volume, High perf apps.Web serving, CMS, Shared/Home folders, Containers.

8. Pricing & Cost Optimization

Chi phí EFS được tính dựa trên 3 yếu tố chính:

  1. Storage Costs (Chi phí lưu trữ): Tính theo GB/tháng.
    • Standard: Đắt nhất (ví dụ: $0.30/GB).
    • Infrequent Access (IA): Rất rẻ (ví dụ: $0.025/GB).
    • Archive: Rẻ nhất (ví dụ: $0.008/GB).
  2. Throughput Costs (Chi phí băng thông):
    • Elastic: Trả tiền cho dữ liệu đọc/ghi (Read/Write Data).
    • Provisioned: Trả tiền cho mức băng thông đã đặt (Provisioned Throughput).
  3. Data Access Costs (Chi phí truy cập dữ liệu):
    • Khi bạn đọc/ghi dữ liệu từ lớp IA hoặc Archive, bạn sẽ bị tính phí truy cập (per GB data access). Đây là lý do tại sao các lớp này chỉ dành cho dữ liệu ít truy cập.

Cost Optimization

  • Lifecycle Management: Luôn bật tính năng này. Nó tự động di chuyển file không dùng sang IA/Archive. Đây là cách dễ nhất để giảm tới 90% chi phí.
  • Sử dụng EFS One Zone: Nếu dữ liệu không quá quan trọng (Dev/Test, dữ liệu tái tạo được), hãy dùng One Zone để giảm ngay ~47% chi phí lưu trữ so với lưu trữ đa vùng (Regional).
  • Chọn đúng Throughput Mode:
    • Nếu workload thay đổi thất thường (spiky), dùng Elastic (bạn chỉ trả cho gì bạn dùng).
    • Nếu workload ổn định và cao, Provisioned có thể rẻ hơn nếu bạn tính toán chuẩn.

9. Best Practices

  1. Security

    • Security Groups: Đây là lỗi phổ biến nhất. Đảm bảo Security Group của EFS cho phép Inbound port 2049 từ Security Group của EC2/Resource.
    • Access Points: Sử dụng Access Points để quản lý người dùng, nhóm và thư mục gốc cho các ứng dụng (đặc biệt là Lambda/Containers). Tránh dùng quyền root trực tiếp.
    • Encryption: Luôn bật mã hóa At-rest (KMS) và In-transit (TLS) để bảo vệ dữ liệu.
  2. Performance

    • Mount Options: Sử dụng amazon-efs-utils để mount thay vì dùng NFS client mặc định. Tiện ích này tối ưu hóa kết nối, hỗ trợ TLS và tự động reconnect.
    • Parallelism: EFS hoạt động tốt nhất khi có nhiều kết nối song song (concurrent connections) và truy cập từ nhiều instance.
    • Small Files: EFS không tối ưu cho việc đọc/ghi hàng triệu file nhỏ liên tục (metadata overhead lớn). Nên gộp (bundle) các file nhỏ nếu có thể.
    • Monitoring: Theo dõi PercentIOLimit (nếu dùng Max I/O) và BurstCreditBalance (nếu dùng Bursting) qua CloudWatch để tránh bị nghẽn băng thông.
  3. Backup & Reliability

    • AWS Backup: Sử dụng AWS Backup để tự động hóa việc sao lưu theo lịch trình và quản lý retention policy tập trung.
    • Cross-Region Replication: Sao chép EFS sang Region khác để đảm bảo Disaster Recovery (DR) nếu Region chính gặp sự cố.
  4. Operational Excellence (Vận hành)

    • Không dùng cho Boot: KHÔNG bao giờ dùng EFS làm ổ đĩa khởi động (Boot volume) cho EC2. Root volume bắt buộc phải là EBS.
    • Cost Management: Luôn bật Lifecycle Management (chuyển sang IA sau 30 ngày) cho mọi file system để tránh lãng phí tiền cho dữ liệu lạnh.
    • Monitoring: Theo dõi các metric quan trọng qua CloudWatch như BytesRead, BytesWritten, Latency, Throughput để đảm bảo hiệu suất ổn định.