【分布式技术】分布式存储ceph之RBD块存储部署

目录

创建 Ceph 块存储系统 RBD 接口

服务端操作

1、创建一个名为 rbd-demo 的专门用于 RBD 的存储池

2、将存储池转换为 RBD 模式

3、初始化存储池

4、创建镜像

5、在管理节点创建并授权一个用户可访问指定的 RBD 存储池

6、修改RBD镜像特性,CentOS7默认情况下只支持layering和striping特性,需要将其它的特性关闭

7、将用户的keyring文件和ceph.conf文件发送到客户端的/etc/ceph目录下

客户端操作

1、安装 ceph-common 软件包

2、执行客户端映射

3、查看映射

4、格式化并挂载

在线扩容

 快照回滚

快照分层与展平 

 镜像导入导出

#在客户端操作 取消映射

//在服务端导出镜像 模拟清空  导入镜像

#在客户端重新映射并挂载


创建 Ceph 块存储系统 RBD 接口

服务端操作

1、创建一个名为 rbd-demo 的专门用于 RBD 的存储池

2、将存储池转换为 RBD 模式

3、初始化存储池

4、创建镜像

两种语法格式都可以
rbd create -p <存储池名称> --image <镜像名称> --size 10Grbd create <存储池名称>/<镜像名称> --size 10G
[root@admin ~]# cd "/etc/ceph"
[root@admin ceph]# ceph osd pool create myrbd 128
pool 'myrbd' created[root@admin ceph]# ceph osd pool application enable myrbd rbd
enabled application 'rbd' on pool 'myrbd'[root@admin ceph]# rbd pool init -p myrbd[root@admin ceph]# rbd create -p myrbd --image demon1.img --size 10G[root@admin ceph]# rbd ls -l -p myrbd
NAME       SIZE   PARENT FMT PROT LOCK 
demon1.img 10 GiB          2 [root@admin ceph]# rbd info myrbd/demon1.img

客户端使用 RBD 有两种方式:
●通过内核模块KRBD将镜像映射为系统本地块设备,通常设置文件一般为:/dev/rbd*
●另一种是通过librbd接口,通常KVM虚拟机使用这种接口。

本例主要是使用Linux客户端挂载RBD镜像为本地磁盘使用。开始之前需要在所需要客户端节点上面安装ceph-common软件包,因为客户端需要调用rbd命令将RBD镜像映射到本地当作一块普通硬盘使用。并还需要把ceph.conf配置文件和授权keyring文件复制到对应的节点。

5、在管理节点创建并授权一个用户可访问指定的 RBD 存储池

语法格式:
ceph auth get-or-create client.<用户名> osd "allow * pool=<存储池名>" mon "allow r" > /etc/ceph/<用户名>.keyring
[root@admin ceph]# ceph auth get-or-create client.test-rbd osd "allow * pool=myrbd" mon "allow r" > test-rbd.keyring

6、修改RBD镜像特性,CentOS7默认情况下只支持layering和striping特性,需要将其它的特性关闭

[root@admin ceph]# rbd feature disable myrbd/demon1.img object-map, fast-diff, deep-flatten
[root@admin ceph]# rbd info myrbd/demon1.img

7、将用户的keyring文件和ceph.conf文件发送到客户端的/etc/ceph目录下

[root@admin /etc/ceph]#scp test-rbd.keyring root@client:/etc/ceph/

客户端操作

1、安装 ceph-common 软件包

//linux客户端操作
#安装 ceph-common 软件包
yum install -y ceph-common

2、执行客户端映射

语法格式
rbd map <存储池名>/<镜像名称> --keyring /etc/ceph/<用户名>.keyring --user <用户名>

3、查看映射

rbd showmapped
rbd device list

4、格式化并挂载

语法格式:
mkfs.xfs /dev/rbd*  ##针对xfs文件系统
mount /dev/rbd* <本地挂载点>
[root@client ceph]#rbd map myrbd/demon1.img --keyring test-rbd.keyring --user test-rbd
/dev/rbd0
[root@client ceph]#rbd showmapped[root@client ceph]#rbd device list[root@client ceph]#mkfs.xfs /dev/rbd0[root@client ceph]#mkdir -p /test/rbd
[root@client ceph]#mount /dev/rbd0 /test/rbd/
[root@client ceph]#df -hT

在线扩容

在管理节点调整镜像的大小
rbd resize <存储池名>/<镜像名称> --size 20G在客户端刷新设备文件(扩容镜像后在线刷新)
xfs_growfs /dev/rbd0		#刷新xfs文件系统容量
resize2fs /dev/rbd0			#刷新ext4类型文件系统容量

 快照回滚

 

快照管理
对 rbd 镜像进行快照,可以保留镜像的状态历史,另外还可以利用快照的分层技术,通过将快照克隆为新的镜像使用。//在客户端写入文件
echo 1111 > /data/bb/11.txt
echo 2222 > /data/bb/22.txt
echo 3333 > /data/bb/33.txt//在管理节点对镜像创建快照
rbd snap create --pool rbd-demo --image rbd-demo1.img --snap demo1_snap1
rbd snap create <存储池名>/<镜像名称>@<快照名称>可简写为:
rbd snap create rbd-demo/rbd-demo1.img@demo1_snap1//列出指定镜像所有快照
rbd snap list rbd-demo/rbd-demo1.img
rbd snap list <存储池名>/<镜像名称>#用json格式输出:
rbd snap list rbd-demo/rbd-demo1.img --format json --pretty-format//回滚镜像到指定
在回滚快照之前,需要将镜像取消镜像的映射,然后再回滚。#在客户端操作 取消映射
rm -rf /data/bb/*
umount /data/bb
rbd unmap rbd-demo/rbd-demo1.img
rbd unmap <存储池名>/<镜像名称>#在管理节点操作
rbd snap rollback rbd-demo/rbd-demo1.img@demo1_snap1
rbd snap rollback <存储池名>/<镜像名称>@<快照名称>#在客户端重新映射并挂载
rbd map rbd-demo/rbd-demo1.img --keyring /etc/ceph/ceph.client.osd-mount.keyring --user osd-mount
mount /dev/rbd0 /data/bb
ls /data/bb				#发现数据还原回来了//限制镜像可创建快照数
rbd snap limit set rbd-demo/rbd-demo1.img --limit 3#解除限制:
rbd snap limit clear rbd-demo/rbd-demo1.img//删除快照
#删除指定快照:
rbd snap rm rbd-demo/rbd-demo1.img@demo1_snap1#删除所有快照:
rbd snap purge rbd-demo/rbd-demo1.img

 

 

 

快照分层与展平 

快照分层支持用快照的克隆生成新镜像,这种镜像与直接创建的镜像几乎完全一样,支持镜像的所有操作。唯一不同的是克隆镜像引用了一个只读的上游快照,而且此快照必须要设置保护模式。#快照克隆
1)将上游快照设置为保护模式:
[root@admin /etc/ceph]#rbd snap create myrbd/demon1.img@666.snap1[root@admin /etc/ceph]#rbd snap protect myrbd/demon1.img@666.snap1[root@admin /etc/ceph]#rbd snap list myrbd/demon1.img2)克隆快照为新的镜像
[root@admin /etc/ceph]#rbd clone myrbd/demon1.img@666.snap1 --dest myrbd/demon666.imgrbd ls -p myrbd3)命令查看克隆完成后快照的子镜像
rbd children myrbd/demon1.img@666.snap1
通常情况下通过快照克隆而得到的镜像会保留对父快照的引用,这时候不可以删除该父快照,否则会有影响。
rbd snap rm myrbd/demon1.img@666.snap1
#报错 snapshot '666.snap1' is protected from removal.如果要删除快照但想保留其子镜像,必须先展平其子镜像,展平的时间取决于镜像的大小
1) 展平子镜像
[root@admin /etc/ceph]#rbd flatten myrbd/demon666.img2)取消快照保护
[root@admin /etc/ceph]#rbd snap unprotect myrbd/demon1.img@666.snap13)删除快照
[root@admin /etc/ceph]#rbd snap rm  myrbd/demon1.img@666.snap1rbd ls -l -p rbd-demo			#在删除掉快照后,查看子镜像依然存在
[root@admin /etc/ceph]#rbd snap create myrbd/demon1.img@666.snap1
[root@admin /etc/ceph]#rbd snap list myrbd/demon1.img[root@admin /etc/ceph]#rbd snap protect myrbd/demon1.img@666.snap1
[root@admin /etc/ceph]#rbd snap list myrbd/demon1.img[root@admin /etc/ceph]#rbd clone myrbd/demon1.img@666.snap1 --dest myrbd/demon666.img[root@admin /etc/ceph]#rbd children myrbd/demon1.img@666.snap1
myrbd/demon666.img[root@admin /etc/ceph]#rbd flatten myrbd/demon666.img[root@admin /etc/ceph]#rbd ls -l -p myrbd[root@admin /etc/ceph]#rbd snap list myrbd/demon1.img[root@admin /etc/ceph]#rbd snap unprotect myrbd/demon1.img@666.snap1
[root@admin /etc/ceph]#rbd snap list myrbd/demon1.img[root@admin /etc/ceph]#rbd snap list myrbd/demon1.img
[root@admin /etc/ceph]#rbd ls -l -p myrbd

 

 镜像导入导出

#在客户端操作 取消映射

[root@client ceph]#umount /test/rbd ##解挂[root@client ceph]#rbd unmap myrbd/demon1.img  ##取消映射

//在服务端导出镜像 模拟清空  导入镜像

//导出镜像
[root@admin /etc/ceph]#rbd export myrbd/demon666.img /opt/demon666.img.tarrbd export <存储池名>/<镜像名称>  <自定义镜像导出文件名>//导入镜像
#卸载客户端挂载,并取消映射#清除镜像下的所有快照,并删除镜像
rbd snap purge myrbd/demon666.img
rbd rm <存储池名>/<镜像名称>rbd ls -l -p myrbd#导入镜像
rbd import /opt/demon666.img.tar  myrbd/demon666.img
rbd import <镜像之前导出的文件路径> <存储池名>/<镜像名称>  rbd ls -l -p myrbd

#在客户端重新映射并挂载

rbd map <存储池>/<镜像> --keyring /etc/ceph/ceph.client.<用户>.keyring --user <用户>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/630166.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Databend 开源周报第 128 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 使用 Databend …

[Linux 进程(四)] 再谈环境变量,程序地址空间初识

文章目录 1、前言2、环境变量2.1 main函数第三个参数 -- 环境参数表2.2 本地环境变量和env中的环境变量2.3 配置文件与环境变量的全局性2.4 内建命令与常规命令2.5 环境变量相关的命令 3、程序地址空间 1、前言 上一篇我们讲了环境变量&#xff0c;如果有不明白的先读一下上一…

C++ 编程需要什么样的开发环境?

C 编程需要什么样的开发环境&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#…

网页设计-用户体验

Use Cases (用例) 用例是用户如何在网站上执行任务的书面描述&#xff0c;从用户的角度描述了系统响应请求时的行为。每个用例都是用户实现目标的一系列简单的步骤。简言之&#xff0c;用例是一种用于描述系统如何满足用户需求的方法。 用例的好处 1. 明确需求&#xff1a; Use…

Python办公自动化 – 可以解析的文件格式和可以调用的API实现办公自动化

Python办公自动化 – 可以解析的文件格式和可以调用的API实现办公自动化 以下是往期的文章目录&#xff0c;需要可以查看哦。 Python办公自动化 – Excel和Word的操作运用 Python办公自动化 – Python发送电子邮件和Outlook的集成 Python办公自动化 – 对PDF文档和PPT文档的处…

Unity与Android交互通信系列(4)

上篇文章我们实现了模块化调用&#xff0c;运用了模块化设计思想和简化了调用流程&#xff0c;本篇文章讲述UnityPlayerActivity类的继承和使用。 在一些深度交互场合&#xff0c;比如Activity切换、程序启动预处理等&#xff0c;这时可能会需要继承Application和UnityPlayerAc…

Windows系统字体尺寸学习

调用GetTextMetrics来获得字体尺寸信息, 函数返回设备描述表中当前选定的字体信息&#xff1b; 返回值到TEXTMETRIC类型的结构中&#xff1b; 返回字段值的单位取决于当前设备描述表映射方式&#xff1b;默认映射方式是MM_TEXT&#xff0c;值的单位是像素&#xff1b; 前7个字…

多模型图像特征可视化

特征图可视化是指将网络中某一层的特征图可视化出来&#xff0c;以便观察网络在不同层次上学到的特征。卷积可视化可以帮助深度学习研究者更好地理解卷积的概念和原理&#xff0c;从而更好地设计和优化卷积神经网络。通过可视化&#xff0c;研究者可以更清晰地看到卷积运算中的…

[SS]语义分割——基础知识

语义分割前言 一、定义 1、概念 语义分割&#xff08;Semantic Segmentation&#xff09;是计算机视觉中的一项任务&#xff0c;目标是将图像中的每个像素按其语义类别进行分类。与传统的目标检测不同&#xff0c;语义分割对图像中的每个像素都进行分类&#xff0c;而不是只…

Vue 如何把computed里的逻辑提取出来

借用一下百度的ai 项目使用&#xff1a; vue 文件引入 <sidebar-itemv-for"route in routes":key"route.menuCode":item"route":base-path"route.path"click"onColor"/>import { handleroutes } from "./handle…

牛客-寻找第K大、LeetCode215. 数组中的第K个最大元素【中等】

文章目录 前言牛客-寻找第K大、LeetCode215. 数组中的第K个最大元素【中等】题目及类型思路思路1&#xff1a;大顶堆思路2&#xff1a;快排二分随机基准点 前言 博主所有博客文件目录索引&#xff1a;博客目录索引(持续更新) 牛客-寻找第K大、LeetCode215. 数组中的第K个最大元…

C#: CRC8,CRC16,CRC32 校验代码

说明&#xff1a;CRC即循环冗余校验码&#xff08;Cyclic Redundancy Check&#xff09;&#xff1a;是数据通信领域中最常用的一种查错校验码&#xff0c;其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查&#xff08;CRC&#xff09;是一种数据传输检错功能&…

统计学-R语言-5.1

文章目录 前言随机性和规律性概率变量的分布离散型--二项、泊松、几何二项分布几何分布泊松分布 连续型--均匀、正态均匀分布正态分布 其它统计分布--χ2分布、t分布、F分布χ2分布t分布F分布 练习 前言 从本篇文章开始介绍有关概率与分布的介绍。 随机性和规律性 当不能预测…

嵌入式-Stm32-江科大基于标准库的GPIO的八种模式

文章目录 一&#xff1a;GPIO输入输出原理二&#xff1a;GPIO基本结构三&#xff1a;GPIO位结构四&#xff1a;GPIO的八种模式道友&#xff1a;相信别人&#xff0c;更要一百倍地相信自己。 &#xff08;推荐先看文章&#xff1a;《 嵌入式-32单片机-GPIO推挽输出和开漏输出》…

vue-cli解决跨域

在vue.config.js中 找到devServer 在devServer中创建proxy代理 proxy:{ path&#xff08;路径中包含这个path就会导航到target的目标接口&#xff09;&#xff1a;{ target:"目标接口" } } 例&#xff1a; 1 同源策略只针对于浏览器&#xff0c;代理服务器到后端接…

操作系统课程设计-Linux 进程控制

目录 前言 1 实验题目 2 实验目的 3 实验内容 3.1 进程的创建 3.1.1 步骤 3.1.2 关键代码 3.2 子进程执行新任务 3.2.1 步骤 3.2.2 关键代码 4 实验结果与分析 4.1 进程的创建 4.2 子进程执行新任务 5 代码 5.1 进程的创建 5.2 子进程执行新任务 前言 本实验为课…

Electron+React项目打包踩坑记录

首先&#xff0c;如何打包 写下本文的时间是 2024/01/16&#xff0c;搜索了网络上 ElectronReact 的打包方式&#xff0c;中间行不通&#xff0c;本文采用的方式是记录本文时 Electron 快速入门(https://www.electronjs.org/zh/docs/latest/tutorial/quick-start)记录的打包方式…

Stream API 函数式编程 - 告别for循环,代码竟能写的如此优雅?

目录 一、Stream API 函数式编程 1.1、Stream 简介 a&#xff09;为什么引入 Stream&#xff1f;Stream 的出现就是为了让关于集合的操作更加简单&#xff1a; b&#xff09;Stream 的特性&#xff1a; c&#xff09;对stream的操作分为为两类&#xff0c;中间操作 和 结束…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例4-3 textarea

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>textarea</title> </head><body> <h2>多行文本框:</h2> <!--textarea&#xff08;文本域&#xff09;cols(列) rows(行)--> …

Template Engine-06-模板引擎 Handlebars 入门介绍

拓展阅读 java 表达式引擎 logstash 日志加工处理-08-表达式执行引擎 AviatorScriptMVELOGNLSpELJEXLJUELJanino QLExpress 阿里表达式引擎系统学习 什么是 Handlebars&#xff1f; Handlebars 是一种简单的模板语言。 它使用模板和输入对象生成 HTML 或其他文本格式。Ha…