Giải pháp lưu trữ dữ liệu Ceph

//

Giải pháp lưu trữ dữ liệu Ceph

Ceph là gì?

Ceph là một dự án mã nguồn mở về giải pháp data storage. Ceph là hệ thống lưu trữ phân tán mạnh mẽ, dễ mở rộng, hiệu năng cao, khả năng chịu lỗi cao.

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

Hiện nay, các nền tảng hạ tầng đám mây public, private, hybird cloud dần trở nên phổ biến và to lớn. Ceph trở thành giải pháp nổi bật cho các vấn đề đang gặp phải trong lưu trữ dữ liệu khổng lồ

Ceph

Điểm nổi bật của Ceph

Ceph storage system là giải pháp nổi bật cho vấn đề tăng trưởng dữ liệu toàn cầu. Với các đặc điểm nổi bật như tính thống nhất, phân phối, chí phí đầu tư hợp lý, tiềm năng cho hiên tại và tương lai. Được tích hợp với kernel, đây là đặc điểm kiến Ceph vượt trội hơn các giải pháp storage hiện tại.

  • Khả năng mở rộng tất cả thành phần
  • Tính chịu lỗi cao
  • Giải pháp dựa trên phần mềm, hoàn toàn mở, tính thích nghi cao
  • Chạy tương thích với mọi phần cứng

Ceph xây dựng kiến trúc mạnh mẽ, tính mở rộng cao, hiệu năng cao, nền tảng mạnh mẽ cho doanh nghiệp, giảm bớt sự phụ thuộc vào phần cứng đắt tiền.

Ứng dụng thực tiễn của Ceph

– Sử dụng thay thế lưu trữ trên ổ đĩa server thông thường.
– Sử dụng để backup, lưu trữ an toàn.
– Sử dụng để thực hiện triển khai các dịch vụ High Avaibility khác như Load Balancing for Web Server, DataBase Replication…
– Xây dựng Storage giải quyết bài toán lưu trữ cho dịch vụ Cloud hoặc phát triển lên Cloud Storage (Data as a Service).

Các hệ thống lưu trữ của Ceph

Hệ thống lưu trữ Ceph có thể được sử dụng với các mục đích khác nhau và cung cấp nhiều hình thức lưu trữ 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), Ceph FileSystem, hoặc cho bất kỳ mục đích nào liên quan đến lưu trữ.

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

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

3. 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 vấn đề cần quan tâm 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.

Các vấn đề cần quan tâm khi triển khai 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.

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.

Leave a Comment