kvm
kvm安装
前期准备
确定机器有VT
确定机器有VT
egrep '(vmx|svm)' /proc/cpuinfo
如果没有输出,说明CPU不支持虚拟化
vmx 为Intel的CPU指令集
svm 为AMD的CPU指令集BIOS开启VT: Intel(R) Virtualization Tech [Enabled]
验证:
lsmod | grep kvm
modprobe kvm-intel
桥接网络
ifcfg-enp7s0f1不要配置IP,BRIDGE等于ifcfg-br2的DEVICE
[root@bac02 network-scripts]# cat ifcfg-enp7s0f1
BOOTPROTO=none
DEVICE=enp7s0f1
NM_CONTROLLED=no
ONBOOT=yes
BRIDGE=br2
UUID=7083918b-0fc4-1d98-dcbb-8b9fccb8faa3
[root@bac02 network-scripts]# cat ifcfg-br2
BOOTPROTO=static
DEVICE=br2
TYPE=Bridge
NM_CONTROLLED=no
IPADDR=192.168.3.50
NETMASK=255.255.255.0
GATEWAY=192.168.3.1
DNS1=202.96.134.133
DNS2=202.96.128.86
UUID=7083918b-0fc4-1d98-dcbb-8b9fccb8faa3
NM_CONTROLLED参数表示该网卡是否被NetworkManager服务管理,设置为no的话就是不接管,那么之前不用停止NetworkManager服务。
systemctl restart network
systemctl restart NetworkManager
关闭SELinux
kvm安装
yum -y install libcanberra-gtk2 qemu-kvm.x86_64 qemu-kvm-tools.x86_64 libvirt.x86_64 libvirt-cim.x86_64 libvirt-client.x86_64 libvirt-java.noarch libvirt-python.x86_64 dbus-devel virt-clone virt-manager libvirt libvirt-python libguestfs-tools
qemu-kvm
该软件包主要包含KVM内核模块和基于KVM重构后的QEMU模拟器。KVM模块作为整个虚拟化环境的核心工作在系统空间,负责CPU和内存的调度。QEMU作为模拟器工作在用户空间,负责虚拟机I/O模拟。
依赖包qemu-img
主要用来QEMU磁盘镜像的管理,如新建一块磁盘镜像给虚拟机。
libvirt
提供Hypervisor和虚拟机管理的API。
依赖包libvirt-client
KVM客户端命令行管理工具virsh,负责虚拟机的启动、停止和管理等。
依赖包libvirt-daemon
libvirtd守护进程,作为客户端管理工具跟Hypervisor和虚拟机之间的桥梁。
依赖包libvirt-daemon-driver-xxx
从名字来看属于libvirtd服务的驱动文件,作为libvirtd服务跟Hypervisor不同对象(如qemu模拟器,网络,存储等)间的接口。
依赖包bridge-utils
网桥管理工具包,负责桥接网络的创建、配置和管理等工作。
virt-install
创建和克隆虚拟机的命令行工具包。
virt-manager
图形界面的KVM管理工具。
当然安装KVM的依赖包远不止这些,由于本人水平有限,所以仅挑了一些跟KVM架构有主要联系的软件包进行描述。
启动服务
systemctl enable libvirtd
systemctl start libvirtd
kvm管理
默认配置文件目录
xml: /etc/libvirt/qemu
img: /var/lib/libvirt/images
- 查看所有虚拟机列表
[root@bac02 qemu]# virsh list --all
Id 名称 状态
----------------------------------------------------
- centos6.7 关闭
- centos6.7_clone1 关闭
- centos7.3 关闭
- centos7.3_clone1 关闭
- centos7.3mod 关闭
- 查看镜像文件信息
[root@bac02 qemu]# qemu-img info /var/lib/libvirt/images/centos7.3.qcow2
image: /var/lib/libvirt/images/centos7.3.qcow2
file format: qcow2
virtual size: 9.0G (9663676416 bytes)
disk size: 1.9G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: true
kvm克隆virt-clone
克隆前删除uuid和mac信息,防止mac冲突
virt-clone参数介绍
Options(一些基本的选项):
--version:查看版本
-h,--help:查看帮助信息
--connect=URI:连接到虚拟机管理程序 libvirt 的URI
General Option(一般选项):
-o ORIGINAL_GUEST, --original=ORIGINAL_GUEST:原来的虚拟机名称
-n NEW_NAME, --name=NEW_NAME:新的虚拟机名称
--auto-clone:从原来的虚拟机配置自动生成克隆名称和存储路径。
-u NEW_UUID, --uuid=NEW_UUID:克隆虚拟机的新的UUID,默认值是一个随机生成的UUID
Storage Configuration(存储配置):
-f NEW_DISKFILE, --file=NEW_DISKFILE:指定新的虚拟机磁盘文件
--force-copy=TARGET:强制复制设备
--nonsparse:不使用稀疏文件复制磁盘映像
Networking Configuration:(网络配置)
-m NEW_MAC, --mac=NEW_MAC:设置一个新的mac地址,默认是一个随机的mac
克隆虚拟机
virt-clone -o centos7.3mod -n centos7.3_clone1 -f /var/lib/libvirt/images/centos7.3_clone1.qcow2
克隆的虚拟机xml配置对比
[root@bac02 qemu]# diff centos6.7_clone1.xml centos6.7.xml
4c4
< virsh edit centos6.7_clone1
---
> virsh edit centos6.7
9,10c9,10
< <name>centos6.7_clone1</name>
< <uuid>4743509b-3e65-4efb-9623-87f89b8fd554</uuid>
---
> <name>centos6.7</name>
> <uuid>bd5dff43-eb5e-4306-afc6-5b6b4e65d353</uuid>
41c41
< <source file='/var/lib/libvirt/images/centos6.7_clone1.qcow2'/>
---
> <source file='/var/lib/libvirt/images/centos6.7.qcow2'/>
74c74
< <mac address='52:54:00:28:5c:51'/>
---
> <mac address='52:54:00:92:8f:c7'/>
KVM镜像管理工具guestfish
libguestfs-tools:命令行工具,libguestfs-winsupport:图形工具
安装
yum install libguestfs-tools
yum install libguestfs-winsupport