Loading...

PHP Libvirt KVM 虚拟机管理工具

Libvirt-Manager 是我开发的一个 PHP 用于管理 Libvirt-KVM 虚拟机的工具类。

这个工具类的主要功能有:

  1. 电源操作(开启 / 关闭 / 重启 / 暂停 / 恢复虚拟机)
  2. 快照操作(创建 / 恢复虚拟机快照)
  3. 网络操作(启用 / 禁用虚拟机网卡)
  4. 管理操作(创建 / 克隆 / 注册 / 移除虚拟机)
  5. 系统操作(执行 Shell 命令 / 上传文件)

Libvirt-Manager 需要 php_ssh2 扩展支持,并且服务器需要启用 SSH 密码登录。

Github 开源地址:https://github.com/kasuganosoras/Libvirt-Manager

连接到服务器的示例代码

[code lang=”php”]include(“libvirt/libvirt.php”);
$Libvirt = new Libvirt();
$Libvirt->setHost(“192.168.3.181”, 22, “/data/libvirt/”);
$Libvirt->connect(“root”, “123456”);[/code]

Libvirt Manager 需要通过 SSH 连接到服务器进行操作,请确认你的服务器已启用 sshd 服务。

在示例代码中,192.168.3.181 是服务器地址,22 是服务器端口,/data/libvirt/ 是你希望 Libvirt 使用的数据储存目录。

在登录时,请使用用户名和密码(目前暂不支持证书登录),示例代码中的用户名和密码分别是 root 和 123456

创建虚拟机示例代码

[code lang=”php”]$Libvirt->createDisk(“Test”, “qcow2”, “30G”);
$Libvirt->createVMXML(“Test”, 2, 2048576, “/data/libvirt/images/Test/Test.qcow2”, “/data/iso/CentOS-7-x86_64-Minimal-1804.iso”, “cdrom”, “network”, “default”, $Libvirt->randomMac(), “virbr0”, 0, 0, 5902);
$Libvirt->define(“/data/libvirt/Test.xml”);
$Libvirt->setPermission(“Test”);
$Libvirt->start(“Test”);[/code]

创建一个虚拟磁盘

虚拟机需要一个虚拟磁盘来储存数据,此方法可以创建一个虚拟磁盘。

[code lang=”php”]String createDisk ( Name, Format, Size )[/code]

创建一个虚拟机 XML 配置文件

Libvirt 的虚拟机配置是以 XML 格式存在的,此方法可以创建一个虚拟机配置文件。

createVMXML 方法一共有 13 个参数

[code lang=”php”]void createVMXML ( Name, vCPU, Ram, Disk, ISO, Boot Device, Network type, Network name, MAC Address, Network bridge, Bandwidth in, Bandwidth out, VNC Port )[/code]

将虚拟机 XML 配置文件注册到系统

如果想要启动某个配置文件的虚拟机,需要先使用此方法将它注册到系统中。

[code lang=”php”]String define ( XML File Path )[/code]

设置可执行权限

如果启动虚拟机时出现 Permission denied 等错误提示,请使用此方法设置权限。

[code lang=”php”]void setPermission ( Name )[/code]

启动虚拟机

此方法可以启动任何一个已注册到系统中的虚拟机。

[code lang=”php”]String start ( Name )[/code]

正常停止虚拟机

此方法可以以正常方式关闭虚拟机,Libvirt 会发送信号通知虚拟机执行关机。

[code lang=”php”]String shutdown ( Name )[/code]

强制停止虚拟机

此方法会强行关闭虚拟机,类似于按住电脑电源键强制关机。

如果你的虚拟机出现了问题导致不能使用 shutdown 方法停止时,可以使用此方法强制结束虚拟机,但是可能会丢失数据。

[code lang=”php”]String destroy ( Name )[/code]

获得虚拟机列表

你可以使用此方法获得所有已注册的虚拟机列表,它将会返回一个数组。

[code lang=”php”]String getList ()[/code]

获得虚拟机信息

你可以使用此方法获得任何已注册的虚拟机信息,它将会返回一个数组。

[code lang=”php”]String getInfo ( Name )[/code]

导出虚拟机的 XML 配置文件

此方法可以读取虚拟机的 XML 配置文件并返回

[code lang=”php”]String dumpxml ( Name )[/code]

克隆现有的虚拟机

你可以使用此方法复制一个现有的虚拟机

此方法也许需要消耗很长时间,具体视磁盘性能而定,建议加一行代码 set_time_limit(120) 以防止脚本超时。

[code lang=”php”]String cloneVM ( Name, New name, New disk path )[/code]

设置虚拟机网卡

此方法可以设置虚拟机的网卡

第三个参数是布尔型的,如果赋值是 true,将会启用网卡,如果赋值是 false,将会禁用网卡。

[code lang=”php”]String setNetwork ( Server, Network name, Status )[/code]

你可以在 libvirt/libvirt.php 找到更多信息

发表评论

》表情