nova常⽤命令⼿册v1.0
nova常⽤命令⼿册
⼀、常规操作
1、launch
(1)作⽤:创建虚拟机
(2)指令:nova boot
(3)流程图:
第⼀步:user向API发起创建虚拟机的请求;
第⼆部:API将请求处理之后向rabbtmq中发送⼀条创建虚拟机的信息;
第三部:conductor接受该消息并做相应处理,之后向rabbitmq发送选择计算节点的消息;第四部:schedular处理该消息,通过filter和weight算法计算出最合适的宿主机;并将结果通过rpc传输给conductor,最后conductor将结果记录数据库,并发送相应的消息给nova-compute;
第五步:nova-compute接受该消息并启动虚拟机;
(4)测试指令:
测试指令为:nova --debug boot qfltest-20170807 --flavor 01d6a211-c16a-4e1b-97b2-2b607cca57c9 --image b21d1c0f-4b6c-4324-bac8-6c9eb8871b7c --nic net-id=40b17d92-8689-4ea5-9b44-388a02883915
d8affc3c-75e7-496a-bb4d-8c6ae87c4bb4
2、start
(1)作⽤:启动虚拟机
(2)指令:nova start
3、shutoff
(1)作⽤:关闭虚拟机
(2)指令:nova stop
4、soft reboot/hard reboot
(1)作⽤:软重启虚拟机/硬重启虚拟机
(2)指令:nova reboot/--hard
(3)区别:soft reboot 与 hard reboot 的区别在于:soft reboot 只是重启操作系统,整个过程中,instance 依然处于运⾏状态。相当于在 linux 中执⾏ reboot 命令;hard reboot 是重启 instance,
相当于关机之后再开机;
5、Terminate
(1)作⽤:终⽌虚拟机
(2)指令:nova delete
(3)解释:⽴即关闭虚拟机之后删除虚拟机;
6、Resize
(1)作⽤:重置虚拟机⼤⼩
(2)指令:nova resize
(3)解释:重新设置虚拟机的⼤⼩
7、Lock/Unlock
(1)作⽤:锁定虚拟机
(2)指令:nova lock/unlock
(3)解释:为了避免误操作,⽐如意外重启或删除 instance,可以将 instance 加锁。对被加锁(Lock)的 instance 执⾏重启等改变状态的操作会提⽰操作不允许。执⾏解锁(Unlock)操作后恢复正常。Lock/Unlock 操作都是在 nova-api 中进⾏的。操作成功后nova-api 会更新 instance 加锁的状态。执⾏其他操作时,nova-api 根据加锁状态来判断是否允许。Lock/Unlock 不需要 nova-compute 的参与。admin ⾓⾊的⽤户不受 lock 的影响,及⽆论加锁与否都可以正常执⾏操作。根据默认 policy 的配置,任何⽤户都可以 unlock。也就是说如果发现 instance 被加锁了,可以通过 unlock 解锁,然后在执⾏操作。
8、Pause/Resume
(1)作⽤:暂停虚拟机
(2)指令:nova pause/resume
(3)解释:短时间暂停 instance,可以通过 Pause 操作将 instance 的状态保存到宿主机的内存中。当需要恢复的时候,执⾏Resume 操作,从内存中读回 instance 的状态,然后继续运⾏ instance。
9、Suspend/Resume
(1)作⽤:暂停虚拟机
(2)指令:nova suspend
(3)解释:长时间暂停 instance,可以通过 Suspend 操作将instance 的状态保存到宿主机的磁盘上。当需要恢复的时候,执⾏Resume 操作,从磁盘读回 instance 的状态,使之继续运⾏。Pause和suspend的相同点
两者都是暂停 instance 的运⾏,并保存当前状态,之后可以通过Resume 操作恢复
Pause和suspend的不同点activemq重启命令
Suspend 将 instance 的状态保存在磁盘上;Pause 是保存在内存中,所以 Resume 被 Pause 的 instance 要⽐ Suspend 快。Suspend 之后的 instance,其状态是 ShutDown;⽽被 Pause 的 instance 状态是Paused。虽然都是通过 Resume 操作恢复,Pause 对应的 Resume 在 OpenStack 内部被叫作“Unpause”;Suspend 对应的 Resume 才是真正的“Resume”。
10、shelve/unshelve
(1)作⽤:暂停虚拟机
(2)指令:nova boot
(3)解释:Shelve 会将 instance 作为 image 保存到 Glance 中,然后在宿主机上删除该 instance。因为 Glance 中保存了instance 的 image,unshelve 的过程其实就是通过该 image launch ⼀个新的 instance,nova-scheduler 也会调度合适的计算节点来创建该instance。instance unshelve 后可能运⾏在与 shelve 之前不同的计算节点上,但 instance 的其他属性(⽐如flavor,IP 等)不会改变。
11、backup/image-create/snapshot
(1)作⽤:创建虚拟机备份
(2)指令:nova backup/image-create
(3)解释:对虚拟机进⾏备份操作
⼆、故障处理
1、计划外
1.1、Rescue/Unrescue
(1)作⽤:恢复虚拟机
(2)指令:nova rescue
(3)解释:Rescue ⽤指定的 image 作为启动盘引导 instance,将instance 本⾝的系统盘作为第⼆个磁盘挂载到操作系统上。修好之后,使⽤ Unrescue 操作从原启动盘重新引导 instance。
1.2、Rebuild
(1)作⽤:创建虚拟机
(2)指令:nova rebuild
(3)解释:Rebuild 会⽤指定的image 替换 instance 当前的镜像⽂件,同时保持 instance 的其他诸如⽹络,资源分配属性不变。1.3、Evacuate
(1)作⽤:疏散虚拟机
(2)指令:nova evacuate
(3)解释:虚拟机所在的host宕机了,可以使⽤evacuate将虚拟机在另外⼀个host上启起来,其实利⽤这个接⼝配合host监控⼯具,可以实现虚拟机的HA能⼒。Evacuate 可在 nova-compute ⽆法⼯作的情况下将节点上的 instance 迁移到其他计算节点上。但有个前提:Instance 的镜像⽂件必须放在共享存储上。
2、计划内
2.1、migrate
(1)作⽤:迁移虚拟机
(2)指令:nova migrate/nova confirm/nova revert
(3)解释:Migrate 不要求源和⽬标节点必须共享存储,当然共享存储也是可以的。 Migrate 前必须满⾜⼀个条件:计算节点间需要配置 nova ⽤户⽆密码访问。迁移操作在源节点上⾸先会关闭instance,然后将 instance 的镜像⽂件传到⽬标节点上。这时,instance 会处于“Confirm or Revert Resize/Migrate”状态,需
要⽤户确认或者回退当前的迁移操作,实际上给了⽤户⼀个反悔的机会。
2.2、live-migration
(1)作⽤:热迁移虚拟机
(2)指令:nova live-migration
(3)解释:热迁移虚拟机
Migrate 操作会先将 instance 停掉,也就是所谓的“冷迁移”。⽽Live Migrate 是“热迁移”,也叫“在线迁移”,instance不会停机。Live Migrate 分两种:
源和⽬标节点没有共享存储,instance 在迁移的时候需要将其镜像⽂件从源节点传到⽬标节点,这叫做 Block Migration(块迁移)
源和⽬标节点共享存储,instance 的镜像⽂件不需要迁移,只需要将 instance 的状态迁移到⽬标节点。
源和⽬标节点需要满⾜⼀些条件才能⽀持 Live Migration:
源和⽬标节点的 CPU 类型要⼀致。
源和⽬标节点的 Libvirt 版本要⼀致。
源和⽬标节点能相互识别对⽅的主机名称,⽐如可以在 /etc/hosts 中加⼊对⽅的条⽬。
在源和⽬标节点的 /etc/f 中指明在线迁移时使⽤TCP 协议。
Instance 使⽤config driver 保存其metadata。在Block
Migration 过程中,该 config driver 也需要迁移到⽬标节点。由于⽬前 libvirt 只⽀持迁移 vfat 类型的 config driver,所以必须在/etc/f 中明确指明 launch instance 时创建vfat 类型的 config driver。
源和⽬标节点的 Libvirt TCP 远程监听服务得打开,需要在下⾯两个配置⽂件中做⼀点配置。
/etc/default/libvirt-bin
start_libvirtd="yes"
libvirtd_opts="-d -l"
/etc/f
listen_tls = 0
listen_tcp = 1
unix_sock_group = "libvirtd"
unix_sock_ro_perms = "0777"
unix_sock_rw_perms = "0770"
auth_unix_ro = "none"
auth_unix_rw = "none"
auth_tcp = "none"
然后重启 Libvirtd 服务
service libvirt-bin restart
3、回顾
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论