目录
一、环境准备
二、什么是文件系统
三、ceph块存储与文件系统区别
四、创建ceph文件系统
1、启动MDS服务
2、创建存储池
3、创建Ceph文件系统
4、客户端挂载
一、环境准备
Ceph集群搭建参照:Ceph集群部署
以下Ceph存储实验环境均基于上述Ceph集群环境搭建。
二、什么是文件系统
一个文件系统是由inode和block两部分in
- inode存储文件的描述信息(metadata元数据)
- block存储真正的数据
根据这个原理,所以在做ceph文件系统的时候,需要划分2个存储池,一个用来存储inode,另一个用来存储block。
三、ceph块存储与文件系统区别
前面已经介绍了ceph块存储,那么ceph块存储和ceph文件系统有什么区别呢,分别适合在什么场合使用呢?
答:Ceph的块设备具有优异的读写性能,但不能多处挂载同时读写,目前主要用在OpenStack上作为虚拟磁盘。而Ceph的文件系统接口读写性能较块设备接口差,但具有优异的共享性。
四、创建ceph文件系统
1、启动MDS服务
ceph文件系统是通过ceph-mds服务管理的。
在node1主机通过ceph-deploy脚本启动MDS服务,可以启动任何一个节点的mds服务,这里我们启动node3的mds服务:
# 在node1远程启动node3的mds服务
cd /root/ceph-cluster #该目录,是最早部署ceph集群时,创建的目录,具体跟看前文:ceph集群部署
#远程node3,拷贝配置文件,启动mds服务,执行过程见下图
ceph-deploy mds create node3
到node3检查下mds服务启动情况:
systemctl status ceph-mds@node3 #服务名称后跟@+节点名
2、创建存储池
在集群中的任何一台主机都可以操作(任何node节点都可以操作)
# 创建存储池,对应64个PG(先创建64个以满足后续osd扩容需求),cephfs_data为自定义存储池名称
ceph osd pool create cephfs_data 64
#创建存储池,对应64个PG(先创建64个以满足后续osd扩容需求),cephfs_metadata为自定义存储池名称
ceph osd pool create cephfs_metadata 64
如上操作,其中:
(1)cephfs_data存储池是用来存放block数据,cephfs_metadata是用来存储inode数据;
(2)关于PG的说明:
PG是逻辑概念,对应如下图中间一层的2个PG(Placement Group),第1排obj为需要读写的数据,第3排是数据真正存放的位置是OSD对应的盘上,PG对应OSD,一个PG可以对应一个或多个OSD,数据是先写到PG,再写到OSD,数据读取也是先读PG,可以1个PG对应所有OSD,也可以使用2个或多个对应所有OSD,考虑到效率,同一个PG下面不要有太多的OSD,这里先创建64个PG是考虑后面OSD会扩容增加,满足后续使用需求。
查看当前存储池:
ceph osd lspools
如上,前面是存储池编号,后面是存储池名称。
3、创建Ceph文件系统
创建文件系统即将上面创建的inode和block存储池合并到一起,可以理解成普通块设备的格式化。
在任何一个node节点执行:
#new为新建,myfs1文自定义文件系统名称,cephfs_metadata和cephfs_data为之前创建的存放inode和block的存储池
#注意:cephfs_metadata和cephfs_data有先后顺序,放在前面的是存放inode,后面的是存放block,不要顺序搞错
ceph fs new myfs1 cephfs_metadata cephfs_data
查看ceph文件系统:
ceph fs ls
如上可以看到ceph文件系统名为myfs1,后面分别对应用户存储inode和block的存储池,前者存放inode元数据,后者存放block数据。
4、客户端挂载
(1)临时挂载
#如下,其中:
#mount -t 后面跟文件系统类型,这里是ceph类型
#192.168.2.20:6789:/ 为MON节点的IP(不是MDS节点),如果是单IP的话,可以写任意一个MON节点的IP,后面的根不是服务器文件系统的根,而是对应ceph文件系统的根,这里是挂载整个ceph文件系统,所以写根
#/mnt是本地挂载点
#-o指定挂载选项,其中admin是用户名,secret是密钥,可以在/etc/ceph/ceph.client.admin.keyring文件里找到
mount -t ceph 192.168.2.20:6789:/ /mnt -o name=admin,secret=AQC/h4Fj/ckvDxAARjpUCbf1VeDaHQFhuZrELg==
如上有一个问题,如果提供挂载的服务器挂掉了,那么文件系统就无法使用了,所以可以使用下面的高可用方案。
高可用方案(多个IP):
mount -t ceph 192.168.2.20:6789,192.168.2.30:6789,192.168.2.40:6789:/ /mnt -o name=admin,secret=AQC/h4Fj/ckvDxAARjpUCbf1VeDaHQFhuZrELg==
(2)永久挂载
使用fstab实现永久挂载ceph文件系统需要单独安装一个包:libcephfs1
yum install libcephfs1 -y
vim /etc/fstab #挂载内容如下
#单IP方案
#192.168.2.20:6789:/ /mnt ceph defaults,_netdev,name=admin,secret=AQC/h4Fj/ckvDxAARjpUCbf1VeDaHQFhuZrELg== 0 0
#多IP高可用方案
192.168.2.20:6789,192.168.2.30:6789,192.168.2.40:6789:/ /mnt ceph defaults,_netdev,name=admin,secret=AQC/h4Fj/ckvDxAARjpUCbf1VeDaHQFhuZrELg== 0 0
mount -a