libvirt是一个用于管理虚拟化平台的开源工具包,提供了对不同虚拟化技术(如KVM、QEMU、Xen等)的统一管理接口。在libvirt中,Domain
类表示虚拟机(domain)对象,并提供了丰富的方法来管理虚拟机的各个方面。在本篇博客中,我们将介绍Domain
类的一些主要方法,帮助开发人员更好地理解如何使用libvirt来管理虚拟机。
abortJob()
该方法用于请求在最早的机会中中止当前后台作业。后台作业通常是一些长时间运行的任务,例如磁盘复制。
int abortJob()
addAgentLifecycleListener(AgentLifecycleListener cb)
添加一个用于接收代理生命周期事件的监听器。代理是与虚拟机内部通信的一种机制,此方法允许开发人员监测代理的生命周期事件。
void addAgentLifecycleListener(AgentLifecycleListener cb)
addBlockJobListener(BlockJobListener cb)
添加一个回调以接收块作业事件的通知。块作业是虚拟机磁盘相关的一些操作,例如复制、移动等。
void addBlockJobListener(BlockJobListener cb)
addIOErrorListener(IOErrorListener cb)
添加一个回调以接收IO错误事件的通知。这可以帮助开发人员监测虚拟机上发生的IO错误。
void addIOErrorListener(IOErrorListener cb)
addLifecycleListener(LifecycleListener l)
添加一个用于接收虚拟机生命周期事件的监听器。这些事件包括虚拟机的创建、销毁、暂停、继续等。
void addLifecycleListener(LifecycleListener l)
addPMSuspendListener(PMSuspendListener l)
添加一个用于接收虚拟机电源管理(PM)挂起事件的监听器。PM事件涉及到虚拟机的挂起和恢复。
void addPMSuspendListener(PMSuspendListener l)
addPMWakeupListener(PMWakeupListener l)
添加一个用于接收虚拟机电源管理(PM)唤醒事件的监听器。PM事件涉及到虚拟机的挂起和恢复。
void addPMWakeupListener(PMWakeupListener l)
addRebootListener(RebootListener l)
添加一个用于接收虚拟机重启事件的监听器。该方法允许开发人员监测虚拟机的重启操作。
void addRebootListener(RebootListener l)
attachDevice(String xmlDesc)
创建虚拟设备附加到后端。通过该方法,可以将新的虚拟设备附加到虚拟机。
void attachDevice(String xmlDesc)
attachDeviceFlags(String xmlDesc, int flags)
创建虚拟设备附加到后端,可以指定附加设备的标志。
void attachDeviceFlags(String xmlDesc, int flags)
blockCommit(String disk, String base, String top, long bandwidth, int flags)
将对磁盘镜像的临时更改提交到较低级别的基础文件。通常用于虚拟机磁盘的快照和回滚操作。
void blockCommit(String disk, String base, String top, long bandwidth, int flags)
blockCopy(String diskPath, String xmlDesc, TypedParameter[] params, int flags)
将虚拟机的生活块设备(磁盘)迁移到另一个块设备。通常用于在线迁移虚拟机磁盘。
void blockCopy(String diskPath, String xmlDesc, TypedParameter[] params, int flags)
blockInfo(String path)
获取连接到该虚拟机的块设备(磁盘)的统计信息。
DomainBlockInfo blockInfo(String path)
blockJobAbort(String disk, int flags)
取消给定磁盘上的活动块作业。
void blockJobAbort(String disk, int flags)
blockPeek(String disk, long offset, ByteBuffer buffer)
读取虚拟机磁盘设备的内容。
void blockPeek(String disk, long offset, ByteBuffer buffer)
blockResize(String disk, long size, int flags)
在虚拟机运行时调整磁盘设备的大小。
void blockResize(String disk, long size, int flags)
blockStats(String path)
获取连接到该虚拟机的块设备(磁盘)的统计信息。
DomainBlockStats blockStats(String path)
coreDump(String to, int flags)
将虚拟机的核心转储到指定文件以供分析。
void coreDump(String to, int flags)
cpuMapLength(int maxCpus)
获取存储单个虚拟CPU与所有物理CPU之间完整CPU映射所需的长度。
int cpuMapLength(int maxCpus)
create()
启动该虚拟机。这个方法用于启动之前已经定义的虚拟机。
int create()
create(int flags)
启动该虚拟机,并可以提供一些启动标志。
int create(int flags)
destroy()
销毁虚拟机对象。这个方法停止虚拟机,并且虚拟机对象之后仍然可用。
void destroy()
detachDevice(String xmlDesc)
销毁虚拟机的虚拟设
备附加到后端。
void detachDevice(String xmlDesc)
detachDeviceFlags(String xmlDesc, int flags)
销毁虚拟机的虚拟设备附加到后端,可以指定附加设备的标志。
void detachDeviceFlags(String xmlDesc, int flags)
equals(Object obj)
判断两个虚拟机对象是否相等。
boolean equals(Object obj)
finalize()
虚拟机对象的垃圾回收方法。
protected void finalize()
free()
释放虚拟机对象。
int free()
getAutostart()
获取虚拟机是否配置为在主机启动时自动启动。
boolean getAutostart()
getBlockJobInfo(String disk, int flags)
获取给定磁盘的块作业信息。
DomainBlockJobInfo getBlockJobInfo(String disk, int flags)
getConnect()
获取与虚拟机关联的连接对象。
Connect getConnect()
getID()
获取虚拟机的超级用户ID号。
int getID()
getInfo()
提取关于虚拟机的信息,如状态、内存使用等。
DomainInfo getInfo()
getJobInfo()
提取关于虚拟机后台作业进度的信息。
DomainJobInfo getJobInfo()
getMaxMemory()
获取分配给虚拟机的最大物理内存。
long getMaxMemory()
getMaxVcpus()
获取支持的虚拟CPU的最大数量。
int getMaxVcpus()
getMetadata(int type, String uri, int flags)
检索给定类型的域元素。域元素可以包括描述、注释等。
String getMetadata(int type, String uri, int flags)
getName()
获取虚拟机的公共名称。
String getName()
getOSType()
获取虚拟机操作系统的类型。
String getOSType()
getSchedulerParameters()
获取调度器参数。
SchedParameter[] getSchedulerParameters()
getSchedulerType()
获取调度器类型。
String getSchedulerType()
getSecurityLabel()
获取虚拟机的安全标签。
SecurityLabel getSecurityLabel()
getUUID()
获取虚拟机的UUID。
int[] getUUID()
getUUIDString()
获取虚拟机的UUID,并以字符串形式返回。
String getUUIDString()
getVcpusCpuMaps()
获取虚拟机的虚拟CPU与物理CPU的映射。
int[] getVcpusCpuMaps()
getVcpusInfo()
提取虚拟机的虚拟CPU信息。
VcpuInfo[] getVcpusInfo()
getXMLDesc(int flags)
提供虚拟机的XML描述。
String getXMLDesc(int flags)
hasCurrentSnapshot()
判断虚拟机是否有当前快照。
int hasCurrentSnapshot()
hashCode()
获取虚拟机对象的哈希码。
int hashCode()
hasManagedSaveImage()
判断虚拟机是否有托管的保存镜像。
int hasManagedSaveImage()
interfaceAddresses(int source, int flags)
获取给定虚拟机中网络接口的IP和MAC地址。
Collection<DomainInterface> interfaceAddresses(int source, int flags)
interfaceStats(String path)
获取虚拟机接口的统计信息。
DomainInterfaceStats interfaceStats(String path)
isActive()
判断虚拟机是否当前正在运行。
int isActive()
isPersistent()
判断虚拟机是否有持久配置,即在关机后仍然存在。
int isPersistent()
isUpdated()
判断虚拟机是否已经更新。
boolean isUpdated()
managedSave()
暂停虚拟机并将其内存内容保存到磁盘文件中。
int managedSave()
managedSaveRemove()
从虚拟机中删除任何托管的保存镜像。
int managedSaveRemove()
memoryPeek(long start, ByteBuffer buffer, MemoryAddressMode mode)
读取虚拟机内存的内容。
void memoryPeek(long start, ByteBuffer buffer, MemoryAddressMode mode)
memoryStats(int number)
提供虚拟机的内存统计信息。
MemoryStatistic[] memoryStats(int number)
migrate(Connect dconn, long flags, String dname, String uri, long bandwidth)
将虚拟机从当前主机迁移到目标主机。
Domain migrate(Connect dconn, long flags, String dname, String uri, long bandwidth)
conn, long flags, String dxml, String dname, String uri, long bandwidth)`
将虚拟机从当前主机迁移到目标主机,同时可以提供XML描述。
Domain migrate(Connect dconn, long flags, String dxml, String dname, String uri, long bandwidth)
migrate(Connect dconn, TypedParameter[] params, long flags)
将虚拟机从当前主机迁移到目标主机,可以提供其他参数。
Domain migrate(Connect dconn, TypedParameter[] params, long flags)
migrateSetMaxDowntime(long downtime)
设置虚拟机在迁移结束时允许暂停的最长时间。
int migrateSetMaxDowntime(long downtime)
migrateToURI(String uri, long flags, String dname, long bandwidth)
将虚拟机从当前主机迁移到目标主机,提供目标URI。
int migrateToURI(String uri, long flags, String dname, long bandwidth)
migrateToURI(String dconnuri, String miguri, String dxml, long flags, String dname, long bandwidth)
将虚拟机从当前主机迁移到目标主机,提供目标URI和其他参数。
int migrateToURI(String dconnuri, String miguri, String dxml, long flags, String dname, long bandwidth)
pinVcpu(int vcpu, int[] cpumap)
动态更改可以分配给虚拟CPU的实际CPU。
void pinVcpu(int vcpu, int[] cpumap)
PMsuspend(SuspendTarget target)
将虚拟机挂起到给定的电源管理挂起目标级别。
void PMsuspend(SuspendTarget target)
PMsuspendFor(SuspendTarget target, long duration, TimeUnit unit)
将虚拟机挂起到给定的电源管理挂起目标级别,并在指定的持续时间内挂起。
void PMsuspendFor(SuspendTarget target, long duration, TimeUnit unit)
PMwakeup()
立即唤醒使用电源管理的虚拟机。
void PMwakeup()
qemuAgentCommand(String cmd, int timeout, int flags)
使用Qemu Guest Agent辅助守护程序发送命令。
String qemuAgentCommand(String cmd, int timeout, int flags)
qemuMonitorCommand(String cmd, int flags)
使用Qemu Monitor命令,仅适用于与QEMU驱动程序的虚拟化连接。
String qemuMonitorCommand(String cmd, int flags)
reboot(int flags)
重新启动虚拟机。虚拟机对象仍然可用,但虚拟机操作系统正在进行重启。
void reboot(int flags)
removeBlockJobListener(BlockJobListener cb)
从事件框架中移除BlockJobListener
,使其不再接收事件。
void removeBlockJobListener(BlockJobListener cb)
reset()
立即重置虚拟机,无需进行任何操作系统关闭。
void reset()
resume()
恢复被暂停的虚拟机,进程从被virSuspendDomain()
冻结的状态重新启动。
void resume()
revertToSnapshot(DomainSnapshot snapshot)
将虚拟机还原到给定快照。
int revertToSnapshot(DomainSnapshot snapshot)
save(String to)
暂停虚拟机并将其内存内容保存到磁盘文件中。
void save(String to)
screenshot(Stream stream, int screen)
从虚拟机中获取屏幕截图。
String screenshot(Stream stream, int screen)
sendKey(KeycodeSet codeset, int holdtime, int... keys)
向虚拟机发送键盘按键。
void sendKey(KeycodeSet codeset, int holdtime, int... keys)
setAutostart(boolean autostart)
配置虚拟机在主机启动时自动启动。
void setAutostart(boolean autostart)
setMaxMemory(long memory)
动态更改分配给虚拟机的最大物理内存。
void setMaxMemory(long memory)
setMemory(long memory)
动态更改分配给虚拟机的目标物理内存。
void setMemory(long memory)
setMetadata(int type, String metadata, String key, String uri, int flags)
设置给定类型的虚拟机元素的值。
void setMetadata(int type, String metadata, String key, String uri, int flags)
setSchedulerParameters(SchedParameter[] params)
更改调度器参数。
void setSchedulerParameters(SchedParameter[] params)
setUserPassword(String user, String password, int flags)
设置用户密码。
void setUserPassword(String user, String password, int flags)
setVcpus(int nvcpus)
动态更改虚拟机使用的虚拟CPU的数量。
void setVcpus(int nvcpus)
setVcpusFlags(int nvcpus, int flags)
动态更改虚拟机使用的虚拟CPU的数量,可以提供一些标志。
void setVcpusFlags(int nvcpus, int flags)
shutdown()
关闭虚拟机,虚拟机对象仍然可用,但虚拟机操作系统正在停止。
void shutdown()
snapshotCreateXML(String xmlDesc)`
基于提供的XML描述创建虚拟机的新快照。
DomainSnapshot snapshotCreateXML(String xmlDesc)
snapshotCreateXML(String xmlDesc, int flags)
基于提供的XML描述创建虚拟机的新快照,并可以提供一些标志。
DomainSnapshot snapshotCreateXML(String xmlDesc, int flags)
snapshotCurrent()
获取虚拟机的当前快照。
DomainSnapshot snapshotCurrent()
snapshotListNames()
获取给定虚拟机的快照列表的名称。
String[] snapshotListNames()
snapshotListNames(int flags)
获取给定虚拟机的快照列表的名称,可以提供一些标志。
String[] snapshotListNames(int flags)
snapshotLookupByName(String name)
根据名称检索快照。
DomainSnapshot snapshotLookupByName(String name)
snapshotNum()
获取虚拟机的快照数量。
int snapshotNum()
suspend()
暂停当前运行的虚拟机,使其无法访问CPU资源和I/O,但在hypervisor级别保留虚拟机使用的内存。
void suspend()
undefine()
取消定义此虚拟机,但如果虚拟机正在运行,则不停止它。
void undefine()
undefine(int flags)
取消定义此虚拟机,但如果虚拟机正在运行,则不停止它,可以提供一些标志。
void undefine(int flags)
updateDeviceFlags(String xml, int flags)
更改虚拟机上的虚拟设备。
int updateDeviceFlags(String xml, int flags)
以上是libvirt中Domain
类的一些主要方法的简要介绍。这些方法提供了广泛的功能,涵盖了虚拟机的生命周期管理、磁盘操作、网络接口操作等方面。开发人员可以根据具体需求选择适当的方法来管理虚拟机。希望这篇博客对你理解libvirt中的Domain
类有所帮助。