Tổng quan các loại storage trong OpenStack

2097
04-09-2026
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ínhDịch vụ OpenStack thường liên quan
Ephemeral StorageGắn với vòng đời của instance, có thể mất khi xóa VMNova
Block StorageVolume độc lập, có thể attach/detach với VMCinder
Object StorageLưu dữ liệu dạng object qua APISwift
File StorageChia sẻ file system cho nhiều instanceManila
Image StorageQuản lý image dùng để tạo máy ảoGlance



>> 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.

Tổng quan các loại storage trong OpenStack - Ảnh 1.

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.

File Storage cho phép nhiều instance cùng truy cập một hệ thống file dùng chung, thường thông qua các giao thức như NFS hoặc SMB tùy backend triển khai. Loại storage này phù hợp khi nhiều máy ảo cần đọc/ghi vào cùng một vùng dữ liệu.

File Storage thường được dùng trong các trường hợp:

  • Nhiều web server cần dùng chung thư mục upload
  • Ứng dụng cần shared file system giữa các instance
  • Hệ thống phân tích dữ liệu cần nhiều node truy cập cùng một tập file
  • Môi trường doanh nghiệp cần chia sẻ dữ liệu theo mô hình file truyền thống

Ví dụ, nếu bạn có nhiều instance web chạy sau load balancer và tất cả đều cần truy cập cùng thư mục chứa ảnh upload từ người dùng, File Storage có thể là lựa chọn phù hợp hơn so với việc lưu file cục bộ trên từng instance.

Tuy nhiên, không phải mọi hệ thống OpenStack đều bật sẵn Manila. Việc có dùng được File Storage hay không còn phụ thuộc vào cách nhà cung cấp cloud hoặc đội vận hành triển khai hạ tầng bên dưới.

Glance có phải là một loại storage trong OpenStack không?

Glance là dịch vụ quản lý image trong OpenStack, thường được dùng để lưu và cung cấp image hệ điều hành khi tạo instance. Ví dụ, khi người dùng tạo máy ảo Ubuntu, CentOS hoặc Windows Server, image đó thường được quản lý qua Glance.

Tuy nhiên, Glance không nên được hiểu là một “loại storage” giống như Block Storage, Object Storage hay File Storage. Đúng hơn, Glance là Image Service. Dữ liệu image mà Glance quản lý có thể được lưu trên nhiều backend khác nhau như file system, Swift, Ceph hoặc backend lưu trữ khác tùy cấu hình.

Vì vậy, khi tối ưu bài viết về các loại storage trong OpenStack, có thể nhắc đến Glance để người đọc hiểu bức tranh tổng thể, nhưng không nên xếp Glance ngang hàng với Cinder, Swift và Manila về mặt loại hình lưu trữ.

So sánh các loại storage trong OpenStack

Trước khi lựa chọn storage cho hệ thống OpenStack, cần hiểu rõ mỗi loại lưu trữ phục vụ một mục đích khác nhau. Bảng dưới đây giúp so sánh nhanh Ephemeral Storage, Block Storage, Object Storage và File Storage theo vòng đời dữ liệu, cách truy cập và trường hợp sử dụng phù hợp.

Tiêu chíEphemeral StorageBlock StorageObject StorageFile Storage
Dịch vụ liên quanNovaCinderSwiftManila
Vòng đời dữ liệuGắn với instanceĐộc lập với instanceĐộc lập với instanceĐộc lập với instance
Cách truy cậpDisk của VMVolume attach vào VMAPIMount file system
Phù hợp vớiDữ liệu tạm, test, cacheDatabase, app data, boot volumeBackup, ảnh, video, log, file tĩnhDữ liệu dùng chung giữa nhiều VM
Có thể attach/detachKhông theo nghĩa volume độc lậpKhôngMount cho nhiều instance tùy cấu hình
Rủi ro cần lưu ýDễ mất khi xóa instanceCần backup/snapshot phù hợpKhông thay thế database diskPhụ thuộc backend và cấu hình chia sẻ

Nên chọn loại storage nào trong OpenStack?

Việc chọn storage trong OpenStack nên dựa trên bản chất dữ liệu và cách ứng dụng truy cập dữ liệu. Không có loại storage nào tốt nhất cho mọi trường hợp.

  • Nếu dữ liệu chỉ tồn tại tạm thời và có thể tạo lại, Ephemeral Storage là đủ
  • Nếu dữ liệu cần gắn với máy ảo, cần hiệu năng đọc/ghi ổn định hoặc dùng cho database, nên chọn Block Storage với Cinder
  • Nếu cần lưu file dung lượng lớn, backup, log, ảnh hoặc video, Object Storage với Swift sẽ phù hợp hơn
  • Nếu nhiều instance cần dùng chung một hệ thống file, File Storage với Manila là lựa chọn đáng cân nhắc

Với doanh nghiệp đang xây dựng hệ thống cloud hoặc vận hành ứng dụng trên hạ tầng ảo hóa, việc phân tách đúng loại storage ngay từ đầu sẽ giúp giảm rủi ro mất dữ liệu, tối ưu chi phí lưu trữ và thuận tiện hơn khi mở rộng hệ thống. Nếu cần triển khai hạ tầng cloud server, lưu trữ hoặc backup theo nhu cầu thực tế, doanh nghiệp có thể tham khảo các giải pháp từ Bizfly Cloud để được tư vấn mô hình phù hợp.

Một số lưu ý khi sử dụng storage trong OpenStack

Trước khi triển khai storage trong OpenStack, đội kỹ thuật nên làm rõ dữ liệu nào là dữ liệu tạm, dữ liệu nào cần lưu lâu dài và dữ liệu nào cần chia sẻ giữa nhiều instance. Không nên lưu database hoặc dữ liệu quan trọng trên ephemeral disk nếu chưa có cơ chế backup rõ ràng. 

  • Với Cinder volume, cần thiết lập snapshot hoặc backup định kỳ tùy mức độ quan trọng của hệ thống
  • Với Object Storage, cần thiết kế cách phân quyền, lifecycle và quản lý metadata hợp lý
  • Với File Storage, cần kiểm tra kỹ hiệu năng, quyền truy cập và khả năng tương thích với ứng dụng.

Một thiết kế storage tốt không chỉ giúp hệ thống chạy ổn định hơn mà còn giúp quá trình khôi phục, mở rộng và bảo trì dễ kiểm soát hơn.

FAQ về các loại storage trong OpenStack

OpenStack có mấy loại storage chính?

Nếu xét theo vòng đời dữ liệu, OpenStack có Ephemeral Storage và Persistent Storage. Nếu xét theo cách truy cập, các loại phổ biến gồm Block Storage, Object Storage và File Storage.

Ephemeral Storage có bị mất dữ liệu không?

Có thể. Ephemeral Storage thường gắn với vòng đời của instance, nên dữ liệu có thể bị xóa khi instance bị terminate. Không nên dùng loại storage này cho dữ liệu quan trọng.

Block Storage trong OpenStack dùng để làm gì?

Block Storage, thường được triển khai qua Cinder, dùng để tạo volume gắn vào máy ảo. Loại này phù hợp với database, dữ liệu ứng dụng, boot volume hoặc workload cần hiệu năng đọc/ghi ổn định.

Object Storage khác Block Storage thế nào?

Object Storage lưu dữ liệu dưới dạng object và truy cập qua API, phù hợp với file tĩnh, backup, log, ảnh, video. Block Storage hoạt động như ổ đĩa gắn vào máy ảo, phù hợp với database và dữ liệu cần truy cập theo block.

Manila trong OpenStack là gì?

Manila là dịch vụ Shared File Systems trong OpenStack, cho phép cung cấp file storage dùng chung cho nhiều instance. Dịch vụ này thường phù hợp với các ứng dụng cần chia sẻ dữ liệu qua file system.

Glance có phải là storage không?

Glance là dịch vụ quản lý image trong OpenStack, không phải một loại storage độc lập như Cinder, Swift hay Manila. Tuy nhiên, Glance có thể sử dụng các backend lưu trữ khác nhau để lưu image.

Kết luận

Các loại storage trong OpenStack nên được hiểu theo cả vòng đời dữ liệu và cách dữ liệu được truy cập. Ephemeral Storage phù hợp với dữ liệu tạm, Cinder phù hợp với volume và database, Swift phù hợp với object và file dung lượng lớn, còn Manila phù hợp với file system dùng chung. Khi chọn đúng loại storage ngay từ đầu, hệ thống OpenStack sẽ dễ vận hành, dễ mở rộng và an toàn hơn cho dữ liệu quan trọng.

TAGS: openstack
SHARE