文章

kvm常用操作命令

本文档介绍 kvm常用操作命令 的相关内容。

安装软件包
yum -y install qemu-kvm libvirt bridge-utils virt-manager qemu-kvm-tools virt-install virt-viewer virt-v2v libguestfs-tools mesa-libGLU xorg-x11-xauth mesa-dri-drivers mesa-libGL-devel spice-vdagent dejavu-lgc-sans-fonts x11for yes
启动libvirt
systemctl enable libvirtd systemctl start libvirtd systemctl status libvirtd
删除Libvirtd服务的virbr0网桥
## 出现虚拟网卡是因为安装时启用了 libvirtd 服务后生成的 virsh net-list virsh net-destroy default virsh net-undefine default systemctl restart libvirtd.service 当然也可以真的删除文件 rm -f /etc/libvirt/qemu/networks/autostart/default.xml
创建kvm空白硬盘
qemu-img create -f raw /opt/kvm.raw 10G
查看磁盘信息
qemu-img info /opt/kvm.raw
查看KVM进程
ps aux |grep kvm
挂载光盘
dd if=/dev/cdrom of=/opt/centos.iso
创建lvm磁盘
# 创建一块50G的lvm磁盘 lvcreate -n testpci01 -L 50G lvm-sas # 将vg所有的容量创建到lvm磁盘 lvcreate -n testpci02 -l 100%FREE lvm-sas
创建主机
qemu-img create -f qcow2 /opt/kvm/bjdz-cloud-ctl01.qcow2 100G virt-install -n luoshebei \ boot network,cdrom,menu=on -r 2048 \ vcpus=1 os-type=linux \ c /iso/CentOS-6.5-x86_64-minimal.iso \ f /dev/vg1/luoshebei bridge=br0,model=virtio \ vnc vncport=5911 vnclisten=0.0.0.0 # pci 透传 virt-install --name testpci001 \ -virt-type=kvm \ -vcpus=2 \ -ram 2048 \ -file /dev/lvm-sas/testpci01,size=50,bus=virtio,cache=none \ -accelerate --clock offset=localtime \ -network none --host-device 81:0a.0 \ -os-type=linux --os-variant=rhel7.7 \ -cdrom /data/isos/CentOS-7-x86_64-DVD-1908.iso \ -vnc --vncport=5910 --vnclisten=0.0.0.0 \ -noautoconsole --wait 0 # 可以直接使用vnc连接(lvm virt-install --force \ -name centos75 \ -virt-type=kvm \ -vcpus=2 \ -ram 2048 \ -file /dev/lvm-ssd/centos75-88220,size=20,bus=virtio,cache=none \ -accelerate --clock offset=localtime \ -network bridge=br0,model=virtio \ -os-type=linux \ -os-variant=rhel7.5 \ -cdrom /data/iso/CentOS-6.9-x86_64-bin-DVD1.iso \ -vnc --vncport=5910 --vnclisten=0.0.0.0 \ -noautoconsole --wait 0 # 可以直接使用vnc连接(file) virt-install --force \ -name centos69 \ -virt-type=kvm \ -vcpus=2 \ -ram 2048 \ -disk /data/vms/centos69.qcow2,format=qcow2,size=4,bus=virtio,cache=none \ -accelerate --clock offset=localtime \ -network bridge=br0,model=virtio \ -os-type=linux \ -os-variant=rhel6.9 \ -cdrom /data/iso/CentOS-6.9-x86_64-bin-DVD1.iso \ -vnc --vncport=5910 --vnclisten=0.0.0.0 \ -noautoconsole --wait 0 两光盘 virt-install --name=ws2012r2 --ram=2048 --cpu=host --vcpus=2 \ -os-type=windows --os-variant=win2k12r2 \ -disk ws2012r2-dc.qcow2,bus=virtio \ -disk cn_windows_server_2012_r2_datacenter_with_update_x64_dvd_4048415.iso,device=cdrom,bus=ide \ -disk virtio-win-0.1.126.iso,device=cdrom,bus=ide \ -disk CloudbaseInitSetup_0.9.11_x64.iso,device=cdrom,bus=ide \ -network network=default,model=virtio \ -graphics vnc,listen=0.0.0.0 --noautoconsole virt-install --connect qemu:///system \ -name ws2012 --ram 2048 --vcpus 2 \ -network network=default,model=virtio \ -disk path=ws2012.qcow2,format=qcow2,device=disk,bus=virtio \ -cdrom /path/to/en_windows_server_2012_x64_dvd.iso \ -disk path=/path/to/virtio-win-0.1-XX.iso,device=cdrom \ -vnc --os-type windows --os-variant win2k12 \ -os-distro windows --os-version 2012 virt-install --force \ -name bjdz-cloud-ctl01-217_201 \ -ram 16384 --vcpus 8 --os-type=linux \ -cdrom=/opt/CentOS-7-x86_64-DVD-1611.iso \ -disk path=/opt/kvm/bjdz-cloud-ctl01.qcow2,bus=virtio,cache=none \ -accelerate --clock offset=localtime --network bridge=br1,model=virtio \ -vnc --vnclisten=0.0.0.0 --wait 0 virt-install --force \ -name node01 \ -memory 16384 --vcpus 8 --os-type=linux \ -cdrom=/data/iso/CentOS-7-x86_64-DVD-1804.iso \ -disk path=/data/vms/node01.qcow2,bus=virtio,cache=none \ -accelerate --clock offset=localtime --network bridge=br0,model=virtio \ -vnc --vnclisten=0.0.0.0 --cpu host-passthrough --wait 0 # --cpu host-passthrough 嵌套虚拟化 virt-install 参数说明 -name指定虚拟机名称 -ram分配内存大小。 -vcpus分配CPU核心数,最大与实体机CPU核心数相同 -disk指定虚拟机镜像,size指定分配大小单位为Gbus=virtio 驱动方式。 -network网络类型,network=default 默认网络,bridge=br0 bridge网桥网络,model=virtio 驱动方式 -accelerate加速 -cdrom指定安装镜像iso的路径 -vnc启用VNC远程管理,一般安装系统都要启用。 -vncport指定VNC监控端口,默认端口为5900,端口不能重复。 -vnclisten指定VNC绑定IP,默认绑定127.0.0.1,这里改为0.0.0.0 -os-type=linux,windows 指定系统类型 -os-variant=rhel6 指定系统类型和版本 -noautoconsole 不启动virt-viewer 窗口 来自网络 virt-install --name=oeltest01 --ram=512 --vcpus=1 \ -disk path=/data/test02.img,size=7,bus=virtio \ -accelerate --cdrom/data/iso/oel58x64.iso --vnc \ -vncport=5910 --vnclisten=0.0.0.0 \ -network bridge=br0,model=virtio \ -noautoconsole virt-install --name=kvm-demo --ram=512 --vcpus=1 \ -disk path=/data/test01.img,size=10,bus=virtio \ -accelerate --cdrom=/isos/CentOS-7-x86_64-DVD-1611.iso \ -vnc --vncport=5910 --vnclisten=0.0.0.0 \ -network network=default,model=virtio \ -noautoconsole
压缩镜像文件
virt-sparsify --tmp ./ --compress CentOS-6.6-x86_64.qcow2 CentOS-6.6-x86_64-Cloud.qcow2 qemu-img convert -c -O qcow2 win7_x64.qcow2 win7_x64_new.qcow2 # 执行清理任务 virt-sysprep -d $Kname # 压缩 # cd /kvm/img/ virt-sparsify --compress $Kname.qcow2 $Kname-.qcow2
实时监控cpu性能

yum install sysstat -y

安装后才有该工具 mpstat 1

查看是否安装KVM包模块
lsmod |grep kvm
查看是否支持KVM
grep -E ' (vmx|svm)' /proc/cpuinfo

##########可选安装##########

tunctl 和 bridge-utils用于虚拟机网桥相关的内容,tunctl 创建tag相关

添加tunctl源
# vim /etc/yum.repo.d/nux-misc.repo [nux-misc] name=Nux Misc baseurl=http://li.nux.ro/download/nux/misc/el7/x86_64/ enabled=0 gpgcheck=1 gpgkey=http://example.com/download/nux/RPM-GPG-KEY-nux.ro
安装tunctl
yum --enablerepo=nux-misc install tunctl
  • kvm相关安装包及其作用
  • qemu-kvm 主要的KVM程序包
  • python-virtinst 创建虚拟机所需要的命令行工具和程序库
  • virt-manager GUI虚拟机管理工具
  • virt-top 虚拟机统计命令
  • virt-viewer GUI连接程序,连接到已配置好的虚拟机
  • libvirt C语言工具包,提供libvirt服务
  • libvirt-client 为虚拟客户机提供的C语言工具包
  • virt-install 基于libvirt服务的虚拟机创建命令
  • bridge-utils 创建和管理桥接设备的工具
安装系统可以通过Kickstart 来简单安装 回答文件
/root/anaconda-ks.cfg
指定磁盘安装磁盘安装虚拟机
# qemu-img create -f qcow2 vm1-disk1.qcow2 10G # virt-install \ --name=vm1 \ -disk path=/vm/vm1-disk1.qcow2 \ -vcpus=1 --ram=1024 \ -cdrom=/iso/centos.iso \ -network network=default \ -graphics vnc,listen=0.0.0.0 \ -os-type=linux \ -os-variant=rhel6
指定网络位置安装
-location=http://192.168.88.201/os/centos64i386/
pxe安装
# virt-install --hvm --connect qemu:///system \ -network=bridge:br0 --pxe --graphics spice \ --name=rhel6-machine --ram=756 --vcpus=4 \ -os-type=linux --os-variant=rhel6 \ -disk path=/var/lib/libvirt/images/rhel6-machine.img,size=10
查看所有虚拟机
# virsh list --all
删除Libvirtd服务的virbr0网桥
## 出现虚拟网卡是因为安装时启用了 libvirtd 服务后生成的 virsh net-list virsh net-destroy default virsh net-undefine default systemctl restart libvirtd.service 当然也可以真的删除文件 rm -f /etc/libvirt/qemu/networks/autostart/default.xml
kvm 虚拟机 windows 7 显示2cpu
virt-manager 中配置CPU高级,设置 sockets=2,cores=1,threads=2 # sockets = 2 为cpu的插槽 # cores = 1 为cpu的核心数 # threads = 1 openstack flavor create --id 2 --vcpus 8 --ram 8192 --disk 80 m2.win7 openstack flavor set m2.win7 --property key=hw:cpu_max_sockets=2
本文由作者按照 CC BY 4.0 进行授权