1. Tổng quan.
CephFS FUSE (Filesystem in Userspace) là một phương pháp để gắn kết (mount) Ceph File System (CephFS) vào hệ thống tệp tin của máy tính thông qua giao diện người dùng không gian nhân (userspace). CephFS là hệ thống tệp tin phân tán được cung cấp bởi Ceph, một nền tảng lưu trữ phân tán mã nguồn mở.
Khi sử dụng CephFS FUSE, bạn có thể truy cập và quản lý dữ liệu trong CephFS như một hệ thống tệp tin thông thường trên máy tính của bạn. CephFS FUSE sử dụng giao thức Ceph để giao tiếp với cluster Ceph và thực hiện các hoạt động như đọc, ghi, xóa và thay đổi tệp tin và thư mục trong CephFS.
Ưu điểm của việc sử dụng CephFS FUSE bao gồm:
- Truy cập dữ liệu trong CephFS từ bất kỳ máy tính nào có CephFS FUSE được cài đặt.
- Tương thích với các ứng dụng và công cụ làm việc với hệ thống tệp tin tiêu chuẩn.
- Cho phép quản lý dữ liệu trong CephFS một cách thuận tiện và linh hoạt.
Tuy nhiên, việc sử dụng CephFS FUSE có thể có hiệu suất thấp hơn so với việc sử dụng các giao thức truy cập trực tiếp như CephFS kernel mount hoặc Ceph Object Gateway. Điều này do CephFS FUSE hoạt động trong không gian người dùng và có thêm một lớp trung gian giữa ứng dụng và CephFS.
Tóm lại, CephFS FUSE cung cấp khả năng gắn kết CephFS vào hệ thống tệp tin của máy tính thông qua giao diện người dùng không gian nhân, giúp bạn truy cập và quản lý dữ liệu trong CephFS một cách thuận tiện và linh hoạt.
2. Thực hành.
2.1. Quy trình mount CephFS.
Đầu tiên bạn hãy cài Ceph Fuse trước.
apt install ceph-fuse -y
Bạn có thể verify phiên bản của Ceph-fuse
$ ceph-fuse --version
ceph version 16.2.13 (b81a1d7f978c8d41cf452da7af14e190542d2ee2) pacific (stable)
Copy file cấu hình ceph.conf và file keyring sang client.
scp /etc/ceph/ceph.conf root@<ipaddr_domain_client>:/etc/ceph/
scp /etc/ceph/ceph.client.admin.keyring root@<ipaddr_domain_client>:/etc/ceph/
Để mount CephFS bằng FUSE, bạn có thể sử dụng lệnh ceph-fuse
. Dưới đây là một số lệnh và tùy chọn để mount và unmount CephFS bằng FUSE:
Tạo thư mục để mount CephFS:
mkdir /mnt/cephfs
Sử dụng lệnh ceph-fuse --id <ceph_user> /mnt/cephfs
để mount CephFS:
$ ceph-fuse --id admin /mnt/cephfs
2023-06-06T21:52:05.226+0700 7f1bd0ff1200 -1 init, newargv = 0x564403966bd0 newargc=15
ceph-fuse[1980917]: starting ceph client
ceph-fuse[1980917]: starting fuse
Trong đó, admin
là tên người dùng CephX và /mnt/cephfs
là thư mục mục tiêu để mount CephFS.
Nếu keyring không nằm trong đường dẫn mặc định, bạn có thể truyền đường dẫn tới keyring:
$ ceph-fuse --id admin -k /etc/ceph/ceph.client.admin.keyring /mnt/cephfs
2023-06-06T21:55:12.548+0700 7ff2ebffa200 -1 init, newargv = 0x55f6587babb0 newargc=15
ceph-fuse[1983134]: starting ceph client
ceph-fuse[1983134]: starting fuse
Bạn có thể chỉ định địa chỉ IP và cổng của MON (Monitor) nếu cần:
$ ceph-fuse --id admin -m 192.168.13.225:6789 /mnt/cephfs
2023-06-06T21:57:08.902+0700 7f382fb22200 -1 init, newargv = 0x557b5b96c3f0 newargc=15ceph-fuse[1984344]: starting ceph client
ceph-fuse[1984344]: starting fuse
Kết quả sau khi mount thành công nhé.
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 126G 0 126G 0% /dev
tmpfs tmpfs 26G 2.0M 26G 1% /run
/dev/mapper/pve-root ext4 65G 22G 40G 36% /
tmpfs tmpfs 126G 85M 126G 1% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 vfat 1022M 344K 1022M 1% /boot/efi
/dev/fuse fuse 128M 36K 128M 1% /etc/pve
tmpfs tmpfs 26G 0 26G 0% /run/user/0
192.168.13.225:6789:/ ceph 4.6T 0 4.6T 0% /mnt
/dev/rbd0 ext4 49G 851M 46G 2% /mnt/rbd
ceph-fuse fuse.ceph-fuse 4.6T 0 4.6T 0% /mnt/cephfs
2.2. Huỷ CephFS.
Để unmount CephFS, đầu tiên bạn hãy umount phân vùng đã mount, bạn có thể sử dụng lệnh umount
:
umount /mnt/cephfs
Lưu ý: Đảm bảo rằng bạn không đang ở bên trong các thư mục của hệ thống tệp trước khi thực hiện lệnh này.
Tiếp theo bạn hãy xoá bỏ CephFS đã tạo bằng lệnh ceph fs rm <cephfs_name> --yes-i-really-mean-it
. Nếu bạn gặp lỗi dưới thì hãy xem bài này https://wiki.hoanghd.com/loi-mds-daemons-must-be-inactive-failed-before-removing-filesystem-khi-xoa-cephfs/ để xử lý lỗ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`.
Tiếp theo bạn gỡ 2 pools chứa metadata và data là xong.
$ 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