Ceph存储之三(部署与使用 CephFS文件存储)-共享的是目录

第一:ceph介绍

组件名 解释
RADOSGW 对象网关守护程序
RADOS 存储集群
Monitor 监视器,RADOS的组件,为何整个ceph集群的全局状态
OSD Object Storage Device,RADOS的组件,用于存储资源,即数据盘(一个磁盘一个OSD进程)
MDS 为ceph文件系统存储元数据,他允许客户机挂载任意大小的posix文件系统,不直接提供任何数据,其他块存储,对象存储不需要这东西
RBD 块存储
CEPHFS 文件存储
LIBRADOS 和RADOS 交互的基本库,librados,ceph通过原生协议和RADOS交互

第二:角色规划

主机名 主机IP 磁盘配比 角色
ceph50 public-ip:192.168.200.50
cluster-ip:192.168.100.50
sda,sdb,sdc,sdd
sda是系统盘,另外三块数据盘
sdb为ssd,sdc,sdd为hdd
ceph-deploy,monitor,mgr,osd
ceph51 public-ip:192.168.200.51
cluster-ip:192.168.100.51
sda,sdb,sdc,sdd
sda是系统盘,另外三块数据盘
sdb为ssd,sdc,sdd为hdd
monitor,mgr,osd
ceph52 public-ip:192.168.200.52
cluster-ip:192.168.100.52
sda,sdb,sdc,sdd
sda是系统盘,另外三块数据盘
sdb为ssd,sdc,sdd为hdd
monitor,mgr,osd

第三:ceph存储集群的搭建-略

第四:部署Ceph文件存储

Ceph文件系统至少需要两个RADOS池,一个用于数据,一个用于元数据

A:CephFS需要用到MDS服务,我们将MDS服务部署在集群所有节点上 (只在 ceph50管理节点上执行)

    su - ceph
    cd ~/my-cluster
    ceph-deploy mds create ceph50 ceph51 ceph52

B:在集群管理节点上,创建cephfs存储pool

#创建数据pool,名字叫cephfs_data
    ceph osd pool create cephfs_data 128
#创建Metadata池,名字叫cephfs_metadata
    ceph osd pool create cephfs_metadata 128
#启用CephFS pool,关联启动
    ceph fs new cephfs cephfs_metadata cephfs_data

C:查看mds,存储池pool,CephFS(在ceph50 管理节点上查看,或者ceph集群的web页面查看)

1、[ceph@ceph50 my-cluster]$ ceph mds stat       #这里你会看到mds中是一个主,两个备
cephfs:1 {0=ceph50=up:active} 2 up:standby

2、[ceph@ceph50 my-cluster]$ ceph osd pool ls
ssdpool
cephfs_data
cephfs_metadata

3、[ceph@ceph50 my-cluster]$ ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

4、[ceph@ceph50 my-cluster]$ ceph -s
  cluster:
    id:     7d14181a-6159-40d6-9728-e1eb2408d73b
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum ceph50,ceph51,ceph52 (age 6h)
    mgr: ceph50(active, since 5w), standbys: ceph52, ceph51
    mds: cephfs:1 {0=ceph50=up:active} 2 up:standby
    osd: 9 osds: 9 up (since 5w), 9 in (since 5w)

  data:
    pools:   3 pools, 384 pgs
    objects: 22 objects, 2.2 KiB
    usage:   9.1 GiB used, 126 GiB / 135 GiB avail
    pgs:     384 active+clean

D:创建用户名为cephfs的用户,并为mon,mds,osd分配权限,并指定pool(可选,因为部署时已经生成了一个admin的key,这里我们新建一个)

在ceph50管理节点上,创建用户cephfs
    su - ceph
    cd ~/my-cluster
    ceph auth get-or-create client.cephfs mon 'allow r' mds 'allow r, allow rw path=/' osd 'allow rw pool=cephfs_data' -o ceph.client.cephfs.keyring

查看内容
    [ceph@ceph50 my-cluster]$ cat ceph.client.cephfs.keyring
    [client.cephfs]
        key = AQApoVJeNB0XOhAA85RBtmHbpptBZ/dEVV9cdA==

在服务器上拷贝到客户端(可以不拷贝到客户机上,客户机挂载时只需使用上面key里面的内容即可)
    scp ceph.client.cephfs.keyring root@234.234.234.234:/etc/ceph

第五:通过内核驱动 和 FUSE客户端两种方式挂载cephfs

A:kernel driver挂载,测试内核方式较 fuse方式速率要快一些

#一般Ceph我们都启用了Ceph 认证所有挂载的时候需要name 和secret ceph.client.cephfs.keyring文件信息
检查cephfs服务器是否开启了认证(在ceph管理服务器上执行,即ceph50),cephx表示开启了认证
    [ceph@ceph50 my-cluster]$ cat /etc/ceph/ceph.conf   | grep auth | grep required
    auth_cluster_required = cephx
    auth_service_required = cephx
    auth_client_required = cephx

获取上一步我们生成的key(在ceph管理服务器上执行,即ceph50)client.后面的是用户名
    [ceph@ceph50 my-cluster]$ cat ceph.client.cephfs.keyring
    [client.cephfs]
        key = AQApoVJeNB0XOhAA85RBtmHbpptBZ/dEVV9cdA==

方式一:在ceph服务端关闭认证的情况如何挂载
    挂载
        mount -t ceph 192.168.200.50:6789:/ /mnt/cephfs

    开机挂载 cat /etc/fstab
        192.168.200.50:6789:/     /mnt/cephfs     ceph   noatime,_netdev    0       2

方式二:在ceph服务端开启认证的情况如何挂载
    将cephfs挂载到/mnt/cephfs目录上
        [root@localhost ~]# mount -t ceph 192.168.200.50:6789:/ /mnt/cephfs -o name=cephfs,secret=AQApoVJeNB0XOhAA85RBtmHbpptBZ/dEVV9cdA==
        [root@localhost ~]# df -h
        Filesystem               Size  Used Avail Use% Mounted on
        /dev/mapper/centos-root  2.6G  2.2G  399M  85% /
        devtmpfs                 233M     0  233M   0% /dev
        tmpfs                    244M     0  244M   0% /dev/shm
        tmpfs                    244M   29M  216M  12% /run
        tmpfs                    244M     0  244M   0% /sys/fs/cgroup
        /dev/sda1               1014M  159M  856M  16% /boot
        tmpfs                     49M     0   49M   0% /run/user/0
        192.168.200.50:6789:/     40G     0   40G   0% /mnt/cephfs

    如何设置开机挂载cephfs,可以设置挂载多个主机,防止一个挂了影响使用(cat /etc/fstab)
        192.168.200.51:6789,192.168.200.50:6789:/     /mnt/cephfs    ceph    name=cephfs,secret=AQApoVJeNB0XOhAA85RBtmHbpptBZ/dEVV9cdA==,noatime,_netdev 0 2

        或者将echo "AQApoVJeNB0XOhAA85RBtmHbpptBZ/dEVV9cdA==" >>/etc/cephfskey #抱歉我没搞成功
        有人说是bug,可以看看这篇文章 https://bugzilla.redhat.com/show_bug.cgi?id=1030402   但是我也见人搞成功过,现就这样吧不用这种文件的方式
        192.168.200.50:6789:/     /mnt/cephfs    ceph    name=cephfs,secretfile=/etc/cephfskey,noatime,_netdev    0 2

B:fuse挂载,这种适用于内核低于2.6.34的

    在客户端机器上,配置nautilus版本的软件源
echo '#阿里ceph源
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/
gpgcheck=0
[ceph-source]
name=ceph-source
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS/
gpgcheck=0
#'>/etc/yum.repos.d/ceph.repo

    安装软件
        yum install ceph-fuse -y

    把ceph 服务器上生成的cephfskey复制到客户端
        [root@localhost ~]# cat ceph.client.cephfs.keyring 
        [client.cephfs]
            key = AQApoVJeNB0XOhAA85RBtmHbpptBZ/dEVV9cdA==

    挂载
        [root@localhost ~]# ceph-fuse --keyring /root/ceph.client.cephfs.keyring --name client.cephfs -m 192.168.200.50:6789 /mnt/cephfs/
        2020-02-24 19:14:08.116667 7efed9c23f00 -1 did not load config file, using default settings.
        ceph-fuse[5504]: starting ceph client
        2020-02-24 19:14:08.152631 7efed9c23f00 -1 init, newargv = 0x56257ca8a720 newargc=11
        ceph-fuse[5504]: starting fuse

    不指定key文件挂载(默认回去/etc/ceph/目录下找 对应的用户名key文件)
        [root@localhost ceph]# pwd
        /etc/ceph

        [root@localhost ceph]# ls
        ceph.client.cephfs.keyring  ceph.conf

        [root@localhost ceph]# ceph-fuse -m 192.168.200.50:6789 /mnt/cephfs/ --name client.cephfs
        ceph-fuse[5962]: starting ceph client
        2020-02-24 20:17:47.815047 7f32de5a8f00 -1 init, newargv = 0x5562b19447e0 newargc=11
        ceph-fuse[5962]: starting fuse

    开机挂载(在客户机上把ceph的服务器地址写进去,以及上面的key文件)
        [root@localhost ceph]# cat /etc/ceph/ceph.client.cephfs.keyring 
        [client.cephfs]
            key = AQApoVJeNB0XOhAA85RBtmHbpptBZ/dEVV9cdA==

        [root@localhost ceph]# cat /etc/ceph/ceph.conf 
        mon_host = 192.168.200.50,192.168.200.51,192.168.200.52

        #id=cephfs是用户名,fuse.ceph是固定写法
        echo "id=cephfs /mnt/cephfs fuse.ceph  _netdev,defaults  0 0" >> /etc/fstab

C:windows挂载软件

    https://github.com/ksingh7/ceph-cookbook/tree/master/ceph-dokan

第六:将cephfs导出为nfs,以满足无法直接使用ceph的客户端对ceph存储的使用 ,用不到就不弄了

    具体可以 参考这篇文章:https://www.jianshu.com/p/6b68c1a57268
声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/184.html
谢谢你请我吃辣条谢谢你请我吃辣条

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2023/5/7作者: 辣条①号

现在在做什么? 接下来打算做什么? 你的目标什么? 期限还有多少? 进度如何? 不负遇见,不谈亏欠!

暂无评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???

文章目录