查看是否支持
egrep "svm|vmx" /proc/cpuinfo |uniq
清理干净环境
yum remove libvirt* virt-* qemu-kvm* -y
libvirt # 虚拟机管理 virt # 虚拟机安装克隆 qemu-kvm # 管理虚拟机磁盘
安装软件
yum install libvirt -y
yum install qemu-kvm -y
systemctl enable libvirtd && systemctl restart libvirtd
# 启动libvitd服务
查看一下模块加载情况
lsmod |egrep 'kvm|tun'
tun 31621 2 vhost_net kvm_intel 170086 0 kvm 566340 1 kvm_intel irqbypass 13503 1 kvm
virtio驱动
wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo
yum install virtio-win -y
# 通过yum源下载
rpm -ql virtio-win | grep iso
# 查看virtio-win提供的驱动
/usr/share/virtio-win/virtio-win-0.1.171.iso
/usr/share/virtio-win/virtio-win.iso
wget -c https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
# 下载最新稳定版
命令创建虚拟机
yum install virt-install
centos7
virt-install \
--name=centos-1 \
--ram 2048 --vcpus=1 \
--disk path=/home/kvmos/images/centos7-1.qcow2,size=20,format=qcow2,bus=virtio \
--location=/home/kvmos/iso/CentOS-7-x86_64-Minimal-1908.iso \
--network bridge=virbr0,model=virtio \
--vnc --vnclisten=0.0.0.0 --vncport=5900,password=123456 \
--autostart \
-d
# name 是虚拟机名称
# size 是系统盘大小G
# bridge是桥接网卡名字
# -d是debug输出信息
# autostart 开机启动
win2008
virt-install \
--name=win2008 \
--accelerate \
--os-type=windows \
--os-variant=win2k8 \
--vcpus=2 --memory 8192 \
--network bridge=virbr0,model=virtio \
--disk path=/home/kvmos/iso/cn_windows_server_2008_r2_x64_dvd_617598.iso,device=cdrom \
--disk path=/home/kvmos/iso/virtio-win.iso,device=cdrom \
--disk path=/home/kvmos/images/win2008.qcow2,size=60,format=raw,bus=virtio \
--graphics vnc,listen=0.0.0.0,port=5900,password=123456 --noautoconsole \
--autostart \
-d
win7
virt-install \
--accelerate \
--name windows7 \
--ram 4096 \
--vcpus=4 \
--controller type=scsi,model=virtio-scsi \
--disk path=/data/img/windows7.qcow2,size=60,format=qcow2,bus=virtio \
--disk device=cdrom,path=/data/iso/cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso \
--disk device=cdrom,path=/data/iso/virtio-win-0.1.171.iso \
--graphics vnc,listen=0.0.0.0,port=5900,password=123456 --noautoconsole \
--network bridge=virbr0,model=virtio \
--os-type=windows \
--os-variant=win7 \
--autostart \
-d
windows7 配置详情
iptables -I FORWARD -m state -d 192.168.122.0/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -I PREROUTING -p tcp --dport 3389 -j DNAT --to-destination 192.168.122.99:3389
# 虚拟机默认使用NAT网络需要iptables转发端口
启动配置管理
virsh edit windows7
# 手动编辑xml文件
# 启动boot
... ...
# 光驱加载镜像
virsh命令 (例子:主机vm-1)
virsh list --all # 查看主机列表
virsh dominfo vm-1 # 查看主机信息
virsh start vm-1 # 启动虚拟机
virsh shutdown vm-1 # 关闭虚拟机
virsh destroy vm-1 # 强制关闭
virsh undefine vm-1 # 删除虚拟机,只删配置文件磁盘需要手动删
rm /home/kvmos/images/vm-1.raw # 删除镜像文件
virsh define name.xml #导入备份的xml配置
virsh edit vm-1 #修改配置文件,带语法检查 (/etc/libvirt/qemu/)
virsh domrename vm-1 Test-1 # 修改主机名
virsh vncdisplay 3 # 查看主机或者id的vnc端口,0 即为 5900 ,以此类推 :1为5901端口
virsh autostart name #开机自启动,原理配置软连接实现
virsh autostart --disable name #取消开机启动
brctl show #查看桥接网路
KVM格式转换 快照管理
raw:裸格式,占用空间大,不支持快照,性能好 qcow2:qemu copy on write(qemu写时复制,thin)支持快照,性能较raw稍差
qemu-img info #查看磁盘信息
qemu-img convert -f raw -O qcow2 name.raw name.qcow2 #转换格式,支持vmdk
virsh snapshot-create #快照
virsh snapshot-list #快照列表,快照直接放在虚拟磁盘中
virsh snapshot-delete vmname --snapshotname #删除快照,删除快照文件不会变小
virsh snapshot-revert vmname #还原快照
VNC 远程连接
VNC server: 60.16.xx.xx:5900
centos7
win2008
win7