Tổng quan các loại storage trong OpenStack
Storage trong OpenStack là một phần quan trọng khi xây dựng hạ tầng cloud, vì nó quyết định cách dữ liệu được lưu, truy cập, mở rộng và bảo vệ trong quá trình vận hành máy ảo. Nếu chỉ nhìn ở mức cơ bản, storage trong OpenStack thường được chia thành 2 nhóm chính: Ephemeral Storage và Persistent Storage.
Tuy nhiên, khi đi vào triển khai thực tế, persistent storage lại có nhiều hình thức khác nhau như Block Storage, Object Storage và File Storage. Mỗi loại phù hợp với một nhu cầu riêng: có loại dùng cho ổ đĩa máy ảo, có loại dùng để lưu file dung lượng lớn, có loại dùng để chia sẻ dữ liệu giữa nhiều instance.
Cùng Bizfly Cloud tìm hiểu rõ hơn về các loại storage trong OpenStack và cách lựa chọn đúng theo từng trường hợp sử dụng.
Storage trong OpenStack là gì?
Storage trong OpenStack là lớp lưu trữ dữ liệu phục vụ cho các thành phần trong hệ thống cloud, bao gồm máy ảo, image hệ điều hành, volume, snapshot, backup, file tĩnh hoặc dữ liệu dùng chung giữa nhiều instance.
Trong OpenStack, storage không chỉ đơn giản là “ổ cứng để lưu dữ liệu”. Tùy vào mục đích sử dụng, dữ liệu có thể được lưu dưới dạng block, object hoặc file. Một số dữ liệu gắn liền với vòng đời của máy ảo, trong khi một số dữ liệu khác cần tồn tại độc lập ngay cả khi instance bị xóa hoặc thay đổi.
Có thể hiểu ngắn gọn như sau:
| Nhóm storage | Đặc điểm chính | Dịch vụ OpenStack thường liên quan |
|---|---|---|
| Ephemeral Storage | Gắn với vòng đời của instance, có thể mất khi xóa VM | Nova |
| Block Storage | Volume độc lập, có thể attach/detach với VM | Cinder |
| Object Storage | Lưu dữ liệu dạng object qua API | Swift |
| File Storage | Chia sẻ file system cho nhiều instance | Manila |
| Image Storage | Quản lý image dùng để tạo máy ảo | Glance |
>> Có thể bạn quan tâm: OpenStack và Kubernetes đồng hành hay cạnh tranh
Ephemeral Storage
Ephemeral Storage là loại lưu trữ tạm thời được gắn trực tiếp với instance. Khi một máy ảo được tạo ra mà không sử dụng volume persistent riêng, phần disk của máy ảo thường tồn tại dưới dạng ephemeral storage.
Điểm quan trọng nhất của Ephemeral Storage là dữ liệu gắn với vòng đời của instance. Khi instance bị xóa, phần dữ liệu trên ephemeral disk cũng có thể bị xóa theo. Vì vậy, loại storage này không phù hợp để lưu dữ liệu quan trọng, dữ liệu sản xuất hoặc dữ liệu cần khôi phục lâu dài.
Ephemeral Storage thường phù hợp với các trường hợp như:
- Hệ điều hành hoặc dữ liệu tạm của instance
- Cache, temporary file, file xử lý trung gian
- Môi trường test, staging hoặc workload có thể tạo lại nhanh
- Ứng dụng stateless không cần giữ dữ liệu trên máy ảo.
Ví dụ, nếu bạn tạo một instance để chạy thử ứng dụng, xử lý tác vụ ngắn hạn hoặc làm môi trường kiểm thử, ephemeral storage có thể là lựa chọn hợp lý. Nhưng nếu instance đó đang chạy database, hệ thống upload file hoặc ứng dụng có dữ liệu người dùng, bạn nên dùng persistent storage.
Persistent Storage
Persistent Storage là nhóm lưu trữ có thể tồn tại độc lập với instance. Điều này có nghĩa là ngay cả khi máy ảo bị tắt, thay đổi hoặc xóa, dữ liệu vẫn có thể được giữ lại nếu được cấu hình đúng.
Trong OpenStack, Persistent Storage thường bao gồm 3 loại chính: Block Storage, Object Storage và File Storage. Đây là phần mà người quản trị hạ tầng cần hiểu kỹ trước khi thiết kế hệ thống, vì mỗi loại có cách truy cập, hiệu năng và mục đích sử dụng khác nhau.
1. Object Storage
Một ví dụ rõ ràng nhất của Object Storage là Amazon S3. Trong OpenStack, triển khai Object Storage sử dụng Swift, 1 trong 3 project cores đầu tiên của OpenStack (bên cạnh Nova và Glance). Người dùng có thể truy cập Object Storage thông qua RESR API. Trong trường hợp cần lưu trữ và quản lý một lượng dữ liệu lớn, Object storage là một lựa chọn hiệu quả. Ví dụ, trong OpenStack thay vì có thể lưu trữ các images (ví dụ file ảnh Ubuntu12.04, Windows7, …) trên File System, có thể sử dụng Object Storage – Swift để lưu trữ. OpenStack Object Storage cung cấp một hệ thống lưu trữ với độ sẵn sàng cao và dễ mở rộng.
2. Block Storage
Block storage (còn được gọi là volume storage) được gán vào các VMs dưới dạng các volumes. Trong OpenStack, Cinder là tên mã phần mềm triển khai Block storage.
Các Volume này là "persistent", nghĩa là các storage volume này có thể gán cho 1 instance, rồi gỡ bỏ (detached) và gán cho 1 instance khác mà vẫn giữ nguyên dữ liệu. Các block storage drivers cho phép instance truy cập trực tiếp đến phần cứng storage của thiết bị thật, việc này giúp tăng hiệu suất đọc/ghi IO.
Hình bên dưới mô tả vị trí và vai trò của 2 loại storage này trong hệ thống OpenStack.

Block Storage trong OpenStack được cung cấp chính thông qua dịch vụ có tên mã là
OpenStack sử dụng Object Storage (Swift) để lưu trữ các hình ảnh và sử dụng Block storage (Cinder) để cấp volumes cho các instances.
>> Có thể bạn quan tâm: OpenStack là gì? Chức năng của Open Stack
File Storage trong OpenStack
Ngoài Block Storage và Object Storage, OpenStack còn có File Storage, thường được triển khai thông qua dịch vụ Manila. Đây là phần bài cũ nên bổ sung, vì nhiều tài liệu hiện nay khi nói về storage trong OpenStack thường nhắc đến cả shared file system.

























