创建cephfs文件系统:

[cephfsd@ceph-admin ceph]$ cd /etc/ceph
[cephfsd@ceph-admin ceph]$ ceph fs ls
No filesystems enabled
# 创建三个mds
[cephfsd@ceph-admin ceph]$ ceph-deploy mds create ceph-node1 ceph-node2 ceph-node3
# cephfs需要两个pool:
# 1、data pool:存放object
# 2、meta data pool:存放元数据,可设置较高副本级别,也可调整pool的crush_ruleset,使其在ssd上存储,加快客户端响应速度,我这里直接使用默认crush_ruleset
# 创建pool存储池,这里两个pg_num必须保持一致,否则后面无法挂载。
[cephfsd@ceph-admin ceph]$ ceph osd pool create cephfs_data 64
pool 'cephfs_data' created
[cephfsd@ceph-admin ceph]$ ceph osd pool create cephfs_metadata 64
pool 'cephfs_metadata' created
# 注:
# 计算pg数量:
# 1、集群pg 总数 = (OSD 总数* 100 )/最大副本数
# 2、每个pool中pg总数=(OSD总数*100)/ 最大副本数 )/ 池数
# 3、pg数需要是2的指数幂 # 创建fs,这里new后面的cephfs就是文件系统名,可自定义。后面接的cephfs_metadata cephfs_data 就是上面创建的pool。
[cephfsd@ceph-admin ceph]$ ceph fs new cephfs cephfs_metadata cephfs_data
new fs with metadata pool 6 and data pool 5
# 创建成功,查看创建后的fs
[cephfsd@ceph-admin ceph]$ ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
# 查看mds节点状态,active是活跃的,另1个是处于热备份的状态
[cephfsd@ceph-admin ceph]$ ceph mds stat
cephfs-1/1/1 up {0=ceph-node3=up:active}, 2 up:standby
[cephfsd@ceph-admin ceph]$

挂载cephfs文件系统(在任意客户端,我们这里直接在ceph的admin主机上挂载了)

# 创建挂载点
[cephfsd@ceph-admin ceph]$ mkdir /opt
# 去admin主机查看存储秘钥
[cephfsd@ceph-admin ceph]$ cat ceph.client.admin.keyring
[client.admin]
key = AQBIH+ld1okAJhAAmULVJM4zCCVAK/Vdi3Tz5Q==
# 将key的值复制下来,保存到客户端,我们这里保存在了/etc/ceph/admin.secret
[cephfsd@ceph-admin ceph]$ cat admin.secret
AQBIH+ld1okAJhAAmULVJM4zCCVAK/Vdi3Tz5Q==
# 挂载,有两种方式挂载,mount挂载和ceph-fuse挂载
# A.内核驱动挂载Ceph文件系统
[cephfsd@ceph-admin ceph]$ sudo mount.ceph 172.16.143.121:6789:/ /opt -o name=admin,secretfile=/etc/ceph/admin.secret
[cephfsd@ceph-admin ceph]$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 484M 0 484M 0% /dev
tmpfs tmpfs 496M 0 496M 0% /dev/shm
tmpfs tmpfs 496M 26M 470M 6% /run
tmpfs tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 46G 1.9G 44G 4% /
/dev/sda1 xfs 497M 130M 368M 26% /boot
tmpfs tmpfs 100M 0 100M 0% /run/user/0
172.16.143.121:6789:/ ceph 8.5G 0 8.5G 0% /opt
# 注:
# mount时,mon节点有几个写几个,如果配置了hosts解析,可以使用主机名代替IP。
# 还可以使用fuse挂载方式,fuse其实坑挺多的,能不用暂时不用 # 由于kernel挂载方式目前不支持quota的配置,如果需要quota的配置,那么只好使用fuse挂载 # 卸载
[cephfsd@ceph-admin ceph]$ umount /opt
umount: /opt: umount failed: Operation not permitted
[cephfsd@ceph-admin ceph]$ sudo umount /opt
[cephfsd@ceph-admin ceph]$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 484M 0 484M 0% /dev
tmpfs tmpfs 496M 0 496M 0% /dev/shm
tmpfs tmpfs 496M 26M 470M 6% /run
tmpfs tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 46G 1.9G 44G 4% /
/dev/sda1 xfs 497M 130M 368M 26% /boot
tmpfs tmpfs 100M 0 100M 0% /run/user/0
# 设置开机自动挂载/etc/fstab
[cephfsd@ceph-admin ceph]$ sudo vim /etc/fstab
172.16.143.121:6789:/ /opt ceph name=admin,secretfile=/etc/ceph/admin.secret,noatime,_netdev 0 2 # 注意:检查是否启用cephx认证方法,如果值为none为禁用,cephx为启用
[root@node1 ceph]# cat /etc/ceph/ceph.conf | grep auth | grep required
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx # B.用户控件挂载Ceph文件系统
# 安装ceph-fuse
[cephfsd@ceph-admin ceph]$ yum install -y ceph-fuse
# 挂载,挂载需要sudo权限,否则会报错。
[cephfsd@ceph-admin ceph]$ sudo ceph-fuse -m 172.16.143.121:6789 /opt
2019-12-06 08:29:52.137542 7f0e2edb20c0 -1 init, newargv = 0x55c37f3887e0 newargc=9ceph-fuse[50371]: starting ceph client ceph-fuse[50371]: starting fuse
[cephfsd@ceph-admin ceph]$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 484M 0 484M 0% /dev
tmpfs tmpfs 496M 0 496M 0% /dev/shm
tmpfs tmpfs 496M 26M 470M 6% /run
tmpfs tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 46G 1.9G 44G 4% /
/dev/sda1 xfs 497M 130M 368M 26% /boot
tmpfs tmpfs 100M 0 100M 0% /run/user/0
ceph-fuse fuse.ceph-fuse 8.5G 0 8.5G 0% /opt
# 卸载
[cephfsd@ceph-admin ceph]$ fusermount -u /opt
fusermount: entry for /opt not found in /etc/mtab
[cephfsd@ceph-admin ceph]$ sudo fusermount -u /opt
[cephfsd@ceph-admin ceph]$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 484M 0 484M 0% /dev
tmpfs tmpfs 496M 0 496M 0% /dev/shm
tmpfs tmpfs 496M 26M 470M 6% /run
tmpfs tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 46G 1.9G 44G 4% /
/dev/sda1 xfs 497M 130M 368M 26% /boot
tmpfs tmpfs 100M 0 100M 0% /run/user/0
[cephfsd@ceph-admin ceph]$
# 这里就是用ceph-fuse挂载时没有使用root权限,就挂载不上。
[cephfsd@ceph-admin ceph]$ ceph-fuse -m 172.16.143.121:6789 /opt
2019-12-06 08:29:28.606085 7f35fd5e60c0 -1 asok(0x5627d23481c0) AdminSocketConfigObs::init: failed: AdminSocket::bind_and_listen: failed to bind the UNIX domain socket to '/var/run/ceph/ceph-client.admin.asok': (13) Permission denied
2019-12-06 08:29:28.606957 7f35fd5e60c0 -1 init, newargv = 0x5627d24967e0 newargc=9
ceph-fuse[50325]: starting ceph client
fusermount: user has no write access to mountpoint /opt
ceph-fuse[50325]: fuse failed to start
2019-12-06 08:29:31.044358 7f35fd5e60c0 -1 fuse_mount(mountpoint=/opt) failed.
[cephfsd@ceph-admin ceph]$
[cephfsd@ceph-admin ceph]$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 484M 0 484M 0% /dev
tmpfs tmpfs 496M 0 496M 0% /dev/shm
tmpfs tmpfs 496M 26M 470M 6% /run
tmpfs tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 46G 1.9G 44G 4% /
/dev/sda1 xfs 497M 130M 368M 26% /boot
tmpfs tmpfs 100M 0 100M 0% /run/user/0
[cephfsd@ceph-admin ceph]$
# 设置开机自动挂载/etc/fstab
[cephfsd@ceph-admin ceph]$ sudo vim /etc/fstab
id=admin,conf=/etc/ceph/ceph.conf /mnt fuse.ceph defaults 0 0

删除cephfs,需要先将mds置为failed。

[cephfsd@ceph-admin ceph]$ ceph fs rm 128
Error EINVAL: all MDS daemons must be inactive before removing filesystem
[cephfsd@ceph-admin ceph]$ ceph mds stat
128-1/1/1 up {0=ceph-node2=up:active(laggy or crashed)}
[cephfsd@ceph-admin ceph]$ ceph mds fail 0
failed mds gid 4147
[cephfsd@ceph-admin ceph]$ ceph mds stat
128-0/1/1 up , 1 failed
[cephfsd@ceph-admin ceph]$ ceph fs rm 128
Error EPERM: this is a DESTRUCTIVE operation and will make data in your filesystem permanently inaccessible. Add --yes-i-really-mean-it if you are sure you wish to continue.
[cephfsd@ceph-admin ceph]$ ceph fs rm 128 --yes-i-really-mean-it
[cephfsd@ceph-admin ceph]$ ceph fs ls
No filesystems enabled
[cephfsd@ceph-admin ceph]$

删除pg pool,需要先将使用该pool的cephfs删除。

[cephfsd@ceph-admin ceph]$ ceph osd pool rm cephfs_data2 cephfs_data2  --yes-i-really-mean-it
Error EPERM: WARNING: this will *PERMANENTLY DESTROY* all data stored in pool cephfs_data2. If you are *ABSOLUTELY CERTAIN* that is what you want, pass the pool name *twice*, followed by --yes-i-really-really-mean-it.
[cephfsd@ceph-admin ceph]$ ceph osd pool rm cephfs_data2 cephfs_data2 --yes-i-really-really-mean-it
Error EBUSY: pool 'cephfs_data2' is in use by CephFS
# 该pool被cephfs使用了,所以需要先删除该cephfs。 # 因为cephfs_data cephfs_metadata是挂载在128下的,cephfs_data2 cephfs_metadata2是挂载在cephfs下的,所以,删除cephfs
# 接下来,删除cephfs
[cephfsd@ceph-admin ceph]$ ceph fs rm cephfs
Error EPERM: this is a DESTRUCTIVE operation and will make data in your filesystem permanently inaccessible. Add --yes-i-really-mean-it if you are sure you wish to continue.
[cephfsd@ceph-admin ceph]$ ceph fs rm cephfs --yes-i-really-mean-it
[cephfsd@ceph-admin ceph]$ ceph fs ls
name: 128, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
[cephfsd@ceph-admin ceph]$ # cephfs删除了,接下来删除pool cephfs_data2
[cephfsd@ceph-admin ceph]$ ceph osd pool delete cephfs_data2
Error EPERM: WARNING: this will *PERMANENTLY DESTROY* all data stored in pool cephfs_data2. If you are *ABSOLUTELY CERTAIN* that is what you want, pass the pool name *twice*, followed by --yes-i-really-really-mean-it.
[cephfsd@ceph-admin ceph]$ ceph osd pool delete cephfs_data2 cephfs_data2 --yes-i-really-really-mean-it
Error EPERM: pool deletion is disabled; you must first set the mon_allow_pool_delete config option to true before you can destroy a pool
# 这里需要修改配置,增加mon_allow_pool_delete = true
[cephfsd@ceph-admin ceph]$ vim ceph.conf
[cephfsd@ceph-admin ceph]$ cat ceph.conf
[global]
fsid = 6d3fd8ed-d630-48f7-aa8d-ed79da7a69eb
mon_initial_members = ceph-admin
mon_host = 172.16.143.121
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx mon_allow_pool_delete = true osd_pool_default_size = 3 [mgr]
mgr modules = dashboard
# 然后把配置推送到mon节点。(这里其实不需要了,因为mon节点只有一个,部署在ceph-admin里)
[cephfsd@ceph-admin ceph]$ ceph-deploy --overwrite-conf config push ceph-node1 ceph-node2 ceph-node3
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephfsd/.cephdeploy.conf
[ceph_deploy.cli][INFO ] Invoked (2.0.1): /usr/bin/ceph-deploy --overwrite-conf config push ceph-node1 ceph-node2 ceph-node3
[ceph_deploy.cli][INFO ] ceph-deploy options:
[ceph_deploy.cli][INFO ] username : None
[ceph_deploy.cli][INFO ] verbose : False
[ceph_deploy.cli][INFO ] overwrite_conf : True
[ceph_deploy.cli][INFO ] subcommand : push
[ceph_deploy.cli][INFO ] quiet : False
[ceph_deploy.cli][INFO ] cd_conf : <ceph_deploy.conf.cephdeploy.Conf instance at 0x7f946bf4fa28>
[ceph_deploy.cli][INFO ] cluster : ceph
[ceph_deploy.cli][INFO ] client : ['ceph-node1', 'ceph-node2', 'ceph-node3']
[ceph_deploy.cli][INFO ] func : <function config at 0x7f946c18ac08>
[ceph_deploy.cli][INFO ] ceph_conf : None
[ceph_deploy.cli][INFO ] default_release : False
[ceph_deploy.config][DEBUG ] Pushing config to ceph-node1
[ceph-node1][DEBUG ] connection detected need for sudo
[ceph-node1][DEBUG ] connected to host: ceph-node1
[ceph-node1][DEBUG ] detect platform information from remote host
[ceph-node1][DEBUG ] detect machine type
[ceph-node1][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
[ceph_deploy.config][DEBUG ] Pushing config to ceph-node2
[ceph-node2][DEBUG ] connection detected need for sudo
[ceph-node2][DEBUG ] connected to host: ceph-node2
[ceph-node2][DEBUG ] detect platform information from remote host
[ceph-node2][DEBUG ] detect machine type
[ceph-node2][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
[ceph_deploy.config][DEBUG ] Pushing config to ceph-node3
[ceph-node3][DEBUG ] connection detected need for sudo
[ceph-node3][DEBUG ] connected to host: ceph-node3
[ceph-node3][DEBUG ] detect platform information from remote host
[ceph-node3][DEBUG ] detect machine type
[ceph-node3][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
[cephfsd@ceph-admin ceph]$ ceph osd pool delete cephfs_data2 cephfs_data2 --yes-i-really-really-mean-it
Error EPERM: pool deletion is disabled; you must first set the mon_allow_pool_delete config option to true before you can destroy a pool
# 依然报这个错,因为没有重启mon,所以这里需要重启一下mon服务。重启服务需要root权限。
[cephfsd@ceph-admin ceph]$ systemctl restart ceph-mon.target
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ===
[cephfsd@ceph-admin ceph]$
# 接下来就可以删除pool了。
[cephfsd@ceph-admin ceph]$ ceph osd pool delete cephfs_data2 cephfs_data2 --yes-i-really-really-mean-it
pool 'cephfs_data2' removed
[cephfsd@ceph-admin ceph]$ ceph osd pool delete cephfs_metadata2 cephfs_metadata2 --yes-i-really-really-mean-it
pool 'cephfs_metadata2' removed

挂载:

[cephfsd@ceph-admin ceph]$ !mount
mount -t ceph 172.16.143.121:6789:/ /opt -o name=admin,secretfile=/etc/ceph/admin.secret
mount: only root can use "--options" option
[cephfsd@ceph-admin ceph]$ mount.ceph 172.16.143.121:6789:/ /opt -o name=admin,secretfile=/etc/ceph/admin.secret
mount error 1 = Operation not permitted
# 需要root权限执行mount

注意问题:

1、ceph pg_num设置太大。

ceph使用cephfs

[cephfsd@ceph-admin ceph]$ ceph osd pool create cephfs_data 128
pool 'cephfs_data' already exists
[cephfsd@ceph-admin ceph]$ ceph osd pool create cephfs_metadata 128
Error ERANGE: pg_num 128 size 3 would mean 768 total pgs, which exceeds max 750 (mon_max_pg_per_osd 250 * num_in_osds 3)
[cephfsd@ceph-admin ceph]$

类似这种,应该就是ceph pg_num设置太大了,设置小一点就好了,如下:

[cephfsd@ceph-admin ceph]$ ceph osd pool create cephfs_metadata 64
pool 'cephfs_metadata' created
[cephfsd@ceph-admin ceph]$

2、 pg_num只能增加, 不能缩小.

[cephfsd@ceph-admin ceph]$ ceph osd pool set cephfs_data pg_num 64
Error EEXIST: specified pg_num 64 <= current 12

3、cephfs_data与cephfs_metadata的pg_num值必须保持一致,否则,即使pool创建成功,也无法挂载,就像下面一样:

[cephfsd@ceph-admin ceph]$ sudo mount.ceph 172.16.143.121:6789:/ /opt -o name=admin,secretfile=/etc/ceph/admin.secret

^C^C

^C^C

^C
^CKilled
[cephfsd@ceph-admin ceph]$
mount error 5 = Input/output error
mount error 110 = Connection timed out

参考:http://www.strugglesquirrel.com/2019/04/23/centos7%E9%83%A8%E7%BD%B2ceph/

http://docs.ceph.org.cn/cephfs/

cephfs文件系统场景的更多相关文章

  1. 013 CephFS文件系统

    一.Ceph文件系统简介 CephFS提供兼容POSIX的文件系统,将其数据和与那数据作为对象那个存储在Ceph中 CephFS依靠MDS节点来协调RADOS集群的访问 元数据服务器 MDS管理元数据 ...

  2. ceph 008 ceph多区域网关(ceph对象容灾) cephfs文件系统

    clienta作为集群的管理人员.一部分.他是需要秘钥与配置文件的 但真正服务端只需要通过curl就好 ceph 多区域网关 对象存储容灾解决方案 zone与zone会做数据同步. 把会做同步的rgw ...

  3. 6.Ceph 基础篇 - CephFS 文件系统

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485294&idx=1&sn=e9039504 ...

  4. Ceph 文件系统 CephFS 的实战配置,等你来学习 -- <4>

    Ceph 文件系统 CephFS 的介绍与配置 CephFs介绍 Ceph File System (CephFS) 是与 POSIX 标准兼容的文件系统, 能够提供对 Ceph 存储集群上的文件访问 ...

  5. 分布式存储系统之Ceph集群CephFS基础使用

    前文我们了解了ceph之上的RBD接口使用相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16753098.html:今天我们来聊一聊ceph之上的另一 ...

  6. Ceph RBD CephFS 存储

    Ceph RBD  CephFS 存储 环境准备: (这里只做基础测试, ceph-manager , ceph-mon, ceph-osd 一共三台) 10.6.0.140 = ceph-manag ...

  7. kubernetes多节点的pod挂载同一个cephfs目录

    一.安装cephfs 方法一: 直接进入deploy目录,执行: ceph-deploy --overwrite-conf mds create ceph01:mds-daemon- 上面的ceph0 ...

  8. Centos7部署CephFS

    标签(空格分隔): ceph环境,ceph,cephfs cephfs部署之前准备工作: 1. 一个 clean+active 的cluster cluster部署参考:centos7下搭建ceph ...

  9. IO解惑:cephfs、libaio与io瓶颈

    最近笔者在对kernel cephfs客户端进行fio direct随机大io读测试时发现,在numjobs不变的情况下,使用libaio作为ioengine,无论怎么调节iodepth,测试结果都变 ...

随机推荐

  1. Tarjan算法离线 求 LCA(最近公共祖先)

    本文是网络资料整理或部分转载或部分原创,参考文章如下: https://www.cnblogs.com/JVxie/p/4854719.html http://blog.csdn.net/ywcpig ...

  2. 深入剖析Redis客户端Jedis的特性和原理

    一.开篇 Redis作为目前通用的缓存选型,因其高性能而倍受欢迎.Redis的2.x版本仅支持单机模式,从3.0版本开始引入集群模式. Redis的Java生态的客户端当中包含Jedis.Rediss ...

  3. git与pycharm的使用详解(git+gitlab+pycham)

    前言 当自动化框架搭建出来后,需要多个人来使用框架,写自动化用例. 在这个阶段,我们不可能将写好的代码打包发给其他人,这样很麻烦,多人协作一点也不灵活. 这时候,就提现出了git的价值 一.下载安装 ...

  4. 【java+selenium3】模拟键盘操作 (十二)

    一.键盘操作 用代码来模拟键盘的Enter或一系列的组合键,前面使用sendkeys()方法模拟键盘的输入,除此之外还可以模拟键盘组合键输入如下: 整理一些比较常用的键盘操作如下: sendKeys( ...

  5. SpringCloud升级之路2020.0.x版-31. FeignClient 实现断路器以及线程隔离限流的思路

    本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 在前面一节,我们实现了 FeignClient 粘合 resilience4j 的 Ret ...

  6. Linux ns 6. Network Namespace 详解

    文章目录 1. 简介 1.1 Docker Network 桥接模式配置 2. 代码解析 2.1 copy_net_ns() 2.2 pernet_list 2.2.1 loopback_net_op ...

  7. Python命令行参数及文件读出写入

    看完了柯老板的个人编程作业,虽然是评测组不用做此次作业,但还是想对本次作业涉及到利用Python命令行参数以及进行文件读出写入操作做一个简单的总结.(个人编程作业还是想自己能敲一敲,毕竟我的码力还是小 ...

  8. [atARC121F]Logical Operations on Tree

    (特判$n=1$的情况) 当确定权值和操作后,如何判定是否合法-- 考虑一个度为1的节点,对其权值即其对应边的边操作分类讨论: $1\or$,显然只需要最后选择这条边即可,一定合法 $1\and$或$ ...

  9. [bzoj1635]最高的牛

    初始如果没有限制,很显然每一头牛高度都是h当只有一个限制,让h[a]到h[b]的高度都减1即可容易发现两个限制不会相交(否则必然矛盾),只会包含或相离,因此没有影响,直接差分/线段树即可(注意:1.不 ...

  10. Linux下Zabbix5.0 LTS添加自定义监控项

    自定义监控项 zabbix本身提供了很多可选的监控项,可以满足绝大部分的监控需求.有时候由于业务需求,需要自定义监控项. 下面以创建mysql自定义监控项为例,分享如何创建zabbix自定义监控项. ...