07.计算Nova→3.场景学习→2.Launch→3.nova-compute

描述详细
  1. 为 instance 准备资源
    1. nova-compute 首先会根据指定的 flavor 依次为 instance 分配内存、磁盘空间和 vCPU。
    2. 网络资源也会提前分配。
1
2
3
4
5
Jun 16 13:12:52 compute nova-compute[5666]: 
DEBUG nova.compute.manager 
[None req-d9a23179-e16d-4016-9586-e68c3dfdf6a9 admin admin] 
 
{{(pid=5666) _do_build_and_run_instance /opt/stack/nova/nova/compute/manager.py:1835
1
2
3
4
5
6
7
Jun 16 13:12:52 compute nova-compute[5666]: 
DEBUG oslo_concurrency.lockutils 
[None req-d9a23179-e16d-4016-9586-e68c3dfdf6a9 admin admin] 
Lock "compute_resources" acquired 
by "nova.compute.resource_tracker.instance_claim" :: waited 0.000s 
{{(pid=5666) inner 
/usr/local/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py:273
1
2
3
4
5
Jun 16 13:12:52 compute nova-compute[5666]: 
DEBUG nova.compute.resource_tracker 
[None req-d9a23179-e16d-4016-9586-e68c3dfdf6a9 admin admin] 
 
{{(pid=5666) instance_claim /opt/stack/nova/nova/compute/resource_tracker.py:202
(ADJ) 在头顶上的;在上面的;高架的→You use overhead to indicate that something is above you or above the place that you are talking about.
n. 经常费用; 经常开支; 
这里指开销
1
2
3
4
5
Jun 16 13:12:52 compute nova-compute[5666]: 
DEBUG nova.compute.resource_tracker 
[None req-d9a23179-e16d-4016-9586-e68c3dfdf6a9 admin admin] 

{{(pid=5666) instance_claim /opt/stack/nova/nova/compute/resource_tracker.py:205
1
2
3
4
5
Jun 16 13:12:52 compute nova-compute[5666]: 
DEBUG nova.compute.resource_tracker 
[None req-d9a23179-e16d-4016-9586-e68c3dfdf6a9 admin admin] 
 
{{(pid=5666) instance_claim /opt/stack/nova/nova/compute/resource_tracker.py:208
1
2
3
4
5
Jun 16 13:12:52 compute nova-compute[5666]: 
INFO nova.compute.claims 
[None req-d9a23179-e16d-4016-9586-e68c3dfdf6a9 admin admin] 
[instance: 86f71e87-4ae2-48fb-9bcd-c72e3c28e093] 

创建虚拟机时选择的flavor是 paste-51384988729347.jpg
1
2
3
4
5
Jun 16 13:12:52 compute nova-compute[5666]: 
INFO nova.compute.claims 
[None req-d9a23179-e16d-4016-9586-e68c3dfdf6a9 admin admin] 
[instance: 86f71e87-4ae2-48fb-9bcd-c72e3c28e093] 

1
2
3
4
5
Jun 16 13:12:52 compute nova-compute[5666]: 
INFO nova.compute.claims 
[None req-d9a23179-e16d-4016-9586-e68c3dfdf6a9 admin admin] 
[instance: 86f71e87-4ae2-48fb-9bcd-c72e3c28e093] 
memory limit not specified, defaulting to unlimited
1
2
3
4
Jun 16 13:12:52 compute nova-compute[5666]: 
INFO nova.compute.claims 
[None req-d9a23179-e16d-4016-9586-e68c3dfdf6a9 admin admin] 
[instance: 86f71e87-4ae2-48fb-9bcd-c72e3c28e093] 
1
2
3
4
5
Jun 16 13:12:52 compute nova-compute[5666]: 
INFO nova.compute.claims 
[None req-d9a23179-e16d-4016-9586-e68c3dfdf6a9 admin admin] 
[instance: 86f71e87-4ae2-48fb-9bcd-c72e3c28e093] 
disk limit not specified, defaulting to unlimited
1
2
3
4
Jun 16 13:12:52 compute nova-compute[5666]: 
INFO nova.compute.claims 
[None req-d9a23179-e16d-4016-9586-e68c3dfdf6a9 admin admin] 
[instance: 86f71e87-4ae2-48fb-9bcd-c72e3c28e093] 
4VCPU是因为该日志是在公司开发环境搭建的2节点devstack上产生的,每台机器VCPU数量为4
1
2
3
4
5
Jun 16 13:12:52 compute nova-compute[5666]: 
INFO nova.compute.claims 
[None req-d9a23179-e16d-4016-9586-e68c3dfdf6a9 admin admin] 
[instance: 86f71e87-4ae2-48fb-9bcd-c72e3c28e093] 
vcpu limit not specified, defaulting to unlimited
1
2
3
4
5
Jun 16 13:12:52 compute nova-compute[5666]: 
DEBUG nova.virt.hardware 
[None req-d9a23179-e16d-4016-9586-e68c3dfdf6a9 admin admin] 
Require both a host and instance NUMA topology to fit instance on host. 
{{(pid=5666) numa_fit_instance_to_host /opt/stack/nova/nova/virt/hardware.py:1465
1
2
3
4
Jun 16 13:12:52 compute nova-compute[5666]: 
INFO nova.compute.claims 
[None req-d9a23179-e16d-4016-9586-e68c3dfdf6a9 admin admin] 
[instance: 86f71e87-4ae2-48fb-9bcd-c72e3c28e093] 
网络资源也会提前分配。
1
2
3
4
5
6
Jun 16 13:12:53 compute nova-compute[5666]: 
DEBUG nova.compute.manager 
[None req-d9a23179-e16d-4016-9586-e68c3dfdf6a9 admin admin]
 [instance: 86f71e87-4ae2-48fb-9bcd-c72e3c28e093] 

{{(pid=5666) _allocate_network_async /opt/stack/nova/nova/compute/manager.py:1423
  1. 创建 instance 的镜像文件
首先将该 image 下载到计算节点,然后将其作为 backing file 创建 instance 的镜像文件。
    1. 从 Glance 下载 image
      1. 资源准备好之后,nova-compute 会为 instance 创建镜像文件。OpenStack 启动一个 instance 时,会选择一个 image,这个 image 由 Glance 管理。
  1. nova-compute 首先会检查 image 是否已经下载(比如之前已经创建过基于相同 image 的 instance)。如果没有,就从 Glance 下载 image 到本地。由此可知,如果计算节点上要运行多个相同 image 的 instance,只会在启动第一个 instance 的时候从 Glance 下载 image,后面的 instance 启动速度就大大加快了。 
  1. 日志分析:
    1. image(ID为 f0bdf0e7-ebb5-459d-a7a5-a0f0ed13d6d7)是 qcow2 格式,nova-compute 将其下载。Nova 默认会通过 qemu-img 转换成 raw 格式,以提高 IO 性能。paste-185340723724291%20(1).jpg
    2. 下载的image 的存放目录是 /opt/stack/data/nova/instances/_base,这是由/etc/nova/nova.conf 的两个配置选项决定的
      1
      2
      3
      4
      5
      [DEFAULT]
      ...
      instances_path = /opt/stack/data/nova/instances
      base_dir_name = _base
      ...
    3. 下载的 image 文件被命名为 6eb03a619bcf59de5a27bf520cf83606bf8327a7,这是 image id 的 SHA1 哈希值Secure Hash Algorithm
1
2
3
4
5
Jun 16 13:12:55 compute nova-compute[5666]: 
DEBUG nova.virt.images 
[None req-d9a23179-e16d-4016-9586-e68c3dfdf6a9 admin admin] 
 
{{(pid=5666) fetch_to_raw /opt/stack/nova/nova/virt/images.py:179
1
2
3
4
5
Jun 16 13:12:55 compute nova-compute[5666]: 
DEBUG nova.utils 
[None req-d9a23179-e16d-4016-9586-e68c3dfdf6a9 admin admin] 
Path  supports direct I/O 
{{(pid=5666) supports_direct_io /opt/stack/nova/nova/utils.py:1394
1
2
3
4
5
6
7
Jun 16 13:12:55 compute nova-compute[5666]: 
DEBUG oslo_concurrency.processutils 
[None req-d9a23179-e16d-4016-9586-e68c3dfdf6a9 admin admin] 
Running cmd (subprocess): 


{{(pid=5666) execute /usr/local/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:372
-O:output format;-f:format;-t:cache
paste-186148177575939%20(1).jpg

paste-81883551498243.jpg
backing file的id不一样是因为这条是我后来添加的笔记(又一个实例)
  1. 为 instance 创建镜像文件
    1. 有了 下载的image 之后,instance 的镜像文件直接通过 qemu-img 命令创建,backing file 就是下载的 image。
    2. 这里 instance 的镜像文件是 /opt/stack/data/nova/instances/86f71e87-4ae2-48fb-9bcd-c72e3c28e093/disk,格式为 qcow2,其中 86f71e87-4ae2-48fb-9bcd-c72e3c28e093就是 instance的 id。可以通过 qume-info 查看 disk 文件的属性paste-191731635060739.jpg
1
2
3
4
5
6
7
Jun 16 13:12:57 compute nova-compute[5666]: 
DEBUG oslo_concurrency.processutils 
[None req-d9a23179-e16d-4016-9586-e68c3dfdf6a9 admin admin] 
Running cmd (subprocess):  
 
 
{{(pid=5666) execute /usr/local/lib/python2.7/dist-packages/oslo_concurrency/processutils.py:372
-o:options
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
root@compute:~# qemu-img info /opt/stack/data/nova/instances/86f71e87-4ae2-48fb-9bcd-c72e3c28e093/disk
image: /opt/stack/data/nova/instances/86f71e87-4ae2-48fb-9bcd-c72e3c28e093/disk

virtual size: 1.0G (1073741824 bytes)
disk size: 1.9M
cluster_size: 65536

Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
  1. 说明:
    1. image,指的是 Glance 上保存的镜像,作为 instance 运行的模板。 计算节点将下载的 image 存放在 /opt/stack/data/nova/instances/_base 目录下。
    2. 镜像文件,指的是 instance 启动盘所对应的文件
    3. 二者的关系是:image 是镜像文件 的 backing file。image 不会变,而镜像文件会发生变化。比如安装新的软件后,镜像文件会变大。
    4. 英文中两者都叫 “image”,为避免混淆,我们用 “image” 和 “镜像文件” 作区分。
  1. 创建 instance 的 XML 定义文件
    1. cloudman:创建的 XML 文件会保存到该 instance 目录 /opt/stack/data/nova/instances/f1e22596-6844-4d7a-84a3-e41e6d7618ef,命名为 libvirt.xml
    2. 我:在/opt/stack/data/nova/instances/86f71e87-4ae2-48fb-9bcd-c72e3c28e093/没有找到.xml这个文件
      1. 但是在计算节点的/etc/libvirt/qemu/发现xml文件,该文件记录了虚机的各种参数paste-59249073848323.jpg


cloudman:
paste-214585156042755.jpg
我的:
日志中关于xml的有:
1
2
3
DEBUG nova.virt.libvirt.driver
[instance: 86f71e87-4ae2-48fb-9bcd-c72e3c28e093] 
 network_info=[...
1
2
3
DEBUG nova.virt.libvirt.driver
[instance: 86f71e87-4ae2-48fb-9bcd-c72e3c28e093] 
这个过程应该是获取xml文件吧,然后正式启动创建过程

1
2
3
4
5
6
7
root@compute:~# ll /opt/stack/data/nova/instances/86f71e87-4ae2-48fb-9bcd-c72e3c28e093/
total 2052
drwxr-xr-x 2 stack libvirt    4096 Jun 16 13:12 ./
drwxr-xr-x 5 stack root       4096 Jun 16 13:12 ../
-rw------- 1 root  root      48807 Jun 16 15:23 console.log
-rw-r--r-- 1 root  root    2097152 Jun 16 15:23 disk
-rw-r--r-- 1 stack libvirt      86 Jun 16 13:12 disk.info
  1. 创建虚拟网络并启动 instance
    1. 创建虚拟网络:用的是 linux-bridge 实现的虚拟网络
  • cloudman:为 instance 创建虚拟网络设备
  • 我:没有找到Ensuring bridge
cloudman:
paste-215298120613891.jpg
vif是virtual interface(虚拟网卡)的缩写
我:
1
2
3
4
5
6
7
8
9
Jun 16 13:12:57 compute nova-compute[5666]: 
DEBUG nova.network.base_api 
[None req-d9a23179-e16d-4016-9586-e68c3dfdf6a9 admin admin] 
[instance: 86f71e87-4ae2-48fb-9bcd-c72e3c28e093] 
Updating instance_info_cache with _info: 
[{"profile": {}, ... "network": {, 
"subnets": [{"ips": [{"meta": {}, "version": 4, ... "address": }], 
"version": 4, "meta": {}, ... "cidr": , ...
 {{(pid=5666) update_instance_cache_with_nw_info /opt/stack/nova/nova/network/base_api.py:48
虽然没有Ensuring bridge,但是有nova.virt.libvirt.vif参考见07.计算Nova→3.通过场景学习nova→4.Start Instance。总之,上述过程表示网络相关
  1. 接下来可以启动 instance了,最后Instance spawned successfully表示实例成功孵化。
    1. OpenStack 图形界面和 KVM CLI 都可以查看到 instance 的运行状态。paste-191731635060739.jpg
      paste-258256383508483.jpg1.virsh list用于显示当前节点创建的实例,而不是像nova list似的显示所有节点创建的实例 2.由于是第一次创建实例,故Name是...1
1
2
3
Jun 16 13:13:01 compute nova-compute[5666]: 
INFO nova.compute.manager [-] 
[instance: 86f71e87-4ae2-48fb-9bcd-c72e3c28e093] 
1
2
3
4
Jun 16 13:13:01 compute nova-compute[5666]: 
INFO nova.compute.manager 
[None req-9b9e116b-fa49-46b3-8c41-9bade624c334 None None] 
[instance: 86f71e87-4ae2-48fb-9bcd-c72e3c28e093] 
1
2
3
4
5
Jun 16 13:13:01 compute nova-compute[5666]: 
INFO nova.compute.manager 
[None req-9b9e116b-fa49-46b3-8c41-9bade624c334 None None] 
[instance: 86f71e87-4ae2-48fb-9bcd-c72e3c28e093] 
. Skip.
同步电源状态
1
2
3
4
Jun 16 13:13:01 compute nova-compute[5666]: 
INFO nova.compute.manager 
[None req-9b9e116b-fa49-46b3-8c41-9bade624c334 None None] 

resume [rɪ'zjum](V-ERG) (使)重新开始;(使)继续进行
1
2
3
Jun 16 13:13:01 compute nova-compute[5666]: 
INFO nova.virt.libvirt.driver [-] 

spawn [spɔn]:孵化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值