CEPH集群RBD快照创建、恢复、删除、克隆(转)
Ceph支持一个非常好的特性,以COW(写时复制)的方式从RBD快照创建克隆,在Ceph中被称为快照分层。分层特性允许用户创建多个CEPH RBD克隆实例。这些特性应用于OpenStack等云平台中
,使用快照形式保护ceph RBD 镜像,快照是只读的,但COW克隆是完全可以写 ,可以多次来孵化实例,对云平台来说是非常有用的。
Ceph RBD镜像有format-1 和 format-2两种类型,RBD支持这两种类型,但是分层特性COW克隆特性只支持format-2镜像,默认RBD创建的镜像是format-1。
ceph snap几个主要命令
ceph snap create (snap add) Create a snapshot.
snap list (snap ls) Dump list of image snapshots.
snap protect Prevent a snapshot from being deleted.
snap purge Deletes all snapshots.
snap remove (snap rm) Deletes a snapshot.
snap rename Rename a snapshot.
snap rollback (snap revert) Rollback image to snapshot.
snap unprotect Allow a snapshot to be deleted.
一、创建RBD镜像实例:
1、在pool1上创建一个RBD镜像,不使用-p <pool name>默认在rbd存储池上创建,默认是M
[root@node2 ~]# rbd create rbd1 -p pool1 --size 1024 --image-format 1
rbd: image format 1 is deprecated
查看创建结果,使用-p指定存储池
[root@node2 ~]# rbd list -p pool1
rbd1
[root@node2 ~]# rbd info --image pool1/rbd1
rbd image ‘rbd1‘:
size 5120 MB in 1280 objects
order 22 (4096 kB objects)
block_name_prefix: rb.0.15d23.238e1f29
format: 1
2、映射块设备
[root@node2 ~]# rbd map --image pool1/rbd1
/dev/rbd3
查看映射的块设备
[root@node2 ~]# rbd showmapped
id pool image snap device
0 rbd block-device1 - /dev/rbd0
1 rbd block-device3 - /dev/rbd1
2 rbd block-device4 - /dev/rbd2
3 pool1 rbd1 - /dev/rbd3
3、挂载文件系统使用
[root@node2 ~]# mkfs.xfs /dev/rbd3
meta-data=/dev/rbd3 isize=256 agcount=9, agsize=162816 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=1310720, imaxpct=25
= sunit=1024 swidth=1024 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@node2 ~]# mkdir /mnt/rbd3
[root@node2 ~]# mount /dev/rbd3 /mnt/rbd3
[root@node2 ~]# mount | grep rbd3
/dev/rbd3 on /mnt/rbd3 type xfs (rw,relatime,attr2,inode64,sunit=8192,swidth=8192,noquota)
[root@node2 ~]# touch /mnt/rbd3/test
[root@node2 ~]# ls /mnt/rbd3/
test
4、创建快照
[root@node2 ~]# rbd snap create pool1/rbd1@snapshot1
[root@node2 ~]# rbd snap ls pool1/rbd1
SNAPID NAME SIZE
4 snapshot1 5120 MB
5、在rbd3目录下创建文件test1
[root@node2 ~]# touch /mnt/rbd3/test1
[root@node2 ~]# ls /mnt/rbd3/
test test1
6、恢复rbd1的快照
[root@node2 ~]# rbd snap rollback pool1/rbd1@snapshot1
Rolling back to snapshot: 100% complete...done.
语法:rbd snap rollback <pool-name>/<image-name>@<snap-name>
7、重新挂载文件系统,发现已经恢复到之前的状态了
[root@node2 ~]# umount /mnt/rbd3
[root@node2 ~]# mount /dev/rbd3 /mnt/rbd3/
[root@node2 ~]# ls /mnt/rbd3/
test
[root@node2 ~]#
8、不再使用镜像时可以删除掉镜像
[root@node2 ~]# rbd snap rm pool1/rbd1@snapshot1
[root@node2 ~]# rbd snap ls pool1/rbd1
语法:rbd snap rm <pool-name>/<image-name>@<snap-name>
9、删除多个快照
[root@node2 ~]# rbd snap purge pool1/rbd1
语法:rbd snap purge <pool-name>/<image-name>
二、使用RBD克隆
创建rbd2,类型为format2的RBD镜像
[root@node2 ~]# rbd create rbd2 --size 10240 --image-format 2
[root@node2 ~]# rbd info --image rbd2
rbd image ‘rbd2‘:
size 10240 MB in 2560 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.15821238e1f29
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
flags:
创建RBD镜像快照
[root@node2 ~]# rbd snap create rbd/rbd2@snapshot1
[root@node2 ~]# rbd snap ls rbd/rbd2
SNAPID NAME SIZE
7 snapshot1 10240 MB
创建COW镜像前先要保护这个快照,这是非常重要的一步
[root@node2 ~]# rbd snap protect rbd/rbd2@snapshot1
通过快照创建一个克隆的RBD镜像
[root@node2 ~]# rbd clone rbd/rbd2@snapshot1 rbd/clone_rbd2
[root@node2 ~]# rbd info --image rbd/clone_rbd2
rbd image ‘clone_rbd2‘:
size 10240 MB in 2560 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.15c1b3d1b58ba
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
flags:
parent: rbd/rbd2@snapshot1
overlap: 10240 MB
创建克隆好了一个依赖于父镜像快照的RBD镜像后,为了让这个克隆的RBD镜像独立于父镜像,我们需要将父镜像的信息合并flattern到子镜像,一旦合并完成,RBD镜像和它的父镜像就不会存在任何关系了。
使用flatten合并
[root@node2 ~]# rbd flatten rbd/clone_rbd2
Image flatten: 100% complete...done.
合并完成后,查看这个镜像信息,发现父镜像/快照名字不存大了
[root@node2 ~]# rbd info --image clone_rbd2
rbd image ‘clone_rbd2‘:
size 10240 MB in 2560 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.15c1b3d1b58ba
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
flags:
[root@node2 ~]#
如果你不再使用父镜像,可以先移除它的保护状态,再删除它
[root@node2 ~]# rbd snap unprotect rbd/rbd2@snapshot1
[root@node2 ~]# rbd snap rm rbd/rbd2@snapshot1
本文出自 “技术成就梦想” 博客,请务必保留此出处http://andyliu.blog.51cto.com/518879/1856669
CEPH集群RBD快照创建、恢复、删除、克隆(转)的更多相关文章
- 分布式存储系统之Ceph集群RBD基础使用
前文我们了解了Ceph集群cephx认证和授权相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16748149.html:今天我们来聊一聊ceph集群的 ...
- CEPH-2:rbd功能详解及普通用户应用ceph集群
ceph集群rbd使用详解 一个完整的ceph集群,可以提供块存储.文件系统和对象存储. 本节主要介绍rbd存储功能如何灵活的使用,集群背景: $ ceph -s cluster: id: 53717 ...
- 使用虚拟机CentOS7部署CEPH集群
第1章 CEPH部署 1.1 简单介绍 Ceph的部署模式下主要包含以下几个类型的节点 Ø CephOSDs: A Ceph OSD 进程主要用来存储数据,处理数据的replication,恢复 ...
- ceph集群部署(基于jewel版)
环境 两个节点:ceph1.ceph2 ceph1: mon.mds.osd.0.osd.1 ceph2: osd.2.osd.3 网络配置: ceph1: 管理网络,eth0,10.0.0.20 存 ...
- Ubuntu 18.04.5 LTS Ceph集群之 cephx 认证及使用普通用户挂载RBD和CephFS
1.cephx认证和授权 1.1 CephX认证机制 Ceph使用cephx协议对客户端进行身份认证: 1.每个MON都可以对客户端进行身份验正并分发密钥, 不存在单点故障和性能瓶颈 2. MON会返 ...
- 删除ceph集群mds
ceph集群新搭建以后是只有一个默认的存储池rbd的池 ## 创建文件接口集群 1.创建一个元数据池 [root@mytest ~]# ceph osd pool create metadata 20 ...
- docker创建ceph集群
背景 Ceph官方现在提供两类镜像来创建集群,一种是常规的,每一种Ceph组件是单独的一个镜像,如ceph/daemon.ceph/radosgw.ceph/mon.ceph/osd等:另外一种是最新 ...
- CEPH集群操作入门--配置
参考文档:CEPH官网集群操作文档 概述 Ceph存储集群是所有Ceph部署的基础. 基于RADOS,Ceph存储集群由两种类型的守护进程组成:Ceph OSD守护进程(OSD)将数据作为对象 ...
- 最新ceph集群常用命令梳理
结合网络.官网.手动查询等多方渠道,整理ceph维护管理常用命令,并且梳理常规命令在使用过程中的逻辑顺序.另外整理期间发现ceph 集群的命令体系有点乱,详细情况各自体验. 一:ceph集群启动.重启 ...
随机推荐
- Java中的GetOpt操作
在shell工具中,有专门的getopt函数,使用方法如下所示: while getopts "d:t:vh" opt; do case "${opt}" in ...
- 【UVA】673 Parentheses Balance(栈处理表达式)
题目 题目 分析 写了个平淡无奇的栈处理表达式,在WA了5发后发现,我没处理空串,,,,(或者说鲁棒性差? 代码 #include <bits/stdc++.h> usin ...
- 《Effective C++(第三版)》-笔记
1. 让自己习惯C++ 条款01: 视C++为一个语言联邦 1.1 C++ 是一个多重泛型编程语言(multiparadigm programming),支持:过程形式(procedural),面向对 ...
- pycharm多行代码同时注释、去除注释
pycharm中同时注释多行代码快捷键: 代码选中的条件下,同时按住 Ctrl+/,被选中行被注释,再次按下Ctrl+/,注释被取消
- SVN 提交、更新、解决冲突等操作步骤
1. 纳入版本控制 ①新建文件abc.txt ②在文件上点右键 ③添加后文件图标发生变化 2. 提交 ①使用TortoiseSVN可以提交具体某一个文件,或某一个目录下的所有改变.方法就是在想要提交的 ...
- SVN版本控制系统最佳实践
第1章SVN介绍及应用场景 1.1什么是SVN(Subversion) Svn(subversion)是近年来崛起非常优秀的版本管理工具,与CVS管理工具一样,SVN是一个跨平台的开源的版本控制系统. ...
- Python小知识点(4)--模块相关
1.模块: 定义:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是以.py结尾的python文件(文件名:test.py,对应的模块名:test). 包:用来从逻辑上组 ...
- 呕心沥血Android studio使用JNI实例
发现网上很多JNI的使用教程,也很详细,不过有的地方有些缺漏,导致很多小问题难以解决的,今天就来总结一下. 准备工作:下载NDK. 简单的说,要用到C/C++,就要用NDK.直接百度搜索然后去官网下载 ...
- 全景之HDR
全景之HDR拍摄 全景HDR流程: 1.相机拍摄 1.1 HDR拍摄 HDR拍摄需要拍摄不同曝光度的多张图片. 1.2 摄像师消去 需要摄像师在不同位置(一般为相机的两面),拍摄两次HDR. 注意: ...
- 利用SQLServer查询分析器获取存储过程的返回值,检查测试存储过程
1.存储过程没有返回值的情况(即存储过程语句中没有return之类的语句)用方法 int count = ExecuteNonQuery(..)执行存储过程其返回值只有两种情况(1)如果通过查询分析器 ...