1. ceph文件系统:
CephFS需要有个一个MDS(Meta Data Servers)元数据服务,其构建在RADOS之上,对客户端提供数据存储的服务;MDS由多个节点组成,节点之间使用 Active/Standby 模式,即主备模式对外提供服务,主节点的日志元数据信息记录在pool资源池上∶由一个单独的资漂池pool存放,MDS之间会定期交换metadata元数据信息;当主MDS异常时,备用的MDS会接管其功能,元数据信息将直接从journal 资源池中获取,从而保障数据的一致性。
另外,对于数据的读写操作,客户端从metadata获取元数据之后,客户端对数据的读写操作直接到数据存储的资源池,从而将元数据和和数据存储资源池分开,构建MDS集群时需要创建两个pool,其中一个存放metadata元数据,另外一个存放实际data数据。
2. MDS集群部署:
1. ## 在ansible清单文件中添加:
[root@node2 ~]# vim /etc/ansible/hosts
[mdss]
node[2:4]
2. ## 开放入口文件的mdss功能:
[root@node2 ~]# vim ceph-ansible-main/site.yml
- hosts:
- mdss
3. ##复制mdss.yml文件
[root@node2 ~]# cp ceph-ansible-main/group_vars/mdss.yml.sample ceph-ansible-
main/group_vars/mdss.yml
4. ##重新部署
[root@node2 ceph-ansible-main]# ansible-playbook site.yml
3. 创建存放metadata元数据和存放实际data数据的池:
[root@node2 ~]# ceph osd pool create cephfs_data 128
[root@node2 ~]# ceph osd pool create cephfs_metadata 128
4. 创建文件系统:
[root@node2 ~]# ceph fs new cephfs(文件系统名称) cephfs_metadata cephfs_data
## 查看文件系统状态
[root@node2 ~]# ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
## 再次此时查看mds的服务状态,可以看到node2被选举为active主,另外两个承担standby的角色[root@node2 ~]# ceph -s
5. CephFS客户端挂载:
CephFS提供了两种客户端和CephFS文件存储交互∶内核的 cephfs和用户态级别的 ceph-fuse,内核极别的 cephfs 性能上会优于ceph-fuse,因此推荐使用 cephfs。使用 cephf时需要认证信息,为了简便,我们使用默认提供的admin用于实现和CephFS的交互
方式一. 使用CephFS挂载文件系统:
[root@client ~]# mkdir /mnt/cephfs1
## 文件系统临时挂载,默认把三个节点都挂载到/mnt/cephfs1上
[root@client ~]# mount.ceph :/ /mnt/cephfs1 -o name=admin
## 查看文件系统挂载状态
[root@client ~]# df -h
## 如果你需要持久挂载,我们可以将cephfs挂载的存储信息写入到/etc/fstab文件中,例如∶
:/ /mnt/cephfs1 ceph name=admin,noatime,_netdev 0 2
方式二. 使用ceph-fuse挂载文件系统:
## 安装ceph-fuse
[root@client ~]# yum install ceph-fuse -y
## 生成挂载文件目录mkdir
[root@client ~]# mkdir /mnt/cephfs2
## 挂载文件系统
[root@client ~]# ceph-fuse -n client.admin -m node2:6789,node3:6789,node4:6789
/mnt/cephfs2
-n:表示指定操作的用户
-m:表示指定节点
## 查看挂载状态
[root@client ~]# df -h
6. 清除实验资源:
## 卸载文件系统
[root@client ~]# umount /mnt/cephfs1
[root@client ~]# umount /mnt/cephfs2
[root@client ~]# rm -rf /mnt/cephfs*
# 删除文件系统,同样要修改ceph配置文件才能删除
[root@node2 ~]# ceph fs rm cephfs --yes-i-really-mean-it