qemu-kvm
qemu-kvm
kernel-based-virtual
Hypervisor
基于虚拟化扩展的x86硬件的开源linux原生的全虚拟化解决方案
安装kvm
1、确保CPU支持HVM
grep -E --color=auto '(vmx|svm)' /proc/cpuinfo
2、装载模块
modprobe kvm
modprobe kvm-intel
3、验证
/dev/kvm 设备
60%的性能
时间不准确
kvm工具
qemu kvm专用
qemu-kvm
qumu-img
libvirt
GUI:virt-manager virt-viewer
CLI:virtinstall virsh
安装qemu
yum install qemu-kvm
rpm -ql qemu-kvm
ln -sv /usr/libexec/qemu-kvm /usr/bin/
qemu管理功能
Standard options 标准选项*
Block device options 块设备选项*
USB options usb选项
Display options 控制台选项
i386 target only x86平台专有
Network options 网络选项*
Character device options
Device URL Syntax
Bluetooth(R) options 蓝牙选项
Linux/Multiboot boot specific 多启动设备
Debug/Expert options 专家选项
启动一个简单的虚拟机
http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-i386-disk.img
qemu-img info cirros-0.4.0-i386-disk.img
qemu-kvm -name cirros -m 256 -smp 2 -hda cirros-0.4.0-i386-disk.img
yum install tigervnc -y
rpm -ql tigervnc
标准、块设备选项
-name 虚拟机名称
-M machice 模拟的主机类型
-m 内存
-cpm cpu类型
-smp cpu核心数
[,cores=cores] 核心数
[,threads=threads] 线程数
[,sockets=sockets] 插槽数
[,maxcpus=maxcpus] 最大热插入cpu
-numa 非一致内存访问
-hda
-hdb
-hdc
-hdd
-cdrom 指定file为cdrom镜像文件
-drive 定义一个硬盘设备
file= 硬盘映像文件
if= 硬盘设备接口类型 ide、scsi、sd、virtio(半虚拟化)
index= 指定同一种控制器不同设备的索引号
media= 定义介质类型 disk、cdrom
snapshot= 是否支持快照 on off
cache= 定义使用物理机缓存来访问块数据
format= 指定映像文件的格式
-boot 定义设备的启动次序
在x86架构上 (默认为硬盘驱动器)
a、b表示软驱
c表示第一块硬盘
d表示第一个光驱设备
n-p表示网络驱动器
-boot order=dc once=d
order 设定引导次序
once 设定第一次引导的设备
示例
qemu-kvm --name censtos -smp 2 -m 2048 -cpu host -drive file=/data/iso/CentOS-7-x86_64-Minimal-1804.iso,media=cdrom -drive file=/tmp/centos.qcow2,media=disk -boot order=dc,once=d
显示选项
SDL
VNC
-vnc display [option,option]
display
1、host:N #N为控制台号
192.168.1.1:1 5900为起始端口
2、unix 监听在套接字
3、none 不显示
option
password 要求密码验证 设定密码要在monitor界面下
-monitor stdio 在标准输入输出上显示monitor界面
-nographic 可以在console和monitor界面切换
网络属性选项
nic #定义网络接口
-net nic [,vlan=n,macaddr=n,model=type,name=name,addr=addr]
vlan vlan号
macaddr mac地址(mac 默认不变)
model e1000 virtio
qemu-kvm -net nic,model=? 获取当前支持的类型
name 设备名
addr ip地址
tap #nic管理虚拟机中的接口,tap就是管理宿主机上的对应接口
-net tap[,vlan=n,name=name,fd=h,ifname=name]
user
kvm的网络模型
1、隔离模型
使用bridge连接各个虚拟机但不关联物理网卡
2、nat模型
在路由模型上添加nat规则 iptables
3、路由模型
在隔离模型的基础之上添加一个虚拟网卡,开启路由转发功能。
需要虚拟机指定虚拟网卡的ip为网关
需要在要通信的主机或路由添加回复报文的路由条目
4、桥接模型
在隔离模型的bridge上添加物理网卡
将物理网卡变为bridge,将原来的IP放到一张虚拟网卡并添加到桥上
dhcp 服务器
namespace 名称空间
手动创建bridge
yum install bridge-utils #安装工具包
rpm -ql bridge-utils #查看utils释放的文件
brctl -h #查看帮助
brctl addbr br0 #添加网桥
ifconfig -a #查看全部接口
brctl stp br0 off #关闭生成树
ip link set br0 up #启动br0设备
ip addr del 192.168.1.50/24 dev ens33 #拆除物理网卡ip
ip addr add 192.168.1.50/24 dev br0 #添加ip
ip a #ip是否添加成功
ping 192.168.1.50 #检查ip可用
ip link set dev ens33 master br0 #物理网卡加入桥接设备
brctl show #查看是否加入桥
查看创建qcow2格式的磁盘支持的选项
qemu-img create -o ? -f qcow2
指定磁盘大小、预分配硬盘装载元数据
qemu-img create -o size=1G,preallocation=metadata -f qcow2 /tmp/cirros.qcow2
cluster_size #指定簇大小 默认65536
encryption #加密映像
preallocation #预分配模式
off #不使用预分配
metadata #分配元数据,相对于off性能更好
falloc #未初始化,创建速度快
full #分配所有空间并置零,非稀疏格式,创建较慢
#falloc、full会立即占用宿主机的空间,相比性能高于非稀疏格式很多
qemu-img info cirros.qcow2 #查看磁盘映像信息