Libvirt

Libvirt

支持多种虚拟化平台的库

https://libvirt.org/

安装:

$ sudo apt-get install libvirt-bin (包含virsh命令和libvirtd daemon)
// libvirtd在container中无法运行;在container中安装libvirt-bin可以获取virsh命令远程访问libvirt-bin server.

libvirt-bin拆分成了两个包:

libvirt-daemon-system
libvirt-clients

$ sudo apt-get install libvirt-dev # 库, python/go client依赖该库

$ sudo apt-get install virt-manager # windows管理工具

$ sudo apt-get install virt-view # ...

$ sudo service libvirt-bin restart

virsh

libvirt的命令行工具

$ virsh list --all    # 查看所有虚拟机
$ virsh list --all --name # 只看domain name.

$ virsh define /path/to/X.xml    # 从xml配置文件定义一个domain
$ virsh start     # 启动虚拟机
$ virsh reboot    # 重启虚拟机
$ virsh shutdown   # 关闭虚拟机
$ virsh destroy    # 强制关闭虚拟机
$ virsh undefine   # 移除虚拟机
$ virsh vncdisplay # 查看虚拟机的vnc信息,可以通过vnc访问.

$ virsh net-list --all # 查看所有网络
$ virsh net-define default.xml
$ virsh net-autostart default
$ virsh net-start default
$ virsh net-undefine default
$ virsh net-destroy default

# 批量操作vm
$ for vm in `virsh list --all --name`; do virsh undefine/destroy ${vm}; done

qemu-img

创建虚拟机的镜像文件:

$ qemu-img create -f qcow2 /path/to/name.qcow2 100G

libvirt-qemu

libvirt操作qemu/kvm.

本地:

qemu:///system
qemu:///session
qemu+unix:///system
qemu+unix:///session

ssh远程:

# libvirt-bin server上需要安装nc和libvirt-bin
$ sudo apt-get install netcat-openbsd
$ sudo update-alternatives --config nc // netcat-traditional避免使用默认安装

# ssh用户需要在libvirt和kvm组里
$ adduser username libvirtd
$ adduser username kvm

$ sudo apt-get install sshpass // 免密码访问

# client上需要安装openssh-clients
$ sshpass -p password virsh -c qemu+ssh://user@127.0.0.1/system list

tcp远程:

$ vim /etc/libvirt/libvirtd.conf:
listen_tls = 0          #禁用tls登录
listen_tcp = 1          #启用tcp方式登录
tcp_port = "16509"        #tcp端口16509
listen_addr = "0.0.0.0"         # 允许任意ip访问
auth_tcp = "none"          #TCP不使用认证

$ vim /etc/default/libvirt-bin
start_libvirtd="yes"
libvirtd_opts="-l --config /etc/libvirt/libvirtd.conf"

$ sudo service libvirt-bin restart

$ virsh -c qemu+tcp://127.0.0.1:16509/system list

libvirtd配置

配置libvirtd:

$ vim /etc/libvirt/libvirtd.conf

max_clients = 1024         #最大总的连接客户数1024
min_workers = 50          #libvirtd启动时,初始的工作线程数目
max_workers = 200       #同上,最大数目
max_requests = 1000     
#最大同时支持的RPC调用,必须大于等于max_workers
max_client_requests = 200   #每个客户端支持的最大连接数
Designed by Canux