rbd块存储使用

2023-05-16

文章目录

      • rbd存储池
      • 镜像管理
        • 创建镜像
        • 查看镜像
        • 删除镜像
        • 镜像回收站功能
        • 镜像特性管理
          • 创建image时指定要启用的特性
          • 启用特性(针对已存在的image添加特性)
          • 禁用特性(针对已存在的image移除特性)
      • 客户端使用RBD
      • 镜像快照和克隆
        • 快照管理
        • 克隆镜像

官方文档:https://docs.ceph.com/en/quincy/rbd/

rbd(Rados Block Device) ,是构建在rados集群之上的为客户端提供块设备的存储中间层,rbd可以为kvm、vmware等虚拟化技术和云平台(例如openstack、k8s)提供高性能和无限可扩展的存储后端。rbd块设备类似磁盘可以被挂载,rbd基于存储集群中多个osd进行条带化,支持存储空间简配和动态扩容等特性,并能够借助于rados存储集群实现快照、多副本和一致性。

条带化技术就是一种自动的将IO负载均衡到多个物理磁盘上的技术,条带化技术就是将一块连续的数据分成很多小部分并把它们分别存储到不同的磁盘上去,这就使多个进程能同时访问数据的多个不同部分而不会造成磁盘冲突,而且在需要对这种数据进行顺序访问的时候可以获得最大程度上的IO并行能力,从而获得非常好的性能。

rbd存储池

使用rbd时必须要先创建存储池,在存储池上启用rbd并完成初始化。

ceph osd pool create rbd-pool1 32 32	#创建存储池
ceph osd pool application enable rbd-pool1 rbd	#存储池启用rbd
rbd pool init -p rbd-pool1	#对存储池进行初始化

在这里插入图片描述

镜像管理

rbd存储池并不能直接用于块设备,而是需要事先在存储池中创建image,然后把image作为块设备使用,rbd命令用于管理image。

创建镜像

rbd help create	#查看创建image的帮助信息
rbd create -p rbd-pool1 --image data-image1 --size 5G	#在rbd-pool1中创建一个5G的image,名为data-imag1

在这里插入图片描述

查看镜像

#查看pool中所有image
rbd ls -p rbd-pool1
#查看pool中指定image的相信信息
rbd info data-image1 -p rbd-pool1	#也可以简写为rbd info rbd-pool1/data-image1
#也可以指定输出格式,支持json、xml
rbd info rbd-pool1/data-image1  --format json --pretty-format

在这里插入图片描述

image详细信息中一些属性含义如下:

size:表示image大小和image包含的对象数量
order:表示对象大小,有效值为12-25,分别对应4k-32M之间
id:表示镜像id
snapshot_count:image快照次数
block_name_prefix:属于此image的对象的名称前缀
format:镜像格式,支持v1和v2,默认v2
features:image启用的特性
*—_time:image的创建时间、访问时间和修改时间

删除镜像

注意: 拥有快照的image是不能删除的,必须先删除其所有快照

rbd remove data-image2 -p rbd-pool1		#删除存储池rbd-pool1中的image data-image2

在这里插入图片描述

镜像回收站功能

直接删除的镜像数据无法恢复,另一种方式是先将镜像移动到回收站,后期确认删除的时候再从回收站删除即可。使用rbd trash命令来管理回收站中的镜像

将镜像移动到回收站

rbd help trash move	#查看帮助
rbd trash move -p rbd-pool1 --image data-image2	#将data-image2移动到回收站

在这里插入图片描述
在这里插入图片描述

查看回收站中的镜像

rbd trash list -p rbd-pool1	#查看回收站中属于rbd-pool1存储池的镜像

在这里插入图片描述

从回收站还原镜像

rbd help trash restore
rbd trash restore -p rbd-pool1 --image data-image4 122a3d73d9f1c	#将回收站中id为122a3d73d9f1c的镜像还原为rbd-pool1存储池中的data-image4

在这里插入图片描述

从回收站中删除镜像

rbd help  trash remove
rbd trash remove -p rbd-pool1 122a3d73d9f1c	#删除回收站中属于rbd-pool1存储池的镜像122a3d73d9f1c

在这里插入图片描述

镜像特性管理

目前image支持的特性如下:

  • layering:支持镜像分层快照特性,用于快照写时复制,可以对image创建快照并保护,然后从快照克隆新的image,父子image之间采用cow技术,共享对象数据
  • striping:支持条带化v2,类似raid0,只不过在ceph环境中数据被分散到不同的对象中,可改善顺序读写较多的场景
  • exclusive-lock:支持独占锁,限制一个image只能被一个客户端使用
  • object-map:支持object位图,用于加速导入导出及统计已用空间等,此特性开启的时候,会记录image所有对象的一个位图,用以标记对象是否真的存在,在一些场景下可以加速io,依赖exclusive-lock特性
  • fast-diff:支持快速计算镜像与快照间数据差异对比,依赖object-map特性
  • deep-flatten:支持快照扁平化操作,用于快照管理时解决依赖关系
  • journaling:支持记录image的修改操作到日志,该特性可以通过记录日志并通过日志恢复数据,但会增加磁盘IO使用,依赖exclusive-lock特性
  • data-pool:是否支持将image的数据对象存储于纠删码存储池, 主要用于将image的元数据与数据放置于不同的存储池

目前默认开启的特性包括:layering、exclusive-lock、object-map、fast-diff、deep-flatten

可以通过 rbd feature管理image的特性

创建image时指定要启用的特性
rbd create --image data-image2 --image-feature layering --size 4G -p rbd-pool1	#创建一个image,只启用layering特性

在这里插入图片描述

启用特性(针对已存在的image添加特性)
rbd feature enable	#查看帮助
rbd feature enable rbd-pool1/data-image2 exclusive-lock	#在data-image2上启用exclusive-lock特性

在这里插入图片描述

需要注意:

  • 由于某些特性间存在依赖关系,所以启用一个特性前,必须要先启用它依赖的特性。例如,启用object-map特性前,必须先启用exclusive-lock,否则会报错
  • 如果image不存在deep-flatten特性,它是不可添加的,只能在创建image时启用
禁用特性(针对已存在的image移除特性)
rbd help feature disable	#查看帮助
rbd feature disable rbd-pool1/data-image2 journaling	#禁用data-image2 journaling特性

在这里插入图片描述
需要注意:

  • 和启用特性类似,由于某些特性间存在依赖关系,所以禁用用一个特性前,必须要先禁用依赖它的特性。例如,启用exclusive-lock特性前,必须先禁用object-map,否则会报错
  • 如果image已存在deep-flatten特性,它可以被移除

客户端使用RBD

客户端访问RBD块设备的方式有两种:

  • 通过内核模块rbd.ko把RBD块设备映射为节点本地的磁盘
  • 另一种是通过librbd库提供的接口访问RBD块设备,它支持多种编程语言。qemu就是使用此类接口

下面以第一种方式为例,使用内核模块挂载RBD块设备使用

客户端想要挂载使用RBD块设备,需要先安装ceph客户端包ceph-common

apt -y install ceph-common

创建账户并授权

ceph auth get-or-create client.rbduser mon 'allow r' osd 'allow rwx pool=rbd-pool1' -o ceph.client.rbduser.keyring
ceph auth get client.rbduser

在这里插入图片描述

将ceph配置文件和keyring文件分发至客户端

scp ceph.client.rbduser.keyring /etc/ceph/ceph.conf  root@192.168.211.15:/etc/ceph/
#客户端执行ceph命令验证
ceph --user rbduser -s

在这里插入图片描述

创建一个image

rbd --user rbduser create --image data-image3 --size 5G -p rbd-pool1

在这里插入图片描述

客户端挂载image

rbd --user rbduser map rbd-pool1/data-image3	#挂载rbd-pool1存储池的data-image3到本机
rbd showmapped	#查看rbd挂载记录
lsblk

在这里插入图片描述
在这里插入图片描述

客户端格式化rbd块设备,写入数据测试

mkfs.xfs /dev/rbd0
mkdir /data
mount /dev/rbd0 /data/
echo "12345 test rbd" > /data/rbd-testfile
cat /data/rbd-testfile

在这里插入图片描述
在这里插入图片描述

rbd块设备扩容

如果使用过程中image空间不足,可以使用rbd resize对image进行扩容

rbd help resize	#查看帮助
rbd resize --size 10G rbd-pool1/data-image3	#将data-image3扩容为10G
#扩容完成后,客户端查看已经显示为新的size。如果客户端未识别可以使用下面的命令重新识别磁盘大小
xfs_growfs /dev/rbd0	#针对xfs文件系统
resize3fs /dev/rdb0		#针对ext4文件系统

在这里插入图片描述
客户端查看,磁盘大小已更新
在这里插入图片描述

配置开机自动挂载(ubuntu20.04为例)

vim /etc/rc.local
#################
#!/bin/sh
rbd --user rbduser map rbd-pool1/data-image3
mount /dev/rbd0 /data/
#################

chmod +x /etc/rc.local

客户端卸载rbd块设备

umount /data	#先把rbd设备从挂载的目录卸载
rbd --user rbduser unmap rbd-pool1/data-image3	#然后卸载rbd块设备
rbd showmapped	#查看rbd映射记录验证

在这里插入图片描述
在这里插入图片描述

镜像快照和克隆

快照管理

rbd支持image快照,快照可以保存image历史状态,可以通过快照实现数据快速备份/恢复。另外ceph还支持快照分层机制,从而可以实现快速克隆VM映像

可以使用rbd snap命令管理镜像快照

创建快照

rbd help snap create	#查看帮助
rbd snap create -p rbd-pool1 --image data-image3 --snap data-image3-snap1	#为data-iamge3创建一个名为data-image3-snap1的快照

在这里插入图片描述

查看快照

rbd snap ls rbd-pool1/data-image3	#查看data-image3的所有快照

在这里插入图片描述

还原快照

#先在客户端卸载rbd设备,否则会报错
umount /data
rbd --user rbduser unmap rbd-pool1/data-image3

#然后执行回滚
rbd help snap rollback	#查看帮助
rbd snap rollback -p rbd-pool1 --image data-image3 --snap data-image3-snap1

在这里插入图片描述

限制快照数量

rbd snap limit set -p rbd-pool1 --image data-image3 --limit 10	#限制快照数量最多为10个
rbd snap limit clear -p rbd-pool1 --image data-image3	#取消限制

在这里插入图片描述
注意:快照数量过多,必然会导致image上原有数据第一次修改时的IO压力过大

删除快照

rbd help snap rm	#查看帮助
rbd snap rm -p rbd-pool1 --image data-image3 --snap data-image3-snap1	#删除data-image3的快照data-image3-snap1
rbd snap purge -p rbd-pool1 --image data-image3	#删除镜像所有快照

在这里插入图片描述

克隆镜像

ceph支持在一个快照的基础上创建一个或多个COW或COR类型的克隆镜像,这种机制提供了一种极速创建image的机制。

用户可以创建一个基础image并为其创建一个只读快照,而后在此快照的基础上创建任意个克隆镜像进行读写操作,甚至能够进行多级克隆。例如openstack对接ceph rbd时,就可以利用此特性快速批量创建卷启动的虚拟机。

通过克隆创建的image功能上和直接创建的image几乎完全相同,同样支持读写、克隆和扩缩容等功能。唯一不同之处是克隆的image引用了一个上游的只读快照,而且此快照必须置于保护模式。

在rbd上使用分层克隆的方法很简单,首先创建一个image,对image创建一个快照并置于保护模式,然后克隆此快照即可。另外,克隆镜像支持跨存储池进行。
在这里插入图片描述

创建一个image data-image5

rbd create --size 11G -p rbd-pool1 --image data-image5
rbd ls -p rbd-pool1

在这里插入图片描述

为data-image5创建快照snap1,并置于保护模式

rbd snap create --image data-image5 -p rbd-pool1 --snap snap1
rbd snap protect --image data-image5 -p rbd-pool1 --snap snap1

在这里插入图片描述

快照置于保护模式是无法被删除的,如下图所示:

在这里插入图片描述

从data-image5的快照克隆一个镜像data-image6

rbd clone -p rbd-pool1 --image data-image5 --snap snap1 --dest-pool rbd-pool1 --dest data-image

在这里插入图片描述
查看克隆镜像的详情,其中的parent属性指定了克隆镜像所依赖的上游快照,如上图所示。

查看快照的子项

rbd children -p rbd-pool1 --image data-image5 --snap snap1

在这里插入图片描述

展平克隆的image(flatten)

  • 如果需要删除快照,必须先接触克隆的image对快照的依赖关系,需要进行image展平操作,将信息从快照复制到克隆image。
  • 展平操作需要的时间由image的数据量决定
  • 要删除拥有克隆子项的快照,必须先展平其子image
rbd flatten -p rbd-pool1 --image data-image6	#对data-image6执行展平操作

在这里插入图片描述
执行flatten后,查看image详细信息,已经不存在对快照的依赖关系,如上图所示。

删除原始快照

rbd snap unprotect --image data-image5 -p rbd-pool1 --snap snap1	#取消保护
rbd snap rm --image data-image5 -p rbd-pool1 --snap snap1	#删除快照

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

rbd块存储使用 的相关文章

随机推荐

  • 产品工作基本流程

    我的博客即将同步至腾讯云 43 社区 xff0c 邀请大家一同入驻 xff1a https cloud tencent com developer support plan invite code 61 2p5qjwxvujms4 产品工作
  • ODBC(Open Database Connectivity,开放数据库互连)

    ODBC Open Database Connectivity 开放数据库互连 是微软公司开放服务结构 WOSA Windows Open Services Architecture 中有关数据库的一个组成部分 它建立了一组规范 并提供了一
  • 数据结构考研408复习必看

    原创不易 麻烦点个关注 点个赞 谢谢各位 数据结构要点 第一章 概 论 数据就是指能够被计算机识别 存储和加工处理的信息的载体 数据元素是数据的基本单位 可以由若干个数据项组成 数据项是具有独立含义的最小标识单位 数据结构的定义 逻辑结构
  • 思科网络工程师必学

    网络工程师学习笔记 第一章 计算机基础知识 一 硬件知识 1 计算机系统的组成包括硬件系统和软件系统 硬件系统分为三种典型结构 1 单总线结构 2 双总线结构 3 采用通道的大型系统结构 中央处理器 CPU 包含运算器和控制器 2 指令系统
  • 什么是数字技术?

    数字技术 xff08 Digital Technology xff09 xff0c 是一项与电子计算机相伴相生的科学技术 xff0c 它是指借助一定的设备将各种信息 xff0c 包括 xff1a 图 文 声 像等 xff0c 转化为电子计算
  • 启示录:新加坡纬壹科技城成功建设经验

    数字TOD xff1a 在各省市新一年的重点工作中 xff0c 产业园区都被放在非常显赫的位置加以强调 xff0c 有的被冠以 高质量发展主战场 的地位 xff0c 有的则异常鲜明地提出 园区兴则产业兴 xff0c 园区强则经济强 的口号
  • 区块链技术赋能数字经济建设

    区块链技术是一项利用密码学算法 以去中心化方式集体维护一个可靠分布式数据库的新兴技术 它具有分布式 不可篡改 可追溯等特征 xff0c 能够弥补传统信用体系不足 防止信息篡改和伪造 节省全社会信用成本 xff0c 对金融 电子商务 智慧医疗
  • 启示录:日本涉谷未来之光TOD成功建设经验

    启示录 xff1a 日本涉谷未来之光TOD成功建设经验 数字TOD 在城市土地供应日益紧张 城市人口膨胀 公共交通快速发展的今天 xff0c 涩谷之光以复合业态功能叠加和选择重点业态精心打造 xff0c 并最大限度对接公共交通资源的开发策略
  • 夜间经济:激发新⼀轮消费潜力升级的新引擎

    数字TOD 夜间经济是现代城市业态之一 xff0c 指从当日下午6点到次日早上6点所包含的经济文化活动 xff0c 其业态囊括晚间购物 餐饮 旅游 娱乐 学习 影视 休闲等 夜间经济是现代城市经济的重要组成部分 xff0c 是促消费 稳就业
  • os模块和序列化

    os模块 和操作系统交互的模块 import os os makedirs dir1 dir2 创建多个文件夹 os mkdir dir3 创建一个文件夹 os removedirs 39 dir3 dir4 删除多个空文件夹 os rmd
  • 启示录:日本东京都二子玉川站TOD成功建设经验

    数字TOD 在成都两会期间印发的 关于实施幸福美好生活十大工程的报告 指出 xff0c 实施幸福美好生活十大工程 xff0c 将以满足人民群众日益增长的美好生活需要为根本目的 xff0c 从市民和企业反映最强烈 最迫切的领域着手 特别提出
  • 启示录:TOD分类及用地功能结构组成

    数字TOD 彼得 卡尔索普在 The Next American Metropolis 一书中描述了两类TOD 一类是城市TOD xff08 Urban TODs xff09 xff0c 位于区域性的干道的轻轨 重轨或快速的公交汽车的站点
  • 启示录:了解TOD模式的正确打开方式(一)

    数字TOD 提起TOD xff0c 到目前很多人可能还很懵懂 科普TOD xff0c 是笔者不可推卸的责任 所以一起回忆下电影 lt 流浪地球 gt 电影魔性台词先上 xff1a 34 北京第三区交通委提醒您 xff1a 道路千万条 xff
  • 启示录:了解TOD模式的正确打开方式(二)

    数字TOD 在中国的城市化进程中 xff0c 城市病 也在加速蔓延 xff0c 交通问题的加重以及土地资源的日益紧缺 xff0c 让生活在其中的人们饱受困扰 xff0c 这同时也引发了人们对城市发展模式的反思 为了实现城市的可持续化发展 x
  • 问题解决方案1-------------catkin_make编译时候的各种问题汇总

    文件移植和编译出现的问题汇总 我真实服了 xff0c 我几乎每一步都能遇到问题 xff0c 这是我catkin make时候遇到的新问题 xff1a 百度总结了一下 xff0c 文末附上链接 xff1a 1 Could not find a
  • CoreDNS介绍与使用

    介绍 在Kubernetes中DNS组件为整个集群提供DNS服务 xff0c 从而实现服务之间的访问 Kubernetes的DNS服务在Kubernetes中经历了3个阶段 xff1a 1 3版本之前skydns1 3 1 10版本kube
  • k8s日志收集

    日志收集介绍 日志收集的目的 xff1a 分布式日志数据统一收集 xff0c 实现集中式查询和管理故障排查安全信息和事件管理报表统计及展示功能 日志收集的价值 xff1a 日志查询 问题排查 故障恢复和故障自愈应用日志分析 xff0c 错误
  • k8s网络插件之Calico

    Calico简介 Calico官方文档 xff1a https projectcalico docs tigera io getting started kubernetes quickstart Calico是一套开源的网络和网络安全解决
  • ceph集群维护常用操作

    文章目录 通过套接字进行单机管理集群启停移除节点ceph配置文件存储池分类副本池IO纠删码池IO PG与PGPPG数量计算PG常见状态存储池管理创建存储池查看存储池删除存储池存储池配额 存储池可用参数存储池快照 通过套接字进行单机管理 可以
  • rbd块存储使用

    文章目录 rbd存储池镜像管理创建镜像查看镜像删除镜像镜像回收站功能镜像特性管理创建image时指定要启用的特性启用特性 xff08 针对已存在的image添加特性 xff09 禁用特性 xff08 针对已存在的image移除特性 xff0