Amazon EBS (Elastic Block Store) là gì? Mô hình kiến trúc: EC2 + EBS
💾 Amazon EBS (Elastic Block Store) là gì?
Amazon EBS (Elastic Block Store) là dịch vụ lưu trữ block-level (từng khối dữ liệu) dùng cho EC2 instance. Nó hoạt động giống như ổ cứng ảo (virtual hard disk) được gắn vào EC2 và dùng để:
-
Lưu trữ hệ điều hành (volume root)
-
Lưu dữ liệu ứng dụng (CSDL, file, log...)
-
Lưu snapshot để backup/restore
🧠 Đặc điểm chính của EBS
| Tính năng | Mô tả |
|---|---|
| Block-level | Hoạt động giống ổ cứng vật lý; khác với S3 (object storage) |
| Gắn vào EC2 | Volume được attach/detach với EC2 instance |
| Tồn tại độc lập | Volume vẫn tồn tại sau khi EC2 bị dừng hoặc terminate (nếu không chọn xóa) |
| Snapshot backup | Có thể tạo snapshot sang S3 để backup/clone |
| I/O hiệu suất cao | Có loại volume tối ưu IOPS (io1/io2), throughput (gp3) |
| Encrypted at rest | Tự động mã hoá bằng KMS |
📦 Phân loại volume EBS
| Loại Volume | Đặc điểm chính | Dùng cho |
|---|---|---|
| gp3 | SSD, hiệu suất cao, cost thấp | Web servers, dev/test workloads |
| io1/io2 | SSD, tùy chỉnh IOPS | CSDL cần IOPS cao (MySQL, Oracle) |
| st1 | HDD, throughput cao | Big data, log processing |
| sc1 | HDD, chi phí thấp | Archive hoặc workload ít truy cập |
🛠 Use Case điển hình
-
EC2 boot volume: nơi chứa hệ điều hành
-
Cài đặt database như PostgreSQL, MySQL
-
Thêm volume lưu log hoặc lưu dữ liệu lớn
-
Sao lưu dữ liệu bằng Snapshot
🔄 So sánh nhanh EBS vs S3
| Tiêu chí | EBS | S3 |
|---|---|---|
| Mức lưu trữ | Block (ổ cứng) | Object (file, key-value) |
| Gắn vào EC2 | Có (mount như ổ đĩa) | Không |
| Hiệu suất | Thấp trễ, cao IOPS | Thích hợp phân phối file |
| Use Case | HĐH, DB, log, file tạm thời | Backup, ảnh, video, tệp lớn |
Bạn muốn mình minh họa kiến trúc EC2 + EBS hoặc viết script gắn EBS tự động khi tạo EC2 không?
🏗️ Mô hình kiến trúc: EC2 + EBS
+---------------------------------------+
| AWS EC2 |
| Instance (Ubuntu/Linux) |
| - Cài ứng dụng web, DB, logs... |
+----------------+----------------------+
|
+--------------v--------------+
| EBS Volume 1 | (Root volume – hệ điều hành)
| /dev/xvda | (gp3 – SSD 8GB~30GB)
+-----------------------------+
|
+--------------v--------------+
| EBS Volume 2 | (Data volume – lưu app/data/logs)
| /dev/xvdf | (io1 – IOPS cao hoặc st1 – HDD)
+-----------------------------+
🔑 Các thành phần chính
| Thành phần | Mô tả |
|---|---|
| EC2 Instance | Máy chủ ảo, có thể cài web server, app, DB |
| EBS Volume 1 | Volume chính, thường dùng để chứa OS (Ubuntu, Amazon Linux...) |
| EBS Volume 2 | Volume phụ, dùng để lưu trữ dữ liệu tách biệt với hệ điều hành |
| Mount Point | Volume được mount vào thư mục (ví dụ: /data, /var/log, /mnt/storage) |
💡 Ưu điểm kiến trúc EC2 + EBS
-
Tách biệt dữ liệu ứng dụng và hệ điều hành → dễ backup / scale
-
Volume có thể snapshot → phục hồi nhanh khi hỏng hóc
-
Có thể attach/detach EBS từ instance này sang instance khác
🛠 Thực tế triển khai
-
Tạo EC2 instance với root volume (EBS)
-
Tạo thêm EBS Volume → attach vào EC2
-
Trên EC2:
sudo mkfs -t ext4 /dev/xvdf sudo mkdir /data sudo mount /dev/xvdf /data -
Sử dụng
/datacho ứng dụng, DB, logs
Dưới đây là minh họa kiến trúc EC2 kết hợp với Amazon EBS, mô tả cách các volume EBS hoạt động và liên kết với instance EC2:
🏗️ Mô hình kiến trúc: EC2 + EBS
+---------------------------------------+
| AWS EC2 |
| Instance (Ubuntu/Linux) |
| - Cài ứng dụng web, DB, logs... |
+----------------+----------------------+
|
+--------------v--------------+
| EBS Volume 1 | (Root volume – hệ điều hành)
| /dev/xvda | (gp3 – SSD 8GB~30GB)
+-----------------------------+
|
+--------------v--------------+
| EBS Volume 2 | (Data volume – lưu app/data/logs)
| /dev/xvdf | (io1 – IOPS cao hoặc st1 – HDD)
+-----------------------------+
🔑 Các thành phần chính
| Thành phần | Mô tả |
|---|---|
| EC2 Instance | Máy chủ ảo, có thể cài web server, app, DB |
| EBS Volume 1 | Volume chính, thường dùng để chứa OS (Ubuntu, Amazon Linux...) |
| EBS Volume 2 | Volume phụ, dùng để lưu trữ dữ liệu tách biệt với hệ điều hành |
| Mount Point | Volume được mount vào thư mục (ví dụ: /data, /var/log, /mnt/storage) |
💡 Ưu điểm kiến trúc EC2 + EBS
-
Tách biệt dữ liệu ứng dụng và hệ điều hành → dễ backup / scale
-
Volume có thể snapshot → phục hồi nhanh khi hỏng hóc
-
Có thể attach/detach EBS từ instance này sang instance khác
🛠 Thực tế triển khai
-
Tạo EC2 instance với root volume (EBS)
-
Tạo thêm EBS Volume → attach vào EC2
-
Trên EC2:
sudo mkfs -t ext4 /dev/xvdf sudo mkdir /data sudo mount /dev/xvdf /data -
Sử dụng
/datacho ứng dụng, DB, logs
Đây là sơ đồ kiến trúc trực quan thể hiện cách EC2 instance kết nối với hai EBS volumes:
-
Một volume chứa hệ điều hành (Root volume –
/dev/xvda) -
Một volume lưu dữ liệu ứng dụng, logs hoặc database (
/dev/xvdf)
AWSTemplateFormatVersion: "2010-09-09"
Description: EC2 with attached EBS volume and Apache installation
Parameters:
KeyName:
Description: EC2 KeyPair name
Type: AWS::EC2::KeyPair::KeyName
Resources:
MyInstance:
Type: AWS::EC2::Instance
Properties:
InstanceType: t2.micro
KeyName: !Ref KeyName
ImageId: ami-0c55b159cbfafe1f0 # Ubuntu 22.04 (us-east-1)
SecurityGroupIds:
- !Ref InstanceSecurityGroup
AvailabilityZone: !Select [ 0, !GetAZs '' ]
UserData:
Fn::Base64: !Sub |
#!/bin/bash
apt update -y
apt install apache2 -y
systemctl start apache2
systemctl enable apache2
mkfs -t ext4 /dev/xvdf
mkdir /data
mount /dev/xvdf /data
echo "/dev/xvdf /data ext4 defaults,nofail 0 2" >> /etc/fstab
EBSVolume:
Type: AWS::EC2::Volume
Properties:
Size: 8
AvailabilityZone: !GetAtt MyInstance.AvailabilityZone
VolumeType: gp3
Tags:
- Key: Name
Value: SecondaryVolume
VolumeAttachment:
Type: AWS::EC2::VolumeAttachment
Properties:
InstanceId: !Ref MyInstance
VolumeId: !Ref EBSVolume
Device: /dev/sdf
InstanceSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Allow HTTP & SSH
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: 0.0.0.0/0
Outputs:
InstancePublicIP:
Description: Public IP of the EC2 instance
Value: !GetAtt MyInstance.PublicIp