扩展:https://pan.baidu.com/s/1sAlI4wPnQ0qG5tsR4Yzx-w
KVM自Linux2.6.20版本后就直接整合到Linux内核,它依托CPU虚拟化指令集,实现高性能的虚拟化支持。由于与Linux内核高度整合,因此在性能、安全性、兼容性、稳定性上都有很好的表现。
在KVM环境中运行的每个虚拟化操作系统都将表现为单个独立的系统进程。因此它可以很方便地与Linux系统中的安全模块进行整合,可以灵活地实现资源的分配及管理。
实验环境:开启cpu虚拟化支持
重启后验证cpu是否支持虚拟化,如果是amd的服务器用cat /proc/cpuinfo|grep smv命令查看
[root@localhost ~]# cat /proc/cpuinfo | grep vmx
1.使用yum安装kvm所需软件
yum -y install qemu-kvm //kvm模块
yum -y install qemu-kvm-tools //调试工具
yum -y install virt-install //构建虚拟机命令行工具
yum -y install qemu-img //qemu组件,创建磁盘,启动虚拟机
yum -y install bridge-utils //网络支持工具
yum -y install libvirt //虚拟机管理工具
yum -y install virt-manager //图形界面管理虚拟机
检查kvm模块是否安装:
[root@localhost yum.repos.d]# lsmod | grep kvm
kvm_intel 170181 0
kvm 554609 1 kvm_intel
irqbypass 13503 1 kvm
开启服务并设置开机自启动
[root@localhost yum.repos.d]# systemctl start libvirtd
[root@localhost yum.repos.d]# systemctl enable libvirtd
2.设置kvm网络
设定kvm网络,kvm支持两种网络设置方式:nat和bridge(桥接),默认是nat
①桥接方式;这种方式允许虚拟机像一台独立的主机一样拥有网络,外部的机器可以直接访问虚拟机网络,但需要网络支持,一般的有线网卡都支持。
②用户模式:及NAT方式,这种方式时默认网络,数据包由NAT方式通过主机的接口进行转送,可以访问外网,但是无法从外部访问虚拟机网络。
网桥的基本原理就是创建一个桥接接口,并把物理主机的eth0绑定到网桥上,客户机的网络模式需要配置为桥接模式,这可以在安装的时候用。
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-br0
[root@localhost network-scripts]# vim ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=901fa84c-3e50-4cc7-9b24-8739a6be6e59
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0 //指定桥接
[root@localhost network-scripts]# vim ifcfg-br0 //编辑网桥网卡
TYPE=Bridge //改为桥接
BOOTPROTO=static //开启静态
IPADDR=192.168.1.1
NETMASK=255.255.255.0
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no //注意一定删除uuid那一行
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=br0 //改为br0
DEVICE=br0 //改为br0
[root@localhost network-scripts]# systemctl restart network //重启网卡
~
确认ip地址
[root@localhost network-scripts]# ifconfig
br0: flags=4163 mtu 1500
inet 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::8e68:5d16:b97c:b837 prefixlen 64 scopeid 0x20
ether 00:0c:29:a8:ad:3c txqueuelen 1000 (Ethernet)
RX packets 17 bytes 1426 (1.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 21 bytes 2252 (2.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33: flags=4163 mtu 1500
ether 00:0c:29:a8:ad:3c txqueuelen 1000 (Ethernet)
RX packets 383 bytes 28893 (28.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 198 bytes 19833 (19.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost ~]# brctl show //校验桥接接口
bridge name bridge id STP enabled interfaces
br0 8000.000c29a8ad3c no ens33
virbr0 8000.525400e5639d yes virbr0-nic
3.kvm管理
1)先创建两个准备存储池的目录
/data_kvm/store 存虚拟机
/data_kvm/iso 存光盘镜像
cp /dev/cdrom /data_kvm/iso/centos.iso 把本地镜像复制到iso里面
[root@localhost ~]# mkdir -p /data_kvm/store
[root@localhost ~]# mkdir -p /data_kvm/iso
[root@localhost ~]# cp /dev/cdrom /data_kvm/iso/centos.iso
2)创建存储池
[root@localhost ~]# systemctl start libvirtd //开启服务
[root@localhost ~]# virt-manager
同样的方法在创建一个存放镜像的存储池,命名为bdqn_iso,目录为/data_kvm/iso
新加卷
可以使用iso镜像,制定考培的镜像目录即可
1.kvm基本功能管理
[root@localhost ~]# virsh -h //查看命令帮助
[root@localhost ~]# ls /etc/libvirt/qemu //查看KVM的配置文件存放目录
[root@localhost ~]# virsh list --all //查看虚拟机状态
Id 名称 状态
----------------------------------------------------
2 test01 running
[root@localhost ~]# virsh shutdown centos7.0 //关闭虚拟机
[root@localhost ~]# virsh start centos7.0 //关闭虚拟机
[root@localhost ~]# virsh destroy centos7.0 //强制关机
[root@localhost ~]# virsh create /etc/libvirt/qemu/centos7.0 //通过配置文件启动虚拟机
[root@localhost ~]# virsh suspend centos7.0 //挂起虚拟机
[root@localhost ~]# virsh resume centos7.0 //恢复运行虚拟机
[root@localhost ~]# virsh autostart centos7.0 //设置虚拟机伴随宿主机自动启动
2.导出导入(备份)
[root@localhost ~]# virsh dumpxml centos7.0 > /etc/libvirt/qemu/centos01.xml
//导出虚拟机配置
[root@localhost ~]# virsh shutdown centos7.0
[root@localhost ~]# virsh undefine centos7.0 //删除虚拟机
[root@localhost ~]# virsh list --all //查看是否被删除
Id 名称 状态
----------------------------------------------------
[root@localhost ~]# cd /etc/libvirt/qemu/
[root@localhost qemu]# mv centos01.xml centos7.0.xml
[root@localhost qemu]# virsh define centos7.0.xml //重新定义虚拟机·
[root@localhost qemu]# vim /etc/libvirt/qemu/centos7.0.xml //修改虚拟机配置(磁盘,内存等)
[root@localhost qemu]# virt-df -h centos7.0 //查看虚拟机磁盘信息
3.kvm文件管理
安装libguestfs-tools包,只有安装了,才有下面的命令
[root@localhost ~]# yum -y install libguestfs-tool
1)克隆
[root@localhost qemu]# virt-clone -o centos7.0 -n centos1 -f /kvm/store/centos1.qcow2
// 将centos7.0克隆为centos1
[root@localhost qemu]# virsh list --all #查看现有虚拟机
Id 名称 状态
----------------------------------------------------
- centos1 关闭
- centos7.0 关闭
[root@localhost qemu]#virsh start centos1 //启用
2)快照
[root@localhost qemu]# virsh snapshot-create centos7.0 //对虚拟机test01创建快照
[root@localhost qemu]# virsh snapshot-list centos7.0 //查看
//查看快照信息
名称 生成时间 状态
------------------------------------------------------------
156042443 2019-12-5 04:31:24 +0800 shutoff
[root@localhost qemu]# virsh snapshot-revert centos7.0 156042443
//恢复虚拟机状态
[root@localhost qemu]# virsh snapshot-delete centos7.0 156042443 //删除快照
//删除快照