Linux virsh查看/管理虚拟机

使用virsh命令行管理KVM虚拟机
本文介绍了如何使用virsh工具进行KVM虚拟机的管理,包括查看服务器信息、虚拟机列表、开关机操作,以及设置虚拟机自动启动和强制关闭。通过virsh nodeinfo获取服务器详情,virsh list --all查看所有虚拟机,virsh start/reboot/shutdown/destroy控制虚拟机状态,使用autostart命令设置虚拟机开机启动。

1.virsh查看/管理虚拟机
问题
本案例要求熟悉KVM虚拟化的virsh管理工具的的基本使用,从命令行来操作虚拟机,完成以下基本任务:
1)查看KVM服务器信息
2)列出有哪些虚拟机、指定虚拟机的状态
3)基本的开关机操作
4)将虚拟机设置为自动运行
方案
virsh命令行管理的常见用法:
1)virsh:直接进交互模式
2)virsh nodeinfo:查看KVM节点(服务器)信息
3)virsh list:列出正在运行的虚拟机
4)virsh list --all:列出所有虚拟机(包括未启动的)
5)virsh dominfo 虚拟机名称:查看指定虚拟机的信息
6)virsh start 虚拟机名称:将指定的虚拟机开机
7)virsh reboot 虚拟机名称:将指定的虚拟机重启
8)virsh shutdown 虚拟机名称:将指定的虚拟机正常关机
9)virsh destroy 虚拟机名称:将指定的虚拟机强制关机(相当于拔电源)
10)virsh autostart 虚拟机名称:将指定的虚拟机设置随KVM自动开机
11)virsh autostart --disable 虚拟机名称:禁止自动开机
步骤
实现此案例需要按照如下步骤进行。
步骤一:直接使用virsh交互模式
执行不带任何参数的virsh命令,即可进入交互模式。在virsh交互模式下,可以快速、连续地执行多条虚拟机管理指令,不用每次都指定virsh,最后再exit退出;这种方式与在Shell命令行执行virsh时后面跟上虚拟机管理指令的作用是等效的。
[root@kvmsvr ~]# virsh //进入virsh交互模式
欢迎使用 virsh,虚拟化的交互式终端。

输入:‘help’ 来获得命令的帮助信息
‘quit’ 退出

virsh # list //查看所有开机的虚拟机
Id 名称 状态

3 rh6_n1 running

virsh # exit //退出
步骤二:查看虚拟机信息
1)查看KVM节点(服务器)信息
[root@kvmsvr ~]# virsh dominfo
错误:命令 ‘dominfo’ 需要 选项
[root@kvmsvr ~]# virsh nodeinfo
CPU 型号: x86_64
CPU: 2
CPU 频率: 2594 MHz
CPU socket: 1
每个 socket 的内核数: 2
每个内核的线程数: 1
NUMA 单元: 1
内存大小: 4048888 KiB
2)列出正在运行的虚拟机
[root@kvmsvr ~]# virsh list
Id 名称 状态

3 rh6_n1 running
3)列出所有虚拟机(包括未启动的)
[root@kvmsvr ~]# virsh list --all
Id 名称 状态

3 rh6_n1 running

  • testpc                         关闭
    

4)查看指定虚拟机的信息
[root@kvmsvr ~]# virsh dominfo rh6_n1
Id: 3
名称: rh6_n1
UUID: 0bd7cdcc-2579-9d5c-0513-700a36ba1b9c
OS 类型: hvm
状态: running
CPU: 1
CPU 时间: 240.9s
最大内存: 1048576 KiB
使用的内存: 1048576 KiB
Persistent: yes
自动启动: 禁用
Managed save: no
安全性模式: none
安全性 DOI: 0
步骤三:基本的开关机操作
1)将虚拟机rh6_n1正常关机
若指定的虚拟机已经在运行,可以通过virsh发送shutdown指令来关机:
[root@kvmsvr ~]# virsh shutdown rh6_n1 //关闭虚拟机rh6_n1
域 rh6_n1 被关闭
[root@kvmsvr ~]# virsh list --all //确认关闭结果(需等待至关机完成)
Id 名称 状态

  • rh6_n1                         关闭
    
  • testpc                         关闭
    

2)将虚拟机rh6_n1开机
针对处于关闭状态的虚拟机,可以通过virsh发送start指令来开机:
[root@kvmsvr ~]# virsh start rh6_n1 //开启虚拟机rh6_n1
域 rh6_n1 已开始
[root@kvmsvr ~]# virsh list --all //确认开机结果
Id 名称 状态

4 rh6_n1 running

  • testpc                         关闭
    

3)将虚拟机rh6_n1重启
针对启动完毕的正常虚拟机,可以通过virsh发送reboot指令来重启(虚拟机当前的操作系统及状态必须能够响应此请求):
[root@kvmsvr ~]# virsh reboot rh6_n1
域 rh6_n1 正在被重新启动
在重启指定虚拟机的时候,若要确认结果,可以通过virt-manager管理器来双击指定的虚拟机以观察重启响应过程,如图-1所示。
在这里插入图片描述
图-1
4)将虚拟机rh6_n1强制关机(相当于拔电源)
当正常关机或重启无法响应时,或者没有必要等待(比如重做系统)正常关机时,可以通过virsh发送destroy指令来强制关闭正在运行的虚拟机:
[root@kvmsvr ~]# virsh list --all //查看当前的虚拟机状态
Id 名称 状态

5 rh6_n1 running

  • testpc                         关闭
    

[root@kvmsvr ~]# virsh destroy rh6_n1 //强制关闭rh6_n1虚拟机
域 rh6_n1 被删除

[root@kvmsvr ~]# virsh list --all //确认关闭结果
Id 名称 状态

  • rh6_n1                         关闭
    
  • testpc                         关闭
    

5)虚拟机rh6_n1的自动开机设置
一台KVM虚拟机的“自动启动”状态,决定了当KVM服务器启动的时候,这台虚拟机是否也随之一起开机。启用此功能的virsh指令为autostart:
[root@kvmsvr ~]# virsh dominfo rh6_n1 //查看默认的状态
Id: -
名称: rh6_n1
… …
自动启动: 禁用 //不随KVM自动开机
… …

[root@kvmsvr ~]# virsh autostart rh6_n1 //设置rh6_n1为自启动
域 rh6_n1标记为自动开始

[root@kvmsvr ~]# virsh dominfo rh6_n1 //确认配置结果
Id: -
名称: rh6_n1
… …
自动启动: 启用 //随KVM自动开机
… …
若要关闭指定虚拟机的自动开机设置,需要执行virsh指令autostrt --disable:
[root@kvmsvr ~]# virsh autostart --disable rh6_n1 //取消rh6_n1的自启动
域 rh6_n1取消标记为自动开始

[root@kvmsvr ~]# virsh dominfo rh6_n1 //确认取消结果
Id: -
名称: rh6_n1
… …
自动启动: 禁用 //不随KVM自动开机
… …

### Linux环境下使用`virsh console`登录KVM虚拟机失败解决方案 当尝试通过 `virsh console` 连接到 KVM 虚拟机时出现问题,通常是因为虚拟机配置不正确或缺少必要的设置。以下是详细的排查和解决方法: #### 1. 检查虚拟机串口控制台配置 确保虚拟机已启用并正确配置了串口控制台设备。这可以通过编辑 XML 配置文件来完成。 ```bash virsh edit <vm-name> ``` 在 `<devices>` 标签内查找是否存在如下配置项[^1]: ```xml <serial type='pty'> <target port='0'/> </serial> <console type='pty'> <target type='serial' port='0'/> </console> ``` 如果不存在,则手动添加上述配置,并保存更改。 #### 2. 修改GRUB引导加载程序参数 对于基于 GRUB 的操作系统,在 `/etc/default/grub` 文件中加入以下两个选项以支持串行控制台输出: - `console=ttyS0,115200n8`: 将日志信息重定向到第一个串行端口 (ttyS0),波特率为 115200bps。 - `earlyprintk=serial,ttyS0,115200`: 启动早期打印功能以便于调试。 更新完成后需重新生成 grub.cfg 并重启系统使修改生效: ```bash sudo update-grub sudo reboot ``` #### 3. 使用virt-manager验证连接状态 有时直接使用命令行工具可能不如图形界面直观。可以考虑借助 virt-manager 来测试与目标 VM 的连接情况。它能够提供更丰富的错误提示信息帮助定位问题所在。 #### 4. 排除网络因素干扰 尽管 `virsh console` 是一种本地通信方式,但在某些情况下仍会受到防火墙或其他安全策略的影响。确认宿主机上没有任何阻止 PTY 设备正常工作的防护措施[^2]。 #### 5. 查看日志记录寻找线索 最后但同样重要的是查看 libvirt 和 qemu-kvm 日志文件,这些日志往往包含了大量有用的信息用于诊断故障原因。路径一般位于 `/var/log/libvirt/qemu/`. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值