带你读《存储漫谈:Ceph原理与实践》——3.3.2 CephFS 访问方式

简介: 带你读《存储漫谈:Ceph原理与实践》——3.3.2 CephFS 访问方式

3.3.2  CephFS 访问方式


1. CephFS 接入整体介绍

CephFS 接入主要分为两类:第一类是通过 POSIX 兼容的自定义客户端接入,主要方式为采用 CephFS 内核客户端及 CephFS FUSE(Filesystem in Userspace)客户端挂载;第二类是通用的标准网络文件协议(如 NFS、SMB),通过和已有开源组件结合的方式来提供接入,如 NFS-Ganesha 及 Samba 等。通过以上方式接入 CephFS 后,用户可以像操作本地文件系统一样来操作存储在 Ceph 集群上的树状结构目录与文件数据。特别地,CephFS 提供 Windows 专有客户端(非 SAMBA),具体使用及分析可以参考 ceph-dokan 在 github 上的项目。


2. CephFS 客户端接入(Kernel/Fuse)

本节主要介绍 CephFS 私有客户端的接入方式。CephFS 有两种私有客户端,分别为内核态 Kernel 形式的私有客户端与用户态 Fuse 形式的私有客户端。以下简单介绍CephFS 的部署与挂载。

(1)CephFS 部署

CephFS 系统至少需要两个 RADOS 池,一个用于数据,另一个用于元数据,见图 3-35。由于元数据多为随机存储,建议使用随机性能好的 SSD 盘作为元数据存储池,从而得到更好的元数据性能水平。

具体部署步骤如下。

 启动 MDS 服务
# ceph-deploy mds create <cephfs-master>
# 创建数据 Pool
# ceph osd pool create cephfs_data 128
# 创建元数据 Pool
# ceph osd pool create cephfs_metadata 128
# 创建并展示 fs 状态
# ceph fs new cephfs cephfs_metadata cephfs_data
# ceph fs ls
# ceph mds stat

image.png

图 3-35 CephFS 集群架构示意

(2)CephFS 挂载(不启用 CephX)

挂载准备

在挂载前,需要确保客户端节点有一份 Ceph 配置文件并确保配置文件有权限。

# mkdir -p -m 755 /etc/ceph
# ssh <user>@<mon-host> "sudo ceph confifig generate-minimal-conf" | sudo tee /
etc/ceph/ceph.conf
# chmod 644 /etc/ceph/ceph.conf

Kernel 挂载

CephFS 的 Kernel 挂载方式依赖于 CephFS Kernel Driver,一般已集成在高版本内核中,是一个挂载方便、性能较高的接入方式。可以通过如下命令检查当前内核是否支持CephFS Kernel Driver。

# 检查内核是否支持 CephFS Kernel Driver
# stat /sbin/mount.ceph

如已支持 Kernel Driver,则具体挂载步骤操作如下。

# 本地创建挂载点
# mkdir /mnt/Cephfs
# 使用 linux 命令 mount、umount 进行挂载、卸载
# mount -t ceph <mon-host>:<mon-port>:/ <mount_point>

如需要设置操作系统启动时自动挂载 CephFS,在客户端节点的 /etc/fstab 文件中加入挂载行即可,挂载系统为 Ceph。

Fuse 挂载

如当前客户端系统未加载 CephFS Kernel Driver,可以使用用户态客户端 ceph-fuse进行挂载。

# 安装 ceph-fuse 客户端软件
# yum install ceph-fuse
# 使用 ceph-fuse 命令挂载
# ceph-fuse -m <mon-host>:<mon-port> /mnt/Cephfs
# 使用 umount 命令卸载
# umount /mnt/cephfs

如需要设置操作系统启动时自动挂载 ceph-fuse,可在客户端节点的 /etc/fstab 文件中加入以下行。

none  /mnt/mycephfs fuse.ceph defaults 0 0

(3)CephX 认证挂载

如已启用 CephX 鉴权机制,则需要为客户端生成 Key。此处假设创建新用户 cephfs,并允许用户访问 CephFS 池。

# 在 Ceph 集群上执行命令创建 cephfs 用户
# ceph auth get-or-create client.cephfs mon 'allow *' mds 'allow *' mgr 
'allow *' osd 'allow *' -o /etc/ceph/ceph.client.admin.keyring
# 在客户端获得 client.cephfs 密钥
# ceph auth get-key client.cephfs > /etc/ceph/cephfskey
# 执行挂载命令(以 Kernel Driver 方式为例)
# mount -t ceph <mon-host>:<mon-port>:/ <mount_point> -o 
name=cephfssecretfifile=/etc/ceph/cephfskey

3. CephFS NFS/Samba 接入(lib 库访问)

CephFS 提供了一套 lib 库(libcephfs),NFS-Ganesha、Samba 等多个开源项目已经集成 libcephfs,从而使得 CephFS 集群可以通过 NFS、SMB 协议提供文件存储服务。详情可见 NFS-Ganesha、Samba 等各开源组件介绍,图 3-36 ~图 3-38 分别为 Kernel 客户端接入方式与 NFS-Ganesha、Samba 接入方式的架构示意图,便于读者比较理解。

image.png

图 3-36 Kernel 客户端架构示意

image.png

图 3-37 NFS-Ganesha 接入架构示意

image.png

图 3-38 Samba 接入架构示意

相关文章
|
9月前
|
存储 弹性计算 并行计算
在高性能计算(HPC)场景下,阿里云存储的文件存储产品的实践
在高性能计算(HPC)场景下,阿里云存储的文件存储产品具有以下的应用需求和实践
313 4
|
11月前
|
存储 容灾 负载均衡
带你读《存储漫谈:Ceph原理与实践》——3.3.1 MDS 设计原理
带你读《存储漫谈:Ceph原理与实践》——3.3.1 MDS 设计原理
|
11月前
|
存储 缓存 块存储
带你读《存储漫谈:Ceph原理与实践》——3.3.3 CephFS 高级特性
带你读《存储漫谈:Ceph原理与实践》——3.3.3 CephFS 高级特性
|
11月前
|
存储 缓存 关系型数据库
带你读《存储漫谈:Ceph原理与实践》——3.3.4 未来展望
带你读《存储漫谈:Ceph原理与实践》——3.3.4 未来展望
|
11月前
|
存储 固态存储 大数据
「存储架构」块存储、文件存储和对象存储(第1节)
「存储架构」块存储、文件存储和对象存储(第1节)
|
存储 API 文件存储
Android 文件存储-图片存储
因 Android1 1谷歌禁止使用requestLegacyExternalStorage ,故将存储方式分为两种方式来进行文件存储。 存储你的应用打算与其他应用共享的文件,包括媒体、文档和其他文件。在这里咱们将图片保存至图库(共享文件)。
146 0
Android 文件存储-图片存储
|
存储 缓存 关系型数据库
带你读《存储漫谈Ceph原理与实践》第三章接入层3.3.文件存储 CephFS(四)
带你读《存储漫谈Ceph原理与实践》第三章接入层3.3.文件存储 CephFS
|
存储 缓存 算法
带你读《存储漫谈Ceph原理与实践》第三章接入层3.3.文件存储 CephFS(三)
《存储漫谈Ceph原理与实践》第三章接入层3.3.文件存储 CephFS
|
存储 Linux 网络安全
带你读《存储漫谈Ceph原理与实践》第三章接入层3.3.文件存储 CephFS(二)
《存储漫谈Ceph原理与实践》第三章接入层3.3.文件存储 CephFS
带你读《存储漫谈Ceph原理与实践》第三章接入层3.3.文件存储 CephFS(二)
|
8月前
|
存储 弹性计算 监控