Ceph存储系列(二十) CephFS介绍与部署
1 | 作者:李晓辉 |
Ceph文件系统和MDS
基于文件的存储可以像传统文件系统一样整理你的数据,并带有目录树层次结构。实施 Ceph 文件系统需要一个正在运行的 Ceph 存储集群和至少一台 Ceph 元数据服务器 (MDS) 来管理 CephFS 元数据,并与文件数据分隔开,这样可以降低复杂性并提高可靠性。
文件、块和对象存储
基于文件的存储使用目录树层次结构来组织文件的存储方式,直接提供空间,而无需格式化
基于块的存储提供了一个存储卷,它的操作类似于磁盘设备,组织成大小相同的块,需要格式化使用。
通过基于对象的存储,可将任意数据和元数据作为一个标有唯一标识符的单元存储在扁平存储池中。你会使用 API 来存储和检索数据,而不会作为块或在文件系统层次结构中访问数据。
元数据服务器
元数据服务器 (MDS) 管理 CephFS 客户端的元数据。该守护进程会提供 CephFS 客户端访问 RADOS 对象所需的信息,如提供文件在文件系统中的位置。MDS 负责管理目录层次结构并在 RADOS 集群中存储文件元数据(如所有者、时间戳和权限模式)。
MDS 守护进程以两种模式运行,分别为:活动和备用。活动 MDS 负责管理 CephFS 文件系统上的元数据。备用 MDS 充当备份,并会在活动 MDS 无响应时切换到活动模式。
CephFS 客户端首先会联系 MON 进行身份验证并检索集群映射。然后,客户端会查询活动 MDS 以获取文件元数据。客户端通过直接与 OSD 通信,使用元数据来访问组成所请求文件或目录的对象。
MDS 自动缩放器
CephFS 共享文件系统至少需要一个活动 MDS 服务才能正确运行,还至少需要一个备用 MDS 才能确保高可用性。MDS 自动缩放器模块可确保有足够多的 MDS 守护进程可用。
1 | [root@serverc ~]# ceph mgr module enable mds_autoscaler |
部署CephFS
要实施 CephFS 文件系统,需完成以下步骤
创建所需池
创建 CephFS 文件系统
部署 MDS 守护进程
然后挂载该文件系统。
以上步骤可手工完成每一步,也可使用 ceph fs volume create
命令自动执行所有这些步骤,只是手工操作可以管理细节
使用卷方法创建 CephFS
使用 ceph fs volume
直接创建 CephFS 卷。此命令可创建与 CephFS 关联的池,创建 CephFS 卷,还可在主机上启动 MDS 服务。
1 | [root@serverc ~]# ceph fs volume create lxhfsname --placement='serverc.lab.example.com' |
手工创建CephFS
CephFS 文件系统需要至少两个池,一个用于存储 CephFS 数据,另一个用于存储 CephFS 元数据
1 | [root@serverc ~]# ceph osd pool create fs_data |
创建一个文件系统
1 | [root@serverc ~]# ceph fs new mdsfs fs_metadata fs_data |
部署mds进程
1 | [root@serverc ~]# ceph orch apply mds mdsfs --placement='1 serverc.lab.example.com' |
查看文件系统情况
1 | [root@serverc ~]# ceph fs status |
使用服务规范创建 CephFS
先部署进程,后创建文件系统也可以
1 | service_type: mds |
1 | ceph orch apply -i file-name.yml |
创建一个文件系统
1 | [root@serverc ~]# ceph fs new mdsfs fs_metadata fs_data |
查看文件系统情况
1 | [root@serverc ~]# ceph fs status |
挂载文件系统
可以使用任一可用的客户机挂载CephFS文件系统:
内核客户端:不支持配额,但速度可能较快,仅支持内核版本达到 4 或以上
FUSE客户端:支持配额和 ACL,不要求新内核版本
常见 CephFS 客户端配置
要使用任一客户端挂载基于 CephFS 的文件系统,请验证客户端主机是否满足下列前提条件。
安装
ceph-common
软件包。对于 FUSE 客户端,还要安装ceph-fuse
软件包。验证 Ceph 配置文件是否存在(默认为
/etc/ceph/ceph.conf
)。授权客户端访问 CephFS 文件系统。
使用
ceph auth get
命令提取新的授权密钥,并将其复制到客户端主机上的/etc/ceph
文件夹。以非 root 用户身份使用 FUSE 客户端时,需在
/etc/fuse.conf
配置文件中添加user_allow_other
。
使用FUSE客户端挂载cephfs
先安装fuse客户端
1 | [root@clienta ~]# yum install ceph-fuse -y |
确认配置文件和keyring
1 | [root@clienta ~]# ll /etc/ceph/ |
挂载文件系统
1 | [root@clienta ~]# ceph-fuse -n client.admin --client_fs mdsfs /mnt/ |
永久挂载
1 | [root@clienta ~]# tail -n1 /etc/fstab |
用内核客户端安装CephFS
在客户端节点上安装 ceph-common 软件包
1 | [root@clienta ~]# yum install ceph-common -y |
确认配置文件和keyring
1 | [root@clienta ~]# ll /etc/ceph/ |
挂载文件系统
1 | [root@clienta ~]# mount.ceph serverc.lab.example.com:/ /opt -o name=admin |
永久挂载
1 | [root@clienta ~]# tail -n1 /etc/fstab |
CephFS的访问控制
通过 ceph fs authorize
命令,你可为 CephFS 文件系统中的不同用户和文件夹提供精细的访问控制。你可为 CephFS 文件系统中的文件夹设置不同选项:
r
:对指定文件夹的读取权限。如果未指定其他限制,则会向子文件夹授予读取权限。w
:对指定文件夹的写入权限。如果未指定其他限制,则会向子文件夹授予写入权限。p
:除了r
和w
功能外,客户端还需要p
选项才能使用布局或配额。s
:除了r
和w
功能外,客户端还需要s
选项才能创建快照。
本例允许client.lxh-fs-user读取根文件夹,并提供对 /directory
文件夹的读取、写入和快照权限。
这里会自动创建出用户
1 | [root@serverc ~]# ceph fs authorize mdsfs client.lxh-fs-user / r /directory rws |
删除CephFS
如果需要,可以删除CephFS。但是,首先要备份所有数据,因为删除CephFS文件系统会破坏该文件系统上存储的所有数据。
要删除 CephFS,首先要将其标记为 down
1 | [root@serverc ~]# ceph fs set mdsfs down true |
然后,可以使用下一个命令删除它
1 | [root@serverc ~]# ceph fs rm mdsfs --yes-i-really-mean-it |