rbd快照管理、rbd快照克隆原理与实现、rbd镜像开机自动挂载、ceph文件系统、对象存储、配置对象存储客户端、访问Dashboard

目录

快照

快照克隆

开机自动挂载

ceph文件系统

使用MDS

对象存储

配置服务器端

配置客户端

访问Dashborad


快照

  • 快照可以保存某一时间点时的状态数据
  • 快照是映像在特定时间点的只读逻辑副本
  • 希望回到以前的一个状态,可以恢复快照
  • 使用镜像、快照综合示例
# 1. 在rbd存储池中创建10GB的镜像,名为img1[root@client1 ~]# rbd --help   # 查看子命令[root@client1 ~]# rbd help create  # 查看子命令create的帮助[root@client1 ~]# rbd create img1 --size 10G[root@client1 ~]# rbd listimg1[root@client1 ~]# rbd info img1rbd image 'img1':size 10 GiB in 2560 objectsorder 22 (4 MiB objects)snapshot_count: 0id: fa91208bfdafblock_name_prefix: rbd_data.fa91208bfdafformat: 2features: layering, exclusive-lock, object-map, fast-diff, deep-flattenop_features: flags: create_timestamp: Sat Dec 17 10:44:17 2022access_timestamp: Sat Dec 17 10:44:17 2022modify_timestamp: Sat Dec 17 10:44:17 2022# 2. 在客户端使用镜像img1,将其挂载到/mnt[root@client1 ~]# rbd listimg1[root@client1 ~]# rbd map img1/dev/rbd0[root@client1 ~]# mkfs.xfs /dev/rbd0[root@client1 ~]# mount /dev/rbd0 /mnt/[root@client1 ~]# rbd showmappedid  pool  namespace  image  snap  device   0   rbd              img1   -     /dev/rbd0[root@client1 ~]# df -h /mnt/Filesystem      Size  Used Avail Use% Mounted on/dev/rbd0        10G  105M  9.9G   2% /mnt# 3. 向/mnt中写入数据[root@client1 ~]# cp /etc/hosts /mnt/[root@client1 ~]# cp /etc/passwd /mnt/[root@client1 ~]# ls /mnt/hosts  passwd# 4. 创建img1的快照,名为img1-sn1[root@client1 ~]# rbd snap create img1 --snap img1-sn1Creating snap: 100% complete...done.[root@client1 ~]# rbd snap ls img1SNAPID  NAME      SIZE    PROTECTED  TIMESTAMP               4  img1-sn1  10 GiB             Sat Dec 17 10:46:07 2022# 5. 删除/mnt/中的数据[root@client1 ~]# rm -f /mnt/*# 6. 通过快照还原数据[root@client1 ~]# umount /mnt/[root@client1 ~]# rbd unmap /dev/rbd0[root@client1 ~]# rbd help snap rollback   # 查看子命令帮助# 回滚img1到快照img1-sn1[root@client1 ~]# rbd snap rollback img1 --snap img1-sn1# 重新挂载[root@client1 ~]# rbd map img1/dev/rbd0[root@client1 ~]# mount /dev/rbd0 /mnt/[root@client1 ~]# ls /mnt/   # 数据还原完成hosts  passwd
  • 保护快照,防止删除
[root@client1 ~]# rbd help snap protect# 保护镜像img1的快照img1-sn1[root@client1 ~]# rbd snap protect img1 --snap img1-sn1[root@client1 ~]# rbd snap rm img1 --snap img1-sn1   # 不能删
  • 删除操作
# 1. 取消对快照的保护[root@client1 ~]# rbd snap unprotect img1 --snap img1-sn1# 2. 删除快照[root@client1 ~]# rbd snap rm img1 --snap img1-sn1# 3. 卸载块设备[root@client1 ~]# umount /dev/rbd0# 4. 取消映射[root@client1 ~]# rbd unmap img1# 5. 删除镜像[root@client1 ~]# rbd rm img1

快照克隆

  • 不能将一个镜像同时挂载到多个节点,如果这样操作,将会损坏数据
  • 如果希望不同的节点,拥有完全相同的数据盘,可以使用克隆技术
  • 克隆是基于快照的,不能直接对镜像克隆
  • 快照必须是受保护的快照,才能克隆
  • 克隆流程

  • 给多个客户端生成数据相同的数据盘
# 1. 创建名为img2的镜像,大小10GB[root@client1 ~]# rbd create img2 --size 10G# 2. 向镜像中写入数据[root@client1 ~]# rbd map img2/dev/rbd0[root@client1 ~]# mkfs.xfs /dev/rbd0[root@client1 ~]# mount /dev/rbd0 /mnt/[root@client1 ~]# for i in {1..20}> do> echo "Hello World $i" > /mnt/file$i.txt> done[root@client1 ~]# ls /mnt/file10.txt  file15.txt  file1.txt   file5.txtfile11.txt  file16.txt  file20.txt  file6.txtfile12.txt  file17.txt  file2.txt   file7.txtfile13.txt  file18.txt  file3.txt   file8.txtfile14.txt  file19.txt  file4.txt   file9.txt# 3. 卸载镜像[root@client1 ~]# umount /mnt/[root@client1 ~]# rbd unmap img2# 4. 为img2创建名为img2-sn1快照[root@client1 ~]# rbd snap create img2 --snap img2-sn1# 5. 保护img2-sn1快照[root@client1 ~]# rbd snap protect img2 --snap img2-sn1# 6. 通过受保护的快照img2-sn1创建克隆镜像[root@client1 ~]# rbd clone img2 --snap img2-sn1 img2-sn1-1[root@client1 ~]# rbd clone img2 --snap img2-sn1 img2-sn1-2# 7. 查看创建出来的、克隆的镜像[root@client1 ~]# rbd lsimg2img2-sn1-1img2-sn1-2# 8. 不同的客户端挂载不同的克隆镜像,看到的是相同的数据[root@client1 ~]# rbd map img2-sn1-1/dev/rbd0[root@client1 ~]# mkdir /data[root@client1 ~]# mount /dev/rbd0 /data[root@client1 ~]# ls /datafile10.txt  file15.txt  file1.txt   file5.txtfile11.txt  file16.txt  file20.txt  file6.txtfile12.txt  file17.txt  file2.txt   file7.txtfile13.txt  file18.txt  file3.txt   file8.txtfile14.txt  file19.txt  file4.txt   file9.txt[root@ceph1 ~]# yum install -y ceph-common[root@ceph1 ~]# rbd map img2-sn1-2/dev/rbd0[root@ceph1 ~]# mkdir /data[root@ceph1 ~]# mount /dev/rbd0 /data/[root@ceph1 ~]# ls /data/file10.txt  file15.txt  file1.txt   file5.txtfile11.txt  file16.txt  file20.txt  file6.txtfile12.txt  file17.txt  file2.txt   file7.txtfile13.txt  file18.txt  file3.txt   file8.txtfile14.txt  file19.txt  file4.txt   file9.txt
  • 查询镜像和快照
# 查看快照信息[root@client1 ~]# rbd info img2 --snap img2-sn1rbd image 'img2':size 10 GiB in 2560 objectsorder 22 (4 MiB objects)snapshot_count: 1id: d46eed84bb61block_name_prefix: rbd_data.d46eed84bb61format: 2features: layering, exclusive-lock, object-map, fast-diff, deep-flattenop_features: flags: create_timestamp: Sat Dec 17 10:58:05 2022access_timestamp: Sat Dec 17 10:58:05 2022modify_timestamp: Sat Dec 17 10:58:05 2022protected: True    # 受保护# 查看克隆的快照[root@client1 ~]# rbd info img2-sn1-2rbd image 'img2-sn1-2':size 10 GiB in 2560 objectsorder 22 (4 MiB objects)snapshot_count: 0id: d48fe3d6559eblock_name_prefix: rbd_data.d48fe3d6559eformat: 2features: layering, exclusive-lock, object-map, fast-diff, deep-flattenop_features: flags: create_timestamp: Sat Dec 17 10:59:53 2022access_timestamp: Sat Dec 17 10:59:53 2022modify_timestamp: Sat Dec 17 10:59:53 2022parent: rbd/img2@img2-sn1  # 父对象是rbd池中img2镜像的img2-sn1快照overlap: 10 GiB
  • 合并父子镜像

    • img2-sn1-2是基于img2的快照克隆来的,不能独立使用。
    • 如果父镜像删除了,子镜像也无法使用。
    • 将父镜像内容合并到子镜像中,子镜像就可以独立使用了。
# 把img2的数据合并到子镜像img2-sn1-2中[root@client1 ~]# rbd flatten img2-sn1-2# 查看状态,它就没有父镜像了[root@client1 ~]# rbd info img2-sn1-2rbd image 'img2-sn1-2':size 10 GiB in 2560 objectsorder 22 (4 MiB objects)snapshot_count: 0id: d48fe3d6559eblock_name_prefix: rbd_data.d48fe3d6559eformat: 2features: layering, exclusive-lock, object-map, fast-diff, deep-flattenop_features: flags: create_timestamp: Sat Dec 17 10:59:53 2022access_timestamp: Sat Dec 17 10:59:53 2022modify_timestamp: Sat Dec 17 10:59:53 2022# 删除父镜像,如果镜像正在被使用,则先取消[root@client1 ~]# umount /data/[root@client1 ~]# rbd unmap img2-sn1-1# 1. 删除镜像img2-sn1-1[root@client1 ~]# rbd rm img2-sn1-1# 2. 取消img2-sn1的保护[root@client1 ~]# rbd snap unprotect img2 --snap img2-sn1# 3. 删除img2-sn1快照[root@client1 ~]# rbd snap rm img2 --snap img2-sn1# 4. 删除img2[root@client1 ~]# rbd rm img2# 因为img2-sn1-2已经是独立的镜像了,所以它还可以使用# ceph1上的镜像没有受到影响[root@ceph1 ~]# cat /data/file1.txt Hello World 1

开机自动挂载

# 1. 准备镜像[root@client1 ~]# rbd create img1 --size 10G[root@client1 ~]# rbd map img1/dev/rbd0[root@client1 ~]# mkfs.xfs /dev/rbd0# 2. 设置开机自动挂载[root@client1 ~]# vim /etc/ceph/rbdmap  # 指定要挂载的镜像及用户名、密钥rbd/img1        id=admin,keyring=/etc/ceph/ceph.client.admin.keyring[root@client1 ~]# vim /etc/fstab  # 追加/dev/rbd/rbd/img1   /data   xfs    noauto  0  0# noauto的意思是,等rbdmap服务启动后,再执行挂载# 3. 启动rbdmap服务[root@client1 ~]# systemctl enable rbdmap --now# 4. reboot后查看结果[root@client1 ~]# df -h /data/Filesystem      Size  Used Avail Use% Mounted on/dev/rbd0        10G  105M  9.9G   2% /data

ceph文件系统

  • 文件系统:相当于是组织数据存储的方式。
  • 格式化时,就是在为存储创建文件系统。
  • Linux对ceph有很好的支持,可以把ceph文件系统直接挂载到本地。
  • 要想实现文件系统的数据存储方式,需要有MDS组件

使用MDS

  • 元数据就是描述数据的属性。如属主、属组、权限等。

  • ceph文件系统中,数据和元数据是分开存储的

  • 新建存储池

    • 归置组PG:存储池包含PG。PG是一个容器,用于存储数据。
    • 为了管理方便,将数量众多的数据放到不同的PG中管理,而不是直接把所有的数据扁平化存放。
    • 通常一个存储池中创建100个PG。
  • 创建ceph文件系统

# 1. 新建一个名为data1的存储池,目的是存储数据,有100个PG[root@client1 ~]# ceph osd pool create data01 100# 2. 新建一个名为metadata1的存储池,目的是存储元数据[root@client1 ~]# ceph osd pool create metadata01 100# 3. 创建名为myfs1的cephfs,数据保存到data1中,元数据保存到metadata1中[root@client1 ~]# ceph fs new myfs01 metadata01 data01# 4. 查看存储池[root@client1 ~]# ceph osd lspools1 .mgr2 rbd3 data014 metadata01[root@client1 ~]# ceph df--- RAW STORAGE ---CLASS     SIZE    AVAIL     USED  RAW USED  %RAW USEDhdd    180 GiB  180 GiB  206 MiB   206 MiB       0.11TOTAL  180 GiB  180 GiB  206 MiB   206 MiB       0.11--- POOLS ---POOL        ID  PGS   STORED  OBJECTS     USED  %USED  MAX AVAIL.mgr         1    1  449 KiB        2  1.3 MiB      0     57 GiBrbd          2   32  7.1 MiB       43   22 MiB   0.01     57 GiBdata01       3   94      0 B        0      0 B      0     57 GiBmetadata01   4   94      0 B        0      0 B      0     57 GiB# 5. 查看文件系统[root@client1 ~]# ceph fs lsname: myfs01, metadata pool: metadata01, data pools: [data01 ]# 6. 启动MDS服务[root@client1 ~]# ceph orch apply mds myfs01 --placement="2 ceph1 ceph2"# 7. 查看部署结果[root@client1 ~]# ceph -scluster:id:     a4b69ab4-79dd-11ed-ae7b-000c2953b002health: HEALTH_OKservices:mon: 3 daemons, quorum ceph1,ceph3,ceph2 (age 92m)mgr: ceph1.gmqorm(active, since 92m), standbys: ceph3.giqaphmds: 1/1 daemons up, 1 standby  # mds服务信息osd: 9 osds: 9 up (since 92m), 9 in (since 4d)...略...
  • 客户端使用cephfs
# 挂载文件系统需要密码。查看密码[root@client1 ~]# cat /etc/ceph/ceph.client.admin.keyring [client.admin]key = AQBmhINh1IZjHBAAvgk8m/FhyLiH4DCCrnrdPQ==# -t 指定文件系统类型。-o是选项,提供用户名和密码[root@client1 ~]# mkdir /mydata[root@client1 ~]# mount.ceph 192.168.88.13:/ /mydata -o name=admin,secret=AQC5u5ZjnTA1ERAAruLAI8F1W1nyOgxZSx0UXw== [root@client1 ~]# df -h /mydata/Filesystem       Size  Used Avail Use% Mounted on192.168.88.13:/   57G     0   57G   0% /mydata

对象存储

配置服务器端

  • 需要专门的客户端访问
  • 键值对存储方式
  • 对象存储需要rgw组件
  • 安装部署
# 1. 在ceph1/ceph2上部署rgw服务,名为myrgw[root@client1 ~]# ceph orch apply rgw myrgw --placement="2 ceph1 ceph2" --port 8080[root@client1 ~]# ceph -scluster:id:     a4b69ab4-79dd-11ed-ae7b-000c2953b002health: HEALTH_OKservices:mon: 3 daemons, quorum ceph1,ceph3,ceph2 (age 101m)mgr: ceph1.gmqorm(active, since 6h), standbys: ceph3.giqaphmds: 1/1 daemons up, 1 standbyosd: 9 osds: 9 up (since 6h), 9 in (since 5d); 1 remapped pgsrgw: 2 daemons active (2 hosts, 1 zones)  # rgw信息...略...

配置客户端

  • ceph对象存储提供了一个与亚马逊S3(Amazon Simple Storage Service)兼容的接口
  • 在S3中,对象被存储在一个称作桶(bucket)的器皿中。这就好像是本地文件存储在目录中一样。
# 1. 安装amazon S3 cli工具(客户端工具)[root@client1 ~]# yum install -y awscli# 2. 在ceph中创建一个用户[root@client1 ~]# radosgw-admin user create --uid=testuser --display-name="Test User" --email=test@tedu.cn --access-key=12345 --secret=67890# 3. 初始化客户端[root@client1 ~]# aws configure --profile=cephAWS Access Key ID [None]: 12345AWS Secret Access Key [None]: 67890Default region name [None]:   # 回车Default output format [None]: # 回车# 4. 创建名为testbucket的bucket,用于存储数据[root@client1 ~]# vim /etc/hosts  # 添加以下内容192.168.88.11 ceph1192.168.88.12 ceph2192.168.88.13 ceph3[root@client1 ~]# aws --profile=ceph --endpoint=http://ceph1:8080 s3 mb s3://testbucket# 5. 上传文件[root@client1 ~]# aws --profile=ceph --endpoint=http://ceph1:8080 --acl=public-read-write s3 cp /etc/hosts s3://testbucket/hosts.txt# 6. 查看bucket中的数据[root@client1 ~]# aws --profile=ceph --endpoint=http://ceph1:8080 s3 ls s3://testbucket2022-12-17 17:05:58        241 hosts.txt# 7. 下载数据[root@client1 ~]# wget -O zhuji http://ceph1:8080/testbucket/hosts.txt

访问Dashborad

  • 通过浏览器访问https://192.168.88.11:8443,用户名为admin,密码是安装时指定的123456。

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

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

相关文章

【刷题记录】合并两个有序数组、移除元素

本系列博客为个人刷题思路分享,有需要借鉴即可。 1.题目链接: T1:LINK T2:LINK 2.详解思路: T1: 思路1:弄个新数组,比较两个数组中的值,哪个小就把哪个值放到新数组中。 分析1&a…

自定义类型详解 结构体,位段,枚举,联合

目录 结构体 1.不完全声明 2.结构体的自引用 3.定义与初始化 4.结构体内存对齐与结构体类型的大小 结构体嵌套问题 位段 1.什么是位段? 2.位段的内存分配 枚举 1.枚举类型的定义 2.枚举的优点 联合(共同体) 1.联合体类型的声明以…

Vue语法

1.vue模板语法2大类 插值语法: 功能:用于解析标签内容 用途:用于标签内容定义 写法:{{xxx}},xxx是js表达式,且可以直接读取到data中的所有属性 指令语法: 功能:用于解析标签&am…

去空行小工具Html + Javascript

这是一个平常用到的小工具&#xff0c;为了节省屏幕空间把空行去掉&#xff0c;怕要用的时候找不到故记录在此。 效果图 网页版&#xff0c;放在浏览器里就可以用 <!doctype html> <html><head><meta charset"utf-8"><title>去回车…

JMeter性能测试系列一初识JMeter

1.JMeter介绍 Apache组织的Stefano Mazzocchi是JMeter项目的创始人。编写JMeter最初的目的是为了测试server的性能(后期被Tomcat替代)。随后&#xff0c;JMeter在Apache组织内部开始被其他项目所使用&#xff0c;并最终推广出来&#xff0c;成为独立的软件项目并不断更新&…

内网渗透Searchall敏感凭证信息搜索工具

一、开发背景 在实战中进入内网的时候&#xff0c;大家需要搜集一些敏感信息例如账号&#xff0c;密码甚至浏览器的账号密码。searchall完美解决了这个问题。所以我就结合自身的经验写了一款搜索敏感信息的利用工具。它可以搜索敏感信息&#xff0c;更快为你获取到有价值的信息…

【51单片机】LED点阵屏(江科大)

9.1LED点阵屏 1.LED点阵屏介绍 LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列,以灯珠亮灭来显示文字、图片、视频等。 2.LED点阵屏工作原理 LED点阵屏的结构类似于数码管,只不过是数码管把每一列的像素以“8”字型排列而已。原理图如下 每一行的阳极连在一起,每一列…

Codeforces Round 926 (Div. 2)(A,B,C,D,E,F)

这场还是很有含金量的&#xff0c;B题开始就有难度了&#xff0c;B是个推结论的题&#xff0c;C要推结论然后递推&#xff0c;D题是有点难的树上DP&#xff08;主要是状态转移方程不好写&#xff09;&#xff0c;E题是个二进制预处理然后状压DP&#xff0c;F题是个数论&#xf…

【Redis快速入门】Redis三种集群搭建配置(主从集群、哨兵集群、分片集群)

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

python系统学习Day2

section3 python Foudamentals part one&#xff1a;data types and variables 数据类型&#xff1a;整数、浮点数、字符串、布尔值、空值 #整型&#xff0c;没有大小限制 >>>9 / 3 #3.0 >>>10 // 3 #3 地板除 >>>10 % 3 #1 取余#浮点型&#xff…

红队笔记Day2 -->上线不出网机器

今天就来讲一下在企业攻防中如何上线不出网的机器&#xff01;&#xff01; 1.基本网络拓扑 基本的网络拓扑就是这样 以下是对应得的P信息&#xff0c;其中的52网段充当一个内网的网段&#xff0c;而111充当公网网段 先ping一下&#xff0c;确保外网ping不通内网&#xff0c;内…

2024年道路运输企业主要负责人证模拟考试题库及道路运输企业主要负责人理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年道路运输企业主要负责人证模拟考试题库及道路运输企业主要负责人理论考试试题是由安全生产模拟考试一点通提供&#xff0c;道路运输企业主要负责人证模拟考试题库是根据道路运输企业主要负责人最新版教材&#…

你知道.NET的字符串在内存中是如何存储的吗?

一、字符串对象的内存布局 从“值类型”和“引用类型”来划分&#xff0c;字符串自然属于引用类型的范畴&#xff0c;所以一个字符串对象自然采用引用类型的内存布局。引用类型实例的内存布局总的来说整个内存布局分三块&#xff1a;ObjHeader TypeHandle Payload。对于一般…

EasyCaptcha,开源图形验证码新标杆!

引言&#xff1a; 随着互联网的普及&#xff0c;验证码已成为网站和应用程序中不可或缺的安全组件。它能够有效地防止自动化攻击、垃圾邮件和机器人活动。在众多验证码解决方案中&#xff0c;Easy-captcha以其简单易用和高度可定制的特点受到了开发者的青睐。本文将指导读者如…

浅谈业务场景中缓存的使用

浅谈缓存 一、背景二、缓存分类1.本地缓存2.分布式缓存 三、缓存读写模式1.读请求2.写请求 四、缓存穿透1.缓存空对象2.请求校验3.请求来源限制4.布隆过滤器 五、缓存击穿1.改变过期时间2.串行访问数据库 六、缓存雪崩1.避免集中过期2.提前更新缓存 七、缓存与数据库一致性1.设…

【MySQL】学习约束和使用图形化界面创建表

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-iqtbME2KmWpQFQSt {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

java.lang.NoClassDefFoundError: org/springframework/core/GenericTypeResolver

前言 小编我将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识&#xff0c;有兴趣的小伙伴可以关注一下&#xff01; 也许一个人独行&#xff0c;可以走的很快&#xff0c;但是一群人结伴而行&#xff0c;才能走的更远&#xff01;让我们在成长的道路上互相学习&…

BUGKU-WEB GET

题目描述 没有提示&#xff0c;就一个get&#xff0c;启动场景看看&#xff1a; 解题思路 显然是PHP语言解读分析代码吧写出你的payload 相关工具 略 解题步骤 进入场景分析代码 $what$_GET[what]; echo $what; if($whatflag) echo flag{****};前两句&#xff1a;使用get…

RCS系统之:机器人状态

在设计RCS系统平台时&#xff0c;机器人总共设计状态有&#xff1a; 离线模式&#xff1b; 如图&#xff0c;18号机器人呈灰黑色&#xff0c;表示机器人没有上电状态 工作模式&#xff1b; 如图&#xff0c;10号机器人成绿色&#xff0c;表示机器人处于工作模式&#xff0c;等…

边缘计算:重塑数字世界的未来

引言 随着物联网&#xff08;IoT&#xff09;设备的激增和5G网络的普及&#xff0c;我们正站在一个计算模式的新纪元门槛上——边缘计算。这一技术范式将数据处理和分析推向网络的边缘&#xff0c;即设备或终端&#xff0c;为实时性要求较高的应用提供了前所未有的可能性。 目…