前面我们使用 ceph-deploy 搭建了 Ceph 集群,本文我们将学习使用 Ceph 集群创建资源池,创建RBD 块以及 RBD 块的使用。
部署完 Ceph 集群之后,如何在Ceph集群中存储文件呢?ceph提供了三种接口供用户使用,分别是:
A block is a sequence of bytes (for example, a 512-byte block of data). Block-based storage interfaces are the most common way to store data with rotating media such as hard disks, CDs, floppy disks, and even traditional 9-track tape. The ubiquity of block device interfaces makes a virtual block device an ideal candidate to interact with a mass data storage system like Ceph.
RBD(Rados Block Device)即Ceph提供的块存储接口,提供一个连续的序列化空间(可以理解为一个image),块存储能够实现传统存储介质如硬盘,CD,磁带库等存储的功能,RBD能够为虚拟机提供一个大规模,可扩展的存储空间,简单点来说,能够为虚拟机提供磁盘,可以在磁盘上做磁盘分区,格式化等操作,其具有如下特点:
我们先以Ceph RBD的方式来介绍Ceph集群的使用,通过在Ceph集群中创建一个RBD块文件供用户进行使用,要使用Ceph,首先需要一个资源池pool,pool是Ceph中数据存储抽象的概念,其由多个pg(Placegroup)和pgp组成,创建的时候可以指定pg的数量,pg的大小一般为2^n次方,如下先创建一个pool
1、创建一个pool,其名字为happylau,包含64个PG/PGP,
2、可以查看pool的信息,如查看当前集群的pool列表——lspools,可以使用df查看资源池的存储空间
3、查看pg_num和pgp_num,副本数size大小
关于pg_num和pgp_num的数量,官方推荐的计算方案为,每个OSD推荐使用100个PG,OSD的数量*100/pool副本数量,然后取最近2的^n次方的值,套公式,其值为:PGs=3*100⁄3=100,取最近的值为128,此时的设置低于官方建议。
4、调整pool的pg_num和pgp_num数量,调整pg和pgp会涉及到数据迁移,如果线上业务情评估好,在低峰期做操作,避免数据rebalancing造成业务影响
5、调整副本数,可以根据需要调整资源池pool的副本数,默认为三个,也可以手动调整pool副本数量的个数,以下调整pool资源池副本数量为2个副本
此时,如果集群中有数据,Ceph会自动做数据均衡(rebalancing),将多余的pg同步到其他osd,确保当前pool资源池的副本数为2个,此时使用ceph -s查看集群,可以看到pool资源池的pg的数量
由上可以看到Ceph集群当前的整体情况,包含有cluster,services,data,io信息,health状态可以看到集群当前处于告警HEALTH_WARN状态,告警提示内容为“application not enabled on 1pool(s)”,资源池pool未启用application,Ceph 推荐开启application的功能。
6、开启application功能,application即设置资源池pool存储接口类型,包含三种:rbd,cephfs和,rgw,可以根据资源池pool的类型,设置不同的application,如下开启资源池为rbd类型
再次查看Ceph,可以看到Ceph此时处于Health状态
至此,Ceph资源池pool相关操作到此完毕,接下来在pool中创建镜像。
Ceph RBD块存储主要为虚拟化如KVM提供块存储设备,KVM需要依赖于qemu和libvirt和RBD块存储交互,这也是和云平台如OpenStack,CloudStack,Kubernetes交互的基础,因此非常有必要掌握Ceph原生RBD块存储的使用。由于当前Ceph集群未与虚拟化或者云平台进行集成,因此采用原生的rbd接口与Ceph进行交互(云平台通过调用rbd接口完成块存储生命周期管理)。
1、rbd块存储接口交互的工具为rbd,通过rbd命令来实现RBD块的创建,如创建一个10G的块存储
2、如上创建了一个ceph-rbd-demo.img的RBD块文件,大小为10G,可以通过ls和info查看RBD镜像的列表和详情信息

3、RBD存储块已创建起来了,如何使用呢?如果已和虚拟化环境结合,创建好虚拟机然后在磁盘中写数据即可,但此时还未与虚拟化结合(结合难度也比较大,后续再专门讨论),rbd提供了一个map的工具,可以将一个RBD块映射到本地块进行使用,大大简化了使用过程,rbd map时候,exclusive-lock, object-map, fast-diff, deep-flatten的features不支持,因此需要先disable,否则会提示RBD image feature set mismatch报错信息
4、RBD块设备已映射到本地的/dev/rbd0设备上,因此可以对设备进行格式化操作使用
5、通过rbd info可以看到镜像块存储对象的前缀为rbd_data.10b96b8b4567,即存储被切割为多个object,object的前缀以rbd_data.10b96b8b4567开头,可以通过rados查看存储池中的obejct,这些object会随着真实使用空间的增长而自动增长
rados对象检索
可以在rbd映射的磁盘中写入更多的数据,然后再通过rados查看object的情况,会发现创建了更多的object用于存储数据。object最大数量不会超过2560个,即10G(每个object 4M*2560)
6、至此,已经完成了rbd存储的创建和通过kernel的方式挂在到系统中使用,这种使用方式相对较少,一般以KVM的libvirt/qemu方式进行对接,如果需要卸载可以按照如下方式进行
本文节选自 《Ceph 入门到实战》课程内容,本课程结合在企业实践由浅入深全面剖析 Ceph 存储,一共分为三篇:基础篇、进阶篇和高阶篇(课程内容已录制完成)。
基础篇: 介绍 Ceph 的基础概念,Ceph 分布式集群部署,RBD 块存储的使用,RGW 对象存储使用,CephFS 文件存储的使用。
进阶篇: 介绍 Ceph 运维中常见的操作,包括集群扩容,集群管理,CRUSHMAP 定制,RBD 快照克隆,RBD 增量备份与恢复,RGW 高可用集群。
高阶篇: 介绍 Ceph 和 Kubernetes 集成,Ceph 与 KVM 集成,Ceph 与 OpenStack 云平台集成,SDK 开发等内容。
说了这么多,看看目录吧

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/177378.html