Ceph集群RBD块存储:快照与Copy-on-Write克隆的基本操作

2024-05-24 13:44

本文主要是介绍Ceph集群RBD块存储:快照与Copy-on-Write克隆的基本操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1.RBD块存储镜像克隆概念
    • 2.copy-on-write克隆的基本使用
      • 2.1.在块存储中创建一个快照
      • 2.2.将快照配置成保护模式
      • 2.3.基于快照克隆出镜像
      • 2.4.使用克隆的镜像
      • 2.5.查看一个快照下有哪些克隆的镜像

1.RBD块存储镜像克隆概念

镜像克隆官方文档:https://docs.ceph.com/en/pacific/rbd/rbd-snapshot/#getting-started-with-layering

像阿里云、OpenStack等等虚拟化平台,创建一个虚拟机的速度都非常的快,这个原理就和RBD块存储的镜像克隆有关,这个机制叫做copy-on-write,简称COW。

copy-on-write机制其实就是将一个快照快速克隆成了一个写时复制镜像,快照是只读的,写数据都是在克隆的镜像里进行的,使用这个克隆的镜像就可以快速创建出虚拟机。

镜像克隆分为完整克隆和链接克隆两种,完整克隆的速度比较慢 ,链接克隆的速度非常快,相当于Windows中的快捷方式。

链接克隆是基于父镜像(快照)中快速创建出来的一个链接镜像(写时复制镜像),链接镜像读取数据是从父镜像中进行的,写数据是在链接镜像中进行的,通过链接克隆可以快速的克隆出很多个镜像,并行这些镜像都可以直接使用。

链接镜像与父镜像存在依赖关系,一定要将父镜像保护好,如果父镜像丢失,就会导致链接镜像无法使用。

image-20220409144544842

父镜像指的是块设备的快照,从快照中克隆出来的镜像就是子镜像,也就是链接镜像。

父镜像都是只读类型的,将块设备进行快照的创建和保护快照,就可以创建出任意数量的写时复制克隆,也就是链接镜像。

克隆镜像的流程如下:

首先创建出块设备文件,然后基于块设备文件创建一个快照,将快照添加一个保护机制,防止快照被删除,最后从快照中克隆镜像。

image-20220409145439198

copy-on-write克隆常应用于快速创建虚拟机,作为虚拟机使用的iso镜像文件,基于一个环境配置完好的快照,将这个快照通过链接克隆的方式,快速克隆出n个镜像,秒级创建出虚拟机。

2.copy-on-write克隆的基本使用

2.1.在块存储中创建一个快照

[root@ceph-node-1 ~]# rbd snap create pool-test/rbd-storage.img@snap-system-image[root@ceph-node-1 ~]# rbd snap ls pool-test/rbd-storage.img
SNAPID NAME              SIZE   PROTECTED TIMESTAMP                6 snap-system-image 10 GiB           Sat Apr  9 15:09:09 2022

2.2.将快照配置成保护模式

配置成保护模式后,快照将无法删除。

基于快照做克隆,一定要将快照完完整整的保护好,一旦丢失,克隆出来的镜像也无法使用。

[root@ceph-node-1 ~]# rbd snap protect pool-test/rbd-storage.img@snap-system-image

尝试删除快照,发现无法删除。

[root@ceph-node-1 ~]# rbd snap remove pool-test/rbd-storage.img@snap-system-image
Removing snap: 2022-04-09 15:12:10.684 7f4652554c80 -1 librbd::Operations: snapshot is protected0
% complete...failed.
rbd: snapshot 'snap-system-image' is protected from removal.

取消的命令格式:rbd snap unprotect {快照名称}

2.3.基于快照克隆出镜像

[root@ceph-node-1 ~]# rbd clone pool-test/rbd-storage.img@snap-system-image pool-test/vm1-clone.img
[root@ceph-node-1 ~]# rbd clone pool-test/rbd-storage.img@snap-system-image pool-test/vm2-clone.img[root@ceph-node-1 ~]# rbd -p pool-test ls
ceph-trash.img
rbd-storage.img
vm1-clone.img
vm2-clone.img

克隆的速度非常快,可以查看镜像的信息,发现会包含父镜像的信息,也就是来源于哪个快照克隆的。

[root@ceph-node-1 ~]# rbd info pool-test/vm1-clone.img
rbd image 'vm1-clone.img':size 10 GiB in 2560 objectsorder 22 (4 MiB objects)snapshot_count: 0id: 8ab1b874b899block_name_prefix: rbd_data.8ab1b874b899format: 2features: layeringop_features: flags: create_timestamp: Sat Apr  9 15:14:10 2022access_timestamp: Sat Apr  9 15:14:10 2022modify_timestamp: Sat Apr  9 15:14:10 2022parent: pool-test/rbd-storage.img@snap-system-image				#父镜像overlap: 10 GiB

2.4.使用克隆的镜像

1.将镜像映射成裸磁盘
[root@ceph-node-1 ~]# rbd device map pool-test/vm1-clone.img
/dev/rbd12.直接挂在无需格式,因为里面有父镜像的数据
[root@ceph-node-1 ~]# mount /dev/rbd1 /mnt
[root@ceph-node-1 ~]# ls /mnt
file1  file10  file2  file3  file4  file5  file6  file7  file8  file9  lost+found

2.5.查看一个快照下有哪些克隆的镜像

[root@ceph-node-1 ~]# rbd children pool-test/rbd-storage.img@snap-system-image
pool-test/vm1-clone.img
pool-test/vm2-clone.img

这篇关于Ceph集群RBD块存储:快照与Copy-on-Write克隆的基本操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/998573

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository。如果采用原始直接打包放到lib目录的方式进行处理,便对项目的管理带来一些不必要的麻烦。例如版本升级后需要重新打包并,替换原有jar包等等一些额外的工作量和麻烦。为了避免这些不必要的麻烦,通常我们

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体