Cloud Hypervisor是一个用Rust实现的开源VMM。为了区别于之前工作的大量模拟,Cloud Hypervisor专注于云工作负载,使用最少的硬件模拟,只模拟了几个虚拟设备。为了实现虚拟机的功能,Cloud Hypervisor线程在内部使用一系列API来相互通信。
REST API介绍
REST API(Representational State Transfer Application Programming Interface)是一种API设计的风格,将需要的接口,如创建、删除、编辑等映射到HTTP协议中的操作,如POST、GET、DELETE等,给出了统一的接口标准,极大简化了接口的理解和调用。
在HTTP中,资源的状态以及与资源相关的数据以某种形式进行表示,通常是通过 JSON(JavaScript Object Notation)或 XML(eXtensible Markup Language)文件的方式。客户端和服务器之间通过这些表示进行通信。在通信过程中,通过将资源的表示从服务器传输到客户端来实现各种操作。客户端对资源的状态进行更改,并将更改后的状态通过HTTP请求发送回服务器。类似于HTTP中返回一个状态码来告诉客户端请求的结果,REST API在被调用时同样将响应码保存在状态中。
用REST API建立在HTTP协议之上,可以轻松地与现有的基础设施和工具集成,接口简单且耦合松散,适合各种平台的使用。
Cloud Hypervisor API
在Cloud Hypervisor中,只要通过本地UNIX套接字启动Cloud Hypervisor二进制文件,就可以使用REST API。
以下是部分虚拟机常用的操作及其对应的API:
虚拟机功能 |
API |
虚拟机关机 |
shutdown |
虚拟机重启 |
reboot |
创建虚拟机快照 |
snapshot |
按照快照恢复虚拟机 |
restore |
虚拟机停机与恢复 |
pause/resume |
热变配 |
resize |
虚拟机热迁移 |
receive/send-migration |
设备热插拔 |
add/remove-device |
以CPU热变配为例,启动虚拟机并设置api的socket路径,可进入虚拟机查看cpu配置。
接下来,在另一个终端根据之前设定好的路径调用API,并返回虚拟机再次查看,对比前后CPU数量的变化,即可发现CPU数量变化,升配成功,即API的socket通信成功。
参考文献:
A brief overview of cloud-hypervisor, a modern VMM
cloud-hypervisor/docs/api.md at main · cloud-hypervisor/cloud-hypervisor