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

nova-compute的虚拟机(instance)描述

程序员文章站 2022-05-11 17:28:37
...
Nova作为Openstack这个虚拟世界的管理机构,控制着一个个虚拟机的状态变迁与生老病死,而Nova中这种对虚拟机生命周期管理正是由Computer服务nova-compute来完成。
本篇针对虚拟机(instance)进行相关说明
类似人类世界的主体“人”,Linux进程世界的主体“进程”,“虚拟机”作为虚拟机世界的主体,必然也会有一些庞杂的信息或结构去专门描述它的特征和状态,Nova里面这个结构就是Instance。
在浏览Instance的定义之前,我们可以很容易地想象出它里面应该包含哪些内容:有一个唯一的id去标识它的存在,类似于我们每个人的身份证;有一些描述它外在特征的信息,比如内存和硬盘、显示的名称、简短的描述等,类似于人类的身高、体重、自我介绍;有字段去指示它的“家”的信息,即它运行在哪台主机上,类似于我们的家庭地址;有形如xxx_state的字段去表示它的当前状态,就比如我们的学习工作、贫富状态一样;有一些字段去表示它的创建、删除时间,类似我们的出生日期。
就好像需要用大量文字去描述一个人,需要用大于1MB的内存去专门保存一个Linux进程的结构,Nova里面描述虚拟机的Instance对象同样看起来冗长而复杂:
#nova/objects/instance.py
class Instance(base.NovaPersistentObject, base.NovaObject):
    VERSION = '1.15'
    fields = {
        'id': fields.IntegerField(),
        'user_id': fields.StringField(nullable=True),
        'project_id': fields.StringField(nullable=True),
        'image_ref': fields.StringField(nullable=True),
        'kernel_id': fields.StringField(nullable=True),
        'ramdisk_id': fields.StringField(nullable=True),
        'hostname': fields.StringField(nullable=True),
        'launch_index': fields.IntegerField(nullable=True),
        'key_name': fields.StringField(nullable=True),
        'key_data': fields.StringField(nullable=True),
        'power_state': fields.IntegerField(nullable=True),
        'vm_state': fields.StringField(nullable=True),
        'task_state': fields.StringField(nullable=True),
        'memory_mb': fields.IntegerField(nullable=True),
        'vcpus': fields.IntegerField(nullable=True),
        'root_gb': fields.IntegerField(nullable=True),
        'ephemeral_gb': fields.IntegerField(nullable=True),
        'ephemeral_key_uuid': fields.UUIDField(nullable=True),
        'host': fields.StringField(nullable=True),
        'node': fields.StringField(nullable=True),
        'instance_type_id': fields.IntegerField(nullable=True),
        'user_data': fields.StringField(nullable=True),
        'reservation_id': fields.StringField(nullable=True),
        'scheduled_at': fields.DateTimeField(nullable=True),
        'launched_at': fields.DateTimeField(nullable=True),
        'terminated_at': fields.DateTimeField(nullable=True),
        'availability_zone': fields.StringField(nullable=True),
        'display_name': fields.StringField(nullable=True),
        'display_description': fields.StringField(nullable=True),
        'launched_on': fields.StringField(nullable=True),
        'locked': fields.BooleanField(default=False),
        'locked_by': fields.StringField(nullable=True),
        'os_type': fields.StringField(nullable=True),
        'architecture': fields.StringField(nullable=True),
        'vm_mode': fields.StringField(nullable=True),
        'uuid': fields.UUIDField(),
        'root_device_name': fields.StringField(nullable=True),
        'default_ephemeral_device': fields.StringField(nullable=True),
        'default_swap_device': fields.StringField(nullable=True),
        'config_drive': fields.StringField(nullable=True),
        'access_ip_v4': fields.IPV4AddressField(nullable=True),
        'access_ip_v6': fields.IPV6AddressField(nullable=True),
        'auto_disk_config': fields.BooleanField(default=False),
        'progress': fields.IntegerField(nullable=True),
        'shutdown_terminate': fields.BooleanField(default=False),
        'disable_terminate': fields.BooleanField(default=False),
        'cell_name': fields.StringField(nullable=True),
        'metadata': fields.DictOfStringsField(),
        'system_metadata': fields.DictOfNullableStringsField(),
        'info_cache': fields.ObjectField('InstanceInfoCache',
                                         nullable=True),
        'security_groups': fields.ObjectField('SecurityGroupList'),
        'fault': fields.ObjectField('InstanceFault', nullable=True),
        'cleaned': fields.BooleanField(default=False),
        'pci_devices': fields.ObjectField('PciDeviceList', nullable=True),
        'numa_topology': fields.ObjectField('InstanceNUMATopology',
                                            nullable=True)
        }


相关标签: nova