OpenStack视图
OpenStack视图是个全局资源的概念,统计了OpenStack所纳管资源的总量和使用量,因此OpenStack视图的资源通常又称为物理资源。OpenStack基于该资源使用以及分布情况进行调度。当资源不足时,将导致虚拟机调度失败,用户请求不会报错,但虚拟机状态为ERROR。 但是需要注意的是,OpenStack视图的资源是按分配量计算的,而不是按照实际使用量统计。比如用户申请了一台2C 4GB的云主机,但该云主机关机了,此时云主机实际上并不占用任何CPU和内存,但OpenStack在统计中还是需要减去2C 4GB资源。对于OpenStack来说,已经分配的资源,不管用户究竟有没有在使用,除非删除,否则不会被回收,也不能被其他虚拟机抢占。 OpenStack统计的资源总量在不超售的情况下等于所有物理资源总和,但如果设置了超售,OpenStack实际分配的资源可能大于资源总量。 OpenStack Nova通过hypervisor-stats查看整个集群的资源使用情况:~/int32bit # nova hypervisor-stats
+----------------------+---------+ | Property | Value | +----------------------+---------+ | count | 18 | | current_workload | 0 | | disk_available_least | 3617 | | free_disk_gb | 1562 | | free_ram_mb | 1018842 | | local_gb | 4452 | | local_gb_used | 2890 | | memory_mb | 4322820 | | memory_mb_used | 3303978 | | running_vms | 291 | | vcpus | 561 | | vcpus_used | 1148 | +----------------------+---------+ 需要注意的是,以上统计的是整个集群的物理资源,而不是单个计算节点的资源,这意味着并不是总量满足请求资源就可以调度,可能存在资源碎片导致调度虚拟机失败。比如,假设有20台计算节点,每个计算节点剩余2GB内存,统计总量内存剩余量为2GB * 20 == 40GB,但用户若申请一台4GB内存的虚拟机调度仍然会失败,原因是没有任何一个计算节点满足内存资源。要查看单个计算节点的资源可以使用hypervisor-show子命令:
~/int32bit # nova hypervisor-show 1
+---------------------------+-----------------+ | Property | Value | +---------------------------+-----------------+ | free_disk_gb | 561 | | free_ram_mb | 58978 | | local_gb | 1181 | | local_gb_used | 620 | | memory_mb | 262002 | | memory_mb_used | 203024 | | vcpus | 32 | | vcpus_used | 86 | |... | ... | +---------------------------+-----------------+