Giải pháp lưu trữ dữ liệu nguồn mở CEPH là gì?

Giai phap CEPH và các ứng dụng hiện nay

CEPH là gì?

CEPH là một nền tảng phần mềm cho hệ thống lưu trữ miễn phí (free software storage platform), là một giải pháp mã nguồn mở cho phép xây dựng hạ tầng lưu trữ dữ liệu phân tán, ổn định, độ tin cậy và hiệu năng cao, dễ dàng mở rộng trong tương lai.

Với hệ thống lưu trữ được điều khiển bằng phần mềm (software defined), Ceph cung cấp giải pháp lưu trữ theo đối tượng (Object), khối (Block) và tệp dữ liệu (File) trong cùng một nền tảng. Ceph chạy trên nền tảng điện toán đám mây, hỗ trợ đa dạng các loại nền tảng phần cứng mới nhất, dễ dàng sử dụng với nhân Linux và tối ưu chi phí triển khai.

CEPH được sử dụng để thay thế việc lưu trữ dữ liệu trên các máy chủ, sao lưu dữ liệu, tạo ra một khu vực lưu trữ dữ liệu an toàn, cho phép triển khai các dịch vụ HA (high availability).

Các loại hình lưu trữ của CEPH

Ceph được sử dụng với các mục đích lưu trữ khác nhau dưới nhiều hình thức như Ceph Object Storage, Ceph Block Storage – 2 hình thức lưu trữ này thường thấy trong các nền tảng điện toán đám mây (ví dụ OpenStack) và Ceph FileSystem.

Ceph Object Storage (Hệ thống lưu trữ đối tượng của Ceph)

Ceph cung cấp khả năng truy cập liên tục tới các Object bằng cách sử dụng ngôn ngữ bản địa: binding hoặc radosgw, giao diện REST tương thích với các ứng dụng được viết cho S3 và Swift.

Thư viện phần mềm của Ceph cung cấp các ứng dụng cho khách hàng với khả năng truy cập trực tiếp tới hệ thống lưu trữ dựa trên RADOS Object và cung cấp một nền tảng cho một số tính năng cao cấp của Ceph, bao gồm RADOS Block Device (RBD), RADOS Gateway và Ceph File System.

Ceph Block Storage (Hệ thống lưu trữ khối dữ liệu của Ceph)

RADOS Block Device (RBD) cung cấp truy cập tới trạng thái “block device images”, được đồng bộ hóa và sao chép trên toàn bộ storage cluster.

Hệ thống lưu trữ Object của Ceph không giới hạn native binding hoặc RESTful APIs. Người dùng có thể mount Ceph như một lớp cung ứng mỏng Block Device. Khi người dùng viết dữ liệu trên Ceph bằng cách sử dụng Block Device, Ceph tự động hóa đồng bộ và tạo bản sao dữ liệu trên Cluster, RADOS Block Device (RBD) của Ceph cũng tích hợp với Kernel Virtual Machine (KVM), mang lại việc lưu trữ ảo hóa không giới hạn tới KVM chạy trên Ceph client của người dùng.

Ceph File System (Hệ thống lưu trữ file dữ liệu của Ceph)

Ceph cung cấp một POSIX-compliant network file system, nhằm mang lại hiệu suất cao, lưu trữ dữ liệu lớn và tương thích tối đa với các ứng dụng hiện tại.

Object storage system của Ceph cung cấp một số tính năng vượt trội hơn so với nhiều hệ thống lưu trữ Object hiện nay: Ceph cung cấp giao diện File System truyền thống với POSIX. Object storage system là một cải tiến đáng kể, nhưng chúng vẫn còn phải thực hiện nhiều hơn so với các File System truyền thống.

Khi các yêu cầu về lưu trữ tăng lên cho các ứng dụng hiện tại, tổ chức cỏ thể cấu hình các ứng dụng hiện tại để sử dụng Ceph File System. Có nghĩa là người dùng có thể chạy một Storage Cluster cho Object, Block và lưu trữ dữ liệu dựa trên File.

Các thành phần khi triển khai CEPH

Điểm chung trong việc triển khai Ceph đều bắt đầu từ việc xây dựng các Ceph node, kết nối hệ thống mạng và xây dựng cụm lưu trữ Ceph Storage Cluster. Một Ceph storage cluster cần ít nhất 1 Ceph Monitor và 2 Ceph OSD Daemons. Ngoài ra, Ceph metadata server chỉ cần thiết khi trong hệ thống có Ceph Filesystem clients.

Ceph

Ceph OSDs: 

Ceph OSD daemon (Ceph OSD) lưu trữ data, xử lý việc đồng bộ dữ liệu, recovery, rebalancing và cung cấp thông tin liên quan đến monitoring đến cho Ceph monitoring bằng cách kiểm tra các Ceph OSD daemons khác thông qua heartbeat. Một ceph storage cluster cần ít nhất 2 ceph OSD daemons để hướng tới trạng thái active + clean, lúc này hệ thống sẽ có 02 bản copy của data (default của Ceph là 3 bản).

Monitors: 

ceph monitor sẽ theo dõi trạng thái của cluster, bao gồm việc theo dõi các monitor map, OSD map, placement group (PG) map, và CRUSH map. Ceph lưu thông tin lịch sử (trong ceph gọi là “epoch” của mỗi trạng thái thay đổi của Ceph Monitors, Ceph OSD Daemons, và PGs.

MDSs: 

một Ceph Metadata Server (MDS) lưu trữ thông tin về metadata của hệ thống Ceph FileSystem (ceph block device và object storage không sử dụng MDS).

Ceph lưu trữ dữ liệu của client dưới dạng các objects trong các pool lưu trữ. Ceph sử dụng thuật toán CRUSH, trong đó Ceph sẽ tính toán placement group nào sẽ lưu trữ object, và tính toán Ceph OSD Daemon nào sẽ lưu trữ placement group. CRUSH algorithm cho phép Ceph Storage cluster khả năng mở rộng, tự cân bằng (rebalance), và recovery tự động.

Phần cứng

Ceph được thiết kế để chạy trên các nền tảng phần cứng thông thường, với quan điểm thiết kế các hệ thống lưu trữ – mở rộng đến hàng petabyte nhưng với chi phí rẻ, hợp lý. Khi xây dựng hệ thống Ceph, cần lưu ý khuyến cáo xây dựng một hệ thống Ceph riêng, chỉ phục vụ cho vấn đề lưu trữ, để cung cấp dịch vụ lưu trữ cho các hệ thống khác sử dụng.

CPU

Ceph MDS cần nhiều CPU hơn các thành phần khác trong hệ thống, khuyến cáo sử dụng quad core hoặc CPU tốt hơn. Ceph OSDs chạy RADOS service, tính toán data placement với thuật toán CRUSH, đồng bộ dữ liệu, và duy trì bản copy của cluster map. Vì vậy, OSDs cũng cần 1 lượng CPU nhất định, khuyến nghị sử dụng dual core processors. Monitor hoạt động không cần nhiều CPU. Cần lưu ý trong trường hợp máy chủ chạy dịch vụ tính toán trên các OSD, ví dụ mô hình hoạt động của OpenStack – kết hợp giữa compute node và storage node, cần thiết kế CPU để bảo đảm đủ năng lực dành riêng cho Ceph daemons. Khuyến cáo nên tách riêng các chức năng để bảo đảm hoạt động.

RAM

Metadata servers và monitors hoạt động liên tục để phục vụ cho dữ liệu, vì vậy cần số lượng RAM kha khá, thông thường 1Gb RAM cho mỗi instance daemon. OSD không cần nhiều RAM cho các hoạt động của nó, thông thường vào khoảng 500Mb cho mỗi instance daemon. Tuy nhiên, trong quá trình recovery sẽ cần nhiều RAM, thường 1Gb cho mỗi 1Tb lưu trữ trên mỗi daemon. Nhìn chung, càng nhiều RAM càng tốt, nhất là khi RAM là tài nguyên rẻ nhất hiện nay đối với máy tính, máy chủ.

Data Storage

Đây là yếu tố quan trọng nhất, cần cân nhắc thật kỹ giữa vấn đề chi phí và năng lực hệ thống.

HDD: 

OSDs cần nhiều đĩa cho việc lưu trữ data. Khuyến cáo sử dụng các đĩa cứng từ 1Tb trở lên. Cần quan tâm đến cách tính chi phí cho mỗi 1Gb lưu trữ. Ví dụ xài các đĩa cứng 1Tb ($75) thì chi phí ra sao ($0.07/1Gb) so với xài 1 đĩa cứng 3Tb ($150) thì chi phí như thế nào ($0.05/1Gb). Tuy nhiên, cần lưu ý khi dung lượng lưu trữ lớn, Ceph OSD Daemon cần thêm RAM, đặc biệt trong quá trình rebalancing, backfilling, và recovery. Khuyến cáo: 1Gb RAM cho 1 Tb không gian lưu trữ.

Các điểm quan trọng cần lưu ý khi triển khai đó là cần tách biệt các disk cho HĐH (OS) với các Ceph OSD Daemon, tránh việc chạy chung nhiều Ceph OSD daemon trên 1 disk, cũng như tránh chạy Ceph OSD trên MDS hay monitoring trên cùng 1 disk. Ngoài ra, OS, OSD Data, và OSD Journals nên được đặt trên các disk khác nhau, trong đó Journals sử dụng các đĩa cứng SSD để tăng tốc độ truy xuất dữ liệu cho các node lưu trữ OSD.

Việc thiết kế, sử dụng các đĩa cứng trong hệ thống CEPH thực tế như thế nào tùy thuộc vào nhu cầu của từng hệ thống, tôi sẽ đưa ra cũng như phân tích 1 số case-study thực tế của việc sử dụng các tài nguyên cho hệ thống CEPH ở các series bài viết sau.

Giai phap luu tru CEPH Theo Cungdocsach.vn