ubuntu虚拟机折腾之----virsh指令

前言

时常折腾一些东西,检索->尝试->纠错->成功带来很多喜悦。但又时常忘记,就想着作些记录。之前有过记录在百度脑图上、石墨笔记上,但脑图记录东西多了就又不方便查看,也不便分享,也不知道X度怎么想的,挺好一产品不好好做......同时,由于经常网上搜索信息,认识了CSDN和博客园,看来看去还是喜欢博客园的清爽的样子。也不知道这会儿开博客会不会有点49年入国军的样子。不管了,玩玩吧。

Libvirt

Libvirt 是一个开源的软件集合,用于管理计算机上的虚拟化资源。它提供了多个组件,其中包括一个守护进程(libvirtd)、API 接口、以及一系列工具。

virsh

virsh 是 Libvirt 提供的一个命令行工具,它是 Libvirt 的一部分,用于通过命令行界面来执行各种虚拟化管理任务。virsh 提供了许多命令,可以让用户执行以下操作:
管理虚拟机:启动、停止、重启、暂停、恢复虚拟机。
配置虚拟机:修改虚拟机的硬件配置(如 CPU、内存、磁盘、网络接口等)。
管理存储:创建、删除、挂载存储池。
管理网络:定义、启动、停止、删除虚拟网络。
实时迁移:迁移虚拟机到另一个主机。
监控和报告:查看虚拟机的状态和性能指标。
定义和编辑虚拟机配置:通过 XML 文件定义新的虚拟机或将现有虚拟机的配置导出为 XML 文件。

两者关系

依赖关系:virsh 依赖于 libvirtd 守护进程来执行其命令。libvirtd 是 Libvirt 的核心组件,负责与底层虚拟化引擎进行通信,并提供 API 接口。
接口:virsh 作为 Libvirt 的命令行接口,为用户提供了一个简单的方式来与虚拟化资源进行交互。
功能扩展:除了 virsh 外,Libvirt 还提供了其他工具和库函数,如 virt-install、virt-manager 等,用于图形化管理虚拟机。

virsh

1. 基本管理命令

list

功能:列出当前正在运行的虚拟机。
示例

$ virsh list
 Id   Name        State
---------------------------
 3    debian12    running
 4    linux2022   running
 5    win10       running

还可以加参数 --all
用于显示所有的虚拟机及其状态
示例

$ virsh list --all
 Id   Name                    State
----------------------------------------
 3    debian12                running
 4    linux2022               running
 -    win10                   shut off
 -    win10-Eplan             shut off
 -    win10-inoance           shut off
 -    win10-netdisk           shut off
 -    win10-workstation       shut off
 -    win10-workstation-Tia   shut off

可以看出来我装了好几台虚拟机,计划把软件单独装在虚拟机里,使用时候再开虚拟机。主要目的是想解决一台电脑装太多软件导致卡顿的问题。

domstate

功能:查看虚拟机的状态。
示例

virsh domstate debian12
running
virsh domstate win10
shut off

start

功能:启动虚拟机。
示例

virsh start win10
Domain 'win10' started

shutdown

功能:关闭虚拟机。
示例

virsh shutdown win10
Domain 'win10' is being shutdown

destroy

功能:强制关闭虚拟机,相当于拔电源
示例

virsh destroy debian12
Domain 'debian12' destroyed

suspend

功能:暂停虚拟机。

resume

功能:恢复暂停的虚拟机。

2. 配置管理命令

undefine

功能:删除定义的虚拟机(但不删除磁盘文件)。
示例

virsh undefine win10

define

功能:定义一个新的虚拟机,但不启动它。
示例

virsh define /etc/libvirt/qemu/win10.xml

dumpxml

功能:获取虚拟机的 XML 配置。
示例

virsh dumpxml win10

类似于

sudo cat /etc/libvirt/qemu/win10.xml

直接查看虚拟机配置xml文件的的内容,但cat查看需要定位到xml文件路径,但dumxml后面直接跟虚拟机名字。

edit

功能:编辑虚拟机的 XML 配置。
示例

virsh edit win10

等同于直接编辑win10.xml文件,但无需定位到路径。

net-list

列出虚拟网络

$ sudo virsh net-list --all
 Name      State    Autostart   Persistent
--------------------------------------------
 default   active   no          yes

如上所示,本机存在一个名为default的虚拟网络,这是KVM默认的。

net-dumpxml

查看网络详细配置

$ sudo virsh net-dumpxml default
<network connections='2'>
  <name>default</name>
  <uuid>a6115379-f255-46a5-ad81-07a55b17ac99</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:0d:f7:6a'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

配置说明:
解读配置

名称:default
UUID:a6115379-f255-46a5-ad81-07a55b17ac99
转发模式:nat(网络地址转换)
    NAT 端口范围:1024 到 65535
桥接接口:virbr0
    STP(生成树协议):开启
    延迟:0
MAC 地址:52:54:00:0d:f7:6a
IP 地址:192.168.122.1
    子网掩码:255.255.255.0
    DHCP 服务:
        IP 地址范围:192.168.122.2 到 192.168.122.254

后面的还没试过

3. 设备管理命令

attach-disk

功能:附加磁盘设备到虚拟机。
示例

virsh attach-disk myvm /path/to/image.img vdb --persistent

detach-disk

功能:从虚拟机分离磁盘设备。
示例

virsh detach-disk myvm vdb --persistent

attach-interface

功能:附加网络接口到虚拟机。
示例

virsh attach-interface myvm bridge br0 --model virtio --persistent

detach-interface

功能:从虚拟机分离网络接口。
示例

virsh detach-interface myvm bridge --persistent

4. 网络管理命令

domifaddr

功能:获取虚拟机的网络接口地址。
示例

virsh domifaddr myvm

domiflist

功能:列出虚拟机的网络接口。
示例

virsh domiflist myvm

domifstat

功能:获取虚拟机网络接口的统计信息。
示例

virsh domifstat myvm

5. 控制台管理命令

console

功能:连接到虚拟机的控制台。
示例

virsh console myvm

6. 内存管理命令

setmaxmem

功能:设置虚拟机的最大内存。
示例

virsh setmaxmem myvm 2097152

setmem

功能:设置虚拟机的当前内存。
示例

virsh setmem myvm 1048576

7. CPU管理命令

setvcpus

功能:设置虚拟机的CPU数量。
示例

virsh setvcpus myvm 2

8. 迁移命令

migrate

功能:迁移虚拟机到另一个主机。
示例

virsh migrate myvm qemu+ssh://user@otherhost/system

9. 存储管理命令

blockcommit

功能:开始一个块提交操作。
示例

virsh blockcommit myvm vda

blockcopy

功能:开始一个块复制操作。
示例

virsh blockcopy myvm vda /path/to/newimage.img

blockjob

功能:管理活动的块操作。
示例

virsh blockjob myvm vda

10. 事件管理命令

event

功能:处理虚拟机事件。
示例

virsh event

11. 主机信息命令

nodeinfo

功能:获取主机信息。
示例

virsh nodeinfo

capabilities

功能:获取主机的硬件和软件功能。
示例

virsh capabilities
posted @ 2024-08-26 13:21  科里布  阅读(330)  评论(0)    收藏  举报