8.19学习笔记(无自我观点)

找到imga位置,先查看/etc/glance/glance.api,查看存储位置

https://www.cnblogs.com/sammyliu/p/4568188.html nova使用libvirt.xml创建过程

1.Soft reboot 完全依赖于虚机的操作系统和 ACPI 支持
Shutdown domain (domain.shutdown)
Launch domain (domain.createWithFlags)
2.Hard reboot
Destroy domain (virt_dom.destroy())。
Destroy 和 Shutdown 两个 API 的区别是:
shutdown domain 以后,客户机的磁盘存储处于可用状态,而且该 API 在命令发给 Guest OS 后立即返回,客户程序需要不断检查其状态来判断是否shutdown 成功;
而 destroy API 执行后,客户机的所有资源都会被归还给 Hypervisor,它的过程是首先给客户机发送一个terminate 指令比如SIGTERM,如果在一定的时间内未成功则直接发送 SIGKILL 指令将虚机杀掉。
根据 domain 的信息(instance, network_info, disk_info,image_meta, block_device_info)重新生成 domain 的配置 xml
根据 image 重新生成各镜像文件(包括 disk,disk.local 和 disk.swap)
连接各个 volume
将各个 interface 挂到 OVS 上
重新生成和应用 iptales 规则
Define domain (conn.defineXML)
Launch domain (domain.createWithFlags)
3.nova rescue 命令后的主要过程是:
(1)保存目前domain 的 xml 配置到 unrescue.xml 文件
(2)根据 image 重新生成启动盘 disk.swap (大小不受 falvor.root_disk_size 控制,尽可能小的一个文件)
(3)构造一个新的 domain 的 xml 配置,使用 disk.rescue 做启动盘,将原来的 disk 挂载到该 domain,其他的盘和volume不会被挂载。
(4)将原来的 domain destroy 掉 (virt_dom.destroy)
(5)定义新的 domain (conn.defineXML(xml))
(6)启动新的 domain (domain.createWithFlags)
4.Shelve (搁置)
destroy 虚机 (virt_dom.destroy())
snapshot 该 domain
如果 CONF.shelved_offload_time == 0 的话,将domain 的各种资源(interface,volume,实例文件等),然后将其undefine (virt_dom.undefine())

vm_state状态 书《云计算与OpenStack.pdf》

error

building active stop

                       shutoff

                        rebuilding

                       deleted

 

 

 

openstack server create

--flavor 42

--image 66baed9d-1c7d-457c-a422-5117da1caa0d 

--nic net-id=1269e08e-fc00-4004-b536-adc906facc22 

--security-group 0b30e075-50bb-4d57-b7ba-ae2202c5f89e

provider-instance 

 

 

外部接口,将表单转化成内部参数接口

POST v2/{tenant-id}/servers

nova /api/computer/servers.py

def create(req http报文内容 body REST参数) 密码随机生成

name 虚拟机名称
imageref 镜像编号
key_name 密钥
flavorRef 规格
securtiy_groups 防火墙安全组
   

特别是instance_type,完整的配额参数字典用于后面筛选合适的计算节点

 

 

内部接口 检查参数合法性,创建虚拟机的数据模型,并发送消息

(1)quota 检查配额,用户买的剩余可用资源是否超出限额 vcpu 内存磁盘和网络 写入数据库

(2)根据镜像id提取镜像基本信息,与配额进行对比 glance的要求(centos是否创建64mb的内存)写入数据库

(3)安全组防火墙,不存在设置为default

nova/computer/api.py

create函数 

  1. 检查是否创建多个实例,是否制定IP。检查是否从端口ID创建多个实例
  2.  检查域是否可用
  3.  创建过滤器

然后将创建请求发送到本类中的_create_instance()函数中

  1.  规格化和设置一些参数,如安全组,最小数值,最大数值,块设备。
  2.  访问glance服务,获取image-id
  3.  检查网络是否超过配额
  4.  循环更新每一个主机的状态

   

 

 

 

 

 

 

 

     

/api/computer/servers.py  create 607===》
computer/api compute_api    create  _create_instance===》
conductor/api compute_task_api schedule_and_build_instances    ===》
conductor/rpcapi conductor_compute_rpcapi schedule_and_build_instances 
消息队列 schedule_and_build_instances /nova/conductor/manager.py  ==>
posted @ 2019-08-19 19:06  aha012  阅读(140)  评论(0编辑  收藏  举报