CEPHFS 文件系统创建和挂载

步骤一:元数据服务器

  • 增加/删除 MDS
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

步骤二:挂载 CEPHFS

  • 创建 CephFS 文件系统

一个 Ceph 文件系统需要至少两个 RADOS 存储池,一个用于数据、一个用于元数据。配置这些存储池时需考虑:

  • 为元数据存储池设置较高的副本水平,因为此存储池丢失任何数据都会导致整个文件系统失效。
  • 为元数据存储池分配低延时存储器(像 SSD ),因为它会直接影响到客户端的操作延时。

要用默认设置为文件系统创建两个存储池,你可以用下列命令:

$ 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

 

CephFS搭建与部署

 

 

1. 部署mds

守护进程(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

2. 新建pool

cephfs需要两个pool:

  1. data pool:存放object
  2. meta data pool:存放元数据,可设置较高副本级别,也可调整pool的crush_ruleset,使其在ssd上存储,加快客户端响应速度
    我这里直接使用默认crush_ruleset
[root@ceph-1 cluster]# ceph osd pool create cephfs_data 128
[root@ceph-1 cluster]# ceph osd pool create cephfs_metadata 128

注:
计算pg数量:

  1. 集群pg 总数 = (OSD 总数* 100 )/最大副本数
  2. 每个pool中pg总数=(OSD总数*100)/ 最大副本数 )/ 池数
  3. pg数需要是2的指数幂

3. 新建cephfs

新建cephfs,名字叫“cephfs”,使用刚才我们新建的两个pool

[root@ceph-1 cluster]# ceph fs new cephfs cephfs_metadata cephfs_data

4. 挂载cephfs

[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 

注:

  1. mount时,mon节点有几个写几个
  2. 还可以使用fuse挂载方式,fuse其实坑挺多的,能不用暂时不用

由于kernel挂载方式目前不支持quota的配置,如果需要quota的配置,那么只好使用fuse挂载

4.’ fuse挂载cephfs

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

 

 

你可能感兴趣的:(ceph存储)