架构解析
- KVM架构图解析
- kvm安装
- Guest客户机安装
- Web前端监控页面
- GUI安装
- 命令行安装(重点)
- 问题解决
- 配置KVM宿主机桥接模式
KVM架构图解析
- hardware(硬件)
- 有多个磁盘、CPU
- KVM.ko
- 在硬件上安装操作系统内核(Linux Kernel),KVM是作为内核里的一个功能 提供physical drives(物理驱动) => File System(文件系统) Block devices(块设备)
- 通过物理驱动去使用底层硬件
- KVM guest(虚拟机)
- 装上KVM后,创建kvm虚拟机 => 有 多个VCPU(虚拟cpu)、自己的操作系统(KVM内核,同样提供"物理驱动")
- 在虚拟机上装应用(Applications)
- 还有iothred(I/O线程)
- Vcpu与IO都是通过Hardware emulation(QEMU 硬件模拟设备)与真实硬件进行交互
- QEMU => 开源的虚拟化软件,被红帽收购,进行优化,可以模拟硬件设备,一台独立运行的操作系统虚拟机 guest就是被模拟出来的
- 虚拟机就是与QEMU模拟出来的硬件交互,然后QEMU将指令在转义给真正的底层硬件
- KVM全称 QEMU-KVM
- 我们虚拟机上也有虚拟磁盘,我们向虚拟机中存东西,真正提供存储的还是底层的硬件设备
---------------KVM 解析----------------
简介: 当新的操作系统在KVM上启动时(通过一个称为KVM的使用程序),它就会成为"宿主机操作系统"的一个"进程" KVM在linux环境中以"主机"的方式运行,不过只要"底层硬件虚拟化支持",能够支持大量的来兵操作系统。
一、KVM 软件安装
🌍 环境:8G真实内存 >6G 16G真实内存 > 12G
开启CPU硬件虚拟化
< 设置 —— 处理器 —— 虚拟化引擎
< 关闭防火墙 selinux
< uname -r 查看内核版本 2.6以上即可
1. 查看CPU是否支持VT虚拟化技术: cat /proc/cpuinfo | grep -E 'vmx|svm' #vmx(当前CPU支持inter的全虚拟化) svm(AMD的全虚拟化) 2. 清理环境,卸载KVM: yum remove `rpm -qa | egrep 'qemu|virt|KVM'` -y rm -rf /var/lib/libvirt /etc/libvirt/ 3. 安装软件:yum install *qemu* *virt* librbd1-devel -y 软件介绍: 在所谓的KVM技术中,应用到其实只有2个东西:qemu+KVM KVM负责cpu虚拟化+内存虚拟化,实现cpu和内存的虚拟化,但KVM不能模拟其他设备 qemu是模拟IO设备(网卡 磁盘),KVM加上qemu之后就能实现真正意义上的服务虚拟化。 因为用到上面两,所有一般称为qemu-KVM libvirt是调用KVM虚拟化技术的接口用于管理,用libvirt管理更方便。 4. 启动服务: systemctl start libvirtd 5. 查看KVM加载模块:lsmod | grep kvmkvm_intel 188688 3
kvm 636965 21 kvm_intel
irqbypass 13503 3 kvm
二、GuestOS 安装
修改主机名: hostnamectl set-hostname KVM-Server
通过飞机驾驶舱安装和管理虚拟机:(Web前端页面) 1. yum install cockpit -y 2. systemctl start cockpit 3. ss -anpult|grep 9090 4. 网址输入192.168.178.200:9090 5. 登入后输入自己的root账号及密码 通过图形方式安装:GUI =>创建虚拟机VM1 1. systemctl stop cockpit.socker 2. 先准备一个Centos-7X86镜像文件 3. 调出图形界面 :virt-manager 4. 创建一个新虚拟机:在"Virtual Machine.." > File > New.... > 本地安装 > 选择IOS镜像 > 磁盘最少不低于2个G > 安装 #纯文本安装(了解即可) 环境:极端情况-服务器没有图形 客户端也没有图形 #virt-install --connect qemu:///system -n vm6 -r 512 --disk path=/virhost/vmware/vm6.img,size=7 --os-type=linux --os-variant=rhel6 -- vcpus=1 --network bridge=br0 --location=http://127.0.0.1/rhel6u4 -x console=ttyS0 --nographics #virt-install --connect qemu:///system -n vm9 -r 2048 --disk path=/var/lib/libvirt/images/vm9.img,size=7 --os-type=linux --os•variant=centos7.0 --vcpus=1 --location=ftp://192.168.100.230/centos7u3 -x console=ttyS0 --nographics #解析 --connect => 连接你的系统VMM -n vm9 => 给虚拟机取个名字 -r 2048 --disk => 2G的磁盘 path => 磁盘镜像的存放路径 size => 磁盘的大小/块数 --os-type => 系统的类型 --os-variant => 系统版本 --vcpus => CPU的数量 --location => 安装路径(将你的镜像挂在到目录上) -x-console=ttys0 => 安装的终端 #注意:1. ⽤这种⽅式安装的操作系统,⼤⼩写会胡乱变化,不影响远程操作 2. 内存必须2G以上
命令行模式安装(重点)
--------------创建一台新的虚拟机VM2----------------- 1. 查看虚拟机的配置文件 [root@kvmserver ~]# ls /etc/libvirt/qemu networks VM1.xml #图形化安装的vm1的配置文件 2. 查看虚拟机的存储媒介 [root@kvmserver ~]# ls /var/lib/libvirt/images/ VM1.qcow2 #vm1的磁盘镜像文件,后缀自定义 3. 创建新的虚拟机VM2,拷贝配置文件与存储文件 [root@kvmserver qemu]# cp -rm /etc/libvirt/qemu/VM1.xml /etc/libvirt/qemu/VM2.xml [root@kvmserver ~]# cp -r /var/lib/libvirt/images/VM1.qcow2 /var/lib/libvirt/images/VM2.qcow2 4. 修改VM2.xml配置文件:vim /etc/libvirt/qemu/VM2.xml #找到进行修改 <name>VM2</name> #名字要修改不同 <uuid>d82fa31b-e754-420f-b326-42ae0b90c491</uuid> #uuid也要修改不同,随便修改一位 <memory unit='KiB'>1048576</memory> #内存大小可改 <currentMemory unit='KiB'>1048576</currentMemory> #当前内存大小,必须与上面一样 <source file='/var/lib/libvirt/images/VM2.qcow2'/> #修改磁盘镜像文件名 <mac address='52:54:00:76:e9:3f'/> #Mac地址修改 只能修改后三段 76:e5:3f 5.创建虚拟机,配置生效: [root@kvmserver ~]# virsh define /etc/libvirt/qemu/vm2.xml 6. 重启生效:systemctl restart libvirtd 7. 配置路由转发,永久生效: vim /etc/sysctl.conf #添加 net.ipv4.ip_forward=1 8. 加载参数:sysctl -p net.ipv4.ip_forward = 1
🗡 GuestOS安装问题解决
示例一:用图形安装guest OS的时候卡住 解决手端:升级及更新系统: yum upgrade -y 示例二:安装了各种兼容程序之后还是不行 1. 查看是否已安装了包:rpm -q qemu-kvm 2. 查看是否安装了ev包:rpm -q qemu-kvm-ev #如果有将其删除 3. 查看kvm包是否安装:rpm -qa | grep kvm
三、配置KVM宿主机桥接模式与客户机(虚拟机)
👀现象:qemu创建的客户机guest(虚拟机),有IP,可以ping通外网与其他主机,虚拟机之间也可以互ping
但是虚拟机与宿主机无法通信
🗡 解决:给宿主机配置桥接 接口
kvm: 1. 添加桥接配置文件:vim /etc/sysconfig/network-scripts/ifcfg-br0 TYPE=Bridge #类型 NAME=br0 #名字 DEVICE=br0 IPADDR=192.168.178.5 #IP地址,自定义 2~254 看自己VMware平台分配了哪个网段 NETMASK=255.255.255.0 GATEWAY=192.168.178.2 #网关 DNS1=192.168.178.2 #DNS解析,与网关一样即可,不配置无法与外网通行 2. 修改原有提供网络的接口文件:vim /etc/sysconfig/network-scripts/ifcfg-ens33 #添加 BRIDGE=br0 #指定桥接的名字,与上方一样即可 DEVICE="ens33" #原有的网络接口名 ONBOOT="yes" #自启 3. 重启网络: systemctl restart network 4. 查看接口是否启动与加入: [root@kvmserver network-scripts]# brctl show bridge name bridge id STP enabled interfaces br0 8000.000c295f24a2 no ens33 #表明接口ens33已加入br0 5. 打开虚拟机(guest): virt-manager 6. 双击自己创建的虚拟机,找到"虚拟网络接口配置"(NIC:.....) 选择自己刚新建的桥接端口 #================================================== VM1: 1. 修改网络配置文件:vim /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet #网络类型 PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPADDR=192.168.178.102 #自定义IP NETMASK=255.255.255.0 GATEWAY=192.168.178.2 #网关 DNS1=192.168.178.2 IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=eth0 UUID=1f5f8b5b-48f1-4d49-abc7-91a673dd5fc3 DEVICE=eth0 #设备名 ONBOOT=yes #是否自启 2. 重启网络:systemctl restart network 3. 测试: ping www.baidu.com ping 192.168.178.5(宿主机的IP)