目录

​CephFS简介​

​CephFS客户端​

​内核客户端​

​FUSE客户端​

​Rank​

​设置Rank数量​

​减少Rank数量​

​Rank状态查看​

​高可用配置​

​CephFS管理命令​

​文件系统相关​

​设置相关​

​最大文件大小和性能​

​down掉集群​

​快速关闭群集以进行删除或灾难恢复​

​守护进程​

​最低客户端版本​

​全局设置​

​高级用法​


CephFS简介

CephFS作为Ceph集群最早原生支持的客户端,但成熟的最晚,而最成熟的还是RBD。要想在集中中可以使用CephFS客户端,需要创建至少一个metadata Pool,该Pool用来管理元数据信息,并向客户端输出 一个倒置树状的层级结构,这里面存放了真实数据的对应关系,相当于一个索引。而还需要创建至少1个Data Pool用来存储真正的数据。

CephFS客户端

在开始使用CephFS之前需要创建CephFS接口,参考《​​集群部署之创建CephFS​​》。

Ceph支持两种类型的客户端,一种是基于内核模块ceph.ko,这种需要客户端安装ceph-common程序包,并在/etc/ceph/目录下有ceph.conf集群配置文件和用于认证的密钥文件。

另外一种客户端为FUSE客户端,当有些操作系统无法使用ceph.ko内核的时候就可以使用此客户端连接。要求需要安装ceph-fuse程序软件,该客户端也需要从从/etc/ceph目录加载ceph集群配置文件和keyring文件进行连接。

关于如何授权这里也不做过多介绍,参考《​​认证与授权​​》,本案例所使用授权如下。

[client.cephfs]
key = AQCoKNVcATH5FxAAQ3m90iGjtLvsTtiKEFGl7g==
caps mds = "allow *"
caps mon = "allow r"
caps osd = "allow * pool=cehpfs-metadata, allow * pool=cehpfs-data"

授权命令如下。

~]$ ceph auth add client.cephfs mds "allow *" mon "allow r" osd "allow * pool=cehpfs-metadata, allow * pool=cehpfs-data"

需要指定对源数据存储池和实际数据存储池都有权限。

内核客户端

安装ceph-common软件包,复制集群配置文件和用户keyring文件至目标节点/etc/ceph目录。

命令行挂载

~]# mount -t ceph 192.168.6.126:6789,192.168.6.127:6789,192.168.6.128:6789:/ /mnt -o name=cephfs,secretfile=/etc/ceph/cephfs.key

  • -t:指定使用ceph协议,接着后面指定mon节点的访问IP与端口,可以指定多个,使用逗号分隔,默认端口为6789。最后使用 / 代表要挂载根目录,挂载到本地的/mnt目录。
  • -o:指定挂载的选项,name为用户名,这里的用户为用户ID,不可使用用户标识。secretfile指定该用户的Key,可以指定Key文件路径,也可以直接指定Key字符串。

注意:cephfs.key文件内只能包含用户的Key。

挂载成功后在客户端节点使用下面命令可以查看挂载的信息。

~]# stat -f /mnt

通过fstab客户端挂载

在/etc/fstab文件内写下如面格式的内容即可。

192.168.6.126:6789,192.168.6.127:6789,192.168.6.128:6789:/  /mnt  ceph  name=cephfs,secretfile=/etc/ceph/cephfs.key,_netdev,noatime 0 0

卸载

~]# umount /mnt

FUSE客户端

安装ceph-fuse软件包,复制集群配置文件和用户keyring文件至目标节点/etc/ceph目录。

命令行挂载

~]# ceph-fuse -n client.cephfs -m 192.168.6.126:6789,192.168.6.127:6789,192.168.6.128:6789 /mnt/

  • -n:指定用户标识。
  • -m:指定monitor节点信息,之后再指定挂载的目标 。

通过fatab文件挂载

在/etc/fstab文件内写下如面格式的内容即可。

none    /mnt    fuse.ceph       ceph.id=cephfs,ceph.conf=/etc/ceph/ceph.conf,_netdev,noatime 0 0

ceph.id需要为用户的ID,而不是用户标识。

卸载

~]# fusermount /mnt/

Rank

在MDS集群中每一个MDS进程由一个Rank进行管理,Rank数量由max_mds参数配置,默认为1。每个Rank都有一个编号。编号从0开始。

rank有三种状态:


  • up:代表 Rank已经由某个MDS守护进程接管。
  • failed:代表未被接管。
  • damaged:代表损坏,元数据丢失或崩溃,可以使用命令ceph mds repaired修复,在未被修复之前Rank不会被分配给任何守护进程。

如果要对MDS进程做高可用,就可以启动多个MDS,然后设置多个Rank,这时候每个MDS就会关联至对应的Rank来实现高用。通常MDS的数量为Rank数量的两倍,这样可以保证任何一个Rank出现问题(Rank出现问题也就相当于MDS出现问题)有另外的MDS进程马上进行替换。

设置Rank数量

~]$ ceph fs set cephfs max_mds 2

减少Rank数量

减少Rank数量就也使用max_mds参数设置,设置的数量小于当前数量就相当于减少。如果Rank数减少需要手动关闭被停止的Rank,可以使用命令ceph fs status查看减少后被停止的Rank,然后执行如下命令关闭被停止的Rank。

~]$ ceph mds deactivate 1

这里的 1为rank的编号。

Rank状态查看

[cephadmin@ceph-monitor-1 ~]$ ceph mds stat
cephfs-2/2/2 up {0=ceph-monitor-1=up:active,1=ceph-monitor-2=up:active}, 1 up:standby

  • cephfs-2/2/2 up:cephfs是CephFS的名称,后面3个分别是已经分配的 Rank数、正常up的Rank数和设置的最大Rank数。
  • 0=ceph-monitor-1=up:active:代表第0个rank关联到了ceph-monitor-1节点,并且状态为up。
  • 1 up:standby:代表有1个备份。

高可用配置

假设启动4个MDS进程,设置2个Rank。这时候有2个MDS进程会分配给两个Rank,还剩下2个MDS进程分别作为另外个的备份。

1. 增加MDS实例数量与Rank数量。

2. 增加完成后再查看CephFS状态如下。

[SDS_Admin@rdma58 bin]$ ceph fs status
2022-01-22 17:14:31.867395 7f58a0bcc700 3063830 80 WARN 0 -- 172.17.31.58:0/24016594 >> 172.17.31.56:6829/1928792 conn(0x7f588400fb50 :54914 s=STATE_OPEN_MESSAGE_READ_FRONT pgs=40403 cs=1 l=1).process read message front not complete, len: 1854
CAPFS - 0 clients
=====
+------+--------+------+---------------+-------+-------+
| Rank | State | MDS | Activity | dns | inos |
+------+--------+------+---------------+-------+-------+
| 0 | active | mds1 | Reqs: 0 /s | 0 | 0 |
+------+--------+------+---------------+-------+-------+
+--------------------------+----------+-------+-------+
| Pool | type | used | avail |
+--------------------------+----------+-------+-------+
| .capfs.metadata.Metadata | metadata | 2600k | 788G |
| .capfs.data.datapool0 | data | 1331M | 3938G |
+--------------------------+----------+-------+-------+

+-------------+
| Standby MDS |
+-------------+
| mds2 |
| mds0 |
+-------------+
+--------------------------------------------------------------------------------------------------------+---------+
| version | daemons |
+--------------------------------------------------------------------------------------------------------+---------+
| unknown | mds2 |
| ceph version 12.2.1-UniStorOS_V100R001B61 (63a744c16fdbb7855b3ab6d5b361a628ebb1e9be) luminous (stable) | mds1 |
| ceph version 12.2.1-UniStorOS_V100R001B62 (d81977ed9a8ef9885005c26bc23d4f5cf2d83801) luminous (stable) | mds0 |
+--------------------------------------------------------------------------------------------------------+---------+

通过上图可以看出有两个Rank,分别关联到了ceph-monitor-1和ceph-monitor-2的MDS,并且状态为active。在最后面有两个备份的MDS,分别为ceph-monitor-3和ceph-storage-2。

3. 设置每个Rank的备份MDS,也就是如果此Rank当前的MDS出现问题马上切换到另个MDS。设置备份的方法有很多,常用选项如下。


  • mds_standby_replay:值为true或false,true表示开启replay模式,这种模式下主MDS内的数量将实时与从MDS同步。如果主宕机,从可以快速的切换。如果为false只有宕机的时候才去同步数据,这样会有一段时间的中断。
  • mds_standby_for_name:设置当前MDS进程只用于备份于指定名称的MDS。
  • mds_standby_for_rank:设置当前MDS进程只用于备份于哪个Rank,通常为Rank编号。另外在存在之个CephFS文件系统中,还可以使用mds_standby_for_fscid参数来为指定不同的文件系统。
  • mds_standby_for_fscid:指定CephFS文件系统ID,需要联合mds_standby_for_rank生效,如果设置mds_standby_for_rank,那么就是用于指定文件系统的指定Rank,如果没有设置,就是指定文件系统的所有Rank。

上面的配置需要写在ceph.conf配置文件,按本实验目标,在管理节点上修改ceph.conf配置文件,配置如下。

[mds.ceph-monitor-3]
mds_standby_for_name = mon.ceph-monitor-2
mds_standby_replay = true

[mds.ceph-storage-2]
mds_standby_for_name = mon.ceph-monitor-1
mds_standby_replay = true

通过以上的配置mon.ceph-monitor-3就作为了mon.ceph-monitor-2的备份,并且实时的同步数据。而mon.ceph-storage-2为mon.ceph-monitor-1的备份,也是实时的同步数据。如果想让某一个MDS可以作用于多个MDS的备份,可配置如下。

[mds.ceph-storage-2]
mds_standby_for_fscid = 1

指定CephFS文件系统的ID为1,如果不指定mds_standby_for_rank,代表备份于编号1的文件系统下面的所有MDS,此方法无法实际同步数据。

修完配置后需要同步到指定的节点,然后重启MDS进程所对应的服务。

摘抄or参考自:​​Ceph存储(七)CephFS详解 – Linux运维笔记​

CephFS管理命令

 原创

​腿快抖断了​​​2019-12-25 11:24:26博主文章分类:​​Ceph​​©著作权

文章标签​cephFS 命令​文章分类​Linux​​​​系统/运维​阅读数3249

这些命令在你的Ceph集群中的CephFS文件系统上运,注意,默认情况下仅允许使用一个文件系统,要启用创建多个文件系统,请使用 ceph fs flag set enable_multiple true命令


文件系统相关



ceph fs new <file system name> <metadata pool name> <data pool name>


这条命令创建一个新的文件系统,文件系统名称和元数据池名称很清晰明了。指定的数据池是默认数据池,一旦设置便无法更改,每个文件系统都有自己的一组MDS守护程序分配给等级,因此请确保你有足够的备用守护程序来容纳新文件系统


ceh fs ls


列出已有的文件系统


ceph fs dump [epoch]


这将在给定的时期(默认值:当前)转储FSMap,其中包括所有文件系统设置,MDS守护程序及其所拥有的等级以及备用MDS守护程序的列表


ceph fs rm <file system name> [–yes-i-really-mean-it]


销毁CephFS文件系统,这会从FSMap擦除有关文件系统状态的信息,元数据池和数据池保持不变,必须分别销毁。


ceph fs get <file system name>


获取有关命名文件系统的信息,包括设置和等级,这是来自fs dump命令的相同信息的子集


ceph fs set <file system name> <var> <val>


更改文件系统上的设置,这些设置特定于命名文件系统,并且不影响其他文件系统


ceph fs add_data_pool <file system name> <pool name/id>


将数据池添加到文件系统,该池可用于文件布局,作为存储文件数据的备用位置。


ceph fs rm_data_pool <file system name> <pool name/id>


此命令从文件系统的数据池列表中删除指定的池,如果有任何文件具有已删除数据池的布局,则文件数据将不可用,无法删除默认数据池(在创建文件系统时创建的第一个数据池)


设置相关



ceph fs set <fs name> max_file_size <size in bytes>


CephFS具有可配置的最大文件大小,默认情况下为1TB,如果希望在CephFS中存储大文件,则可以将此限制设置得更高,它是一个64位字段。 将max_file_size设置为0不会禁用该限制,它将仅限制客户端的权限为仅有权限创建空文件。


最大文件大小和性能


CephFS在追加文件或设置文件大小时会强制执行最大文件大小限制,它不影响以任何存储方式存储的任何内容。 当用户创建一个巨大的文件(不必向其写入任何数据)时,某些操作(例如删除)会导致MDS必须执行大量操作,检查是否存在可能存在的RADOS对象(根据文件大小)

max_file_size设置可防止用户创建艾字节大小的文件,导致MDS上的负载,因为它在进行统计或删除之类的操作期间会尝试枚举对象。


down掉集群


通过设置down 参数来关闭CephFS集群


ceph fs set <fs_name> down true


恢复集群


ceph fs set <fs_name> down false


这还将恢复max_mds的先前值,以某种方式关闭MDS守护程序,以便将日记刷新到元数据池,并停止所有客户端的I / O操作。


快速关闭群集以进行删除或灾难恢复


要允许快速删除文件系统(以进行测试)或快速关闭文件系统和MDS守护程序,可以使用fs fail命令,此命令设置文件系统标志,以防止备用文件在文件系统上被激活


ceph fs fail <fs_name>


也可以通过以下操作手动完成此过程


ceph fs set <fs_name> joinable false


然后,操作员可能会使所有ranks失败,这会导致MDS守护进程作为备用程序重生,文件系统将处于降级的状态


ceph mds fail <fs_name>:<n>


一旦所有ranks都不活动,也可以删除文件系统或将其保留在该状态下以用于其他目的(也许是灾难恢复),要恢复集群,只需设置joinable标志


ceph fs set <fs_name> joinable true



守护进程


大多数操作mds的命令都采用<role>参数,该参数可以采用以下三种形式之一


<fs_name>:<rank>
<fs_id>:<rank>
<rank>


操作MDS守护程序的命令


ceph mds fail <gid/name/role>


将MDS守护进程标记为失,这相当于集群将执行这个操作,当MDS守护进程未能向mon发送MDS_beacon_grace second消息的时候。如果守护进程处于活动状态,并且有合适的备用服务器可用,则使用mds fail将强制故障转移到备用服务器。

如果MDS守护进程实际上仍在运行,那么使用MDS fail将导致守护进程重新启动。如果它处于活动状态,并且有备用程序可用,则“失败”的守护程序将作为备用程序返回


ceph tell mds.<daemon name> command …


将命令发送到MDS守护程序,使用mds.*将命令发送到所有守护程序,使用ceph tell mds.*来查看帮助文档


ceph mds repaired <role>


获取有关Mon的已知的给定MDS的元数据


ceph mds repaired <role>


将文件系统等级标记为已修复,顾名思义,此命令不会更改MDS,它操作已标记为已损坏的文件系统ranks


最低客户端版本


有时需要设置客户端的最低Ceph版本能够正常运行才能连接到CephFS群集。较早的客户端有时可能仍在运行带有可能导致客户端之间锁定问题的错误(由于功能发布)。 CephFS提供了一种设置最低客户端版本的机制


ceph fs set <fs name> min_compat_client <release>


例如,仅允许Nautilus客户端使用


ceph fs set cephfs min_compat_client nautilus


运行旧版本的客户端将自动被驱逐


全局设置



ceph fs flag set <flag name> <flag val> [<confirmation string>]


设置全局CephFS标志(即不特定于特定文件系统),当前,唯一的标志设置是“ enable_multiple”,它允许具有多个CephFS文件系统。 有些标志要求您使用“ –yes-i-really-mean-it”或类似的字符串来提示以确认。在继续之前,请仔细考虑这些操作,因为他们是一些比较危险的操作


高级用法


这些命令在正常操作中不是必需的,在特殊情况下可以使用。不正确地使用这些命令可能会导致严重的问题,例如文件系统无法访问


ceph mds compat rm_compat # 删除兼容性的功能标志
ceph mds compat rm_incompat # 删除不兼容性的功能标志
ceph mds compat show # 显示MDS兼容性标志
ceph mds rmfailed # 从失败的集合中删除rank
ceph fs reset <file system name> # 此命令将文件系统状态重置为默认名称(名称和池除外),非零rank保存在停止集


摘抄or参考自:​​CephFS管理命令_腿快抖断了_51CTO博客​​