设为首页 收藏本站
查看: 1058|回复: 0

[经验分享] ceph集群快照、clone相关命令整理v1

[复制链接]

尚未签到

发表于 2019-2-2 07:53:31 | 显示全部楼层 |阅读模式
  简介:快照
  快照是一个镜像在某一个特定时间点的只读拷贝。其中Ceph块设备的高级功能是能够创建快照保留镜像的历史状态。Ceph支持快照分层,允许快速克隆镜像。 Ceph还支持使用RDB和如KVM,libvirt等创建快照。当做快照时需要停止I/O。如果镜像包含文件系统,文件系统必须在做快照前保持一致性。
  

  本文档主要从以下几个方面进行测试:
  1:快照、创建、查询、删除、清理;
  2:快照clone、增量快照、保护快照;
  3:image导入、导出;
  4:利用ceph存储快照功能,做数据备份、数据恢复;
  5:image 空间resize(xfs、ext4文件系统);
  6:pool快照创建、pool copy、pool快照查看、删除;
  文档内容初步整理,后续将不断完善,内容有误的地方欢迎留言指正,我会及时更新修正。

  

  

  ##############测试目的#############
  

  1:image快照如何创建、删除、查询;
  2:快照回滚、数据恢复;
  

  #############步骤1~15##############
  1:创建一个pool
  [root@node241 ~]# ceph  osd pool create mypool 24
  pool 'mypool' created
  

  2:要创建一个新的RBD镜像为10GB
  rbd -p mypool create myimage --size 10240
  或者:
  rbd create mypool/myimage --size 10240
  

  3:再新建一个镜像、做快照导入测试使用
  rbd create mypool/myimage1 --size 10240
  

  4:查看镜像
  [root@node242 ~]# rbd --pool mypool ls
  myimage
  myimage1
  5:映射镜像 myimage
  [root@node242 ~]# rbd map mypool/myimage
  /dev/rbd0
  

  6:格式化
  mkfs.xfs /dev/rbd0
  

  7:建立挂载点、挂载磁盘
  mkdir /myimage
  mount /dev/rbd0 /myimage/
  

  8:映射镜像 myimage1
  [root@node242 ~]# rbd map mypool/myimage1
  /dev/rbd1
  9:格式化
  mkfs.xfs /dev/rbd1
  

  10:建立挂载点、挂载磁盘
  mkdir /myimage1
  mount /dev/rbd1 /myimage1/
  

  11:验证查看挂载分区
  [root@node242 ~]# df -Th
  Filesystem     Type      Size  Used Avail Use% Mounted on
  。。。。。。。。。。。。。。。
  /dev/rbd0      xfs        10G   33M   10G   1% /myimage
  /dev/rbd1      xfs        10G   33M   10G   1% /myimage1
  [root@node242 ~]#
  

  12:myimage目录创建测试文件
  touch /myimage/{1..10}myimage.data.txt
  

  查看数据生成
  ll /myimage
  total 0
  -rw-r--r-- 1 root root 0 Oct  9 12:24 10myimage.data.txt
  -rw-r--r-- 1 root root 0 Oct  9 12:24 1myimage.data.txt
  -rw-r--r-- 1 root root 0 Oct  9 12:24 2myimage.data.txt
  -rw-r--r-- 1 root root 0 Oct  9 12:24 3myimage.data.txt
  -rw-r--r-- 1 root root 0 Oct  9 12:24 4myimage.data.txt
  -rw-r--r-- 1 root root 0 Oct  9 12:24 5myimage.data.txt
  -rw-r--r-- 1 root root 0 Oct  9 12:24 6myimage.data.txt
  -rw-r--r-- 1 root root 0 Oct  9 12:24 7myimage.data.txt
  -rw-r--r-- 1 root root 0 Oct  9 12:24 8myimage.data.txt
  -rw-r--r-- 1 root root 0 Oct  9 12:24 9myimage.data.txt
  

  

  13:myimge创建一个快照:
  [root@node242 ~]# rbd snap create mypool/myimage@myimagesnap
  

  14:查看快照信息
  [root@node242 ~]# rbd snap ls mypool/myimage
  SNAPID NAME            SIZE
  2 myimagesnap 10240 MB
  
  15:验证数据回滚
  15.1:然后删除所有创建的文件
  [root@node242 ~]# rm -rf /myimage/*
  [root@node242 ~]# ll /myimage
  total 0
  

  15.2:回滚快照,
  注意:回滚快照就是将当前镜像的数据用快照重新替换。回滚的执行时间随着镜像大小的增加而增加。克隆将会比回滚快照更花时间。
  使用RBD命令回滚快照,指定snap rollback选项,指定池名称,镜像名称和单元名称。
  

  [root@node242 ~]# rbd snap rollback mypool/myimage@myimagesnap
  Rolling back to snapshot: 100% complete...done.
  

  用于回滚部分,你要注意回滚意味着从快照中的数据覆盖当前版本,需要更长的时间与较大的镜像。因此,克隆是可取的快速恢复。
  注意: 镜像快照回滚意味着从快照覆盖原快照当时版本的镜像数据。执行回滚所花费的时间与镜像的大小有关。快照克隆比快照回滚恢复得更快,它是返回到一个预先存在的状态优选的方法。
  

  15.3:卸载挂载目录
  [root@node242 ~]# umount /myimage
  

  15.4:重新挂载
  [root@node242 ~]# mount /dev/rbd0 /myimage
  

  15.5:查看数据,已经恢复
  [root@node242 ~]# ll /myimage
  total 0
  -rw-r--r-- 1 root root 0 Oct  9 12:24 10myimage.data.txt
  -rw-r--r-- 1 root root 0 Oct  9 12:24 1myimage.data.txt
  -rw-r--r-- 1 root root 0 Oct  9 12:24 2myimage.data.txt
  -rw-r--r-- 1 root root 0 Oct  9 12:24 3myimage.data.txt
  -rw-r--r-- 1 root root 0 Oct  9 12:24 4myimage.data.txt
  -rw-r--r-- 1 root root 0 Oct  9 12:24 5myimage.data.txt
  -rw-r--r-- 1 root root 0 Oct  9 12:24 6myimage.data.txt
  -rw-r--r-- 1 root root 0 Oct  9 12:24 7myimage.data.txt
  -rw-r--r-- 1 root root 0 Oct  9 12:24 8myimage.data.txt
  -rw-r--r-- 1 root root 0 Oct  9 12:24 9myimage.data.txt
  

  ##############测试目的#############
  

  1:image导入、导出,数据备份恢复;
  2:导出image信息、导入到其它pool;
  

  #############步骤16##############
  16:###导出、导入镜像
  

  16.1: 把ceph pool中的一个镜像导出
  [root@node242 ~]# rbd export -p mypool --image myimage /tmp/exportmyimage.img
  Exporting image: 100% complete...done
  

  16.2:验证查看导出文件
  [root@node242 ~]# ll /tmp/exportmyimage.img
  -rw-r--r-- 1 root root 10737418240 Oct  9 13:29 /tmp/exportmyimage.img
  

  

  16.3:把一个镜像导入ceph中
  导入镜像名,不能与现有pool中的image重名
  [root@node242 ~]# rbd import /tmp/exportmyimage.img -p mypool --image myimage2
  Importing image: 100% complete...done.
  

  16.4:验证查看导入镜像文件
  [root@node242 ~]# rbd -p mypool ls
  myimage
  myimage1
  myimage2
  

  16.7:映射导入挂载镜像
  [root@node242 ~]# rbd map  mypool/myimage2
  /dev/rbd2
  

  16.8:挂载报错
  [root@node242 ~]# mount -t xfs /dev/rbd2 /myimage3
  mount: wrong fs type, bad option, bad superblock on /dev/rbd2,
  missing codepage or helper program, or other error
  

  In some cases useful info is found in syslog - try
  dmesg | tail or so.
  16.9:排查发现新导入的镜像的uuid和之前只做image 的uuid 一样,看来本机挂载需要修改硬盘的uuid 才行
  [root@node242 ~]# blkid
  。。。。。。。。。。。。。。。。。。。。
  /dev/rbd0: UUID="517f2923-04eb-4168-ac0d-229a90e17534" TYPE="xfs"  ????
  /dev/rbd1: UUID="aea281df-22e6-4411-a98c-688de1b45500" TYPE="xfs"
  /dev/rbd2: UUID="517f2923-04eb-4168-ac0d-229a90e17534" TYPE="xfs"    ????
  [root@node242 ~]#
  

  

  16.10:换另外一台服务器试一下
  先查看镜像是否存在
  [root@node245 ~]# rbd -p mypool ls
  myimage
  myimage1
  myimage2
  

  16.11:做镜像映射
  [root@node245 ~]# rbd map mypool/myimage2
  /dev/rbd0
  

  16.12:创建挂载目录
  [root@node245 ~]# mkdir /myimage2
  

  16.13:挂载分区
  [root@node245 ~]# mount /dev/rbd0 /myimage2/
  

  16.14:验证数据与到在源镜像导出时数据一致
  [root@node245 ~]# ll /myimage2/
  total 0
  -rw-r--r--. 1 root root 0 Oct  9 00:24 10myimage.data.txt
  -rw-r--r--. 1 root root 0 Oct  9 00:24 1myimage.data.txt
  -rw-r--r--. 1 root root 0 Oct  9 00:24 2myimage.data.txt
  -rw-r--r--. 1 root root 0 Oct  9 00:24 3myimage.data.txt
  -rw-r--r--. 1 root root 0 Oct  9 00:24 4myimage.data.txt
  -rw-r--r--. 1 root root 0 Oct  9 00:24 5myimage.data.txt
  -rw-r--r--. 1 root root 0 Oct  9 00:24 6myimage.data.txt
  -rw-r--r--. 1 root root 0 Oct  9 00:24 7myimage.data.txt
  -rw-r--r--. 1 root root 0 Oct  9 00:24 8myimage.data.txt
  -rw-r--r--. 1 root root 0 Oct  9 00:24 9myimage.data.txt
  

  16.15:查看uuid 与源id一致
  [root@node245 myimage2]# blkid
  。。。。。。。。。。。。。。。。。
  /dev/rbd0: UUID="517f2923-04eb-4168-ac0d-229a90e17534" TYPE="xfs"
  16.16: 总结
  导出的镜像文件导入集群后生成的硬盘UUID和之前的源镜像一致,挂载磁盘使用不能挂载再同一台主机。
  

  ##############测试目的#############
  

  1:查看快照;
  2:删除快照;
  3:删除写保护的快照;
  4:清除所有快照;
  #############步骤17~19##############
  17:查看快照
  [root@node245 ~]# rbd snap ls mypool/myimage
  SNAPID NAME            SIZE
  2 myimagesnap 10240 MB
  
  18:要删除一个快照:
  [root@node245 ~]# rbd snap rm  mypool/myimage@myimagesnap
  删除snap 删除snap报(rbd: snapshot 'snapshot-xxxx' is protected from removal.)写保护 ,使用 rbd snap unprotect volumes/snapshot-xxx' 解锁,然后再删除
  注意: Ceph的OSDs删除数据不同步,所以删除快照的磁盘空间不会立即释放。
  

  19:清除快照
  19.1:用RBD删除所有快照镜像,指定snap purge选项和映像名称。
  rbd --pool {pool-name} snap purge {image-name}
  

  19.2:查看
  [root@node243 t1image]# rbd snap ls mypool/myimage1
  SNAPID NAME              SIZE
  3 myimage1snap  10240 MB
  5 myimage1snap1 10240 MB
  6 myimage1snap2 10240 MB
  7 myimage1snap3 10240 MB
  8 myimage1snap4 10240 MB
  19.3:清除所有快照
  [root@node243 t1image]# rbd snap purge mypool/myimage1
  Removing all snapshots: 100% complete...done.
  

  19.4:再次查看所有快照已经被删除
  [root@node243 t1image]# rbd snap ls mypool/myimage1
  
  ##############RBD -管理RADOS块设备(RBD)的镜像,增量快照功能演示#############
  ##############测试目的###########
  

  1:快照使用简介;
  1:快照相关参数详解;
  1:快照相关命令详解;
  

  #############步骤1~3#############
  1:简介
  rbd [-c ceph.conf][-m monaddr][-p| -pool pool][-size size][-order bits][command...]
  说明
  rbd是一个实用程序,用于操纵rados块设备(RBD)的镜像,QEMU/KVM就是使用的Linux rbd驱动和rbd存储驱动。RBD镜像是分在对象和存储在RADOS对象存储中的简单的块设备。则散置对象镜像的大小必须是2的幂。
  选项
  -c ceph.conf, -- conf ceph.conf
  使用ceph.conf配置文件,而不是默认的/etc/ceph/ceph.conf文件在启动过程中确定监控地址。
  -m monaddress [:port]
  连接到指定的监视地址上(而不是ceph.conf)。
  -P pool, --pool pool
  与池进行交互。大多数命令是必需的。
  --no-progress
  不输出进度信息(默认情况下,某些命令输出标准错误)
  

  2:参数
  --image-format format
  指定使用对象布局。默认值是1。
  

  format 1 - 一个新的RBD镜像使用原始的格式。所有版本的librbd和RBD内核模块理解这种格式,但不支持新的功能,如克隆。
  format 2- 使用的第二个的RBD格式,这是在这个时候由librbd(但不包括RBD内核模块)支持。这增加了支持克隆和更容易扩展,让更多的功能,在未来的。
  --snap snap
  指定快照名称具体操作。
  

  3:命令
  clone [ parent-snapname ] [ image-name ]
  将会创建一个父类快照的克隆(子类的副本) 。对象命令将会与父类镜像相同,除非指定。否则 大小将会与父类快照相同。
  

  父类快照必须要被保护 (参阅 rbd snap protect).。这需要format 2。
  flatten [image-name]
  如果镜像是被克隆的,从父类快照福之所有共享的块并且让子类独立于父类, 切断子类与父类快照的链接。如果没有依赖的克隆,父类快照能被不保护并且能被删除。这需要format 2。
  children [image-name]
  列出给定的快照中镜像的克隆。这检查了每个池,输出池名/镜像名的结果。
  export [image-name] [dest-path]
  导出至dest-path路径的镜像(在stdout中使用 )。
  import [path] [dest-path]
  创建一个新的镜像,并导入其数据路径(使用-for 标准输出)。导入操作,如果可能的话,将尝试创建稀少RBD镜像。进口从标准输入,稀少化单元目标镜像数据块大小(1

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-670647-1-1.html 上篇帖子: Ceph入门 下篇帖子: 最新ceph集群常用命令梳理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表