Openstack 虚机实例操作总结
1. 概述
Openstack作为常见的IAAS服务,其最核心的对象就是虚机实例,而Openstack下支持的虚机操作有很多种,有些是特别常见的虚机操作比如创建虚机、启动虚机、删除虚机等,而有些虚机操作则是针对特定场景下比如出现故障而提供的保护/恢复虚拟机资源的各种解决方案,下面先通过一张图总体了解一下Openstack的各种虚机操作及及其应用场景:
-
虚机操作总览图
文章余下部分将借助上图中常规操作和故障操作这两大应用场景来对Openstack各种虚机实例的操作一一展开说明。
2. 常规操作
所谓常规操作,这里是指日常对Openstack虚机最基本的操作,且Openstack集群及虚机运行状态良好的情况下。
2.1 创建
创建虚机,Openstack专业术语:启动虚机实例,根据已经定义好的主机类型、存储资源、网络资源等从无到有新建一个虚拟机。如果底层的虚拟化基于KVM,相当于先编辑一个虚机的XML文件然后进行DEFINE。
2.2 启动/关闭/重启/删除
- 启动:跟上文中创建启动虚机实例不是一个概念,可以理解成类似物理机的开机的操作;
- 关闭:类似物理机的关机操作;
- 重启:有软重启和硬重启之分,软重启只是重启虚机的OS,虚机仍处于运行状态,相当于执行reboot,而硬重启则是关机之后再开机;
- 删除:从宿主机上删除虚机实例;
2.3 暂停/挂起
- 暂停:Pause操作,短时间暂停虚机实例,将其状态保存到宿主机的内存中,操作之后虚机对外显示状态为Paused;
- 挂起:Suspend操作,长时间暂停虚机实例,将其状态保存到宿主机的磁盘上,操作之后虚机对外显示状态为Shut Down;
以上两种操作后的虚机实例,都可以通过其他Openstack的接口重新恢复(Pause--> Unpause,Suspend--> Resume)虚机,并且显然经过Pause操作的虚机实例恢复要快的多。
2.4 调整虚机大小
对应Openstack Resize操作,用来修改虚机实例的规格,当原始的主机类型(Flavor)无法满足其上运行的业务需求时,通过新的Flavor在当前宿主机或者新的宿主机上重新启动一个新的虚机,但是这个虚机的资源比如网络资源、OS版本等还是跟之前的虚机是一样的,只是扩展了CPU Core数目、内存和磁盘大小,提高了虚机性能。
2.5 快照
对应Openstack Snapshot操作,用来作备份恢复的,将某个状态下的虚机导出image并上传至Glance管理,方便以后通过快照来恢复一个出现故障的虚机,另外Openstack快照跟传统意义的快照不是一个含义。
2.6 锁定
对应Openstack Lock操作,用来作资源保护,如果为防止误操作或者不想让某些人操作虚机实例可以执行此操作,当然可以通过Unlock操作来解除锁定。
3. 故障操作
首先解释一下,这里的故障操作不是指错误操作或者误操作,而是Openstack虚机实例或者其它组件出现故障时应对的措施或者操作。
3.1 冷迁移/热迁移
冷迁移(Migrate)和热迁移(Live Migrate)最大的区别在于将虚机实例从一个计算节点迁移到另一个计算节点的过程中是不是做了虚机关闭的操作。
3.2 搁置
对应Openstack Shelve操作,用作释放暂不使用的虚机资源。
对于暂时不用的虚机如前文所述可以通过Pause/Suspend来暂停以节约成本,不过这两种操作下虚机实例需要的比如CPU、内存等资源宿主机仍然要维护,如果想从底层来释放这些资源可以执行Shelve操作,它的原理是释放虚机之前先会对虚机做快照并上传Glance,然后才从宿主机删除虚机,当然如果想恢复则可以执行Unshelve操作。
-
虚机实例搁置效果1
-
虚机实例搁置效果2
3.3 Rescue
当虚机实例因为某个文件系统误删或者权限导致虚机实例无法正常开启时,可以执行Rescue操作来尝试恢复:选择一个虚机image来引导虚机正常起来,同时把之前的系统盘作为数据盘挂载到起来的虚机OS下,修复好之后使用Unrescue操作从原启动盘重新引导虚机。
3.4 重建
对应Openstack Rebuild操作,当虚机实例损坏无法正常开启,而一般的修复操作比如Rescue不起作用,此时可以考虑在原先虚机实例的基础上利用虚机镜像或者快照进行Rebuild操作,它的原理替换原先虚机实例的镜像文件,同时保持虚机其他比如网络资源、其他分配属性不变而实现虚机正常开启。
3.5 Evacuate
上述的操作都是在宿主机ok的情况下进行的,如果虚机实例的宿主机直接挂掉该怎么办呢?还好有Evacuate操作,它能够在当前宿主机宕掉的情况,将其上的虚机实例迁移到其它正常的计算节点,不过它需要满足共享存储(比如后端采用NFS、CEPH等)。
以上基本上就是目前Openstack所支持的对虚机实例的所有操作,实际使用中需要结合具体的业务场景。