ceph底层是把多个硬盘合并成逻辑存储池 形成(逻辑统一) (lun合并成逻辑硬盘)保存数据时会将数据保存到任意一个节。
。
支持的存储类型
对象存储
横向存储 它保存丰富的文件元数据 快速查询 适合大文件 媒体文件的保存
块存储
数据以固定大小的“块”形式存储,高性能,低延迟。每个块都是独立的对象 如数据库的保存方式 相当于是一块硬盘(存储设备)一样(未格式化的)裸空间 人类不可读而已。
文件系统存储
层级存储 它适合保存小文件 可用设置文件目录的安全锁 文件以块镜进行保存 是人类可读的形式。
存储池的类型
– replicated pools
副本池,将数据存储为3副本,也就是说数据默认会被存储为3份。
当然,创建存储池时可以修改对应的副本数量。– erasure-coded pools
相比于副本池并不会将数据存储3份,而是基于纠删码技术节省存储空间,达到数据冗余的效果。
CephFS概述
RBD提供了远程磁盘挂载的问题,但无法做到多个主机共享一个磁盘,如果有一份数据很多客户端都要读写该怎么办呢?这时CephFS作为文件系统解决方案就派上用场了
CephFS架构原理
CephFS需要至少运行一个元数据服务器(MDS)守护进程(ceph-mds),此进程管理与CephFS上存储文件相关的元数据信息。
MDS虽然称为元数据服务,但是它却不存储任何元数据信息,它存在的目的仅仅是让我们rados集群提供存储接口。
CephFS和NFS对比
– 1.底层数据冗余的功能,底层的roados提供了基本数据冗余功能,因此不存在NFS的单点故障因素; – 2.底层roados系统有N个存储节点组成,所以数据的存储可以分散I/O,吞吐量较高;
cephFS的一主一从架构部署
https://docs.ceph.com/en/reef/cephfs/createfs/
创建两个存储池分别用于存储mds的元数据和数据
ceph osd pool create cephfs_data ceph osd pool create cephfs_metadata
创建一个文件系统,名称为”test-cephfs”
ceph fs new test-cephfs cephfs_metadata cephfs_data ceph fs ls
查看创建的文件系统
ceph fs ls ceph mds stat ceph -s
应用mds的文件系统
ceph orch apply mds test-cephfs ceph mds stat ceph fs ls ceph -s
添加多个mds服务器
ceph orch daemon add mds test-cephfs ceph143 ceph orch daemon add mds test-cephfs ceph141
查看cephFS集群的详细信息
ceph fs status test-cephfs
cephfs的客户端之借助内核模块挂载
管理节点创建用户并导出钥匙环和key文件
创建用户并授权
ceph auth add client.yinzhengjiefs mon 'allow r' mds 'allow rw' osd 'allow rwx'
导出认证信息
ceph auth get client.test > ceph.client.test.keyring cat ceph.client.test.keyring ceph auth print-key client.test> test.key more yinzhengjiefs.key
将钥匙环和秘钥key拷贝到客户端指定目录
scp ceph.client.test.keyring test.key ceph143:/etc/ceph/ scp ceph.client.test.keyring 10.0.0.250:/etc/ceph/
基于secretfile进行挂载
查看本地文件
ll /etc/ceph/ | grep test
查看本地解析记录
grep ceph /etc/hosts
基于key文件进行挂载并尝试写入数据 (报错则安装客户端服务)
df -h | grep mnt mount -t ceph ceph141:6789,ceph142:6789,ceph143:6789:/ /mnt -o name=test,secretfile=/etc/ceph/test.key df -h | grep mnt
基于KEY进行挂载,无需拷贝秘钥文件
df -h | grep mnt mount -t ceph 10.0.0.141:6789,10.0.0.142:6789:/ /mnt -o name=test,secret=AQARZlJn4B54ExAAFNdetd3leGZ7R+7bbbUNoA== df -h | grep mnt
cephfs的客户端之基于用户空间fuse方式访问
FUSE概述
对于某些操作系统来说,它没有提供对应的ceph内核模块,我们还需要使用CephFS的话,可以通过FUSE方式来实现。
FUSE英文全称为:”Filesystem in Userspace”,用于非特权用户能够无需操作内核而创建文件系统,但需要单独安装”ceph-fuse”程序包。
安装ceph-fuse程序包
apt -y install ceph-fuse
使用ceph-fuse工具挂载cephFS
创建挂载点
mkdir -pv /test/cephfs
开始挂载ceph
mkdir /etc/ceph scp 10.0.0.141:/etc/ceph/ceph.client.admin.keyring /etc/ceph
验证是否挂载成功
df -h | grep /test
CephNFS创建和挂载成功~