AWS EFS là gì?
Nói sơ qua EFS thì EFS là Elastic File System, một dạng storage lưu trữ, có thể được mount vào EC2 , ưu điểm EFS là bạn không cần cung cấp kích thước, như bạn cần làm với ổ đĩa (ESB) và bạn có thể gắn mount nó vào một số phiên bản EC2 Linux cùng một lúc, khiến nó trở thành một cách dễ dàng để chia sẻ tệp giữa các phiên bản EC2.

Sau khi hoàn thành bài lab này, bạn sẽ có thể:
- Tạo hệ thống tệp Amazon EFS
- Khởi chạy Amazon Elastic Compute Cloud (Amazon EC2)
- Mount EFS của bạn vào các EC2 theo 2 cách
- Kiểm tra và theo dõi hiệu suất của EFS thông qua AWS Cloud Watch
Task 1: Tạo security group
Security group phải cho phép truy cập vào đối với TCP trên cổng 2049 cho Hệ thống tệp mạng (NFS). Đây là security group mà bây giờ bạn sẽ tạo, cần configure, và attach đến EFS mount targets.
- Trong AWS Management Console, trên Services menu, chọn EC2.
- Bên navigation pane bên trái, chọn Security Groups.
- Chọn Create security group rồi configure như sau:
- Security group name:
EFS Mount Target
- Description:
Inbound NFS access from EFS clients
- VPC: default VPC
- Security group name:
- Dưới Inbound rules, chọn Add rule:
- Type: NFS
- Source:
- Custom
- Source bạn có thể chọn security group mà sẽ attach vô EC2 hoặc mở 0.0.0.0/0 vì đây là bài demo nên cũng không vấn đề lắm
- Chọn Create security group.
Lưu ý: tạo thêm 1 rule cho IP máy bạn có thể SSH đến EC2 để test vào phần cuối bài

Task 2: Tạo EFS
EFS có thể được mount vào nhiều phiên bản EC2 chạy trong các Availability Zone khác nhau trong cùng một Region. Các instances này sử dụng mount target được tạo trong từng Availability Zone để mount EFS bằng cách sử dụng standard NFSv4.1 semantics. Bạn chỉ có thể gắn EFS trên các instances trong một VPC tại một thời điểm. Cả EFS và VPC phải ở cùng một Region.

- Trong Services menu, chọn EFS.
- Chọn Create file system
- Trong Create file system, chọn Customize
- Lưu ý Step 1:
- Bỏ tick Enable automatic backups.
- Lifecycle management: chọn None
- Vào Tags section, configure:
- Key:
Name
- Value:
My First EFS File System
- Key:
- Chọn Next
- Phần VPC, chọn Default VPC.
- Phần này thì cấu hình như image sau:
- Choose Next
- Step 3, chọn Next
- Step 4: Review configuration của bạn. Chọn Create
Kết quả sẽ được một EFS như sau

Task 3: Tạo EC2 và kết nối
Phần này khá dễ nên mình tạo bỏ qua, các bạn có thể đọc các bài viết khác của mình về cách tạo EC2. Chỉ lưu ý trong bài này mình sẽ sử dụng ami là dạng ubuntu, t2.micro, network thì attach security group đã tạo ở Task 1 vào, chọn default VPC
Tiếp theo thì connect đến EC2

Task 4: Tạo mới một thư mục và mount vào EFS file system
Amazon EFS supports bản NFSv4.1 và NFSv4.0 protocols khi nó mounts file systems của bạn vào EC2 instances. Mặc dù NFSv4.0 đã được, nhưng phía AWS vẫn recommend là nên sử dụng NFSv4.1. Khi bạn mount EFS file system vào EC2 instance, bạn phải sử dụng NFS client có hõ trợ giao thức NFSv4 protocol. Vì vậy để bắt đầu chúng ta sẽ phải install NFS Client. Các bạn follow hướng dẫn này của AWS để cài efs-utils nhé
https://docs.aws.amazon.com/efs/latest/ug/installing-amazon-efs-utils.html


Sau khi cài xong, ta quay lại chủ đề chính của bài lab
- Sau khi connect đến EC2 qua SSH, dùng lệnh để tạo thư mục
sudo mkdir efs
- Quay lại AWS Management Console, trên Services menu, chọn EFS.
- chọn My First EFS File System mà bạn đã tạo ở Task 2.
- Trong Amazon EFS Console, bên trên góc phải, chọn Attach để mở hướng dẫn cách mount EC2.
- Copy cái command trong Using the NFS client. Câu lệnh mount sẽ kiểu như vầy :
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-bce57914.efs.us-west-2.amazonaws.com:/ efs
- Quay lại tab SSH EC2, để mount Amazon EFS file system:
- Paste đoạn command
- Pressing ENTER
- Nhận bản tóm tắt đầy đủ về việc sử dụng dung lượng ổ đĩa có sẵn và đã sử dụng bằng cách nhập
sudo df -hT
.

Như vậy đã mount thành công, tiếp theo ta sẽ test thử liệu một EC2 khác khi mount đến /home/ubuntu/efs có thể thấy được file trong EC2 (ip-172-31-21-195) này không
Task 5: Tạo một EC2 khác và cách mount EFS trực tiếp
Tương tự task 3, nhưng mình sẽ hướng dẫn các bạn cách mount EFS trực tiếp trong lúc khởi tạo EC2. Chỉ cần để ý khúc network chọn Subnet đã được attach vào EFS trước đó, rồi vào File systems chọn EFS, lúc này nó sẽ xuất hiện EFS bạn đã tạo ở Task 2, sửa mount point lại cho giống EC2 đã khởi tạo đầu tiên.


Tổng quan, đến hiện tại mình đang có hai EC2
- EC2_thứ 1 – private_ip: ip-172-31-21-195
- EC2_thứ 2 – private_ip: ip-172-31-37-249
Task 6: Test hiệu năng EC2
Flexible IO(fio) là tiện ích đo điểm chuẩn I/O tổng hợp dành cho Linux. Nó được sử dụng để định chuẩn và kiểm tra các hệ thống con I/O của Linux. Sau đây ta tiến hành đo hiệu năng của EC2 thứ nhất. Để cài nó, bạn dùng lệnh sau
sudo apt update sudo apt install fio
Sau khi cài xong, dùng lệnh sau đây để test hiệu xuất ghi của EFS
sudo fio --name=fio-efs --filesize=10G --filename=./efs/fio-efs-test.img --bs=1M --nrfiles=1 --direct=1 --sync=0 --rw=write --iodepth=200 --ioengine=libaio

Task 7: Monitoring performance thông qua Amazon CloudWatch
- Trong AWS Management Console, trên Services menu, chọn Cloud Watch.
- Bên navigation pane bên trái, chọn Metrics.
- Trong All metrics tab, chọn EFS.
- Chọn File System Metrics.
- Chọn hàng có metric name là PermittedThroughput. Đợi 2–3 minutes và refresh lại screen metric.

- Trong All metrics tab, uncheck PermittedThroughput.
- Chọn lại DataWriteIOBytes.
- Chọn Graphed metrics tab.
- Ở cột Statistics, chọn Sum.
- Ở cột Period, chọn 1 Minute.
- Bạn sẽ nhận được kết quả write throughput (B/s) của file system.

Về 2 loại metric này mình xin để document AWS ở đây vì mình cũng không biết giải thích theo tiếng việt sao nữa, dịch ra cảm giác nó hơi khó hiểu 😀 Ae thông cảm nhé.
Task 8: Kiểm tra EC2 thứ hai
Sau khi thực hiện xong task 6 ở EC2 thứ nhất, bạn sẽ nhận được một file img là fio-efs-test.img, tiếp tục tạo thêm một efs-ec2.txt ở ec2 thứ nhất

Sau đó SSH vài EC2 thứ hai để xem kết quả

Như vậy là bạn đã mount thành công cho cả hai EC2
Chúc các bạn thành công!!