云计算存储虚拟化技术-openstack-cinder

简介: 云计算存储虚拟化技术-openstack-cinder

简介

存储虚拟化技术 是一种 在 物理 存储 介质 上 , 二次进行 存储 分配的 技术.

比如 lvm 以及 常见的 分区 也是 一种 简单 的 存储 虚拟化.

一块 物理磁盘 分成了 两块 进行使用, 或者 10 块 磁盘 聚合成 1 块 存储磁盘.

用来 满足 不同用户的 不同需求.


特点

区别于 cpu 以及 内存 , 由于 当前(2021年) 网卡 速度 在 100m-1000g/s 之间, 所以 cpu 与 内存 是 无法 进行 跨节点的 虚拟化的, 即便 强行实现 ,性能 也 十分低下,

但是 普通 磁盘 速度 远小于 网卡 速度, 以 较新的 nvme 为例, 2-4g/s. 并且 同一个 主机 可能 插有 数十块 存储磁盘. 所以 存储 介质的 虚拟化 , 可以 通过 网络 进行 聚合. 结合上 元数据的 查找 优化, 以及 利用 内存 缓存 热点数据. 都 十分 具有前景.


cinder 是什么

openstack 的 存储 插件, cinder 并没有 自己实现 所有的 存储 能力, 而是 借用 不同的 接口 实现了 自身的 存储 能力.

比如 调用 lvm 进行 本地的 虚拟机 磁盘存储,直接 利用 本地的 磁盘 存储能力.

或者 调用 rbd 依托于 ceph 进行 存储。


cinder 服务 构成

api, scheduler, volume, backup,服务 构成。

可以通过 systemctl status 查看 相应 服务 状态,

配置 文件 /etc/cinder

数据 目录 /var/lib/cinder

日志 目录 /var/log/cinder

可以 通过 8776 请求 方式 调用,

也可以 通过 cinderclient 项目 提供的 cinder 命令行 cli 工具 调用。


以创建 volume 为例 分析 cinder 代码

命令行 -> api -> api-server

可以直接 命令行 也可以 api

创建 大概 过程

  1. v2/volume/api create
  2. cinder/volume/api create
  3. scheduler_rpcapi


函数调用顺序

  1. web 或者 cinderclint 提交 volume_create 请求
  2. 请求 会被 url 到 api 映射到以下函数

/root/cinder/cinder/volume/api.py:218 def create

def create(self, context, size, name, description, snapshot=None,

image_id=None, volume_type=None, metadata=None,

availability_zone=None, source_volume=None,

scheduler_hints=None,

source_replica=None, consistencygroup=None,

cgsnapshot=None, multiattach=False, source_cg=None):


3.参数检查
其中检查参数的 格式合法性, 也会检查 资源存量 是否足够。

# 参数检查内容很多,列举一个
if size and (not strutils.is_int_like(size) or int(size) <= 0):
    msg = _('Invalid volume size provided for create request: %s '
            '(size argument must be an integer (or string '
            'representation of an integer) and greater '
            'than zero).') % size
    raise exception.InvalidInput(reason=msg)
  1. 通过之后,创建 sched_rpcapi volume_rpcapi flow_engine

其中 /root/cinder/cinder/volume/rpcapi.py:35 volume_rpcapi 中有更加详细的创建过程

sched_rpcapi = (self.scheduler_rpcapi if (not cgsnapshot and
                not source_cg) else None)
volume_rpcapi = (self.volume_rpcapi if (not cgsnapshot and
                  not source_cg) else None)
flow_engine = create_volume.get_flow(self.db,
                                      self.image_service,
                                      availability_zones,
                                      create_what,
                                      sched_rpcapi,
                                      volume_rpcapi)
  1. 执行 flow_engine 创建 volume
# Attaching this listener will capture all of the notifications that
# taskflow sends out and redirect them to a more useful log for
# cinders debugging (or error reporting) usage.
with flow_utils.DynamicLogListener(flow_engine, logger=LOG):
    flow_engine.run()
    vref = flow_engine.storage.fetch('volume')
    LOG.info(_LI("Volume created successfully."), resource=vref)
    return vref
  1. 返回 vref ,volume 对象的ref(引用对象)

volume_rpc_api 创建 volume 过程

def create_volume(self, ctxt, volume, host, request_spec,
                  filter_properties, allow_reschedule=True):
    request_spec_p = jsonutils.to_primitive(request_spec)
    msg_args = {'volume_id': volume.id, 'request_spec': request_spec_p,
                'filter_properties': filter_properties,
                'allow_reschedule': allow_reschedule}
    if self.client.can_send_version('2.0'):
        version = '2.0'
        msg_args['volume'] = volume
    elif self.client.can_send_version('1.32'):
        version = '1.32'
        msg_args['volume'] = volume
    else:
        version = '1.24'
    cctxt = self._get_cctxt(host, version)
    request_spec_p = jsonutils.to_primitive(request_spec)
    """Invoke a method and return immediately. See RPCClient.cast()."""
    cctxt.cast(ctxt, 'create_volume', **msg_args)
# 实际上 到此为止 创建服务就是 cctxt 向消息队列提供了一个任务
-->
self.transport._send(self.target, ctxt, msg, retry=self.retry)

判断 list 或者 map 中是否 有哪些键名

# Check that the required keys are present, return an error if they
# are not.
required_keys = set(['ref', 'host'])
missing_keys = list(required_keys - set(volume.keys()))
if missing_keys:
    # 代表 这些 键名 不全部存在
    msg = _("The following elements are required: %s") % \
        ', '.join(missing_keys)
    raise exc.HTTPBadRequest(explanation=msg)
相关文章
|
3天前
|
云安全 安全 网络安全
现代云计算与网络安全技术综述
随着信息技术的迅猛发展,云计算作为一种重要的信息技术模式,已经深刻影响了各个领域的发展和应用。本文从云服务、网络安全和信息安全等技术领域入手,探讨了现代云计算环境下的各种挑战与应对策略,旨在帮助读者更好地理解和应用这一前沿技术。【7月更文挑战第4天】
|
3天前
|
存储 安全 网络安全
云计算与网络安全:技术融合与信息保障
在当今信息化时代,云计算技术作为信息技术领域的重要组成部分,与网络安全息息相关。本文从云服务架构、网络安全挑战、以及信息安全保障等角度出发,探讨了云计算与网络安全的紧密关系及其技术融合的重要性。通过分析当前技术趋势和挑战,提出了一些应对策略和未来发展方向,旨在为技术专业人士及相关从业者提供深入的思考和参考。【7月更文挑战第4天】
12 0
|
2天前
|
存储 文件存储 云计算
云计算中的云存储技术对比:技术深度与未来趋势
【7月更文挑战第5天】云计算中的云存储技术多种多样,每种技术都有其独特的优势和应用场景。随着技术的不断发展和应用场景的不断拓展,云存储技术将朝着智能化、自动化、多云/混合云、数据安全与隐私保护以及边缘计算与分布式存储等方向发展。未来,云存储技术将继续为云计算的广泛应用提供坚实支撑。
|
3天前
|
弹性计算 负载均衡 网络协议
云计算中的弹性伸缩与负载均衡技术解析
【7月更文挑战第4天】弹性伸缩与负载均衡作为云计算平台中的两大关键技术,对于构建高可用、可扩展的应用系统具有重要意义。通过合理利用这两种技术,企业可以灵活应对不断变化的业务需求,降低运营成本,提高资源利用效率。未来,随着技术的不断进步和应用的深入,弹性伸缩与负载均衡技术将在更多领域发挥重要作用,推动云计算技术的持续发展。
|
3天前
|
云安全 安全 网络安全
云计算与网络安全:技术融合下的安全挑战与应对策略
在数字化转型的浪潮中,云计算作为一种强大的技术推动力,正日益成为企业IT架构的核心。然而,随着云服务模式的普及,网络安全问题也变得愈加复杂。本文旨在深入探讨云计算环境下网络安全的挑战,并基于最新的研究成果和统计数据,提出有效的安全策略和技术解决方案。通过对云计算环境中潜在风险的系统分析,结合先进的网络安全技术,如加密算法、身份认证机制等,文章将阐述如何在享受云计算带来的便利的同时,保障数据的安全性和完整性。
|
8天前
|
存储 缓存 运维
云计算中的服务器选型与配置:技术深度解析
【6月更文挑战第29天】云计算服务器选型与配置深度解析:关注业务需求、技术要求及成本效益。重点包括CPU、内存、存储和网络配置的优化,结合负载均衡、缓存、虚拟化和自动化运维策略,以提升性能和效率,确保云服务的稳定与高效。
|
12天前
|
人工智能 边缘计算 物联网
云计算的未来:五大趋势与技术变革
【6月更文挑战第25天】云计算未来五大趋势: 1. 边缘计算与物联网结合,减少延迟,增强实时性。 2. AI与云计算融合,提升智能服务效率。 3. 量子计算的潜力,革新云计算处理能力。 4. 混合云和多云策略成主流,提供灵活安全选项。 5. 可持续性发展,绿色云计算降低环境影响。
|
14天前
|
云安全 安全 网络安全
云计算与网络安全:技术演进与挑战
【6月更文挑战第22天】在数字化浪潮的推动下,云计算已成为企业信息技术架构的核心。然而,随着云服务的普及,网络安全问题也日益凸显。本文将探讨云计算环境下的网络安全挑战,分析当前云服务中存在的安全风险,并介绍信息安全的最佳实践和未来发展趋势。通过深入分析,旨在为读者提供对云计算与网络安全交织领域的全面理解。
|
10天前
|
存储 安全 网络安全
云计算与网络安全:技术融合与挑战
【6月更文挑战第26天】本文深入探讨了云计算与网络安全之间的复杂关系,并分析了云服务在提升信息安全的同时所带来的新挑战。文章首先概述了云计算的基本概念及其在现代企业中的重要性,随后详细讨论了网络安全的关键问题和信息安全的核心策略。通过对比分析,揭示了云计算环境中的安全威胁,并提出了相应的防御措施。最后,文章强调了持续的技术革新和安全意识提升对于保障云计算环境安全的重要性。
16 3
|
14天前
|
机器学习/深度学习 安全 网络安全
云计算与网络安全:技术融合的未来之路
【6月更文挑战第22天】在数字化浪潮的推动下,云计算已成为企业信息技术架构的核心。然而,随着云服务的广泛采纳,网络安全问题也日益凸显。本文将探讨云计算与网络安全之间的相互作用,分析当前云服务中存在的安全挑战,并提出相应的解决策略。我们将深入讨论数据加密、访问控制、威胁检测等关键技术,并展望未来云计算和网络安全技术的发展趋势,以期为业界提供参考和指导。
30 7

热门文章

最新文章