libvirt

张开发
2026/4/16 19:47:19 15 分钟阅读

分享文章

libvirt
libvirt是一套开源、跨 Hypervisor 的虚拟化管理工具集提供统一 API、守护进程与命令行用于管理虚拟机、虚拟网络、存储池等资源。核心定位与目标统一抽象屏蔽底层 Hypervisor 差异用一套接口管理多种虚拟化技术。安全与远程通过守护进程间接访问 Hypervisor支持本地 / 远程安全管理。全生命周期覆盖虚拟机创建、启动、停止、迁移、快照、监控等。支持的 HypervisorKVM/QEMULinux 主流Xen、LXC、OpenVZ、BhyveVMware ESXi/Workstation、VirtualBox、Hyper-V、PowerVM核心架构与组件libvirt 采用客户端 - 服务器C/S分层架构1. 核心三组件libvirt C 库提供稳定 API支持多语言绑定Python、Java、Go 等。libvirtd 守护进程运行在宿主机监听 UNIX 套接字 / TCP处理请求、加载驱动、管理资源。virsh命令行工具交互式 / 脚本化管理虚拟机。2. 分层结构应用层virsh、virt-manager、oVirt、OpenStack 等API 层libvirt 库C 及绑定服务层libvirtd 守护进程驱动层对接各 Hypervisor 的驱动qemu、xen、lxc 等Hypervisor 层KVM、Xen、VMware 等3. 关键对象DomainDomainlibvirt 对虚拟机的抽象用XML描述配置CPU、内存、磁盘、网络等。常用工具virsh命令行核心工具见下文常用命令virt-manager图形化管理界面GTKvirt-install命令行快速创建并安装虚拟机virt-viewer虚拟机控制台查看virt-top虚拟化资源监控libvirt与OpenStackOpenStack 中libvirt是Nova 计算服务的核心底层驱动负责对接 KVM/QEMU 等 Hypervisor统一管理虚拟机生命周期、资源与网络。核心架构Nova libvirt KVM1. 整体角色NovaOpenStack 计算服务对外提供虚拟机 API通过LibvirtDriver调用 libvirt。libvirt中间管理层提供统一 API屏蔽 KVM/QEMU 细节管理 Domain、网络、存储。KVM/QEMU底层 Hypervisor负责 CPU / 内存虚拟化KVM与 I/O 设备模拟QEMU。2. 调用链路创建虚拟机OpenStack API → Nova API → Nova Scheduler → Nova ComputeNova Compute加载libvirt.LibvirtDriver通过libvirt-python连接本地libvirtdqemu:///systemlibvirt 生成 QEMU 命令行与 XML 配置启动 QEMU 进程QEMU 与 KVM 内核模块交互创建并运行虚拟机3. 关键组件与路径Nova 驱动/opt/stack/nova/nova/virt/libvirt/driver.py核心实现libvirt 配置/etc/libvirt/libvirtd.conf、/etc/libvirt/qemu.conf虚拟机 XML/var/lib/libvirt/qemu/日志/var/log/libvirt/qemu/INSTANCE_NAME.log、/var/log/nova/nova-compute.logvirsh 常用命令以 KVM 为例连接与基础virsh -c qemu:///system # 连接本地系统级KVMroot virsh list # 列出运行中虚拟机 virsh list --all # 列出所有虚拟机含关机 virsh capabilities # 查看宿主机虚拟化能力虚拟机生命周期virsh define vm.xml # 定义持久化虚拟机关机 virsh create vm.xml # 创建临时虚拟机立即运行 virsh start vm-name # 启动虚拟机 virsh shutdown vm-name # 优雅关机 virsh destroy vm-name # 强制关机 virsh reboot vm-name # 重启 virsh suspend vm-name # 暂停 virsh resume vm-name # 恢复 virsh undefine vm-name # 删除定义保留磁盘信息与配置virsh dominfo vm-name # 虚拟机基本信息 virsh domstate vm-name # 状态 virsh dumpxml vm-name # 导出XML配置 virsh edit vm-name # 编辑XML配置 virsh setmem vm-name 2G # 设置内存关机状态 virsh setvcpus vm-name 4 # 设置vCPU关机状态网络与存储virsh net-list --all # 虚拟网络 virsh pool-list --all # 存储池典型使用场景单机虚拟化个人 / 开发环境管理 KVM 虚拟机数据中心运维批量管理多台宿主机与虚拟机云平台构建作为 OpenStack、oVirt 等的底层虚拟化管理层自动化与编排通过 API / 脚本实现虚拟机自动化部署与运维配置与安全主配置/etc/libvirt/libvirtd.conf虚拟机 XML/etc/libvirt/qemu/远程连接支持 TLS、SASL、SSH 等安全认证环境部署1安装虚拟化组件CentOS/RHEL/Rockyyum install -y qemu-kvm libvirt virt-install virt-manager virt-viewerUbuntu/Debianapt install -y qemu-kvm libvirt-daemon-system libvirt-clients virtinst virt-manager2启动并开机自启 libvirtdsystemctl enable --now libvirtd systemctl status libvirtd3检查虚拟化是否开启virt-host-validate全部PASS即可。快速创建一台虚拟机示例创建 CentOS7 虚拟机virt-install \ --namecentos7 \ --vcpus2 \ --memory2048 \ --disk path/var/lib/libvirt/images/centos7.qcow2,size20,formatqcow2 \ --network networkdefault \ --os-variantrhel7 \ --cdrom/root/CentOS-7-x86_64-Minimal.iso \ --graphics vnc,listen0.0.0.0,port5910 \ --noautoconsole参数说明--name虚拟机名--vcpus/--memoryCPU 内存--disk磁盘路径、大小、格式qcow2 支持快照--network default使用 libvirt 默认 NAT 网络--graphics vnc开启 VNC 远程安装然后用 VNC 连IP:5910装系统。virsh 日常管理查看虚拟机virsh list # 运行中 virsh list --all # 全部开关机virsh start centos7 virsh shutdown centos7 virsh reboot centos7 virsh destroy centos7 # 强制断电查看 / 修改配置virsh dominfo centos7 # 信息 virsh dumpxml centos7 # 导出完整XML virsh edit centos7 # 编辑配置自动校验自启动virsh autostart centos7 # 开机自启 virsh autostart --disable centos7克隆虚拟机virsh shutdown centos7 virt-clone --original centos7 --name centos7-clone --file /var/lib/libvirt/images/centos7-clone.qcow2存储池管理查看存储virsh pool-list --all virsh pool-info default创建目录型存储池virsh pool-define-as vm-pool dir --target /data/vm-images virsh pool-build vm-pool virsh pool-start vm-pool virsh pool-autostart vm-pool网络管理default NAT 网络virsh net-list --all virsh net-info default virsh net-dhcp-leases default # 看虚拟机IP重启网络virsh net-destroy default virsh net-start default快照qcow2 专用创建快照virsh snapshot-create-as centos7 --name snap1查看 / 回滚 / 删除virsh snapshot-list centos7 virsh snapshot-revert centos7 snap1 virsh snapshot-delete centos7 snap1热升级在线改配置在线扩内存virsh setmem centos7 4G --live virsh setmaxmem centos7 8G --config在线加 CPUvirsh setvcpus centos7 4 --live远程连接 libvirt方式 1SSH最简单安全virsh -c qemussh://root192.168.1.100/system方式 2TCP不推荐公网修改/etc/libvirt/libvirtd.conflisten_tls 0 listen_tcp 1 tcp_port 16509 auth_tcp none重启 libvirtd 后virsh -c qemutcp://192.168.1.100/system

更多文章