CephFS 安装 在已经部署好的 Ceph 集群上安装 CephFS 还是比较简单的,首先需要安装 MDS,原因是 CephFS 需要统一的元数据管理,所以 MDS 必须要有。 cephfs_data 1024 $ ceph osd pool create cephfs_metadata 100 $ ceph fs new cephfs cephfs_metadata cephfs_data cephfs-1/1/1 up {0=cephfs-master1=up:active} 2. 如果想做到开机启动就挂载 CephFS,请参考 使用ceph的文件存储CephFS 3. multiple pools for cephfs 使用ceph的文件存储CephFS
Cephfs 异常测试方案 CephFS允许客户端缓存metadata 30s,所以这里测试对MDS stop/start的时间间隔取为:2s,10s,60s。
前言 Cephfs的快照功能在官网都很少提及,因为即使开发了很多年,但是由于cephfs的复杂性,功能一直没能达到稳定,这里,只是介绍一下这个功能,怎么使用,并且建议不要在生产中使用,因为搞不好是会丢数据的 mnt]# cp -ra .snap/snap1/* ./ 删除快照 [root@lab8106 mnt]# rmdir .snap/snap1 删除快照需要用rmdir命令 总结 本篇简单的介绍了下cephfs
13. 深入研究 13.1 MDS启动阶段分析 //src/ceph_mds.cc int main(int argc, const char **argv) { ceph_pthread_setname(pthread_self(), "ceph-mds"); vector<const char*> args; argv_to_vec(argc, argv, args); env_to_vec(args); //初始化全局信息 auto cct = global_init(NU
前言 这是一篇旧闻,由于用cephfs的人还不是很多,所以比较少发关于cephfs相关的东西,最近看到有人开始使用,并且遇到了问题,这个就是其中一个比较容易出的问题,需要进行参数的调整 CephFS: 里面已经合进去了代码(scan_link) 修复过程如下 执行flush MDS journal ceph daemon mds.xxx flush journal 停止掉所有mds stop all mds 执行 cephfs-data-scan
cephfs扩容方案 需求描述 建立完善的cephfs的扩容方案,满足cephfs用户数据存储空间在各种场景下的扩容需求。 # setfattr -n ceph.dir.layout.pool -v cephfs_pool1 /mnt/cephfs1/extest1/ root@host1:/mnt/cephfs1# getfattr : mnt/cephfs1/extest1 ceph.dir.layout="stripe_unit=4194304 stripe_count=1 object_size=4194304 pool=cephfs_pool1 " root@host1:/mnt/cephfs1/extest1# touch file2 root@host1:/mnt/cephfs1/extest1# getfattr -n ceph.file.layout /mnt/cephfs1/extest1/file2 getfattr: Removing leading '/' from absolute path names # file: mnt/cephfs1
1G -rw-r--r-- 1 root root 1.9G Jun 21 10:59 alchemy-api.info.log.201806211029 #查看所有块 $ rados -p cephfs_data 10000006977.00000bc0 10000006977.000001a9 10000006977.0000063b 10000006977.00000943 #查看块大小 $ rados -p cephfs_data 16M/ $ setfattr -n ceph.dir.layout -v "stripe_unit=16777216 stripe_count=16 object_size=16777216 pool=cephfs_data test_1G -rw-r--r-- 1 root root 1.9G Jun 21 11:12 alchemy-api.info.log.201806211029 #查看所有块 $ rados -p cephfs_data 1G -rw-r--r-- 1 root root 1.9G Jun 21 11:12 alchemy-api.info.log.201806211029 #查看所有块 $ rados -p cephfs_data
现在,我们可以使用命名池创建新文件系统:cephfs_data和cephfs_metadata。 ceph fs new cephfs cephfs_metadata cephfs_data cephfs =文件系统名称。 完成此步骤而没有错误时,请使用以下命令检查MDS服务器。 检查MDS服务器列表: ceph fs ls 现在您可以看到文件系统名称为“ cephfs”,元数据池为“ cephfs_metadata”,数据池为“ cephfs_data”。 目录并将CephFS挂载到该目录。 umount /mnt/cephfs image.png 步骤6-将CephFS挂载为保险丝 成功将CephFS挂载为文件系统后,我们将CephFS挂载为Fuse(USErspace中的文件系统)。
ceph daemon /var/run/ceph/ceph-client.admin.asok status
最近在社区群里面又听闻一个案例,一套系统的文件系统被重置掉了,也就是fs被重建了,实际上这属于一个不应该有的操作,但是已经发生的事情,就看怎么样能在下次避免或者把损失降到最低,对于hammer版本来说,重建cephfs
CephFS属于NAS的解决方案的一种,主要优势在成本,容量扩展和高性能方案。 2. CephFS介绍 ? 说明: CephFS 是个与 POSIX 标准兼容的文件系统。 文件目录和其他元数据存储在RADOS中。 MDS缓存元信息和文件目录信息。 POSIX ACLs CephFS kernel client默认支持。 CephFS FUSE client可配置支持 。 Ganesha通过利用libcephfs库支持CephFS FSAL(File System Abstraction Layer,文件系统抽象层),可以将CephFS重新Export出去。 9.4 CephFS Subtree Partitioning 9.4.1 介绍 ?
image.png image.png image.png image.png image.png image.png image.png image.png ---- 在window上挂载Ceph FS image.png image.png image.png image.png image.png image.png image.png
文件系统当中如果某些文件不见了,有什么办法判断是删除了还是自己不见了,这个就需要去日志里面定位了,通常情况下是去翻日志,而日志是会进行压缩的,并且查找起来非常的不方便,还有可能并没有开启 这个时候就需要日志系统了,最近正好看到一篇最佳日志实践(v2.0),一篇非常好的文章,本篇日志属于文章里面所提到的统计日志,统计客户端做了什么操作
用户需要从cephfs存储系统中检索一个大文件指定关键字的一行信息, 并且对延迟和性能要求比较高。 2. 原始方案 2.1 流程图 ? 2.2 说明 假如用户拉取的文件大小是16M, 文件按照4M切分,散落到四个数据片上 用户首先请求cephfs拉取文件信息 cephfs会根据crush算法找计算文件散落到那几个数据片上 cephfs会拉取文件所属的数据片然后聚合起来 cephfs文件拉取后返回给用户 用户拉取完整个文件,开始做过滤关键字操作 2.3 实战 //检索2.7G文件为例 $ ll -lh nginx/logs/access.log.2018102911 信息 $ cephfs /mnt/kernel_log_push.log show_location -l 4194304 WARNING: This tool is deprecated. 源码地址 https://github.com/lidaohang/cephfs_readline ?
3.1 创建 cephfs 在正式开始演示之前,我们先在 admin 节点创建一个 cephfs,测试下 cephfs 是否可用吧! 128 pool 'cephfs_metadata' created $ ceph fs new cephfs cephfs_metadata cephfs_data new fs with metadata cephfs 啦! 这里使用上边创建的同一个 cephfs,因为一个 Cephfs 存储集群只支持创建一个 cephfs。 / # vi /mnt/cephfs/cephfs-pv-pod1.txt / # cat /mnt/cephfs/cephfs-pv-pod1.txt This message write by cephfs-pv-pod1
实践 根据系统命令进行文件的定位 写入测试文件 dd if=/dev/zero of=/mnt/testfile bs=4M count=10 查看文件的映射 [root@lab8106 mnt]# cephfs .000000071000000118b.00000008 可以看到用算法进行定位的时候,整个过程都没有跟集群ceph进行查询交互,只用到了获取文件的stat的信息,所以根据算法就可以完全定位到具体的对象名称了 总结 本篇是介绍了cephfs 中文件跟后台具体对象对应的关系,这个对于系统的可恢复性上面还是有很大的作用的,在cephfs当中只要对象还在,数据就还在,哪怕所有的服务全挂掉,这个在之前的某个别人的生产环境当中已经实践过一次,当然那个是
$ ceph osd pool create cephfs_recovery_meta$ ceph fs new cephfs_recovery cephfs_recovery_meta cephfs.a.data $ ceph fs fail cephfs_recovery# 接下来,我们将重置MDS创建的初始元数据:$ cephfs-table-tool cephfs_recovery:0 reset session $ cephfs-table-tool cephfs_recovery:0 reset snap$ cephfs-table-tool cephfs_recovery:0 reset inode$ cephfs-journal-tool cephfs_recovery_meta --filesystem a cephfs.a.data$ cephfs-data-scan scan_inodes --alternate-pool cephfs_recovery_meta --filesystem a --force-corrupt cephfs.a.data$ cephfs-data-scan scan_links --filesystem cephfs_recovery
前言 k8s对ceph rbd模式不支持ReadWriteMany(RWX),为了满足k8s的灵活性需求,采用支持多点挂载的cephfs工作模式 安装 ceph端 ceph-deploy mds create ceph 为cephfs创建存储池 ceph osd pool create cephfs_data 8 ceph osd pool create cephfs_metadata 8 ceph fs new cephfs cephfs_metadata cephfs_data 查看: [root@node1 ceph]# ceph fs ls name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ] [root@node1 ceph]# ceph -s cluster: id: apiVersion: v1 kind: PersistentVolume metadata: name: cephfs-pv labels: pv: cephfs-pv spec:
1、侠义讲,对象存储就是云存储 2、分布式文件系统:CephFS 3、每天晚上10点到早上7点Scrub ceph tell osd.* injectargs "--osd-scrub-begin-hour