首页 > 其他分享 >深入解析OpenStack Cinder:块存储服务详解

深入解析OpenStack Cinder:块存储服务详解

时间:2024-09-05 10:26:09浏览次数:11  
标签:存储 快照 创建 备份 详解 cinder Cinder OpenStack

目录

OpenStack简介

Openstack中的存储:

虚机对块存储的要求:

Cinder介绍

主要组件

Cinder 基本功能

Cinder命令行

通用命令

卷操作

卷快照操作

卷备份操作

卷与实例的操作

卷迁移

其他

Cinder工作流程

Cinder插件


OpenStack简介

OpenStack是一个开源的云计算管理平台项目,它是一套用于部署和管理云端计算资源的软件。OpenStack提供了基础设施即服务(IaaS)的应用程序,允许用户和管理员从个人电脑到大型多租户环境部署和管理大量的计算、存储和网络资源池。OpenStack的核心服务包括Nova(计算)、Neutron(网络)、Cinder(块存储)、Swift(对象存储)、Glance(镜像服务)和Keystone(身份验证服务)等。

Openstack中的存储:

       

虚机对块存储的要求:

一般在我们创建实例,也是虚机的时候会伴随着创建一个卷,他会创建并挂载在我们的虚机上,随之我们可以对卷进行操作等。在我们删除虚机的时候卷也随之删除。

Cinder介绍

Cinder是OpenStack中的块存储服务,主要用于为虚拟机提供持久性块存储设备。它的设计目标是为虚拟机提供一个独立于虚拟机生命周期之外的数据存储,这样即使虚拟机关机了,数据仍然会被保存下来。

主要组件
  • cinder-api:提供RESTful API来处理客户端请求,如创建、删除和附加卷等。
  • cinder-scheduler:根据策略选择合适的后端存储节点来创建卷。
  • cinder-volume:在选定的后端存储上执行实际的卷创建、快照、备份等操作。
  • cinder-backup:处理卷的备份与恢复操作。
  • cinder的数据库:用于存储状态信息和其他元数据。

  • Cinder的开发工作主要集中在scheduler和driver,以便提供更多的调度算法、更多的功能、以及指出更多的后端存储
  • Cinder组件之间的RPC靠消息队列(Queue)实现
  • Volume元数据和状态保存在Database中,一般是在cinder库中的volume中,我们从cinder list看到的数据都是从中拿取。

Cinder 基本功能

  1. 卷操作

    • 创建卷
    • 从已有卷创建卷(克隆)
    • 扩展卷
    • 删除卷
  2. 卷-虚机操作

    • 挂载卷到虚机
    • 分离虚机卷
  3. 卷-快照操作

    • 创建卷的快照
    • 从已有卷快照创建卷
    • 删除快照
  4. 卷-镜像操作

    • 从镜像创建卷
    • 从卷创建镜像

部分截图:

Cinder命令行
通用命令
  • cinder --version: 显示Cinder客户端的版本信息。
  • cinder help: 显示所有可用命令的帮助信息。
  • cinder help <command>: 获取特定命令的帮助信息。
卷操作
  • cinder list: 列出所有的卷。
  • cinder show <volume-id>: 显示特定卷的详细信息。
  • cinder create <size>: 创建指定大小的新卷。
  • cinder delete <volume-id>: 删除指定的卷。
  • cinder delete --force <volume-id>: 无视状态删除指定的卷
  • cinder resize <volume-id> <new-size>: 扩展或缩小卷的大小。
  • cinder extend <volume-id> <new-size>: 扩展卷的大小。
  • cinder type-create <type-name>: 创建新的卷类型。
  • cinder type-list: 列出所有卷类型。
  • cinder type-key <type-name> set <key>=<value>: 设置卷类型的键值。
  • cinder type-key <type-name> unset <key>: 移除卷类型的键值。
卷快照操作
  • cinder snapshot-create <volume-id> [--name <snapshot-name>]: 为指定的卷创建快照。
  • cinder snapshot-list: 列出所有的快照。
  • cinder snapshot-show <snapshot-id>: 显示特定快照的详细信息。
  • cinder snapshot-delete <snapshot-id>: 删除指定的快照。
  • cinder snapshot-update <snapshot-id> <metadata>: 更新快照的元数据。
  • cinder snapshot-restore <snapshot-id>: 从快照恢复卷。
卷备份操作
  • cinder backup-create <volume-id> [--name <backup-name>]: 创建卷的备份。
  • cinder backup-restore <backup-id> <volume-id>: 将备份恢复到指定的卷。
  • cinder backup-list: 列出所有的备份。
  • cinder backup-show <backup-id>: 显示特定备份的详细信息。
  • cinder backup-delete <backup-id>: 删除指定的备份。
卷与实例的操作
  • cinder attach <volume-id> <instance-id> <device>: 将卷挂载到实例上的指定设备。
  • cinder detach <volume-id>: 将卷从实例上分离。
  • cinder initialize-connection <volume-id> <instance-id>: 初始化卷与实例之间的连接。
  • cinder terminate-connection <volume-id> <instance-id>: 终止卷与实例之间的连接。
卷迁移
  • cinder migration-start <volume-id> <host>: 开始将卷迁移到另一台主机。
  • cinder migration-check <volume-id> <host>: 检查卷迁移的状态。
  • cinder migration-complete <volume-id>: 完成卷迁移。
  • cinder migration-cancel <volume-id>: 取消正在进行的卷迁移。
  • cinder migration-get-progress <volume-id>: 获取卷迁移进度。
其他
  • cinder service-list: 列出所有运行的服务。

Cinder工作流程

  1. 用户通过cinder-api请求创建一个新的卷。
  2. cinder-api通过RPC将请求发送给cinder-scheduler。
  3. cinder-scheduler基于配置的权重算法选择一个最合适的volume节点。
  4. cinder-volume服务在被选中的节点上创建卷,并将结果返回给cinder-scheduler。
  5. cinder-scheduler更新请求状态并将结果返回给cinder-api。
  6. cinder-api最终将结果返回给用户。

Cinder插件

        

由上图可见,Cinder是多样化的,可以对接多种样式的存储,在我们一般日常使用中lvm是作为我们最简单的测试和开发。

ISCSI简介:

        ISCSI(Internet Small Computer System Interface)是一种协议,它允许在IP网络上传输SCSI指令和数据。iSCSI Target则是指接收来自iSCSI Initiator SCSI命令的服务器或设备。简单来说,iSCSI Target就像是一个存储服务器,它提供块级别的数据存储访问给网络上的其他设备。

        举个栗子:你有一个磁盘,我想用你的磁盘,我就可以通过一种协议去把你的磁盘挂载到我的本地。这个协议就是ISCSI,其中挂载的细节我在此就不赘述了。大家有兴趣可以自行搜索。

回归Cinder里面的ISCSI机制,在Cinder中Control节点会把lvm卷通过ISCSI挂载给他的计算节点。因为我了解的也不够深刻,我只能理解表面的一层意思是不让让自己的控制节点负载过大。

标签:存储,快照,创建,备份,详解,cinder,Cinder,OpenStack
From: https://blog.csdn.net/LKHzzzzz/article/details/141748823

相关文章

  • Java顺序表和链表万字详解
    1.线性表的概念线性表(linearlist)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列...线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,......
  • opencv全面详解教程
    opencv全面详解教程1.OpenCV简介2.安装OpenCV2.1使用pip安装(适用于Python)2.2通过conda安装2.3从源码编译(高级)3.OpenCV基本操作3.1读取和显示图像3.2保存图像3.3视频处理4.图像处理操作4.1调整大小和裁剪4.2颜色空间转换4.3图像平滑(滤波)4.4边......
  • 详解 Visual Studio、MSVC、编译器版本,看完就不再困惑啦!
    新手在刚使用VisualStudio开发C++应用程序时往往会对其版本产生困惑,包括VisualStudio版本、MSVC版本、工具集版本等等。因此本文尝试给大家解释一下VisualStudio不同版本号的对应关系。以VisualStudio2022为例,版本信息包括:VisualStudio发布年份(营销版本号......
  • VMware vSphere各项关键性能监控指标详解
    VMwarevSphere提供了一个叫esxtop的性能监控与故障排错工具供管理员日常维护vSphere虚拟化平台使用,接下来,让我们分别从CPU、内存、磁盘和网络等四个维度去说明如何通过esxtop工具实现性能与故障排错。(1)esxtop工具使用执行环境:进到ESXishell或者SSH连接到ESXi的控制台(默认shel......
  • 【C语言】详解数组
    文章目录前言一、数组的概念二、一维数组1.一维数组的创建2.一维数组的初始化3.一维数组的使用4.一维数组在内存中的存储三、二维数组1.二维数组的创建2.二维数组的初始化3.二维数组的使用4.二维数组在内存中的存储前言一、数组的概念(数组是一组相同类型元素......
  • Linkedlist源码详解
    介绍LinkedList同时实现了List接口和Deque接口,也就是说它既可以看作一个顺序容器,又可以看作一个队列(Queue),同时又可以看作一个栈(Stack)。这样看来,LinkedList简直就是个全能冠军。当你需要使用栈或者队列时,可以考虑使用LinkedList,一方面是因为Java官方已经声明不建议使用Stack类,......
  • java基础知识-JVM知识详解
    一、JVM内存结构Java虚拟机(JVM)的内存结构主要分为几个不同的区域,每个区域都有其特定的目的和功能。以下是JVM内存结构的主要组成部分:先看一下总体的结构图程序计数器(ProgramCounterRegister)这是一个较小的内存块,用于存储当前线程所执行的字节码指令的地址。每......
  • 在线OJ项目详解
    一、项目准备工作1、什么是在线OJOnlineJudge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序源代码,系统对源代码进行编译和执行,并通过预先设计的测试用例来检验程序源代码的正确性。2、所用技术C++STL标准库。cpp-httplib第三方开源网络库。ctemplate第三方开源前端网页......
  • Linkedlist源码详解
    介绍LinkedList同时实现了List接口和Deque接口,也就是说它既可以看作一个顺序容器,又可以看作一个队列(Queue),同时又可以看作一个栈(Stack)。这样看来,LinkedList简直就是个全能冠军。当你需要使用栈或者队列时,可以考虑使用LinkedList,一方面是因为Java官方已经声明不建议使用Stack类......
  • 每天5分钟复习OpenStack(十五)Ceph与Bcache结合
    上一章我们成功部署了bcache,这一章我们将Ceph与Bcache结合来使用,使用Bcache来为ceph的数据盘提速。1ceph架构一个标准的ceph集群可能是如下的架构,SSD/NVME存储元数据,而SATA盘存储数据。这样的架构下,物理介质的SATA盘读写速率上限决定了存储集群Ceph的上限(木桶效应)。如果在......