部署KVM虚拟化平台
Xen(半虚):资源共享化
KVM(全虚):资源独立化
案例概述
1、公司部分Linux服务器利用率不高,为充分利用这些Linux服务器,可以部署KVM,在物理机上运行多个业务系统
2、例如在运行Nginx的服务器.上部署KVM,然后在虚拟机上运行Tomcat
案例前知识点
1、KVM虚拟化架构
KVM模块直接整合在Linux内核中
2、KVM组成
(1)KVM Driver
·虚拟机创建
·虚拟机内存分配
·虚拟CPU寄存器读写
·虚拟CPU运行
(2)QEMU (经过简化与修改)
·模拟PC硬件的用户控件组件
·提供I/O设备模型及访问外设的途径
3、KVM虚拟化三种模式
·客户模式
·用户模式(工具层)
·内核模式
4、KVM工作原理
5、实施
(1)安装KVM
(2)设置KVM网络
·KVM网络包括:用户模式与桥接模式
·本案例中使用桥接模式
(3)KVM图像化管理
(4)安装虚拟机
使用Xshell远程控制
(5) KVM基本功能管理
·查看命令帮助
·查看KVM的配置文件存放目录
·查看虚拟机状态
·虚拟机关机与开机
·强制实例系统关闭电源
·通过配置文件启动虚拟机系统实例
(6)KVM基本功能管理(续)
·挂起虚拟机
·恢复虚拟机.
·配置虚拟机实例伴随宿主机自动启动
·导出虚拟机配置
·虚拟机的删除与添加
·修改虚拟机配置信息
(7)KVM文件管理
·查看当前磁盘格式
·virt-cat命令
·virt-edit命令
·virt-df命令
(8)虚拟机克隆
(9)虚拟机快照
部署
一、先添加一块磁盘
1、分区
[[email protected] ~]# fdisk /dev/sdb
2、查看
[[email protected] ~]# fdisk -l
//省略部分内容
Device Boot Start End Blocks Id System
/dev/sdb1 2048 41943039 20970496 83 Linux
3、格式化
[[email protected] ~]# mkfs /dev/sdb1
4、创建目录并挂载
[[email protected] ~]# mkdir /data
[[email protected] ~]# mount /dev/sdb1 /data
二、共享文件夹
[[email protected] ~]# smbclient -L //192.168.100.7/
[[email protected] ~]# mount.cifs //192.168.100.7/ISO /mnt/
[[email protected] ~]# cd /mnt/
[[email protected] mnt]# yum list
1、配置环境包
yum groupinstall "GNOME Desktop" -y //安装桌面环境组件包
yum install qemu-kvm -y //KVM模块
yum install qemu-kvm-tools -y //KVM调试工具
yum install virt-install -y //构建虚拟机的命令行工具
yum install qemu-img -y //qemu组件,创建磁盘,启动虚拟机
yum install bridge-utils -y //网络支持工具
yum install libvirt -y //虚拟机管理工具
yum install virt-manager -y //图像化管理虚拟机
2、验证:查看CPU是否支持虚拟化(虚拟机需要在配置中开启虚拟化功能)
AMD服务器可用:cat /proc/cpuinfo | grep smv
Intel服务器可用:cat /proc/cpuinfo | grep vmx
两者皆可判断:egrep '(vmx|svm)' /proc/cpuinfo
(1)检查是否安装
[[email protected] mnt]# lsmod | grep kvm
kvm_intel 170086 0
kvm 566340 1 kvm_intel
irqbypass 13503 1 kvm
(2)开启服务
[[email protected] mnt]# systemctl start libvirtd //开启服务
[[email protected] mnt]# systemctl status libvirtd //查看开启状态
[[email protected] mnt]# systemctl enable libvirtd //设为开机自启
三、KVM网络
宿主服务器安装完成KVM,首先要设定网络,在libvirt中运行KVM网络有两种方法:NAT和Bridge, 默认是NAT。
关于两种模式的说明:
用户模式——即NAT方式,这种方式是默认网络,数据包由NAT 方式通过主机的接口进行传送,可以访问外网,但是无法从外部访问虚拟机网络。
桥接模式——这种模式允许虚拟机像. 一台独立的主机一样拥有网络,外部的机器可以直接访问到虚拟机内部,但需要网卡支持,一般有线网卡都支持。
以配置桥接为例:
1、先创建两个目录(防止远程挂载挂掉)
[[email protected] mnt]# cd /data
[[email protected] data]# ls
lost+found
[[email protected] data]# mkdir vdisk viso
[[email protected] data]# ls
lost+found vdisk viso
//拷贝镜像到新创建的目录中,并放至后台运行,不影响接下来的操作
[[email protected] data]# cp -r /mnt/CentOS-7-x86_64-DVD-1708.iso /data/viso/ &
[1] 118636
[[email protected] data]# cd /etc/sysconfig/network-scripts/
[[email protected] network-scripts]# cp -p ifcfg-ens33 ifcfg-br0
[[email protected] network-scripts]# vim ifcfg-ens33
//在末行插入
BRIDGE=br0
[[email protected] network-scripts]# vim ifcfg-br0
TYPE=bridge
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
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
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.35.175
NETMASK=255.255.255.0
GATEWAY=192.168.35.1
UUID行删掉
//重启网卡
[[email protected] network-scripts]# service network restart
Restarting network (via systemctl): [ 确定 ]
//多一块网卡
[[email protected] network-scripts]# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.35.175 netmask 255.255.255.0 broadcast 192.168.35.255
inet6 fe80::98c4:6183:9245:7154 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:60:1a:79 txqueuelen 1000 (Ethernet)
RX packets 108 bytes 7536 (7.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 125 bytes 19579 (19.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:60:1a:79 txqueuelen 1000 (Ethernet)
RX packets 3478684 bytes 4934924607 (4.5 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 373374 bytes 37009910 (35.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 80 bytes 6960 (6.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 80 bytes 6960 (6.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:4d:73:2e txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
四、KVM管理
virt-manager是基于libvirt的图像化虚拟机管理软件。
请注意,不同发行版上virt-manager的版本可能不同,图形界面和操作方法也可能不同。
创建KVM虚拟机最简单的方法是通过virt-manager接口。以root身份输入virt-manager命令。
切换到图形化界面
[[email protected] ~]# virt-manager
创建存储池,双击QEMU/KVM,选择“存储”选项卡,然后单击“+”按钮新建存储池。
单击“前进”按钮,根据提示输入或浏览用以设置存储目录,如/data_kvm/store,最后单击“完成”按钮即可。
以下操作步骤: