14. Elastic Block Store (EBS)



bài S3, mình đã giới thiệu sơ lược các loại lưu trữ trên AWS: Object Storage, Block Storage, File Storage. Trong bài này, hãy tìm hiểu kỹ hơn về Block Storage, cùng dịch vụ tương ứng: EBS.

Trong bài này:

1. Đặc điểm của Block Storage

Cách thức hoạt động

Block Storage chia dữ liệu thành các khối, kích thước cố địnhbằng nhau, trừ khối cuối cùng. Mỗi khối được đánh địa chỉ riêng, lưu trữ độc lập tại bất cứ đâu trong thiết bị lưu trữ (không cần phải xếp cạnh nhau vì có thể sử dụng địa chỉ để truy xuất).

Khi cần truy xuất dữ liệu, hệ điều hành dựa vào một bảng tra cứu (lookup table) để tìm địa chỉ các khối, tập hợp chúng lại thành dữ liệu gốc.

Điểm mạnh

  • Hiệu năng cao: vì sử dụng cơ chế địa chỉ, các khối dữ liệu có thể được truy xuất trực tiếp rất nhanh và hiệu quả. Điều này phù hợp với các ứng dụng đòi hỏi hiệu năng cao như cơ sở dữ liệu.

  • Linh hoạt: khi cần cập nhật dữ liệu, chỉ cần thay đổi các khối cần thiết, không cần phải ghi đè lên toàn bộ tệp, giúp giảm chi phí truyền dẫn dữ liệu.

Hạn chế

  • Chi phí cao hơn Object Storage.
  • Quản lý dữ liệu theo khối phức tạp hơn. Như khi cập nhật dữ liệu, việc xác định các khối cần thay đổi không đơn giản như ghi đè toàn bộ dữ liệu.

IOPS

Khi làm việc với EBS hay Block Storage nói chung, bạn sẽ thường xuyên gặp thuật ngữ IOPS, một trong những chỉ số quan trọng nhất để đánh giá hiệu năng.

IOPS là viết tắt của Input/Output Operations Per Second (số thao tác Vào/Ra mỗi giây). Đây là thông số xác định tốc độ truyền tải dữ liệu (hay băng thông - throughput) của thiết bị lưu trữ. Cụ thể:

Throughput (MB/s) = Block Size (MB/block) * IOPS (block/s)

Với EBS, kích thước khối mặc định là 4 KB, có thể tăng lên 8, 16, 32, 64 KB/block.

2. Elastic Block Store (EBS)

EBS cung cấp các lưu trữ (volume), mỗi ổ được đặt ở một AZ, chỉ có thể truy cập từ AZ đó, và chỉ có thể được gán cho một EC2 Instance. EC2 Instance kết nối với ổ EBS có thể tạo hệ thống tập tin (file system) như NTFS trên Windows, ext4 trên Linux, v.v., trên ổ này để làm việc với dữ liệu.

Dữ liệu lưu trên ổ độc lập với vòng đời của EC2 Instance, không bị mất nếu restart, stop hoặc thậm chí terminate Instance. Có thể gỡ ổ EBS ra và gán cho một EC2 Instance khác và tiếp tục làm việc với dữ liệu trên đó.

Do chỉ được đặt ở một AZ, một ổ EBS chỉ có khả năng phục hồi AZ Resilience. Dữ liệu trên EBS được tự động sao lưu trên AZ đó, và có khả năng mất mát chỉ khi AZ gặp sự cố. Để chuyển dữ liệu qua AZ khác, phải tạo snapshot (một bản sao lưu dữ liệu tại một thời điểm) và lưu trên S3, rồi tạo ổ EBS khác từ snapshot đó. Thậm chí, có thể chuyển dữ liệu qua Region khác, bằng việc sao chép snapshot qua một S3 bucket ở Region đó, rồi dùng nó tạo ổ EBS. Việc sao lưu và sao chép này cũng tăng khả năng phục hồi của EBS lên Region Resilience, thậm chí Global Resilience.

EBS-EC2 attachment

Trên hình, Instance 1 tại Region us-east-1, AZ us-east-1a kết nối với ổ EBS 1, có snapshot lưu trên S3. Snapshot này được sử dụng để tạo ổ EBS 3 trên cùng AZ, và ổ EBS 8 trên AZ us-east-1b. Hai ổ này được gắn vào Instance 2 và Instance 9 tương ứng ở cùng AZ, do không thể kết nối một Instance với một ổ EBS ở AZ khác. Cũng cần lưu ý rằng, việc tạo snapshot chỉ là tại một thời điểm, sau đó dữ liệu tại ổ EBS 1 có thể tiếp tục thay đổi. Hệ quả là dữ liệu của ổ EBS 3 và ổ EBS 8 chỉ giống nhau tại thời điểm ban đầu được tạo từ snapshot, sau đó hoàn toàn khác nhau. Tương tự với việc sao chép snapshot qua Region khác.

Mỗi Instance có thể kết nối với nhiều ổ EBS, nhưng một ổ EBS chỉ có thể kết nối với một Instance (có thể gỡ rồi gán vào Instance khác).

Về cấu tạo vật lý, có thể chia EBS thành hai loại chính: SSD (thường dùng hơn) và HDD. Cùng tìm hiểu kỹ hơn dưới đây.

2.1. EBS SSD

Bạn đọc hẳn đã quen với thuật ngữ ổ cứng thể rắn (SSD). EBS dạng SSD được tối ưu cho các công việc cần đọc/ghi thường xuyên với kích thước khối nhỏ, như đọc/ghi cơ sở dữ liệu. IOPS là thước đo hiệu năng chính. Có hai loại chính:

  • General Purpose SSD (gp2, gp3): như tên gọi, đây là loại EBS dùng cho hầu hết các tác vụ cơ bản, cân bằng giữa chi phí và hiệu năng.
  • Provisioned IOPS SSD (io1, io2 Block Express): là loại EBS hiệu năng cực cao, dùng cho các tác vụ nặng về IOPS và throughput, độ trễ thấp.

2.1.1. gp2

Trước khi gp3 ra mắt, đây là lựa chọn mặc định khi sử dụng EBS. Dung lượng ổ gp2 từ 1 GiB đến 16 TiB, và có hiệu năng IOPS cơ bản (baseline IOPS performance) tăng theo dung lượng ổ như sau:

  • Ổ ≤ 33.33 GiB: được cấp hiệu năng 100 IOPS, tức có thể đọc/ghi 100 khối mỗi giây.
  • Ổ từ 33.33 GiB đến 5334 GiB: cấp 3 IOPS cho mỗi GiB, hiệu năng tối đa 16,000 IOPS cho ổ 5334 GiB.
  • Ổ ≥ 5334 GiB: được cấp hiệu năng 16,000 IOPS cố định.

Ổ gp2 dưới 1000 GiB (có hiệu năng cơ bản dưới 3000 IOPS) có thể burst (tăng hiệu năng đột ngột) lên 3000 IOPS trong một khoảng thời gian ngắn (gọi là burst duration), hữu ích cho những việc như boot hệ điều hành. EBS có cơ chế credit để giám sát thời gian burst. Một ổ có tối đa 5.4 triệu I/O credit, mỗi credit ứng với 1 IOPS trong thời gian burst, đủ dùng trong thời gian \( \frac{5,400,000}{3000} = 1800 \ \text{giây} = 30 \ \text{phút} \). Khi chỉ sử dụng hiệu năng ở mức cơ bản, I/O credit được tích luỹ với tốc độ 3 credit/GiB/s, cho đến khi đạt tối đa 5.4 triệu.

2.1.2. gp3

Đây là loại General Purpose SSD thế hệ mới, chi phí cơ bản thấp hơn và hiệu năng cao hơn gp2. Ổ gp3 có thể từ 1 GiB đến 64 TiB, đặc biệt với hiệu năng cơ bản 3000 IOPS và throughput 125 MiB/s cho mọi kích thước! gp3 có chi phí cơ bản $0.08/GiB/month, thấp hơn 20% so với gp2 ($0.1/GiB-month). Nếu cần thêm hiệu năng, có thể trả thêm để tăng tới 16000 IOPS (1000 MiB/s). Xem thêm so sánh gp2 và gp3 tại đây.

2.1.3. io1

Là dạng EBS SSD dùng cho các tác vụ nặng về I/O, io1 cung cấp hiệu năng cao ở mức ổn định. Ổ io1 từ 4 GiB đến 16 GiB, và nếu dưới 1280 GiB, được cấp hiệu năng tối đa bằng 50 lần kích thước ổ (tính bằng GiB). Ví dụ, ổ io1 100 GiB có thể có hiệu năng tối đa 5000 IOPS. Với ổ trên 1280 GiB, hiệu năng ở mức trần 64000 IOPS, cao hơn 4 lần hiệu năng tối đa của gp2 và gp3.

2.1.4. io2 Block Express

Tại sao lại là io2 Block Express mà không phải là io2? Vì io2 thực chất cũng đã từng tồn tại. Từ tháng 5/2025, tất cả các ổ io2 được chuyển thành io2 Block Express. Kích thước ổ tối đa 64 GiB, hiệu năng tối đa 256,000 IOPS!

2.2. EBS HDD

Ổ EBS cũng có thể là HDD. Rõ ràng, HDD chậm hơn SDD, nên loại ổ này chỉ phù hợp cho các tác vụ cần tối ưu chi phí. Có hai loại:

  • Throughput Optimized HDD (st1): dùng cho dữ liệu truy cập thường xuyên, cần băng thông cao, như Big Data, Data Warehouse, xử lý log. Khác với SSD, hiệu năng của EBS HDD dùng băng thông thay vì IOPS. st1 có băng thông tối đa 500 MB/s.
  • Cold HDD (sc1): dùng cho dữ liệu truy cập ít, rẻ hơn st1. Băng thông tối đa 250 MB/s.

Bạn đọc có thể tìm hiểu thêm tại đây.

3. EBS Snapshot

Như đã thảo luận, một ổ EBS được cô lập trong một AZ, muốn chuyển dữ liệu sang AZ hay Region khác phải dùng snapshot. Cơ chế snapshot như sau:

EBS Snapshot

Nguồn ảnh: AWS Documentation

  • Giả sử ta cố một ổ EBS đang lưu 10 GiB dữ liệu. SnapA là snapshot đầu tiên của ổ, sẽ là snapshot đầy đủ (full snapshot), sao chép lại toàn bộ dữ liệu tại thời điểm lấy snapshot, kích thước SnapA là 10 GiB.
  • Các snapshot tiếp theo của ổ là snapshot gia tăng (incremental snapshot), chỉ chứa các khối dữ liệu mới hoặc đã thay đổi kể từ lần snapshot trước đó. Ví dụ, ở khung hình thứ 2, giả sử 4 GiB dữ liệu được thay đổi, tổng dung lượng đang lưu trữ vẫn là 10 GiB. Lúc này, khi tạo snapshot SnapB, 6 GiB dữ liệu không đổi sẽ được tham chiếu từ SnapA, không tốn thêm dung lượng, còn lại 4 GiB thay đổi sẽ là kích thước của SnapB. Việc tham chiếu này sử dụng địa chỉ khối, cũng như việc xác định phần dữ liệu nào thay đổi cũng chỉ cần xét các khối dữ liệu nào thay đổi, là ưu điểm của Block Storage.
  • Tương tự, ở khung hình 3, ổ EBS lưu thêm 2 GiB dữ liệu, phần còn lại không thay đổi so với trạng thái 2, tổng dung lượng 12 GiB. Lúc này, khi tạo snapshot SnapC, phần không đổi sẽ được tham chiếu từ các snapshot trước đó, tức 6 GiB từ SnapA, 4 GiB từ SnapB, phần gia tăng là 2 GiB, đây cũng là kích thước của SnapC.

Tổng 3 snapshot chỉ chiếm dung lượng 10 + 4 + 2 = 16 GiB. Cơ chế này rõ ràng giúp tiết kiệm dung lượng lưu trữ hơn so với việc mỗi lần tạo một snapshot đầy đủ.

Khi xoá một snapshot, nếu có các snapshot sau tham chiếu đến nó, phần tham chiếu này sẽ được chuyển thành lưu trữ thật đến snapshot kế tiếp. Ví dụ, nếu xoá SnapA, phần tham chiếu 6 GiB ở SnapB sẽ chuyển thành 6 GiB lưu trữ thật, còn 6 GiB tham chiếu ở SnapC sẽ chuyển sang tham chiếu đến 6 GiB ở SnapB vừa tạo. Lúc này, SnapB có dung lượng 10 GiB, còn SnapC vẫn là 2 GiB.

4. Mã hoá Dữ liệu trên EBS

EBS sử dụng KMS để mã hoá dữ liệu, cả khi tạo ổ và snapshot. Tất cả EC2 Instance đều hỗ trợ kết nối với ổ EBS mã hoá, và cũng có thể gán cả các ổ có và không mã hoá vào cùng một Instance.

AWS tiếp tục áp dụng quy trình mã hoá phong bì (envelope encryption) như đã thảo luận trong bài KMS để mã hoá dữ liệu trên ổ EBS, cụ thể như sau:

  • Một KMS Key được sử dụng để tạo ra Khoá Mã hoá Dữ liệu (Data Encryption Key - DEK) cho ổ EBS, mã hoá DEK này rồi lưu bản mã của DEK tại ổ EBS đó. Mỗi ổ EBS sẽ có một DEK riêng. KMS Key có thể là AWS Managed Key dành riêng cho EBS, với alias aws/ebs, hoặc cũng có thể là Customer Managed Key do người dùng quản lý.
  • Khi ổ này được gán cho một EC2 Instance, KMS giải mã DEK của ổ, bản rõ DEK được lưu trong bộ nhớ của EC2 Host chạy Instance đó. DEK này sẽ được sử dụng để mã hoá và giải mã dữ liệu trên ổ EBS. Nhắc lại, các thao tác mã hoá/giải được thực hiện trên EC2 Host, không phải Instance, việc này giúp hiệu năng của Instance không bị ảnh hưởng bởi các thao tác này. Nếu Instance đổi Host (chẳng hạn như khi stop rồi start Instance), bản rõ DEK trong bộ nhớ của Host sẽ bị xoá đi, và KMS sẽ giải mã lại DEK trên ổ rồi lưu vào bộ nhớ của Host mới.
  • Các snapshot được tạo ra cũng được mã hoá bằng chính DEK của ổ.

Nếu cần mã hoá dữ liệu lưu trên EBS, có thể lựa chọn mã hoá khi tạo ổ, hoặc đặt mặc định mã hoá. Nếu có sẵn một ổ EBS chưa mã hoá, không thể trực tiếp mã hoá ổ này, phải tạo snapshot, rồi tạo ổ mới có mã hoá từ snapshot đó. Ngược lại, không thể “tắt” mã hoá một ổ EBS đang sử dụng mã hoá, phải tạo một snapshot mã hoá, sao chép dữ liệu sang một snapshot khác không mã hoá (thao tác này rất phức tạp, vì không thể trực tiếp giải mã dữ liệu), rồi tạo một ổ EBS không mã hoá từ snapshot này.

Tài liệu tham khảo

  1. Các loại ổ EBS
  2. Provisioned IOPS
  3. So sánh gp2 và gp3
  4. EBS HDD
  5. Cách EBS Snapshot hoạt động
  6. Xoá EBS Snapshot

Object Storage và Block Storage đã được giới thiệu. Tiếp theo, hãy tìm hiểu loại lưu trữ còn lại: File Storage.

Nếu có câu hỏi, bạn có thể nhắn mình trên fanpage hoặc group. Cảm ơn bạn.