Ceph FS 使用详解kernel挂载 & ceph-fuse挂载 【十】

ceph Fs即 ceph filesystem,可以实现文件系统共享功能(POSIX 标准),客户端通过 ceph协议挂载并使用 ceph 集群作为数据存储服务器
http://docs.ceph.org.cn/cephfs/

Ceph FS 需要运行 Meta Data Services(MDS)服务,其守护进程为 ceph-mds,ceph-mds进程管理与 cephFS 上存储的文件相关的元数据并协调对 ceph 存储集群的访问。

在 linux 系统使用 ls 等操作査看某个目录下的文件的时候,会有保存在磁盘上的分区表记录文件的名称、创建日期、大小、inode 及存储位置等元数据信息,
在 cephfs 由于数据是被打散为若干个离散的 object 进行分布式存储,因此并没有统一保存文件的元数据,而且将文件的元数据保存到一个单独的存储出 metadata pool
但是客户端并不能直接访问metadata pool 中的元数据信息,而是在读写数的时候有 MDS(metadata server)进行处理。
读数据的时候有 MDS从metadata pool加载元数据然后缓存在内存(用于后期快速响应其它客户端的请求)并返回给客户端,写数据的时候有 MDS 缓存在内存并同步到 metadata pool

#cephfs 的 mds 的数据结构类似于 linux 系统的根形目录结构及 nginx 中的缓存目录分层一样.

部署MDS

#部署MDS服务
Ubuntu :
root@ceph-mgr1:~# apt-cache madison ceph-mds
  ceph-mds | 16.2.15-1focal | https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific focal/main amd64 Packages
  ceph-mds | 15.2.17-0ubuntu0.20.04.6 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-updates/main amd64 Packages
  ceph-mds | 15.2.17-0ubuntu0.20.04.6 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-security/main amd64 Packages
  ceph-mds | 15.2.1-0ubuntu1 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal/main amd64 Packages
root@ceph-mgr1:~# apt install ceph-mds

CentOS:yum install ceph-mds

cephadmin@ceph-deploy:~$ ceph-deploy mds create ceph-mgr1

#创建 CephFS metadata 和 data 存储池:
#使用 CephFS 之前需要事先于集群中创建一个文件系统,并为其分别指定元数据和数据相关的存储池。下面创建一个名为 cephfs 的文件系统用于测试,
#它使用 cephfs-metadata为元数据存储池,使用 cephfs-data 为数据存储池:
cephadmin@ceph-deploy:~$ ceph osd pool create cephfs-metadata 32 32
cephadmin@ceph-deploy:~$ ceph osd pool create cephfs-data 64 64
cephadmin@ceph-deploy:~$ ceph osd pool ls
device_health_metrics
mypool
cephfs-metadata
cephfs-data
rbd-ibm

##创建cephFS 并验证
cephadmin@ceph-deploy:~$ ceph fs new mycephfs cephfs-metadata cephfs-data
cephadmin@ceph-deploy:~$ ceph fs ls
name: mycephfs, metadata pool: cephfs-metadata, data pools: [cephfs-data ]
cephadmin@ceph-deploy:~$ ceph fs status mycephfs
mycephfs - 0 clients
========
RANK  STATE      MDS        ACTIVITY     DNS    INOS   DIRS   CAPS
 0    active  ceph-mgr1  Reqs:    0 /s    14     14     12      0
      POOL         TYPE     USED  AVAIL
cephfs-metadata  metadata   315k  84.3G
  cephfs-data      data     300M  84.3G
MDS version: ceph version 16.2.15 (618f440892089921c3e944a991122ddc44e60516) pacific (stable)

##验证cephFS服务状态
cephadmin@ceph-deploy:~$ ceph mds stat
mycephfs:1 {0=ceph-mgr1=up:active}

##创建客户端账户
cephadmin@ceph-deploy:~$ ceph auth add client.cadzzz mon 'allow r' mds 'allow rw' osd 'allow rwx pool=cephfs-data'
added key for client.cadzzz
cephadmin@ceph-deploy:~$ ceph auth get client.cadzzz
[client.cadzzz]
        key = AQAWq/Jlf+6ZLhAAr6ClV7deNoHCHxNfTZiOmA==
        caps mds = "allow rw"
        caps mon = "allow r"
        caps osd = "allow rwx pool=cephfs-data"
exported keyring for client.cadzzz
cephadmin@ceph-deploy:~$ ceph auth get client.cadzzz -o ceph.client.cadzzz.keyring
exported keyring for client.cadzzz
cephadmin@ceph-deploy:~$ ceph auth print-key client.cadzzz > cadzzz.key
cephadmin@ceph-deploy:~$ cat ceph.client.cadzzz.keyring
[client.cadzzz]
        key = AQAWq/Jlf+6ZLhAAr6ClV7deNoHCHxNfTZiOmA==
        caps mds = "allow rw"
        caps mon = "allow r"
        caps osd = "allow rwx pool=cephfs-data"

##安装ceph客户端
[root@k8s-haproxy02 ~]# yum install epel-release
[root@k8s-haproxy02 ~]# yum install -y https://mirrors.aliyun.com/ceph/rpm-octopus/el7/noarch/ceph-release-1-1.el7.noarch.rpm
[root@k8s-haproxy02 ~]# yum install -y ceph-common
cephadmin@ceph-deploy:~$ scp ceph.conf ceph.client.cadzzz.keyring root@192.168.40.110:/etc/ceph #从部署服务器同步认证文件
#验证客户端权限
[root@k8s-haproxy02 ~]# ceph --user cadzzz -s
  cluster:
    id:     0d8fb726-ee6d-4aaf-aeca-54c68e2584af
    health: HEALTH_WARN
            1 pool(s) do not have an application enabled

  services:
    mon: 3 daemons, quorum ceph-mon1,ceph-mon2,ceph-mon3 (age 29h)
    mgr: ceph-mgr1(active, since 29h), standbys: ceph-mgr2
    mds: 1/1 daemons up
    osd: 9 osds: 9 up (since 29h), 9 in (since 2d)

  data:
    volumes: 1/1 healthy
    pools:   6 pools, 225 pgs
    objects: 136 objects, 268 MiB
    usage:   3.3 GiB used, 267 GiB / 270 GiB avail
    pgs:     225 active+clean

 内核空间挂载ceph-fs

#客户端挂载有两种方式:
一是内核空间
一是用户空间,内核空间挂载需要内核支持 ceph 模块,用户空间挂载需要安装 ceph-fuse

#客户端通过key文件挂载
[root@k8s-haproxy02 ~]# cat /etc/ceph/cadzzz.key
AQAWq/Jlf+6ZLhAAr6ClV7deNoHCHxNfTZiOmA==
[root@k8s-haproxy02 ~]# mount -t ceph 192.168.40.151:6789,192.168.40.152:6789,192.168.40.153:6789:/ /gali -o name=cadzzz,secretfile=/etc/ceph/cadzzz.key
或者
[root@k8s-haproxy02 ~]# mount -t ceph 192.168.40.151:6789,192.168.40.152:6789,192.168.40.153:6789:/ /gali -o name=cadzzz,secret=AQAWq/Jlf+6ZLhAAr6ClV7deNoHCHxNfTZiOmA==

[root@k8s-haproxy02 ~]# df -TH
Filesystem                                                    Type      Size  Used Avail Use% Mounted on
192.168.40.151:6789,192.168.40.152:6789,192.168.40.153:6789:/ ceph       91G  105M   91G   1% /gali #这里有数据之前实验写入过数据的
#验证写入数据
[root@k8s-haproxy02 gali]# cp /etc/passwd /gali/
[root@k8s-haproxy02 gali]# dd if=/dev/zero of=/gali/new-testfile bs=1M count=200
200+0 records in
200+0 records out
209715200 bytes (210 MB) copied, 0.686861 s, 305 MB/s
[root@k8s-haproxy02 gali]# ll
total 307202
-rw-r--r-- 1 root root 104857600 Mar 12 10:19 ceph-fs-testfile
-rw-r--r-- 1 root root 209715200 Mar 14 16:01 new-testfile
-rw-r--r-- 1 root root      1135 Mar 14 16:00 passwd

#开机挂载
[root@k8s-haproxy02 ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Tue Nov 14 17:15:55 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=034dcc55-8298-49c0-b442-4780ff9420ed /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
192.168.40.151:6789,192.168.40.152:6789,192.168.40.153:6789:/ /gali ceph defaults,name=cadzzz,secretfile=/etc/ceph/cadzzz.key,_netdev 0 0

#重启服务 验证是否正常挂载服务
[root@k8s-haproxy02 ~]# reboot
[root@k8s-haproxy02 ~]# df -TH
Filesystem                                                    Type      Size  Used Avail Use% Mounted on
devtmpfs                                                      devtmpfs  1.1G     0  1.1G   0% /dev
tmpfs                                                         tmpfs     1.1G     0  1.1G   0% /dev/shm
tmpfs                                                         tmpfs     1.1G   11M  1.1G   1% /run
tmpfs                                                         tmpfs     1.1G     0  1.1G   0% /sys/fs/cgroup
/dev/mapper/centos-root                                       xfs        19G  3.1G   16G  17% /
/dev/sda1                                                     xfs       1.1G  144M  920M  14% /boot
192.168.40.151:6789,192.168.40.152:6789,192.168.40.153:6789:/ ceph       91G  315M   91G   1% /gali
tmpfs                                                         tmpfs     208M     0  208M   0% /run/user/0
#查看存储情况
#cephfs-data             4   64  300 MiB       76  900 MiB   0.35     84 GiB 因为存了3份 300M*3=900M
cephadmin@ceph-deploy:~$ ceph df
--- RAW STORAGE ---
CLASS     SIZE    AVAIL     USED  RAW USED  %RAW USED
hdd    270 GiB  266 GiB  3.9 GiB   3.9 GiB       1.46
TOTAL  270 GiB  266 GiB  3.9 GiB   3.9 GiB       1.46

--- POOLS ---
POOL                   ID  PGS   STORED  OBJECTS     USED  %USED  MAX AVAIL
device_health_metrics   1    1      0 B        0      0 B      0     84 GiB
mypool                  2   64    628 B        2   12 KiB      0     84 GiB
cephfs-metadata         3   32  102 KiB       23  399 KiB      0     84 GiB
cephfs-data             4   64  300 MiB       76  900 MiB   0.35     84 GiB
rbd-ibm                 6   32  157 MiB       86  446 MiB   0.17     84 GiB
cephfs-metadatat        7   32      0 B        0      0 B      0     84 GiB

#客户端模块
#客户端内核加载ceph.ko 模块挂载cephfs文件系统
[root@k8s-haproxy02 ~]# lsmod | grep ceph
ceph                  363016  1
libceph               306750  1 ceph
dns_resolver           13140  1 libceph
libcrc32c              12644  4 xfs,ip_vs,libceph,nf_conntrack
#description:    Ceph filesystem for Linux
[root@k8s-haproxy02 ~]# modinfo ceph
filename:       /lib/modules/3.10.0-1160.el7.x86_64/kernel/fs/ceph/ceph.ko.xz
license:        GPL
description:    Ceph filesystem for Linux
author:         Patience Warnick <patience@newdream.net>
author:         Yehuda Sadeh <yehuda@hq.newdream.net>
author:         Sage Weil <sage@newdream.net>
alias:          fs-ceph
retpoline:      Y
rhelversion:    7.9
srcversion:     EB765DDC1F7F8219F09D34C
depends:        libceph
intree:         Y
vermagic:       3.10.0-1160.el7.x86_64 SMP mod_unload modversions
signer:         CentOS Linux kernel signing key
sig_key:        E1:FD:B0:E2:A7:E8:61:A1:D1:CA:80:A2:3D:CF:0D:BA:3A:A4:AD:F5
sig_hashalgo:   sha256

 用户空间挂载ceph-fs(ceph-fuse)

#如果内核本较低而没有 ceph 模块,那么可以安装 ceph-fuse 挂载,但是推荐使用内核模块挂载。
##卸载/gali
[root@k8s-haproxy02 ~]# umount /gali


##安装 ceph-fuse:
#可以再一台新的服务器 实验使用之前的
[root@k8s-haproxy02 ~]# yum install epel-release
[root@k8s-haproxy02 ~]# yum install -y https://mirrors.aliyun.com/ceph/rpm-octopus/el7/noarch/ceph-release-1-1.el7.noarch.rpm
[root@k8s-haproxy02 ~]# yum install -y ceph-common
cephadmin@ceph-deploy:~$ scp ceph.conf ceph.client.cadzzz.keyring root@192.168.40.110:/etc/ceph #从部署服务器同步认证文件

#ceph-fuse挂载
[root@k8s-haproxy02 ~]# mkdir /tablo
[root@k8s-haproxy02 ~]# ceph-fuse --name client.cadzzz -m 192.168.40.151:6789,192.168.40.152:6789,192.168.40.153:6789 /tablo
ceph-fuse[2024-03-14T16:25:24.445+0800 7f3ebbc54f40 -1 init, newargv = 0x556cc6270810 newargc=9
1472]: starting ceph client
ceph-fuse[1472]: starting fuse
#可以看到把刚刚的目录重新挂载到了服务器上 
[root@k8s-haproxy02 ~]# df -TH
Filesystem              Type            Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs        1.1G     0  1.1G   0% /dev
tmpfs                   tmpfs           1.1G     0  1.1G   0% /dev/shm
tmpfs                   tmpfs           1.1G   11M  1.1G   1% /run
tmpfs                   tmpfs           1.1G     0  1.1G   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs              19G  3.1G   16G  17% /
/dev/sda1               xfs             1.1G  144M  920M  14% /boot
tmpfs                   tmpfs           208M     0  208M   0% /run/user/0
ceph-fuse               fuse.ceph-fuse   91G  315M   91G   1% /tablo
[root@k8s-haproxy02 ~]# ll /tablo/
total 307202
-rw-r--r-- 1 root root 104857600 Mar 12 10:19 ceph-fs-testfile
-rw-r--r-- 1 root root 209715200 Mar 14 16:01 new-testfile
-rw-r--r-- 1 root root      1135 Mar 14 16:00 passwd
#验证读写
[root@k8s-haproxy02 tablo]# cd  /tablo/
[root@k8s-haproxy02 tablo]# dd if=/dev/zero of=/tablo/tablo-testfile bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.0228906 s, 458 MB/s
[root@k8s-haproxy02 tablo]# ll
total 317442
-rw-r--r-- 1 root root 104857600 Mar 12 10:19 ceph-fs-testfile
-rw-r--r-- 1 root root 209715200 Mar 14 16:01 new-testfile
-rw-r--r-- 1 root root      1135 Mar 14 16:00 passwd
-rw-r--r-- 1 root root  10485760 Mar 14 16:29 tablo-testfile

##开机挂载 指定用户会自动根据用户名称加载授权文件及配置文件ceph.conf
[root@k8s-haproxy02 tablo]# vim /etc/fstab
[root@k8s-haproxy02 tablo]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Tue Nov 14 17:15:55 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=034dcc55-8298-49c0-b442-4780ff9420ed /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
#192.168.40.151:6789,192.168.40.152:6789,192.168.40.153:6789:/ /gali ceph defaults,name=cadzzz,secretfile=/etc/ceph/cadzzz.key,_netdev 0 0
none /tablo fuse.ceph ceph.id=cadzzz,ceph.conf=/etc/ceph/ceph.conf,_netdev,defaults 0 0
[root@k8s-haproxy02 tablo]# cd
[root@k8s-haproxy02 ~]# umount /tablo/
[root@k8s-haproxy02 ~]# mount -a
ceph-fuse[1596]: starting ceph client2024-03-14T16:32:50.086+0800 7ff303219f40 -1 init, newargv = 0x560bf121b5d0 newargc=11

ceph-fuse[1596]: starting fuse
[root@k8s-haproxy02 ~]# df -TH
Filesystem              Type            Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs        1.1G     0  1.1G   0% /dev
tmpfs                   tmpfs           1.1G     0  1.1G   0% /dev/shm
tmpfs                   tmpfs           1.1G   11M  1.1G   1% /run
tmpfs                   tmpfs           1.1G     0  1.1G   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs              19G  3.1G   16G  17% /
/dev/sda1               xfs             1.1G  144M  920M  14% /boot
tmpfs                   tmpfs           208M     0  208M   0% /run/user/0
ceph-fuse               fuse.ceph-fuse   91G     0   91G   0% /tablo

 

posted @ 2024-03-14 16:34  しみずよしだ  阅读(1678)  评论(0)    收藏  举报