openstack--资源管理之claim

本文主要探讨OpenStack中resource_tracker模块的功能,特别是在instance_claim过程中如何确保资源管理的准确性和一致性。当创建虚拟机时,instance_claim会进行资源计算和扣除,并使用事务锁保证操作完整。此外,它会更新计算节点的资源并监测资源变化,以维护数据库中的资源信息。
摘要由CSDN通过智能技术生成

一、resource_tracker

        resource_tracker.py文件中保存了各种与资源扣除相关的函数,原理都是一样的,更新计算节点的资源,保证资源的一致性,常见的有instance_claim、rebuild_claim、resize_claim等,本文以instance_claim为例进行讲解。每一个计算节点都运行nova-compute服务,因此每一个计算节点维持一个自己的rt用于更新自身的资源信息。

二、具体过程

1、instance_claim用于创建虚拟机的时候进行资源的计算、资源的扣除等操作,该函数中的操作具有事务性,即资源的计算、更新等操作必须一起完成,不能被中断,不是具有事务性则无法保证资源更新的正确性,因此该函数的执行会添加一个事务锁,保证事务性。@utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE, fair=True)

    def instance_claim(self, context, instance, nodename, allocations,
                       limits=None):
        if self.disabled(nodename):
            self._set_instance_host_and_node(instance, nodename)
            return claims.NopClaim()

        # sanity checks:
        if instance.host:
            LOG.warning("Host field should not be set on the instance "
                        "until resources have been claimed.",
                        instance=instance)

        if instance.node:
            LOG.warning("Node field should not be set on the instance "
                        "until resources have been claimed.",
                        instance=instance)

        cn = self.compute_nodes[nodename]
        pci_requests = instance.pci_requests
        #创建一个Claim对象,用于判断虚拟机需要的资源计算节点能否满足
        claim = claims.Claim(context, instance, nodename, self, cn,
                             pci_requests, limits=limits)

        # self._set_instance_host_and_node() will save instance to the DB
        # so set instance.numa_topology first.  We need to make sure
        # that numa_topology is saved whi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值