1. Tạo Pools.
Trong CephFS (Ceph File System), Ceph sử dụng một cấu trúc lưu trữ dữ liệu phân tán để tổ chức và quản lý các file và thư mục. CephFS chia dữ liệu thành hai phần chính: pool metadata và pool data.
- Pool metadata: Đây là một pool (nhóm) dữ liệu trong CephFS, được sử dụng để lưu trữ các siêu dữ liệu (metadata) liên quan đến hệ thống file. Siêu dữ liệu bao gồm thông tin về các file và thư mục, như tên, kích thước, quyền truy cập, thời gian tạo và thay đổi, và các thuộc tính khác. Pool metadata cũng chứa các thông tin về cấu trúc thư mục của CephFS.
- Pool data: Đây là một pool dữ liệu khác trong CephFS, được sử dụng để lưu trữ nội dung thực tế của các file và thư mục. Dữ liệu trong pool này được phân tán trên nhiều OSD (Object Storage Devices) để đảm bảo khả năng chịu lỗi và hiệu suất cao. Mỗi OSD sẽ chứa một phần dữ liệu của pool data, và CephFS sẽ tự động đồng bộ và phân phối dữ liệu giữa các OSD.
Bằng cách phân tách dữ liệu thành hai pool metadata và pool data, CephFS cung cấp khả năng mở rộng, hiệu suất cao và khả năng chịu lỗi. Pool metadata chủ yếu tập trung vào quản lý siêu dữ liệu và cấu trúc thư mục, trong khi pool data chứa dữ liệu thực tế của các file và thư mục.
Ví dụ, để tạo hai pool với các thiết lập mặc định để sử dụng với File System, bạn có thể chạy các lệnh sau:
ceph osd pool create cephfs_data
ceph osd pool create cephfs_metadata
Trong CephFS, pool metadata thường chứa một lượng dữ liệu tương đối nhỏ, thường chỉ vài gigabyte. Vì lý do này, thường khuyến nghị sử dụng một số PG (Placement Group) nhỏ hơn. Trong thực tế, 64 hoặc 128 PG thường được sử dụng cho các cụm lớn.
Để hiểu lý do sau đây, chúng ta cần hiểu PG là gì. Trong hệ thống Ceph, dữ liệu được chia thành các đơn vị gọi là PGs. Mỗi PG chứa một phần của dữ liệu và được định vị trên các OSDs (Object Storage Devices). Số lượng PG ảnh hưởng đến cách dữ liệu được phân phối và xử lý bởi hệ thống.
Khi chúng ta có một cluster lớn với một lượng lớn pool metadata, việc sử dụng một số lượng PG lớn có thể dẫn đến hiệu suất không tốt. Vì pool metadata chứa thông tin quan trọng về cấu trúc thư mục và siêu dữ liệu của hệ thống, việc xử lý và duyệt dữ liệu trong pool này có thể trở nên chậm chạp nếu số lượng PG quá lớn.
Do đó, trong trường hợp các cụm lớn, chúng ta thường khuyến nghị sử dụng một số lượng PG nhỏ hơn, như 64 hoặc 128. Bằng cách giảm số lượng PG, hệ thống CephFS có thể quản lý pool metadata hiệu quả hơn và cải thiện hiệu suất truy cập dữ liệu.
Tuy nhiên, việc xác định số lượng PG phù hợp cần dựa trên yêu cầu và quy mô cụm của bạn. Nếu bạn có một cụm nhỏ hơn hoặc yêu cầu cao về hiệu suất, bạn có thể xem xét sử dụng số lượng PG lớn hơn. Việc điều chỉnh số lượng PG cần phải được thực hiện cẩn thận và thử nghiệm để đảm bảo hiệu suất và khả năng mở rộng của hệ thống.
2. Tạo một Filesystem.
Lệnh để tạo có dạng như sau:
ceph fs new <fs_name> <metadata> <data> [--force] [--allow-dangerous-metadata-overlay] [<fscid:int>] [--recover]
Đây là một câu lệnh trong Ceph để tạo một hệ thống file CephFS mới. Dưới đây là giải thích về các tùy chọn và tác dụng của từng đối số trong câu lệnh:
<fs_name>
: Tên của hệ thống tệp tin CephFS mới sẽ được tạo.<metadata>
: Tên của pool metadata mà CephFS sẽ sử dụng để lưu trữ các siêu dữ liệu (metadata) liên quan đến hệ thống tệp tin.<data>
: Tên của pool data mà CephFS sẽ sử dụng để lưu trữ nội dung thực tế của các file và thư mục.--force
: Một tùy chọn tùy chọn, cho phép ghi đè lên hệ thống file CephFS hiện có nếu nó đã tồn tại. Nếu không sử dụng tùy chọn này, câu lệnh sẽ báo lỗi nếu hệ thống file đã tồn tại.--allow-dangerous-metadata-overlay
: Một tùy chọn cho phép ghi đè lên pool metadata hiện có nếu nó đã tồn tại. Điều này có thể làm mất một số dữ liệu quan trọng. Tùy chọn này chỉ nên được sử dụng nếu bạn đã chắc chắn về những gì đang làm.<fscid:int>
: Tùy chọn tùy chọn, cho phép bạn chỉ định ID của hệ thống file CephFS. Nếu không được cung cấp, một ID mới sẽ được tạo tự động.--recover
: Một tùy chọn tùy chọn, cho phép khôi phục một hệ thống file CephFS từ trạng thái lỗi. Tùy chọn này chỉ nên được sử dụng trong trường hợp cần thiết khi hệ thống file bị hỏng hoặc gặp sự cố.
Câu lệnh trên sẽ tạo một hệ thống CephFS mới với các pool metadata và pool data đã được chỉ định. Các tùy chọn cho phép bạn kiểm soát việc ghi đè lên hệ thống file hiện có, cho phép ghi đè lên các pool metadata hiện có và cho phép khôi phục từ trạng thái lỗi. Tùy chọn <fscid:int>
cho phép bạn chỉ định ID của hệ thống file, nhưng nếu không cung cấp, một ID mới sẽ được tạo tự động.
Ví dụ:
$ ceph fs new cephfs cephfs_metadata cephfs_data
$ ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
Bạn có thể sử dụng các lệnh sau để xem tình trạng và thông tin về pool:
- Xem thông tin tổng quan về các pool:
ceph osd pool stats
- Xem thông tin chi tiết về một pool cụ thể:
ceph osd pool stats <pool_name>
- Xem thông tin về việc đọc/ghi trên pool:
ceph osd pool stats <pool_name> --format json-pretty
.
Bạn có thể xem dung lượng của một pool trong Ceph bằng cách sử dụng lệnh ceph df
. Dưới đây là cách sử dụng lệnh này:
$ ceph df
--- RAW STORAGE ---
CLASS SIZE AVAIL USED RAW USED %RAW USED
ssd 15 TiB 15 TiB 218 GiB 218 GiB 1.43
TOTAL 15 TiB 15 TiB 218 GiB 218 GiB 1.43
--- POOLS ---
POOL ID PGS STORED OBJECTS USED %USED MAX AVAIL
ceph-vm 23 32 67 GiB 18.21k 200 GiB 1.39 4.6 TiB
ceph-ct 24 32 2.0 GiB 736 4.3 GiB 0.03 4.6 TiB
device_health_metrics 28 1 4.2 MiB 20 13 MiB 0 4.6 TiB
cephfs_data 36 32 0 B 0 0 B 0 4.6 TiB
cephfs_metadata 37 32 0 B 0 0 B 0 4.6 TiB
Lệnh trên sẽ hiển thị thông tin tổng quan về dung lượng của các pool trong cụm Ceph, bao gồm:
- Tổng dung lượng: Tổng dung lượng sử dụng và tổng dung lượng khả dụng trên cụm Ceph.
- Dung lượng pool: Dung lượng sử dụng và dung lượng khả dụng của mỗi pool trong cụm.
- Số lượng đối tượng: Số lượng đối tượng hiện có trên cụm Ceph và số lượng đối tượng trong từng pool.
- Kích thước đối tượng: Kích thước trung bình của các đối tượng trong cụm Ceph và kích thước đối tượng trung bình trong từng pool.
Thông tin này sẽ giúp bạn xem dung lượng của các pool trong cụm Ceph mà không cần mount CephFS.
Khi một hệ thống filesystem đã được tạo, (các) MDS của bạn sẽ có thể chuyển sang trạng thái hoạt động. Ví dụ trong một hệ thống MDS duy nhất.
$ ceph mds stat
cephfs-1/1/1 up {0=a=up:active}
3. Xoá CephFS.
Trước khi bạn có thể xóa pool dữ liệu, bạn cần chắc chắn rằng pool đó không còn được sử dụng bởi bất kỳ hệ thống tệp tin CephFS nào.
Để giải quyết vấn đề này, bạn cần thực hiện các bước sau:
- Đảm bảo rằng không có hệ thống tệp tin CephFS nào đang sử dụng pool dữ liệu mà bạn muốn xóa. Bạn có thể sử dụng lệnh
ceph fs ls
để liệt kê các hệ thống tệp tin hiện có và xác định xem poolcephfs_data
đang được sử dụng bởi hệ thống tệp tin nào.
$ ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
- Nếu pool dữ liệu
cephfs_data
đang được sử dụng bởi hệ thống tệp tin CephFS, bạn cần gỡ bỏ hệ thống tệp tin đó trước khi xóa pool. Bạn có thể sử dụng lệnhceph fs rm <fs_name>
để gỡ bỏ một hệ thống tệp tin CephFS.
$ ceph fs rm cephfs
Error EPERM: this is a DESTRUCTIVE operation and will make data in your filesystem permanently inaccessible. Add --yes-i-really-mean-it if you are sure you wish to continue.
Nếu bạn gặp lỗi EPERM (EPERM: Operation not permitted), nó xuất hiện khi bạn cố gắng thực hiện một hoạt động có tính chất phá hủy và có thể làm cho dữ liệu trong hệ thống tệp tin không thể truy cập được vĩnh viễn. Để tiếp tục thực hiện hoạt động này, bạn cần thêm tùy chọn “–yes-i-really-mean-it” để xác nhận rằng bạn thực sự muốn tiếp tục.
Tùy chọn “–yes-i-really-mean-it” được sử dụng để đảm bảo rằng người dùng đã suy nghĩ kỹ trước khi thực hiện một hoạt động có tính chất phá hủy. Khi bạn thêm tùy chọn này vào lệnh của mình, bạn phải chắc chắn rằng bạn đã hiểu rõ hậu quả của hoạt động và sẵn sàng chấp nhận mất dữ liệu không thể phục hồi.
Ví dụ, nếu bạn muốn xóa pool dữ liệu bằng lệnh “ceph osd pool delete”, bạn cần thêm “–yes-i-really-mean-it” vào cuối lệnh để xác nhận ý định của mình. Lệnh sẽ trở thành “ceph osd pool delete <pool_name> <pool_name> –yes-i-really-mean-it”.
Lưu ý quan trọng: Việc sử dụng tùy chọn “–yes-i-really-mean-it” là một hành động có tính chất phá hủy và không thể hoàn tác. Hãy chắc chắn rằng bạn đã sao lưu và kiểm tra lại dữ liệu quan trọng trước khi tiếp tục và chỉ sử dụng tùy chọn này nếu bạn chắc chắn về hậu quả của việc làm mất dữ liệu.
ceph fs rm cephfs --yes-i-really-mean-it
Nếu không xuất hiện thông báo gì tức là bạn đã xoá thành công.
Còn nếu bạn gặp thông báo như dưới.
$ ceph fs rm cephfs --yes-i-really-mean-it
Error EINVAL: all MDS daemons must be inactive/failed before removing filesystem. See `ceph fs fail`.
Hãy tiếp tục xử lý theo cách sau bằng cách sử dụng lệnh ceph fs fail
để đánh dấu tất cả các daemon MDS hiện đang hoạt động như là không hoạt động/failed trước khi tiến hành xóa.
ceph fs fail cephfs
Kiểm tra xem tất cả các daemon MDS đã ở trạng thái không hoạt động/failed bằng cách chạy lệnh sau:
$ ceph fs status
cephfs - 0 clients
======
RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS
0 failed
POOL TYPE USED AVAIL
cephfs_metadata metadata 211k 4615G
cephfs_data data 0 4615G
STANDBY MDS
mds2
mds3
mds1
MDS version: ceph version 16.2.13 (b81a1d7f978c8d41cf452da7af14e190542d2ee2) pacific (stable)
Kết quả sẽ cho biết trạng thái của hệ thống tệp cephfs. Hãy đảm bảo rằng tất cả các daemon MDS đã được đánh dấu là không hoạt động/failed.
Sau khi xác nhận rằng tất cả các daemon MDS đã ở trạng thái không hoạt động/failed, bạn có thể tiến hành xóa hệ thống tệp cephfs bằng lệnh ceph fs rm cephfs --yes-i-really-mean-it
.
- Sau khi gỡ bỏ hệ thống tệp tin, bạn có thể thử lại lệnh xóa pool dữ liệu
ceph osd pool delete cephfs_data cephfs_data --yes-i-really-really-mean-it
để xóa pool. Đảm bảo rằng bạn đã thay thếcephfs_data
bằng tên thực tế của pool dữ liệu bạn muốn xóa.
$ ceph osd pool delete cephfs_data cephfs_data --yes-i-really-really-mean-it
pool 'cephfs_data' removed
$ ceph osd pool delete cephfs_metadata cephfs_metadata --yes-i-really-really-mean-it
pool 'cephfs_metadata' removed
Bạn có thể xem lại danh sách pools đã xoá thành công chưa bằng lệnh.
$ ceph osd lspools
23 ceph-vm
24 ceph-ct
28 device_health_metrics
Lưu ý rằng việc xóa pool dữ liệu có thể làm mất dữ liệu trong pool đó. Vì vậy, hãy đảm bảo rằng bạn đã sao lưu dữ liệu quan trọng trước khi thực hiện bất kỳ thay đổi nào.