06 CephFS文件存储

参考链接:<https://docs.ceph.com/docs/master/install/ceph-deploy/quick-cephfs/>;shell

1 CephFS介绍

1.1 CephFS概念

​ Ceph File System (CephFS) 是与 POSIX 标准兼容的文件系统, 可以提供对 Ceph 存储集群上的文件访问.Jewel 版本 (10.2.0) 是第一个包含稳定 CephFS 的 Ceph 版本. vim

​ CephFS 须要至少一个元数据服务器 (Metadata Server - MDS) daemon (ceph-mds) 运行, MDS daemon 管理着与存储在 CephFS 上的文件相关的元数据, 而且协调着对 Ceph 存储系统的访问。centos

06 CephFS文件存储

1.2 CephFS架构

底层是核心集群所依赖的, 包括:安全

  • OSDs (ceph-osd): CephFS 的数据和元数据就存储在 OSDs 上
  • MDS (ceph-mds): Metadata Servers, 管理着 CephFS 的元数据
  • Mons (ceph-mon): Monitors 管理着集群 Map 的主副本 Ceph 存储集群的协议层是 Ceph 原生的 librados 库, 与核心集群交互.

06 CephFS文件存储

​ CephFS 库层包括 CephFS 库 libcephfs, 工做在 librados 的顶层, 表明着 Ceph 文件系统.最上层是可以访问 Ceph 文件系统的两类客户端.服务器

1.3 适用场景

  • 共享目录(在多个服务器之间共享目录)
  • 分布式工做流

2 CephFS配置

2.1 配置CephFS MDS

​ 要使用 CephFS, 至少就须要一个 metadata server 进程。能够手动建立一个 MDS, 也可使用 ceph-deploy 或者 ceph-ansible 来部署 MDS。架构

1)安装MDS分布式

登录到cephuser的工做目录ide

# 能够指定多个hostname组成集群
[cephuser@cephmanager01 cephcluster]$ ceph-deploy mds create cephmanager01 cephmanager02 cephmanager03
# 各个节点确认进程是否依据启动
[cephuser@cephmanager01 cephcluster]$ sudo ps -aux |grep mds
# 查看mds状态
[cephuser@cephmanager01 cephcluster]$ sudo ceph mds stat
# 确认个节点日志是否有错
[cephuser@cephmanager01 cephcluster]$ sudo tail -100f /var/log/ceph/ceph-mds.cephmanager01.log

06 CephFS文件存储

注意:因为没有文件系统,全部三个mds均是standy状态性能

2.2 部署CephFS

1)CephFS 须要两个 Pools - cephfs-data 和 cephfs-metadata, 分别存储文件数据和文件元数据测试

[cephuser@cephmanager01 cephcluster]$ sudo ceph osd pool create cephfs-data 16 16
[cephuser@cephmanager01 cephcluster]$ sudo ceph osd pool create cephfs-metadata 16 16
#查看pool信息,确实是否建立成功
[cephuser@cephmanager01 cephcluster]$ sudo ceph osd lspools

​ 注:通常 metadata pool 能够从相对较少的 PGs 启动, 以后能够根据须要增长 PGs. 由于 metadata pool 存储着 CephFS 文件的元数据, 为了保证安全, 最好有较多的副本数. 为了能有较低的延迟, 能够考虑将 metadata 存储在 SSDs 上.

2)建立一个 CephFS, 名字为 cephfs:

[cephuser@cephmanager01 cephcluster]$ sudo ceph fs new cephfs cephfs-metadata cephfs-data
#查看确认
[cephuser@cephmanager01 cephcluster]$ sudo ceph fs ls

3)验证至少有一个 MDS 已经进入 Active 状态

[cephuser@cephmanager01 cephcluster]$ sudo ceph fs status cephfs
[cephuser@cephmanager01 cephcluster]$ sudo ceph -s

06 CephFS文件存储

2.3 建立认证用户

1)建立一个用户,用于访问CephFS

[cephuser@cephmanager01 cephcluster]$ sudo ceph auth get-or-create client.cephfs mon 'allow r' mds 'allow rw' osd 'allow rw pool=cephfs-data, allow rw pool=cephfs-metadata'

2) 验证key是否生效

[cephuser@cephmanager01 cephcluster]$ sudo ceph auth get client.cephfs

3 CephFS使用

3.1以 kernel client 形式挂载 CephFS

确保在Linux内核2.6.34和之后的版本中

1)建立挂载点

[root@localhost ~]# mkdir /cephfs

2) 挂载目录

# 若是有多个mon,能够列出多个,以","隔开
[root@localhost ~]# mount -t ceph 192.168.10.51:6789:/ /cephfs/ -o name=cephfs,secret=AQDB7f5eZ9bpDxAA65iULAt2OARmKJXwwLc8GQ==

备注:centos7及以上版本支持目录类型ceph

3) 验证是否挂载成功

[root@localhost ~]# df -h
#挂载空间的大小登录全部ceph剩余空间的大小,能够经过ceph df确认
[root@localhost ~]# stat -f /cephfs

4)查看加载内核状况

[root@localhost ~]# lsmod |grep ceph

06 CephFS文件存储

5) 设置自动挂载

[root@localhost ~]# echo "ceph 192.168.10.51:6789:/ /cephfs ceph name=cephfs,secretfile=/etc/ecph/cephfskey,_netdev,noatime 0 0" >> /etc/fstab

3.2以 FUSE client 形式挂载 CephFS

采用内核的形式挂载性能相对较高,对于内核不知足要求的,能够采用FUSE

1)建立挂载点

[root@localhost ceph]# mkdir /ceph-fuse

2)安装ceph-common和ceph-fuse

[root@localhost ~]# yum install -y ceph-common
[root@localhost ~]# yum install -y ceph-fuse

3)将服务器端集群的ceph.conf和拷贝到客户端(这样就把客户端和集群关联起来了)

[root@cephmanager01 cephcluster]# scp ceph.conf root@192.168.10.57:/etc/ceph/

4)编辑认证文件

将服务器端ceph auth get client.cephfs的内容复制到客户端/etc/ceph/ceph.client.cephfs.keyring,并删掉exported keyring for client.cephfs

[root@localhost ceph]# vim /etc/ceph/ceph.client.cephfs.keyring

[client.cephfs]
        key = AQDB7f5eZ9bpDxAA65iULAt2OARmKJXwwLc8GQ==
        caps mds = "allow rw"
        caps mon = "allow r"
        caps osd = "allow rw pool=cephfs-data, allow rw pool=cephfs-metadata"

5) 使用 ceph-fuse 挂载 CephFS

# 指定了多个mon,认证应用认证文件(注意权限和ceph.conf一致)
[root@localhost ceph]# ceph-fuse --keyring  /etc/ceph/ceph.client.cephfs.keyring  --name client.cephfs -m 192.168.10.51:6789,192.168.10.72:6789,192.168.10.75:6789  /ceph-fuse

6) 验证 CephFS 已经成功挂载

[root@localhost ceph]# stat -f /ceph-fuse
[root@localhost ceph]# df -h

06 CephFS文件存储
7)写入文件进行测试

[root@localhost ceph-fuse]# echo "hello world" > /ceph-fuse/fuse.txt
[root@localhost ceph-fuse]# cat /ceph-fuse/fuse.txt

8) 自动挂载

[root@localhost ceph-fuse]# echo "id=cephfs,keyring=/etc/ceph/ceph.client.cephfs.keyring /ceph-fuse fuse.ceph defaults 0 0 _netdev" >> /etc/fstab

9) 卸载

[root@localhost ~]# fusermount -u /ceph-fuse/
相关文章
相关标签/搜索