服务热线:

著名点标备灾软件开发人员和设备制造商

国内信息安全解决办法 提供商

主页 > 火星教室 > 细节

火星教室:CephFS建筑解释与测试分析(加入)
?

  本文是来自 “日本知识记录技术社区”,作者:杨冠军
 

  CephFS构造解释
 

  1、CephFS简介

  CephFS是Ceph提供兼容性Posix协议文件系统,平衡RBD和RGW,这是最新点标满足Production ready..点标作由.。CephFS点标底部仍然开始rados储存日期,由MDS管理filesystem元信息。

  在Jewel在版本中,CephFS点标基本功能ready,但是很多feature不过experimental点标,不建议在构建环境中打开它们feature。
 

  1.1 CephFS性格

  1.膨胀性

  CephFS点标client最后是立即读写OSDs点标,因此OSDs点标扩展性CephFS中
 

  2.共享文件系统

  CephFS是一个共享文件系统,第二倍数clients同时读写文件系统file
 

  3.高可由性

  CephFS第二站点元信息服务器群集,也可能站点做Active-Standby主来自 服务器,改善可由性
 

  4.文件/列表Layout站点

  CephFS第二站点任何文件/列表Layout,文件/如果列表没有单独站点,答复象,默认情况下继承父列表Layout属性
 

  5.POSIX ACLs第二

  CephFS第二POSIX点标ACLs,在CephFS两人第二client中,kernel client默认第二,FUSE client需要修改站点以第二
 

  6.Quotas第二

  CephFS未在后端实现Quota.点标作由,他Quota是CephFS FUSE client端到端实现,但是kernel client还没加进去
 

  1.2 CephFS建筑

  如下图所示:

  底部仍然是基本点标OSDs和Monitors,额外点标 MDSs,加入水平第二客户端CephFSkernel object,CephFSFUSE,CephFSLibrary等。

 

  1.3 CephFS模块间通信

  如加入图所示,CephFS模块之间点标通信如下:

  1.Client <--> MDS

  元信息操作和capalities
 

  2.Client <--> OSD

  信息IO
 

  3.Client <--> Monitor

  证明,群 map资料等
 

  4.MDS <--> Monitor

  心跳,群 map资料等
 

  5.MDS <--> OSD

  元信息IO
 

  6.Monitor <--> OSD

  心跳,群 map资料等
 

  1.4 CephFS MDS模块

  Ceph MDS设计更强大,作做记忆PB信息级别文件系统,它充分考虑到元信息服务器点标需求,设计点标MDS群 。此外,还介绍结束这一概念MDS点标动态子树迁移,MDS基于GIS点标热负荷平衡。

 

  但它是如此先进点标设计,使MDS团簇很难稳定,因此现在Jewel在版本中是默认点标不过单一点标?MDS实例,由户可能站点主来自 MDS实例,改善可由性。但在未来,MDS群 点标这些属性将稳定下来,做尊龙人生就是博提供超级元信息管理能力。

  如加入图所示,CephFS模块之间点标通信如下:

  1.Client <--> MDS

  元信息操作和capalities
 

  2.Client <--> OSD

  信息IO
 

  3.Client <--> Monitor

  证明,群 map资料等
 

  4.MDS <--> Monitor

  心跳,群 map资料等
 

  5.MDS <--> OSD

  元信息IO
 

  6.Monitor <--> OSD

  心跳,群 map资料等
 

  1.4 CephFS MDS模块

  Ceph MDS设计更强大,作做记忆PB信息级别文件系统,它充分考虑到元信息服务器点标需求,设计点标MDS群 。此外,还介绍结束这一概念MDS点标动态子树迁移,MDS基于GIS点标热负荷平衡。

 

  但它是如此先进点标设计,使MDS团簇很难稳定,因此现在Jewel在版本中是默认点标不过单一点标?MDS实例,由户可能站点主来自 MDS实例,改善可由性。但在未来,MDS群 点标这些属性将稳定下来,做尊龙人生就是博提供超级元信息管理能力。

  Client端存接受CepFS步骤如下:
 

  1.client结束和MDS节点通信,收集metadata信息(metadata也存在osd加入)
 

  2.client立即将信息写入OSD

  2.1 Client端存接受CephFS例子

  1.Client发送open file请求MDS

  2.MDS返回file inode,file size,capability和stripe信息

  3.Client立即Read/Write信息到OSDs

  4.MDS管理file点标capability

  5.Client发送close file请求MDS,释放file点标capability,更新file详细资料

  这里cephfs它不像其他分布式文件系统所设计点标那样,分布式文件锁以真实保信息一致性。是通过文件capability来保证
 

  2.2 CephFS相关文字

  创建MDSDaemon

  # ceph-deploy mds create <…>

  创建CephFSData Pool

  # ceph osd pool create <…>

  创建CephFSMetadata Pool

  # ceph osd pool create <…>

  创建CephFS

  # ceph fs new <…>

  见CephFS

  # ceph fs ls

  name: tstfs, metadatapool: cephfs_metadata, data pools: [cephfs_data ]

  切割CephFS

  # ceph fs rm--yes-i-really-mean-it

  见MDS形式

  # ceph mds stat

  e8: tstfs-1/1/1 uptstfs2-0/0/1 up {[tstfs:0]=mds-daemon-1=up:active}

  e8

  e给出epoch

  8是epoch号

  tstfs-1/1/1 up

  tstfs是cephfs名字

  三1他们是 mds_map.in/mds_map.up/mds_map.max_mds

  up是cephfs形式

  {[tstfs:0]=mds-daemon-1=up:active}

  [tstfs:0]点tstfs点标rank 0

  mds-daemon-1这是一项服务tstfs点标mds daemon name

  up:active是cephfs点标形式 up & active
 

  2.3 mount开始CephFS

  1.CephFS kernel client

  # mount -t ceph:6789 /mntdir

  # umount /mntdir
 

  2. CephFS FUSE

  放置ceph-fusepkg

  # yum install -y ceph-fuse

  # ceph-fuse -m:6789 /mntdir

  # fusermount -u /mntdir

  centos7里面没有人fusermount文字,可能由umount替代

 

  FUSE点标IO Path长点标 ,将首先来自 由户形式调由到内核形式,然后返回到由户形式开始CephFSFUSE模块访问Ceph群 ,如下图所示:

  平衡

  能力:Kernel client > ceph-fuse

  Quota第二:全部ceph-fuse(client-side quotas)

  Quota不在CephFS在后端实现,但在client-side认识到 。如果某些应由程序需要开始Quota,此时,您必须考虑开始CephFSFUSE结束
 

  3、CephFSLayout

  Cephfs第二站点列表、纪录片 layout和stripe,此元信息信息存储在列表和文件中xattr中。

  列表layout xattrs做:ceph.dir.layout

  纪录片 layout xattrs做:ceph.file.layout

  CephFS支助layout站点项是:

  pool

  信息存储到调由pool

  namespace

  信息存储到调由namespace,出现pool细粒度(rbd/rgw/cephfs我还不第二)

  stripe_unit

  带材尺寸,单元 Byte

  stripe_count

  带数

  默认文件/列表继承父列表layout和striping

  例子 :站点列表Layout

  # setfattr -n ceph.dir.layout -v "stripe_unit=524288stripe_count=8 object_size=42399912 pool=cephfs_data2" /mnt/mike512K/

 

  在?中 一个列表9MB文件layout分布图是:

  4、CephFS证明

  有时,应由程序可能有此要求,不同由户访问不同CephFS列表,那是需要打开点标时候CephFS证明。

  但首先要打开点标是Ceph群 证明,然后你可能创建CephFS证明合格点标client完结束,调由client答复mon,mds,osd访问权。
 

  4.1 开启Ceph群 证明

  站点ceph.conf

  # vim /etc/ceph/ceph.conf

  auth_cluster_required = cephx

  auth_service_required = cephx

  auth_client_required = cephx
 

  4.2 创建CephFS证明合格点标client

  # ceph auth get-or-create client.*client_name* \

  mon 'allow r' \

  mds 'allow r, allowrw path=/*specified_directory*' \

  osd 'allow rwpool=’

  实例和解释:

  # ceph auth get-or-create client.tst1 mon ‘allow r’ mds ‘allow r,allow rw path=/tst1’ osd ‘allow rw pool=cephfs_data'

  mon ‘allow r’

  让client来自 monitor读接受信息;必须站点

  mds ‘allow r, allow rw path=/tst1’

  让client来自 MDS读接受信息,让client到列表/tst1读写;

  在?中 ‘ allow r’必须站点,之前client不能来自 mds读接受信息,mount会议报permission error;

  osd ‘allow rw pool=cephfs_data

  让client来自 osd pool=cephfs_data读写信息;

  如果你不站点它,,client只来自mds加入水平采集FS元信息信息,无法见单个纪录片 信息

  答复osd还必须站点权限,之前client只来自mds加入水平采集fs元信息信息,无法见纪录片 信息
 

  4.3 测试ceph auth

  # ceph auth get client.tst1

  exported keyring for client.tst1

  [client.tst]

  key =AQCd+UBZxpi4EBAAUNyBDGdZbPgfd4oUb+u41A==

  caps mds = allow r, allow rwpath=/tst1"

  caps mon = "allow r"

  caps osd = "allowrw pool=cephfs_data"
 

  4.4 mount测试

#mount-t ceph:6789:/tst1/mnt -oname=tst1,secret=AQCd+UBZxpi4EBAAUNyBDGdZbPgfd4oUb+u41A==
 

  4.5 证明机制不完善

CephFS点标身份验证机制,加入述client.tst1可能mount大CephFS列表,你可能看到和阅读整件事CephFS文件

#mount-t ceph:6789://mnt -oname=tst1,secret=AQCd+UBZxpi4EBAAUNyBDGdZbPgfd4oUb+u41A==

  但是且我没有找到任何第二readonly一种访问列表方法。

  全部真实认cephfs kernel client,没试过ceph-fuse证明
 

  5、CephFS点标 FSCK & Repair

  FS点标fsck和repair答复文件系统非常重要,如果这件事还没完成,,没有人敢开始文件系统。

  Ceph在Jewel它在版本中有售Ready点标CephFS点标scrub和repair工具,它如何处理大多数元信息损坏?。

  但是要记住两件事在开始中:

  1.仔细执行修复文字,需要由专业人员操作

  2.如果文字第二,请在修复元信息之前备份它
 

  5.1 Cephfsjournal工具

  cephfs-journal-tool,由来修复损坏MDS journal,它第二以下类型点标文字,看一下详细点标介绍help我考虑一下。

  cephfs-journal-tool:

  -inspect/import/export/reset

  - header get/set

  - eventget/apply/recover_dentries/splice
 

  5.2 Cephfsonline check/scrub

  ceph tell mds.damage ls

  ceph tell mds.damage rm

  # scrub an inode and output results

  ceph mds mds.scrub_path{force|recursive|repair [force|recursive|repair...]}
 

  5.3 Cephfsoffline repair

  cephfs-data-scan init [--force-init]

  cephfs-data-scan scan_extents [--force-pool]

  cephfs-data-scan scan_inodes [--force-pool] [--force-corrupt]

  cephfs-data-scan scan_frags [--force-corrupt]

 

  cephfs-data-scan tmap_upgrade