原文地址https://www.madbull.site/?p2453欢迎参观我的 网站 无敌牛 – 技术/著作/典籍/分享等什么是virshvirsh是libvirt 虚拟化管理套件提供的命令行客户端。它通过与libvirtd后台服务通信实现对本地或远程虚拟机的控制。支持 KVM、Xen、LXC、VMware 等多种虚拟化平台本文以 KVM 为主。优势脚本友好、无需图形界面、支持远程管理、功能全面。一、准备工作确保已安装必要组件# CentOS/RHELsudo yum install libvirt virt-install qemu-kvm# Ubuntu/Debiansudo apt install libvirt-daemon-system libvirt-clients qemu-kvm virtinst启动并启用 libvirt 服务sudo systemctl enable --now libvirtd验证是否正常virsh list --all如果输出为空但无报错说明环境已就绪二、常用virsh操作速查1. 查看虚拟机状态# 列出所有虚拟机包括关机的virsh list --all# 仅列出运行中的虚拟机virsh list输出示例Id Name State ------------------------------ 2 ubuntu22 running - centos7 shut off2. 启动 / 关闭 / 重启虚拟机# 启动虚拟机virsh start vm-name# 正常关机发送 ACPI 信号virsh shutdown vm-name# 强制断电相当于拔电源virsh destroy vm-name# 重启virsh reboot vm-name建议优先使用shutdown避免文件系统损坏。3. 进入虚拟机控制台# 连接到虚拟机的串行控制台需 VM 内配置 gettyvirsh console vm-name# 退出 console按 Ctrl ]英文输入法下注意图形界面虚拟机通常不响应console建议用 SSH 登录。4. 暂停 / 恢复虚拟机# 暂停冻结 CPU 和内存不释放资源virsh suspend vm-name# 恢复运行virsh resume vm-name适用于临时“冻结”任务比如调试或资源调度。5. 删除虚拟机谨慎# 先关机virsh destroy vm-name# 如果正在运行# 或virsh shutdown vm-name# 删除定义从 libvirt 中移除virsh undefine vm-name# 手动删除磁盘文件可选需自行清理rm /var/lib/libvirt/images/vm-name.qcow2undefine不会自动删除磁盘文件务必手动清理存储。6. 查看虚拟机信息# 查看详细配置XML 格式virsh dumpxml vm-name# 查看 CPU、内存使用virsh dominfo vm-name# 查看磁盘和网卡设备virsh domblklist vm-name# 磁盘virsh domiflist vm-name# 网络接口7. 编辑虚拟机配置# 在线修改 XML 配置保存后可能需重启生效virsh edit vm-name常用修改增加 CPU / 内存添加磁盘或网卡修改启动顺序修改后可用virsh define重新加载但edit已自动完成。8. 自动启动开机自启# 设置虚拟机随宿主机启动virsh autostart vm-name# 取消自动启动virsh autostart --disable vm-name配置文件位于/etc/libvirt/qemu/autostart/。三、高级技巧进阶远程管理其他主机的虚拟机# 通过 SSH 连接远程 libvirtvirsh -c qemussh://userremote-host/system list# 示例启动远程 VMvirsh -c qemussh://admin192.168.1.100/system start web-server需配置 SSH 免密登录并确保远程主机开启 libvirt TCP 监听或使用 SSH 通道。批量操作结合 shell 脚本# 关闭所有虚拟机for vm in $(virsh list --name); do virsh shutdown $vm done四、常见问题Qvirsh报错 “failed to connect to the hypervisor”A检查libvirtd是否运行systemctl status libvirtdQ普通用户无法使用virshA将用户加入libvirt或kvm用户组sudo usermod -aG libvirt $(whoami)# 然后重新登录总结操作命令列出 VMvirsh list --all启动virsh start name关机virsh shutdown name强制停止virsh destroy name自启动virsh autostart name删除virsh undefine name 手动删磁盘编辑配置virsh edit namevirsh是 KVM 虚拟化运维的基石。掌握这些基本命令你就能在没有图形界面的服务器上轻松管理数十台虚拟机
virsh工具基础使用
发布时间:2026/5/26 3:04:35
原文地址https://www.madbull.site/?p2453欢迎参观我的 网站 无敌牛 – 技术/著作/典籍/分享等什么是virshvirsh是libvirt 虚拟化管理套件提供的命令行客户端。它通过与libvirtd后台服务通信实现对本地或远程虚拟机的控制。支持 KVM、Xen、LXC、VMware 等多种虚拟化平台本文以 KVM 为主。优势脚本友好、无需图形界面、支持远程管理、功能全面。一、准备工作确保已安装必要组件# CentOS/RHELsudo yum install libvirt virt-install qemu-kvm# Ubuntu/Debiansudo apt install libvirt-daemon-system libvirt-clients qemu-kvm virtinst启动并启用 libvirt 服务sudo systemctl enable --now libvirtd验证是否正常virsh list --all如果输出为空但无报错说明环境已就绪二、常用virsh操作速查1. 查看虚拟机状态# 列出所有虚拟机包括关机的virsh list --all# 仅列出运行中的虚拟机virsh list输出示例Id Name State ------------------------------ 2 ubuntu22 running - centos7 shut off2. 启动 / 关闭 / 重启虚拟机# 启动虚拟机virsh start vm-name# 正常关机发送 ACPI 信号virsh shutdown vm-name# 强制断电相当于拔电源virsh destroy vm-name# 重启virsh reboot vm-name建议优先使用shutdown避免文件系统损坏。3. 进入虚拟机控制台# 连接到虚拟机的串行控制台需 VM 内配置 gettyvirsh console vm-name# 退出 console按 Ctrl ]英文输入法下注意图形界面虚拟机通常不响应console建议用 SSH 登录。4. 暂停 / 恢复虚拟机# 暂停冻结 CPU 和内存不释放资源virsh suspend vm-name# 恢复运行virsh resume vm-name适用于临时“冻结”任务比如调试或资源调度。5. 删除虚拟机谨慎# 先关机virsh destroy vm-name# 如果正在运行# 或virsh shutdown vm-name# 删除定义从 libvirt 中移除virsh undefine vm-name# 手动删除磁盘文件可选需自行清理rm /var/lib/libvirt/images/vm-name.qcow2undefine不会自动删除磁盘文件务必手动清理存储。6. 查看虚拟机信息# 查看详细配置XML 格式virsh dumpxml vm-name# 查看 CPU、内存使用virsh dominfo vm-name# 查看磁盘和网卡设备virsh domblklist vm-name# 磁盘virsh domiflist vm-name# 网络接口7. 编辑虚拟机配置# 在线修改 XML 配置保存后可能需重启生效virsh edit vm-name常用修改增加 CPU / 内存添加磁盘或网卡修改启动顺序修改后可用virsh define重新加载但edit已自动完成。8. 自动启动开机自启# 设置虚拟机随宿主机启动virsh autostart vm-name# 取消自动启动virsh autostart --disable vm-name配置文件位于/etc/libvirt/qemu/autostart/。三、高级技巧进阶远程管理其他主机的虚拟机# 通过 SSH 连接远程 libvirtvirsh -c qemussh://userremote-host/system list# 示例启动远程 VMvirsh -c qemussh://admin192.168.1.100/system start web-server需配置 SSH 免密登录并确保远程主机开启 libvirt TCP 监听或使用 SSH 通道。批量操作结合 shell 脚本# 关闭所有虚拟机for vm in $(virsh list --name); do virsh shutdown $vm done四、常见问题Qvirsh报错 “failed to connect to the hypervisor”A检查libvirtd是否运行systemctl status libvirtdQ普通用户无法使用virshA将用户加入libvirt或kvm用户组sudo usermod -aG libvirt $(whoami)# 然后重新登录总结操作命令列出 VMvirsh list --all启动virsh start name关机virsh shutdown name强制停止virsh destroy name自启动virsh autostart name删除virsh undefine name 手动删磁盘编辑配置virsh edit namevirsh是 KVM 虚拟化运维的基石。掌握这些基本命令你就能在没有图形界面的服务器上轻松管理数十台虚拟机