ceph-deploy mds create {host-name}[:{daemon-name}] [{host-name}[:{daemon-name}] ...]
实例:ceph-deploy mds create k8s-master01:mds
ceph-mds 是 Ceph 分布式文件系统的元数据服务器守护进程。一或多个 ceph-mds 例程协作着管理文件系统的命名空间、协调到共享 OSD 集群的访问。
1. 设置存储池副本数
#ceph osd pool get data size
#ceph osd pool set data size 3
2. 打印存储池列表
#ceph osd lspools
3. 创建 删除 存储池
创建pool
# ceph osd pool create testPool 64
重命名pool
# ceph osd pool rename testPool amizPool
获取pool 副本数
# ceph osd pool get amizPool size
设置pool 副本数
# ceph osd pool set amizPool size 3
获取pool pg_num/pgp_num
# ceph osd pool get amizPool pg_num
# ceph osd pool get amizPool pgp_num
设置pool pg_num/pgp_num
# ceph osd pool set amizPool pg_num 128
# ceph osd pool set amizPool pgp_num 128
删除存储池
# ceph osd pool delete amizPool amizPool --yes-i-really-really-mean-it
删除池提示错误
Error EBUSY: pool 'testpool' is in use by CephFS
# ceph mds remove_data_pool testpool
# ceph osd pool delete testpool testpool --yes-i-really-really-mean-it
4. 设置查看存储池pool 配额
查看存储池pool 配额
# ceph osd pool get-quota poolroom1
quotas for pool 'poolroom1':
max objects: N/A
max bytes : 6144MB # 存储池pool配额 6G
一个 Ceph 文件系统需要至少两个 RADOS 存储池,一个用于数据、一个用于元数据。配置这些存储池时需考虑:
要用默认设置为文件系统创建两个存储池,你可以用下列命令:
$ ceph osd pool create cephfs_data
$ ceph osd pool create cephfs_metadata
删除可以这样:ceph osd pool delete cephfs_metadata cephfs_metadata --yes-i-really-really-mean-it
创建好存储池后,你就可以用 fs new 命令创建文件系统了:
ceph fs new
例如:
$ ceph fs new cephfs cephfs_metadata cephfs_data
$ ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
文件系统创建完毕后, MDS 服务器就能达到 active 状态了,比如在一个单 MDS 系统中:
$ ceph mds stat
e5: 1/1/1 up {0=a=up:active}
建好文件系统且 MDS 活跃后,你就可以挂载此文件系统了:
挂载 CephFS 文件系统
用内核驱动挂载 CEPH 文件系统
要挂载 Ceph 文件系统,如果你知道监视器 IP 地址可以用 mount 命令、或者用 mount.ceph 工具来自动解析监视器 IP 地址。例如:
sudo mkdir /mnt/mycephfs
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs
要挂载启用了 cephx 认证的 Ceph 文件系统,你必须指定用户名、密钥。
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secret=AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==
前述用法会把密码遗留在 Bash 历史里,更安全的方法是从文件读密码。例如:
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret
关于 cephx 参见认证。
这里贴出我的报错和解决办法:
[root@k8s-node01 ceph]# mount -t ceph 192.168.0.164:6789,192.168.0.165:6789,192.168.0.166:6789:/ /k8sfs -o name=client.admin,secretfile=/etc/ceph/admin.secret
mount: wrong fs type, bad option, bad superblock on 192.168.0.164:6789,192.168.0.165:6789,192.168.0.166:6789:/,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.
解决方案:
yum install ceph-common-10.2.11-0.el7.x86_64 或者从其他机器拷贝:/usr/sbin/mount.ceph
设置开机自启动挂载:
vim /etc/rc.d/rc.local
mount -t ceph 192.168.0.164:6789,192.168.0.165:6789,192.168.0.166:6789:/ /k8sfs -o name=admin,secretfile=/etc/ceph/admin.secret
由于centos7默认rc.local没有执行权限,所以要授权:
chmod +x /etc/rc.d/rc.local
要卸载 Ceph 文件系统,可以用 unmount 命令,例如:
sudo umount /mnt/mycephfs
一、启用cephfs
Ceph文件系统至少需要两个RADOS池,一个用于数据,一个用于元数据
启用mds服务
# ceph-deploy mds create node01
创建数据pool
ceph osd pool create cephfs_data 128
创建Metadata池
ceph osd pool create cephfs_metadata 128
启用pool
ceph fs new cephfs cephfs_metadata cephfs_data
查看cephfs
ceph fs ls
**二、挂载cephfs **
挂载cephfs有两种方式,kernel driver和fuse
1、kernel driver挂载
关闭认证情况下
sudo mkdir /mnt/wyl
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/wyl
设置开机自动挂载/etc/fstab
172.16.70.77:6789:/ /mnt/ceph ceph noatime,_netdev 0 2
启用认证
# cat ceph.client.admin.keyring
[client.admin]
key = AQBSdU5bT27AKxAAvKoWQdGpSuNRCHjC4B8DVA==
# mount -t ceph 172.16.70.77:6789:/ /wyl -o name=admin,secret=AQBSdU5bT27AKxAAvKoWQdGpSuNRCHjC4B8DVA==
设置开机自动挂载/etc/fstab
172.16.70.77:6789:/ /mnt/ceph ceph name=admin,secretfile=/etc/ceph/secret.key,noatime,_netdev 0 2
1
注意:检查是否启用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
2、fuse挂载
安装挂载工具
# yum -y install ceph-fuse ceph
将存储节点的admin秘钥拷贝到本地
# ssh root@node1 "ceph-authtool -p /etc/ceph/ceph.client.admin.keyring" > admin.key
root@node1’s password:
赋予权限
# chmod 600 admin.key
执行挂载
参考官网
http://docs.ceph.org.cn/cephfs/fuse/
sudo mkdir /home/usernname/cephfs
sudo ceph-fuse -m 192.168.0.1:6789 /home/username/cephfs
# mount -t ceph node1:6789:/ /mnt -o name=admin,secretfile=admin.key
# df -hT
设置开机自动挂载/etc/fstab
id=admin,conf=/etc/ceph/ceph.conf /mnt fuse.ceph defaults 0 0
1
mds可以同时启用多个节点,不同的client挂载不同mds存储节点,不同client可以同时写数据,数据是共享的
3、windows挂载:
https://github.com/ksingh7/ceph-cookbook/tree/master/ceph-dokan
安装dokaninstall.exe
守护进程(ceph-mgr)负责跟踪运行时间指标和Ceph群集的当前状态,包括存储利用率,当前性能指标和系统负载。 Ceph Manager守护程序还托管基于python的插件来管理和公开Ceph集群信息,包括基于Web的仪表板和REST API。 通常,至少有两名Manager需要高可用性。
[root@ceph-1 cluster]# ceph-deploy mds create ceph-1 ceph-2 ceph-3
cephfs需要两个pool:
[root@ceph-1 cluster]# ceph osd pool create cephfs_data 128
[root@ceph-1 cluster]# ceph osd pool create cephfs_metadata 128
注:
计算pg数量:
新建cephfs,名字叫“cephfs”,使用刚才我们新建的两个pool
[root@ceph-1 cluster]# ceph fs new cephfs cephfs_metadata cephfs_data
[root@ceph-1 cluster]# mkdir /mnt/mycephfs
[root@ceph-1 cluster]# cat ceph.client.admin.keyring
[client.admin]
key = AQDfhyBbQQf0HhAA6jGuqvK4jJGg42CnOo5iog==
创建一个文件保存admin用户的秘钥:
[root@ceph-1 ~]# vim admin.secret
将秘钥“AQDfhyBbQQf0HhAA6jGuqvK4jJGg42CnOo5iog==”粘贴到admin.secret
最后使用kernel挂载方式
[root@ceph-1 ~]# mount -t ceph ceph-1:6789,ceph-2:6789,ceph-3:6789:/ /mnt/mycephfs -o name=admin,secretfile=/root/admin.secret
注:
由于kernel挂载方式目前不支持quota的配置,如果需要quota的配置,那么只好使用fuse挂载
yum -y install ceph-fuse
#admin挂载
ceph-fuse -m ceph-1:6789,ceph-2:6789,ceph-3:6789 /mnt/admin
#非admin用户挂载(e.g., tom)
vim tom.secret #一定要按照下面的格式写
[client.tom]
key = AQCBuCxbm7CpBxAA75Qy9JbqsNpGGrwAuyBmfw==
ceph-fuse -n client.tom --keyring tom.secret -m ceph-1:6789,ceph-2:6789,ceph-3:6789 /mnt/fuse_tom1 -r /tom
注:-n client.tom 也可以写成--id,-r 把文件系统内的 root_directory 作为根挂载,而不是整个 Ceph 文件系统树。
配置quota
setfattr -n ceph.quota.max_bytes -v 100000000 /some/dir # 100 MB,比如就剩下10M,20M的文件会写10M进去
setfattr -n ceph.quota.max_files -v 6 /some/dir # < 6 files & directories
#查看配置
getfattr -n ceph.quota.max_bytes /some/dir
getfattr -n ceph.quota.max_files /some/dir
#清除配置
setfattr -n ceph.quota.max_bytes -v 0 /some/dir
setfattr -n ceph.quota.max_files -v 0 /some/dir