介绍
kvm: 全称“基于内核的虚拟机”,是一个开源的软件,基于内核的虚拟化技术,实际是嵌入系统的一个虚拟化模块,通过优化内核来使用虚拟技术,该内核模块使得Linux变成一个hypervisor,虚拟机使用Linux自身的调度器进行管理。(就是说Linux要部署一个kvm模块,他才能变成hypervisor层)。
kvm是基于CPU的类型进行管理。
- 用户空间:指的是用户得到一个虚拟机。
- 内核空间:指的是你的kvm宿主机里面它部署的虚拟化的软件,是通过驱动内核来实现的。
组件说明:
- 虚机:指的是用户的得到一个虚拟机层。
- Guest:指的我们虚拟机,也称VM。
- kvm:运行在内核空间,提供CPU和内存的虚拟。
- QEMU(扩展软件):帮我们提供了虚拟机的I/O设备(CPU 内存 显示器),其他的硬件虚拟化。
- kvm有一个内核模块叫kvm.ko,它来提供我们CPU和内存。
- Libvirt:kvm的管理工具。
- virt-viewer:轻量级桌面工具。
- bridge-utils :网桥工具。
- virt-install:KVM虚拟机的管理主要是通过virsh命令对虚拟机进行管理。
环境要求:
- KVM需要硬件⽀持, 所以需要开启虚拟化⽀持。
- 硬件设备直接在BIOS设置开启CPU虚拟化。
- 个⼈电脑同样进⼊BIOS开启虚拟化⽀持。
- VM需要找到对应虚拟机开启对应的VT-EPT虚拟化技术。
部署kvm
安装
1 2 3 4 5 6 7 8
| yum install -y qemu-kvm libvirt virt-install bridge-utils virt-viewer
lsmod |grep kvm
systemctl start libvirtd systemctl enable libvirtd
|
修改网卡
vim /etc/sysconfig/network-scripts/ifcfg-ens33
1 2 3 4 5 6
| NAME=ens33 DEVICE=ens33 BOOTPROTO=none NM_CONTROLLED=no ONBOOT=yes BRIDGE=br0
|
vim ifcfg-br0
设置为本机IP,当作网桥
1 2 3 4 5 6 7 8 9 10 11 12
| NAME=br0 DEVICE=br0 ONBOOT=yes NETBOOT=yes IPV6INIT=no BOOTPROTO=static NM_CONTROLLED=no TYPE=Bridge IPADDR=192.168.0.127 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 DNS1=8.8.8.8
|
重启网卡
1
| systemctl restart network
|
查看网桥
创建虚拟机
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| mkdir -p /data/{iso,kvm}
cd /data/kvm/; qemu-img create -f qcow2 /data/kvm/disk/flink02.qcow2 200G
virt-install -n flink02 --arch=x86_64 --vcpus=4 -r 16384 --disk path=/data/kvm/disk/flink02.qcow2,io=native,bus=virtio,cache=none --network bridge=br0,model=virtio --os-type=linux --os-variant=rhel7 --cdrom /data/ISO/CentOS-7-x86_64-DVD-1611.iso --vnc --vncport=7001 --vnclisten=0.0.0.0 --video=vga
virsh list
|
安装vnc
linux下载vnc服务端
1 2 3 4 5
| yum install -y tigervnc-server tigervnc-server-module
vncserver
|
在windows: 下载vncviewer客户端
打开vncviewer,连接虚拟机,端口为创建系统时指定的7000,可以看到图形化安装显示,安装系统。
注:配置ip,需要同一局域网,如果不同,需要设置路由记录,之后就可以使用ssh工具连接虚拟机了。
查看vnc密码
1 2
| cd /etc/libvirt/qemu vim 虚拟机配置文件
|
修改虚拟机root密码
1 2 3 4 5 6 7 8 9 10 11 12 13
| yum -y install libguestfs-tools
virsh xxxx shutdown
virt-edit xxx /etc/shadow
virsh xxxx start
|
扩大虚拟机内存和cpu
方法一:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| virsh dominfo etc01
virsh shutdown etc01
virsh setmaxmem etc01 8388608
virsh start etc01
virsh setmem etc01 8388608
virsh edit etc01
|
方法二:
磁盘扩容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| virsh destroy test1
qemu-img resize /data/kvm/disk/test1.qcow2 +100G
qemu-img info /data/kvm/disk/test1.qcow2
virsh start test1
fdisk -l
fdisk /dev/vda3
partprobe
pvcreate /dev/vda3
vgdisplay vgextend centos /dev/vda3
lvdisplay lvresize -L +50G /dev/mapper/centos-root
resize2fs /dev/mapper/centos-root
|
kvm常用命令
命令帮助
查看虚拟机状态
关机
强制关闭电源
通过配置文件创建虚拟机
1
| virsh create /etc/libvirt/qemu/win2k8r2.xml
|
设置虚拟机开机自启
1 2 3 4 5 6 7 8
| virsh autostart win2k8r2
virsh autostart --disable win2k8r2
ll /etc/libvirt/qemu/autostart/
|
删除虚拟机
1 2
| virsh undefine win2k8r2
|
导出虚拟机配置文件
1
| virsh dumpxml win2k8r2 > /etc/libvirt/qemu/win2k8r2_bak.xml
|
通过配置文件恢复原KVM虚拟机
1 2
| mv /etc/libvirt/qemu/win2k8r2_bak.xml /etc/libvirt/qemu/win2k8r2.xml virsh define /etc/libvirt/qemu/win2k8r2.xml
|
编辑配置文件
挂起
恢复