一、环境监测
KVM基于X86虚拟化扩展技术的虚拟机软件,所以需要CPU支持 Intel VT
1 | cat /proc/cpuinfo | egrep 'vmx|svm' |
如果有返回信息,这说明当前CPU支持并且开启了虚拟化扩展
二、KVM环境安装
KVM虚拟机大致包含如下组件:
- qemu-kvm-ev 主要的KVM程序包
- libvirt C语言工具包,提供libvirt服务
- virt-install :基于libvirt服务的虚拟机创建命令
- bridge-utils 创建和管理桥接设备的工具
- python36-libvirt python3客户端
- virt-manager :GUI虚拟机管理工具
- virt-top:虚拟机统计命令
- virt-viewer: GUI连接程序,连接到已配置好的虚拟机
- libvirt-client: 为虚拟客户机提供的C语言工具包
1 | 安装qemu-kvm-ev源 |
建议安装完成之后重启服务器,并且在重启之后检查是否正确加载了内核模块
1 | 注:宿主机CentOS7内核要求:≥4.x,否则缺少KVM模块 |
三、虚拟机网络模式
安装好kvm之后,默认会创建一个default
的网络,设备名称为virbr0
,如下:
1 | virsh net-list --all |
dump出default
的xml的配置信息,看下网络模式。
1 | $ virsh net-dumpxml default |
四、创建一个bridge虚拟网络
1. 创建虚拟网络
注:br0是一个二层设备,靠MAC地址通信
1 | cd /etc/sysconfig/network-scripts/ |
cat ifcfg-eth0
1 | TYPE="Ethernet" |
cat ifcfg-br0
1 | TYPE="Bridge" #类型Bridge |
1 | brctl show |
cat br0.xml
1 | <network> |
如上的xml文件中,我们配置了名称为br0
并且设备名称也为br0
网络
<name>br0</name>
配置kvm的网络名称<bridge name="br0" />
配置了网络设备的名称<forward mode="bridge" />
指定为bridge模式注:在上面的xml中,并没有定义mac地址等,这些信息kvm会自动补上
2. 设定虚拟网络
1 | 从xml加载网络设置 |
3. 虚拟网络管理
1 | 查看所有虚拟网络 |
五、安装虚拟机
解决了网络问题,现在开始安装虚拟机
设置(宿主机)环境语言
1 | cat /etc/locale.conf |
1. 安装Linux虚拟机
1 | virt-install --virt-type=kvm --os-type=linux \ |
参数:
1 | --virt-type 指定虚拟机类型,除了KVM还可以管理其他虚拟机 |
创建好了虚拟机之后,可以通过VNC客户端链接到宿主机IP:vncport
进行正常的系统安装。
注:
1 | 在安装完成之后点击REBOOT按钮之后并不会重启虚拟机,而是会直接关闭虚拟机,需要到宿主机中启动虚拟机。 |
2. windows虚拟机安装
1 | virt-install --virt-type=kvm --os-type=windows \ |
在windows中,多加了一个--disk path=/data/vm/iso/virtio-win-0.1.173_amd64.vfd,device=floppy
,此参数加载了一个软盘,指定了一个vfd软盘镜像。主要是因为windows不带virtio驱动,virtio镜像需要提前下载好。virtio下载地址
六、虚拟机管理
1 | 查看所有虚拟机 |
1 | 启动虚拟机 |
1 | 关闭虚拟机 |
七、修改虚拟机配置
1. 直接编辑
1 | virsh edit centos7 |
2. xml定义虚拟机
libvirt是通过xml来定义虚拟机的,当然也可以从xml修改虚拟机信息
1 | 导出当前centos7_1虚拟机的xml配置 |
附录:错误解决
1. 启动虚拟机报linux错误
1 | virsh start centos7 |
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2021/02/23/KVM部署/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!