KVM虚拟化
KVM在使用的时候必须是硬件支持虚拟化的,要确保使用的宿主机或实体机支持硬件虚拟化技术
环境搭建
我在VMware里装了个centos7,把centos7当做宿主机使用
- 关闭selinux
vi /etc/selinux/config
SELINUX=disabled
- 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
- 开启虚拟化
- 查看虚拟机实例是否支持硬件虚拟化技术
egrep ‘(vmx|svm)’ /proc/cpuinfo
如果有输出则说明硬件支持虚拟化技术,vmx表示INTER系列CPU支持的类型,svm表示ADM系列CPU支持的类型
- 安装qemu-kvm
kvm只能实现cpu和内存的虚拟化,并不能模拟其他设备
qemu-kvm弥补了其缺陷,不仅满足了cpu和内存的虚拟化,还能虚拟I/O设备
yum install qemu-kvm qemu-img -y
安装完之后,发现qemu-kvm工具并没有加入到环境变量中去,可以连接到 /usr/sbin中去,方便后续的使用
ln -s /usr/libexec/qemu-kvm /usr/sbin/
同时还需要在windows操作机中安装vncviewer来配合qemu-kvm使用
百度下载即可https://www.realvnc.com/en/connect/download/viewer/
安装完之后是这样的
了解qemu-kvm参数
-h:显示帮助手册
#qemu-system-x86_64 -h:会显示所有参数
1.cpu相关参数
-cpu:指定cpu模型,默认的为qemu64,可以通过“-cpu ?”查询当前支持的cpu模型
-smp:设置虚拟机的vcpu个数。后面还可以加cores threads socke.
2.内存相关参数
-m:设置虚拟机内存大小,默认单位为MB。
-mem-path patch:指定从path路径表示的临时文件中为guest分配内存。
-mem-prealloc:启动时即分配全部内存,而不是根据guest请求动态分配,与-mem-path参数配合使用。
-balloon:开全内存balloon功能,俗称内存气球。
3.磁盘相关参数
-hda、-hdb和cdrom等:设置虚拟机的IDE磁盘和光盘设置。
-driver:配置驱动器。
-boot:设置虚拟机的启动选项
4.网络相关参数
-net nic:为虚拟机创建一个nic网卡
-net user:让虚拟机使用不需要管理权限的用户模式网络(user mode network).
-net tap:使用host的tap网络接口来帮助guest建立网络。
-net none:不配置任何网络设备。
5.图形显示参数
-sdl:使用sdl方式显示客户机。
-vnc:使用vnc方式显示客户机。
-vga:设置虚拟机中的vga显卡类型,默认为“-vga cirrus”.
-nographic:关闭qemu的图形化界面输出。
6.其他常用参数
-noreboot:guest执行reboot操作时,系统关闭后退出qemu-kvm,而不会再启动虚拟机。
-no-shutdown:虚拟机shutdown后,系统关闭后,不退出qemu-kvm进程,保持这个进程存在,他的monitor仍然可以用。
-loadvm:加载快照状态,与monitor中的“loadvm”命令类似
-nodefaults:不创建默认的设备。默认会创建一些显卡、串口、控制台等设备
-readconfig:从文件中读虚拟机设备的配置信息。
-writeconfig:将虚拟机的配置信息写到文件中。
-nodedefconfig:不加载默认的配置文件。默认会加载/use/local/share/qemu下的文件。
-no-user-config:不加载用户自定义的配置文件。
-usbdevice:使用usb设备
创建虚拟机实例
一、linux(以centos7.3 1611为例)
- 查看镜像的信息
qemu-img info CentOS-7-x86_64-Minimal-1611.iso
- 创建虚拟磁盘,指定镜像的格式、名字、大小
qemu-img create -f qcow2 centos7.qcow2 20G
- 制作镜像,将系统安装盘挂到 cdrom,安装操作系统
qemu-kvm -m 2048 -boot d -cdrom CentOS-7-x86_64-Minimal-1611.iso -drive file=centos7.qcow2 -nographic -vnc :5
-m 2048 分配2048M的内存
-boot d 从光盘启动,d表示光盘,c表示硬盘,a,b表示软盘,默认是硬盘启动
-drive file=centos.qcow2 使用虚拟磁盘的文件
-nographic 关闭qemu的图形化界面输出
执行完之后是这样的
这里就要用到vnc viewer了,vnc的端口是从5900开始,我在命令中设置了-vnc :5,所以要连接5905,然后正常装系统
装完之后kill掉进程
qemu-kvm创建虚拟机时,已经配置了2个驱动设备,一个是硬盘设备,一个是光驱设备,只有移除光驱设备,系统才能使用磁盘设备启动
- 启动已制作的linux镜像
qemu-kvm -m 2048 -smp 2 -drive file=centos7.qcow2,if=virtio,index=1 -nographic -vnc :5
-smp 2 处理器的个数,也可以设置cores threds sockets,即每个cpu的核心数以及cpu的线程数
if=virtio 指定硬盘设备所连接的接口类型
index=1 指定接口类型的标识号
这样启动的镜像是无法与宿主机通网的,需要在宿主机中配置桥接模式
桥接网络
- 安装包
yum install bridge-utils -y
- 在宿主机上创建一个网桥
brctl addbr virbr0
- 将其绑定到一个可以正常工作的网络接口上
brctl addif virbr0 ens37
- 新建一个网卡脚本,使虚拟机网卡自动添加网桥
vi /etc/qemu-ifup
#!/bin/bash
ip link set $1 up
brctl addif virbr0 $1
同时设置执行权限,开启桥接网卡
chmod a+x /etc/qemu-ifup
ip link set virbr0 up
- 再次启动制作的镜像
qemu-kvm -m 2048 -smp 2 -drive file=centos7.qcow2,if=virtio,index=1 -net nic -net tap -nographic -vnc :5
-net nic 是必需的参数,表明这是一个网卡的配置
-net tap 通过物理的TAP网络接口连接至vlan n
通过vnc viewer连接之后,虚拟机与宿主机可以互通
同时宿主机中新增了一块网卡tap0
二、windows(以win10为例)
步骤与创建Linux镜像大致相同,需要注意的是,windows镜像需要配置驱动,下载地址
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/
- 创建虚拟磁盘
qemu-img create -f qcow2 win10.qcow2 20G
- 创建镜像
qemu-kvm -m 2048 -boot d -cdrom win10.iso -drive file=virtio-win.iso,media=cdrom -drive file=win10.qcow2,if=virtio,index=1 -usbdevice tablet -nographic -vnc :5
-usbdevice tablet 添加usb设备,鼠标
选择驱动(我用的光驱安装驱动”-drive file=virtio-win.iso”)
安装完毕之后关闭进程
- 启动制作的win10镜像
qemu-kvm -m 2048 -smp 2 -drive file=win10.qcow2,if=virtio,index=1 -net nic -net tap -usbdevice tablet -nographic -vnc :5
开启之后根据需要配置即可
由于配置了桥接网络,镜像与宿主机可以互通