前言
kvm是一种虚拟化技术
使用
概念
kvm是linux内核的模块,它需要CPU支持,采用硬件辅助虚拟化技术Intel-VT,AMD-V,内存的相关技术如Intel的EPT和AMD的RVI,是底层虚拟化内核模块。
- 检查cpu是否支持虚拟化
]# grep vmx /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm epb invpcid_single ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm arat pln pts md_clear spec_ctrl intel_stibp flush_l1d
... ...
如果有vmx信息输出,就说明支持VT;如果没有任何的输出,说明你的cpu不支持,将无法使用KVM虚拟机
- 确保BIOS里开启虚拟化功能,即查看是否加载KVM模块
]# lsmod | grep kvm
kvm_intel 188688 0
kvm 636969 1 kvm_intel
irqbypass 13503 1 kvm
如果没有加载,运行以下命令:
]# modprobe kvm
]# modprobe kvm-intel
内核模块导出了一个名为/dev/kvm的设备,这个设备将虚拟机的的地址空间独立于内核或者任何应用程序的地址空间
]# ll /dev/kvm
crw-rw-rw-. 1 root kvm 10, 232 10月 10 14:36 /dev/kvm
- 配置kvm的网桥模式-桥接网络
yum -y install bridge-utils
systemctl restart network
cd /etc/sysconfig/network-scripts/
编辑br0网桥模式
]# cat ifcfg-br0
TYPE="Bridge" # 改为Bridge
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="br0"
#UUID="72671f68-e070-4d26-963d-8b65fbc88fb3" # 此行注释
DEVICE="br0" # 改为br0
ONBOOT="yes"
]# cat ifcfg-enp3s0
TYPE="Ethernet"
BRIDGE="br0" # 添加此行内容
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp3s0"
UUID="72671f68-e070-4d26-963d-8b65fbc88fb3"
DEVICE="enp3s0"
ONBOOT="yes"
重启网卡服务
systemctl restart network
查看网卡
]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.bcee7be0923b no enp3s0
vnet0
vnet1
vnet2
virbr0 8000.52540011750e yes virbr0-nic
安装kvm虚拟化服务器平台必备软件
-
1.qemu-kvm:
为kvm提供底层仿真支持 -
2.libvirt-daemon:
libvirtd守护进程,管理虚拟机 -
3.libvirt-client:
用户端软件,提供客户端管理命令 -
4.libvirt-daemon-driver-qemu:
libvirtd连接qemu的驱动 -
注:
1.QEMU是一个虚拟化的仿真工具,通过ioctl与内核kvm的交互完成对硬件的虚拟化支持
2.Libvirt是一个虚拟化管理的接口和工具,提供用户端程序virsh,virt-install,virt-manager,virt-view与用户交互
kvm虚拟化平台安装
yum -y install qemu-kvm libvirt-daemon libvirt-client libvirt-daemon-driver-qemu virt-manager
systemctl start libvirtd
systemctl enable libvirtd
kvm安装虚拟化服务平台可选软件
- 1.virt-install:
系统安装工具 - 2.virt-manager:
图形管理工具 - 3.virt-v2v:
虚拟机迁移工具 - 4.virt-p2v:
物理机迁移工具
kvm虚拟机的组成
- 1.内核虚拟化模块(KVM)
- 2.系统设备仿真(QEMU)
- 3.虚拟机管理程序(LIBVIRT)
- 4.虚拟机配置声明文件,一个XML文件,位置/etc/libvirt/qemu/
- 5.虚拟机的硬盘,一个磁盘镜像文件,位置/var/lib/libvirt/images/
kvm管理各虚拟机的命令接口工具virsh
- 格式
virsh 控制指令 [虚拟机名称] [参数]
进入virsh模式:直接在终端输入virsh即可进入virsh交互模式,如下
[root@localhost ~]# virsh
Welcome to virsh, the virtualization interactive terminal.
Type: 'help' for help with commands
'quit' to quit
virsh #
virsh工具的使用
- 1.查看KVM节点(服务器)信息:
virsh nodeinfo
[root@localhost ~]# virsh nodeinfo
CPU model: x86_64
CPU(s): 4
CPU frequency: 3699 MHz
CPU socket(s): 1
Core(s) per socket: 2
Thread(s) per core: 2
NUMA cell(s): 1
Memory size: 16300764 KiB
- 2.列出虚拟机:
virsh list [–all]
[root@localhost ~]# virsh list
Id Name State
----------------------------------------------------
[root@localhost ~]# virsh list --all
Id Name State
----------------------------------------------------
- 3.列出虚拟网络:
virsh net-list [–all]
[root@localhost ~]# virsh net-list
Name State Autostart Persistent
----------------------------------------------------------
default active yes yes
[root@localhost ~]# virsh net-list --all
Name State Autostart Persistent
----------------------------------------------------------
default active yes yes
-
4.查看指定虚拟机的信息:
virsh dominfo 虚拟机名称 -
5.运行|重启|关闭指定的虚拟机:
virsh start|reboot|shutdown 虚拟机名称 -
6.强制关闭指定的虚拟机:
virsh destroy 虚拟机名称 -
7.将指定的虚拟机设为开机自动运行:
virsh autostart 虚拟机名称 -
8.将指定的虚拟机设为开机不自动运行:
virsh autostart --disable 虚拟机名称 -
9.连接虚拟机:
virsh console 虚拟机名称
退出:ctrl+] -
10.管理虚拟交换机
virsh net-edit 虚拟路由名 -
11.连接本地:
virsh connect qemu:///system(直接输入virsh即可,默认) -
12.连接远程:
virsh connect qemu+ssh://user@ip.xx.xx.xx:port/system
eg:virsh -c qemu+ssh://172.40.61.123/system
使用virt-manager工具连接远程需要先使用ssh免密码登陆,如没有则需要安装python或ssh相关模块
常用镜像盘类型
虚拟机的磁盘镜像文件格式
- 1.RAW:
I/O效率高,占用空间大 - 2.QCOW:
KVM默认,I/O效率极高,占用空间小,支持压缩、后端盘复用、快照