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.mzph.cn/news/680543.shtml

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

相关文章

《SQLi-Labs》05. Less 29~37

title: 《SQLi-Labs》05. Less 29~37 date: 2024-01-17 22:49:10 updated: 2024-02-12 18:09:10 categories: WriteUp:Security-Lab excerpt: HTTP 参数污染,联合注入、宽字节注入。 comments: false tags: top_image: /images/backimg/SunsetClimbing.p…

【leetcode】100. 相同的树

题目链接 100. 相同的树 bool isSameTree(struct TreeNode* p, struct TreeNode* q) {if (p && q) {return p->val q->val // 分解&& isSameTree(p->left, q->left)&& isSameTree(p->right, q->right);} else if (p NULL &&…

Linux第50步_移植ST公司的linux内核第2步_编译ST公司的linux源码和修改网络驱动

1、修改“linux-5.4.31”目录下的“Makefile” 1)、使用VSCode打开“linux-5.4.31.code-workspace” 2)、点击“linux-5.4.31”目录下的“Makefile” 3)、点击“编辑”,点击“查找”,输入“CROSS_COMPILE回车”,找到“ARCH ? $(SUBARCH)”…

回归预测模型:MATLAB岭回归和Lasso回归

1. 岭回归和Lasso回归的基本原理 1.1 岭回归: 岭回归(Ridge Regression) 是一种用于共线性数据分析的技术。共线性指的是自变量之间存在高度相关关系。岭回归通过在损失函数中添加一个L2正则项( λ ∑ j 1 n β j 2 \lambda \s…

JavaWeb:关于登录认证的简单拓展

前提介绍 本文基于文章-------JavaWeb:SpringBootWeb登录认证 --黑马笔记 -------再做简单拓展 如果没有关于登录认证知识的基础,可以先看上面所说的的文章,文章在专栏javaweb中,下面我为了大家观看,直接放了链接。…

26. 可变参数和Collection集合工具类

可变参数与Collections 1. 可变参数1. 概述2. 格式3. 代码示例4. 注意事项 2. Collections集合工具类2.1 概述2.2 方法2.3 代码示例2.4 注意事项 1. 可变参数 1. 概述 可变参数(Variable Arguments)是指在参数列表中允许传入不定个数的参数。在许多编程…

《动手学深度学习(PyTorch版)》笔记7.6

注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过&…

嵌入式Qt 第一个Qt项目

一.创建Qt项目 打开Qt Creator 界面选择 New Project或者选择菜单栏 【文件】-【新建文件或项目】菜单项 弹出New Project对话框,选择Qt Widgets Application 选择【Choose】按钮,弹出如下对话框 设置项目名称和路径,按照向导进行下一步 选…

EMC学习笔记(二十六)降低EMI的PCB设计指南(六)

降低EMI的PCB设计指南(六) 1.PCB布局1.1 带键盘和显示器的前置面板PCB在汽车和消费类应用中的应用1.2 敏感元器件的布局1.3 自动布线器 2.屏蔽2.1 工作原理2.2 屏蔽接地2.3 电缆屏蔽至旁路2.4 缝隙天线:冷却槽和缝隙 tips:资料主要…

MySQL篇----第二十一篇

系列文章目录 文章目录 系列文章目录前言一、什么是乐观锁二、什么是悲观锁三、什么是时间戳四、什么是行级锁前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一、…

无人机概述及系统组成,无人机系统的构成

无人机的定义 无人驾驶航空器,是一架由遥控站管理(包括远程操纵或自主飞行)的航空器,也称遥控驾驶航空器,以下简称无人机。 无人机系统的定义 无人机系统,也称无人驾驶航空器系统,是指一架无人…

屏幕字体种类介绍

[ Script and font support in Windows ] [Windows 中的脚本和字体支持] 在Windows 2000 以前,Windows 的每个主要版本都会添加对新脚本的文本显示支持。本文介绍了每个主要版本中的更改。 Since before Windows 2000, text-display support for new scr…

idea中vue文件如何快捷打出html标签结构,不写<

例如写一个<button></button>标签&#xff1a;快捷键如下 先写一个button&#xff0c;然后再按tab键即可自动生成一对标签。 演示&#xff1a; 步骤一&#xff1a; 步骤二&#xff1a;

STM32 STD/HAL库驱动W25Q64模块读写字库数据+OLED0.96显示例程

STM32 STD/HAL库驱动W25Q64 模块读写字库数据OLED0.96显示例程 &#x1f3ac;原创作者对W25Q64保存汉字字库演示&#xff1a; W25Q64保存汉字字库 &#x1f39e;测试字体显示效果&#xff1a; &#x1f4d1;功能实现说明 利用W25Q64保存汉字字库&#xff0c;OLED显示汉字的时…

寒假作业——2/13

作业1 作业2 cp cp 当前的文件位置 复制到哪个位置 格式 : cp 路径/文件 路径/目录名/重新命名的目录名 mv mv 当前的文件位置 复制到哪个位置 格式 : mv 路径/文件 路径/目录名/重新命名的目录名 也可进行重命名操作 find 查找文件 find 目标路径 -name 文件名 后续…

leetcode(数组)128.最长连续序列(c++详细解释)DAY8

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 示例 1&a…

政安晨:在Jupyter中【示例演绎】Matplotlib的官方指南(二){Image tutorial}·{Python语言}

咱们接着上一篇&#xff0c;这次咱们讲使用Matplotlib绘制图像的简短尝试。 我的这个系列的上一篇文章在这里&#xff1a; 政安晨&#xff1a;在Jupyter中【示例演绎】Matplotlib的官方指南&#xff08;一&#xff09;{Pyplot tutorial}https://blog.csdn.net/snowdenkeke/ar…

IM聊天系统为什么需要做消息幂等?如何使用Redis以及Lua脚本做消息幂等【第12期】

0前言 消息收发模型 第一张图是一个时序图&#xff0c;第二张图是一个标清楚步骤的流程图&#xff0c;更加清晰。消息的插入环节主要在2步。save部分。主要也是对这个部分就行消息幂等的操作。 前情提要&#xff1a;使用Redis发布 token 以及lua脚本来共同完成消息的幂等 目…

119.乐理基础-五线谱-五线谱的标记

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;音值组合法&#xff08;二&#xff09; 力度记号&#xff1a;简谱里什么意思&#xff0c;五线谱也完全是什么意思&#xff0c;p越多就越弱&#xff0c;f越多就越强&#xff0c;然后这些渐强、渐弱、sf、fp这些标记…