欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nova-compute的虚拟机类型描述和状态描述

程序员文章站 2022-05-11 17:25:59
...
一 Nova-compute的虚拟机类型描述(Flavor)
我们每个人从一出生就需要占用耗费各种资源,虚拟机也是一样,不同的是,我们人可以通过后天努力来改善自己所拥有的资源状态,而虚拟机在创建时就必须为其预先指定一组资源的设置,包括计算、存储、内存等能力的大小,这组资源的设置就称为Flavor,每个虚拟机Instance对象的instance_type_id字段就代表了它拥有的Flavor。
Flavor默认包含Disk、Memory、VCPU、Root Disk、Ephemeral Disk、Swap等信息,Root Disk是Root磁盘分区大小,Ephemeral Disk是临时分区大小,默认情况下为0。执行命令“nova flavor-list”可以查看Nova中默认的一些Flavor内存。
[[email protected] ~(keystone_demo)]# nova flavor-list
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name      | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 1  | m1.tiny   | 512       | 1    | 0         |      | 1     | 1.0         | True      |
| 2  | m1.small  | 2048      | 20   | 0         |      | 1     | 1.0         | True      |
| 3  | m1.medium | 4096      | 40   | 0         |      | 2     | 1.0         | True      |
| 4  | m1.large  | 8192      | 80   | 0         |      | 4     | 1.0         | True      |
| 5  | m1.xlarge | 16384     | 160  | 0         |      | 8     | 1.0         | True      |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
我们也可以使用nova flavor-create 命令根据需要创建新的Flavor,并且在新的Flavor中定义其他条件,比如定义主机需要有的其他资源PCI等。
Flavor类描述如下:
#nova/objects/flavor.py
class Flavor(base.NovaPersistentObject, base.NovaObject):
    # Version 1.0: Initial version
    # Version 1.1: Added save_projects(), save_extra_specs(), removed
    # remoteable from save()
    VERSION = '1.1'
    fields = {
        'id': fields.IntegerField(),
        'name': fields.StringField(nullable=True),
        'memory_mb': fields.IntegerField(),
        'vcpus': fields.IntegerField(),
        'root_gb': fields.IntegerField(),
        'ephemeral_gb': fields.IntegerField(),
        'flavorid': fields.StringField(),
        'swap': fields.IntegerField(),
        'rxtx_factor': fields.FloatField(nullable=True, default=1.0),
        'vcpu_weight': fields.IntegerField(nullable=True),
        'disabled': fields.BooleanField(),
        'is_public': fields.BooleanField(),
        'extra_specs': fields.DictOfStringsField(),
        'projects': fields.ListOfStringsField(),
        }
二 nova-compute的虚拟机状态描述
如果将虚拟机看作一个有机的生命体,而不是死的指令集合,那么在它的生命周期中必然有各种的状态以及之间的变迁,犹如我们每个人从出生到死亡,从学校到工作,从贫穷到富贵,但是不幸的是,目前Nova里针对虚拟机状态的描述并不是那么的直观。
Instance对象中有三个字段与描述虚拟机状态相关:power_state、vm_state以及task_state。
  • power_state:使用Libvirt等Virt Driver提供的接口从Hypervisor中获取的虚拟机的状态,比如Running、Shutdown、NoState等。
  • vm_state:虚拟机的稳定状态,如果正在执行某个Compute API,或者说执行某个任务,则vm_state就是任务结束时用户所预期的那个状态,比如Active表示运行良好,Suspending表示正在暂停,是一个过渡状态,稍后就会变成完全暂停的状态Suspended,过渡状态属于task_state字段。
  • task_state:一种过渡状态,与Compute API的执行紧密相关,表示虚拟机正在运行什么任务,只有正在执行的任务才有task_state,处于稳定状态的虚拟机的task_state为None。
通常,power_state的命名取决于Virt Driver。
vm_state使用Active这个表示状态的形容词表示稳定状态。
task_state则使用“动词+ing”的形式表示过渡状态,其中动词一般表示该任务对应的Compute API方法。
power_state与vm_state并没有一对一的关系,它们展示的是不同信息。
虚拟机三种状态的详细描述下下面链接:
虚拟机状态以及变迁图见下面链接:
相关标签: nova