ceph存储之RBD块存储

您所在的位置:网站首页 文案摘抄兼职可以做吗 ceph存储之RBD块存储

ceph存储之RBD块存储

2024-07-13 06:16:39| 来源: 网络整理| 查看: 265

目录一、ceph资源池的相关概念1.1 创建存储池1.2 ceph中pg与pgp的关系1.3 调整存储池副本数1.4 调整存储池的pg即pgp数量二、RDB(块存储)2.1 创建rbd2.2 查看块文件的详细信息2.3 删除块设备2.4 内核级别挂载使用块设备2.5 删除块设备不支持的特性2.6 查看块设备2.7 格式化并使用块设备2.8 RBD数据写入流程2.9 RDB块设备扩容

无论是通过Ceph块设备、对象存储还是文件系统,Ceph存储群集都从Ceph客户端接收数据,并将其存储为对象。每个对象对应于文件系统中的一个文件,该文件存储在对象存储设备上。Ceph OSD守护程序处理存储磁盘上的读/写操作。

此博文基于部署ceph集群 (Nautilus版)进行操作!

没有特殊声明,在 ceph-node-11 节点上执行

一、ceph资源池的相关概念

Ceph存储系统支持“池”的概念,“池”是用于存储对象的逻辑分区。

Ceph客户端从Ceph监控器检索集群映射,并将对象写入池中。池的size副本数或副本数,CRUSH规则和放置组的数量决定了Ceph将如何放置数据。

数据存储流程

1.1 创建存储池 $ ceph osd pool create ceph-demo 64 64 # 创建一个名字为ceph-demo的pool(第一个64是pg数量,第二个64是pgp数量) pool 'ceph-demo' created $ ceph osd lspools # 查看当前所有pool 1 ceph-demo $ ceph osd pool application enable ceph-demo rbd # 将 ceph-demo 池分类为 rbd enabled application 'rbd' on pool 'ceph-demo' $ ceph osd pool application get ceph-demo # 查看资源池类型为rbd { "rbd": {} } 1.2 ceph中pg与pgp的关系

pg是用来存放object的,pgp相当于是pg存放osd的一种排列组合!

举例说明:比如有3个osd,osd1、osd2、osd3 ,副本数是2,如果pgp的数目是1,那么所有的pg存放的osd组合就只有一种,可能是[osd.1,osd.2],那么所有的pg主从副本分别存放到osd.1和osd.2,如果pgp设为2,那么其osd组合可以两种,可能是[osd.1,osd.2]和[osd.1,osd.3],是不是很像我们高中数学学过的排列组合,pgp就是代表这个意思。一般来说应该将pg和pgp的数量设置为相等。

1.3 调整存储池副本数 $ ceph osd pool get ceph-demo size # 查看pool的副本数(默认副本为3) size: 3 $ ceph osd pool set ceph-demo size 2 # 调整pool副本数为2 $ ceph osd pool get ceph-demo size size: 2 1.4 调整存储池的pg即pgp数量 $ ceph osd pool get ceph-demo pg_num # 查看pg和pgp的数量 pg_num: 64 $ ceph osd pool get ceph-demo pgp_num pgp_num: 64 $ ceph osd pool set ceph-demo pg_num 128 # 调整pg数量为128 set pool 1 pg_num to 128 $ ceph osd pool get ceph-demo pg_num # 查看确认 pg_num: 128 $ ceph osd pool set ceph-demo pgp_num 128 # 最好将pgp数量调整为和pg数量一致 set pool 1 pgp_num to 128 $ ceph osd pool get ceph-demo pgp_num # 查看确认 pgp_num: 128 二、RDB(块存储)

ceph集群搭建起来后,可以在ceph集群上进行块存储、对象存储以及文件系统存储。从架构上来看,在ceph集群的上面是rados协议,该协议为使用ceph集群的用户提供必要的支持(ceph用户通过调用rados协议来使用ceph集群)。对于块存储来说,可以通过内核模块的方式使用ceph集群也可以通过用户态调用librbd库来使用ceph集群。通过内核模块方式可以充分的利用内核的page cache机制,而通过用户态调用librbd也可以使用librbd在用户态提供的cache方式提高性能。

在进行创建rbd之前,需要先按照上面的操作,创建出来一个可用的pool。

2.1 创建rbd $ rbd -p ceph-demo ls # 确认当前pool中没有rbd $ rbd create -p ceph-demo --image rbd-demo.img --size 10G # 基于ceph-demo池创建名称为rbd-demo.img的块文件 $ rbd create ceph-demo/rbd-demo-1.img --size 10G # 换种语法格式创建第二个块文件 $ rbd -p ceph-demo ls # 查看ceph-demo池中的块文件 rbd-demo-1.img rbd-demo.img 2.2 查看块文件的详细信息 $ rbd info ceph-demo/rbd-demo.img # 查看rbd-demo.img块文件 rbd image 'rbd-demo.img': # 此块设备大小为10G,包含了2560个object,每个object的大小为4M size 10 GiB in 2560 objects order 22 (4 MiB objects) snapshot_count: 0 id: 11194f22705d block_name_prefix: rbd_data.11194f22705d format: 2 features: layering, exclusive-lock, object-map, fast-diff, deep-flatten op_features: flags: create_timestamp: Sun Jun 13 17:13:51 2021 access_timestamp: Sun Jun 13 17:13:51 2021 modify_timestamp: Sun Jun 13 17:13:51 2021 $ rbd info -p ceph-demo --image rbd-demo.img # 查看rbd-demo-1.img块文件 rbd image 'rbd-demo.img': size 10 GiB in 2560 objects order 22 (4 MiB objects) snapshot_count: 0 id: 11194f22705d block_name_prefix: rbd_data.11194f22705d format: 2 features: layering, exclusive-lock, object-map, fast-diff, deep-flatten op_features: flags: create_timestamp: Sun Jun 13 17:13:51 2021 access_timestamp: Sun Jun 13 17:13:51 2021 modify_timestamp: Sun Jun 13 17:13:51 2021 2.3 删除块设备 $ rbd -p ceph-demo rm --image rbd-demo-1.img Removing image: 100% complete...done. $ rbd -p ceph-demo ls # 确认已删除 rbd-demo.img 2.4 内核级别挂载使用块设备 $ rbd map ceph-demo/rbd-demo.img # 默认创建的块文件有些特性不支持,会报错如下 rbd: sysfs write failed RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable ceph-demo/rbd-demo.img object-map fast-diff deep-flatten". In some cases useful info is found in syslog - try "dmesg | tail". rbd: map failed: (6) No such device or address 2.5 删除块设备不支持的特性 $ rbd info ceph-demo/rbd-demo.img # 查看块设备特性 rbd image 'rbd-demo.img': size 10 GiB in 2560 objects order 22 (4 MiB objects) snapshot_count: 0 id: 11194f22705d block_name_prefix: rbd_data.11194f22705d format: 2 features: layering, exclusive-lock, object-map, fast-diff, deep-flatten op_features: flags: create_timestamp: Sun Jun 13 17:13:51 2021 access_timestamp: Sun Jun 13 17:13:51 2021 modify_timestamp: Sun Jun 13 17:13:51 2021 # 删除不支持的特性 $ rbd feature disable ceph-demo/rbd-demo.img deep-flatten $ rbd feature disable ceph-demo/rbd-demo.img fast-diff # 删除上面两个后,就可以再次进行内核级别挂载了,如果还不行,再删除下面两个 $ rbd feature disable ceph-demo/rbd-demo.img object-map $ rbd feature disable ceph-demo/rbd-demo.img exclusive-lock $ rbd info ceph-demo/rbd-demo.img # 确认不支持的特性已删除 rbd image 'rbd-demo.img': size 10 GiB in 2560 objects order 22 (4 MiB objects) snapshot_count: 0 id: 11194f22705d block_name_prefix: rbd_data.11194f22705d format: 2 features: layering # layering特性需要保持 op_features: flags: create_timestamp: Sun Jun 13 17:13:51 2021 access_timestamp: Sun Jun 13 17:13:51 2021 modify_timestamp: Sun Jun 13 17:13:51 2021 $ rbd map ceph-demo/rbd-demo.img # 再次映射块设备 /dev/rbd0 2.6 查看块设备 $ rbd device list id pool namespace image snap device 0 ceph-demo rbd-demo.img - /dev/rbd0 $ lsblk /dev/rbd0 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT rbd0 252:0 0 10G 0 disk

至此,就可以将/dev/rbd0当成我们一个本地的磁盘来使用了。

2.7 格式化并使用块设备

如果将ceph对接云平台,当成云盘来使用,那么不建议对块设备进行分区,这样可以避免块设备扩容带来的麻烦。

$ mkfs.xfs /dev/rbd0 meta-data=/dev/rbd0 isize=512 agcount=16, agsize=163840 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=2621440, imaxpct=25 = sunit=1024 swidth=1024 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=8 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 # 挂载并测试使用 $ mkdir /data && mount /dev/rbd0 /data/ $ echo 'test block' > /data/test.txt 2.8 RBD数据写入流程

2021-06-13_172759

一个文件被切割成多个object,每个object大小为4M,object存储到pg上(经过hash运算,再取掩码,得到它要落到哪个pg上,),pg再通过crush算法,最终找到对应的osd上。

2.9 RDB块设备扩容

rdb块设备,支持扩缩容,但是对于缩容操作,强烈不建议,可能会造成数据丢失。

$ rbd -p ceph-demo info --image rbd-demo.img # 确认当前块设备大小 rbd image 'rbd-demo.img': size 10 GiB in 2560 objects order 22 (4 MiB objects) snapshot_count: 0 id: 11194f22705d block_name_prefix: rbd_data.11194f22705d format: 2 features: layering op_features: flags: create_timestamp: Sun Jun 13 17:13:51 2021 access_timestamp: Sun Jun 13 17:13:51 2021 modify_timestamp: Sun Jun 13 17:13:51 2021 $ rbd resize ceph-demo/rbd-demo.img --size 20G # 从10G大小扩容到20G Resizing image: 100% complete...done. $ rbd -p ceph-demo info --image rbd-demo.img # 确认已扩容20G rbd image 'rbd-demo.img': size 20 GiB in 5120 objects order 22 (4 MiB objects) snapshot_count: 0 id: 11194f22705d block_name_prefix: rbd_data.11194f22705d format: 2 features: layering op_features: flags: create_timestamp: Sun Jun 13 17:13:51 2021 access_timestamp: Sun Jun 13 17:13:51 2021 modify_timestamp: Sun Jun 13 17:13:51 2021 $ df -hT /data # 此时块设备已经扩容,但文件系统还未识别到,如下,还是原来的10G 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/rbd0 xfs 10G 33M 10G 1% /data $ xfs_growfs /dev/rbd0 $ partprobe # 扩容文件系统(原磁盘是xfs格式的,故需要使用xfs_growfs指令扩容) $ resize2fs /dev/rbd0 # 如果你格式化为ext4的,请执行该命令 $ df -hT /data # 确认已扩容成功 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/rbd0 xfs 20G 34M 20G 1% /data


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭