OpenStack视图
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 |
|... | ... |
+---------------------------+-----------------+