KVM虚拟化技术企业级配置与入门指南

一、虚拟化技术概览
虚拟化技术起源于20世纪60年代IBM大型机系统,并在70年代System 370系列中普及。它通过一个名为虚拟机监控器(VMM)的程序,在物理硬件上创建多个独立运行的操作系统实例——即虚拟机(VM)。近年来,随着多核系统、云计算的广泛应用,虚拟化技术不仅降低了IT成本,还提高了系统的安全性和可靠性。

虚拟化是一个广义的概念,涵盖了对计算资源的抽象,比如虚拟内存技术,它让应用程序以为自己拥有连续的地址空间,但实际上数据可能被分割并存储在不同的位置,甚至是外部存储设备上。

二、主流虚拟化方案简介
1、虚拟化技术的主要类型
平台虚拟化:涉及计算机和操作系统的虚拟化。
资源虚拟化:专注于特定系统资源如内存、存储、网络的虚拟化。
应用程序虚拟化:包含仿真、模拟等技术,用于隔离应用运行环境。
2、平台虚拟化技术细分
平台虚拟化通常指的是使用一个控制程序(也称为VMM或Hypervisor),来隐藏物理硬件的具体细节,为用户提供统一的计算环境。根据其实现方式的不同,可以进一步细分为:

操作系统级虚拟化:在单一操作系统内核中创建多个隔离的用户环境,例如Solaris Containers、FreeBSD Jails、OpenVZ等。这类虚拟化技术轻便高效,但限制了只能运行相同类型的内核。
部分虚拟化:VMM仅模拟部分硬件功能,要求客户操作系统进行修改才能运行。历史上的例子包括早期的分时系统。
全虚拟化:VMM完全模拟底层硬件,允许未经修改的操作系统在其上运行。如VMware Workstation、QEMU等。
超虚拟化:修改客户操作系统以直接与VMM交互,提高性能,如Xen。
硬件辅助虚拟化:利用硬件支持(如Intel VT-x或AMD-V)实现高效的全虚拟化。
现代虚拟化解决方案常常结合多种技术以优化性能和灵活性。

这里推荐使用api集成管理 api当中的这个块存储(云硬盘)  使用这个云硬盘接口来实现储存功能,这样可以更好的有利于使用

KVM虚拟化技术简介

1KVM架构

KVM虚拟化技术企业级配置与入门指南

2KVM架构解析

KVM虚拟化技术简介

从RHEL 6开始,红帽公司直接将KVM模块集成到了内核的一部分。相比之下,在RHEL 6之前的版本中,默认内核并不支持Xen,用户需要安装带有Xen功能的特定内核。

KVM(Kernel-based Virtual Machine)是专门为运行在x86硬件上的虚拟化基础设施设计的。它是第一个成为原生Linux内核(2.6.20)一部分的hypervisor,由Avi Kivity开发并维护,目前由Red Hat所有。

KVM的特点

  • 支持的硬件平台:KVM不仅支持x86架构,还支持PowerPC和IA64架构,并且提供了对称多处理(SMP)主机的支持以及企业级特性,如活迁移等。
  • 实现方式:KVM作为一个内核模块实现,一旦加载该模块,Linux内核便具备了hypervisor的功能。
  • 虚拟化支持:对于支持hypervisor指令集的硬件(如Intel VT或AMD-V),KVM提供完全虚拟化。此外,KVM还支持准虚拟化来宾操作系统,如Linux和Windows。
  • 组成部件:KVM包含一个内核模块和一个用户空间组件QEMU。内核模块负责管理虚拟化硬件,而QEMU则用于模拟PC平台,并处理来宾操作系统发出的请求。

KVM的工作原理

当一个新的操作系统在KVM上启动时,它会成为一个宿主操作系统上的进程。然而,与传统Linux进程不同的是,来宾操作系统由hypervisor标识为“来宾”模式,独立于内核和用户模式。每个来宾操作系统都通过/dev/KVM设备映射,拥有自己的虚拟地址空间,该空间映射到主机内核的物理地址空间。

KVM软件安装指南

环境准备

首先,确保CPU支持虚拟化技术(VT-x for Intel or AMD-V for AMD):

shell

深色版本

1[root@qfedu.com ~]# cat /proc/cpuinfo | grep -E 'vmx|svm'

清理旧环境

如果之前已安装过KVM相关组件,建议先卸载:

shell

深色版本

1[root@qfedu.com ~]# yum remove `rpm -qa | egrep 'qemu|virt|KVM'` -y
2[root@qfedu.com ~]# rm -rf /var/lib/libvirt /etc/libvirt/

安装软件

根据不同的CentOS版本,安装所需的软件包:

  • CentOS 6 shell

    深色版本

    1[root@qfedu.com ~]# yum groupinstall "Virtualization" "Virtualization Client" "Virtualization Platform" "Virtualization Tools" -y
  • CentOS 7 shell

    深色版本

    1[root@qfedu.com ~]# yum install qemu-kvm libvirt virt-manager librbd1-devel -y

    其中:

    • qemu-kvm:主包
    • libvirt:API接口
    • virt-manager:图形管理程序
  • CentOS 8 若使用组安装遇到版本问题,先升级RPM: shell

    深色版本

    1[root@qfedu.com ~]# yum upgrade rpm -y

    组安装后还需要单独安装virt-manager

启动服务

启动libvirtd服务:

shell

深色版本

1[root@qfedu.com ~]# systemctl start libvirtd

检查KVM模块

确认KVM模块已加载:

shell

深色版本

1[root@qfedu.com ~]# lsmod | grep KVM

Guest OS安装

  • 图形模式 shell

    深色版本

    1[root@qfedu.com ~]# virt-manager
  • 文本模式 (适用于现场配置虚拟机规格)
  • 命令行模式 (最常用的方式,结合模板镜像+配置文件)
  • 通过Cockpit shell

    深色版本

    1[root@qfedu.com ~]# yum install cockpit -y
    2[root@qfedu.com ~]# systemctl start cockpit

    访问:浏览器访问 服务器地址:9090

KVM虚拟化技术企业级配置与入门指南

  1. 文本方式安装虚拟机

    注意事项

    在极端情况下,服务器本身没有图形界面,客户端也没有图形界面时,可以使用文本方式安装虚拟机。

    基础命令

    使用virt-install命令来安装虚拟机,无需图形界面:

    shell

    深色版本

    1# 对于RHEL 6:
    2virt-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
    3
    4# 对于CentOS 7:
    5virt-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
    6
    7# 或者使用本地ISO文件:
    8virt-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 /root/下载/CentOS-7-x86_64-DVD-2003.iso -x console=ttyS0 --nographics

    安装完成后,可以通过以下命令连接虚拟机:

    shell

    深色版本

    1virsh console VMachinename # 替换VMachinename为实际的虚拟机名称

    准备工作

    1. 上传所需文件
      • 上传所需镜像文件或已安装系统的硬盘文件到指定位置。
      • 镜像文件建议单独放置在一个目录(如/ISO)。
      • 硬盘文件则需要放在前面建立的存储池中(如/home/kvm/images)。
    2. 安装VNC
      • 为了支持图形化安装,可以安装VNC: shell

        深色版本

        1yum -y install tigervnc*

    安装虚拟机

    直接使用ISO镜像安装

    shell

    深色版本

    1virt-install --name=fuliwenKylin --vcpus=8 --memory=8G --disk path=/home/kvm/images/XXX.img,format=qcow2,size=50,bus=virtio --cdrom /ISO/XXX.iso --network bridge=br0,model=virtio --autostart --graphics vnc,listen=0.0.0.0 --noautoconsole
    使用现有的qcow2或img硬盘文件

    shell

    深色版本

    1virt-install --name=wudapengKylinV10 --vcpus=8 --ram=16384 --disk path=/KVM/images/wudapengKylin.qcow2,format=raw,bus=virtio --network bridge=br0,model=virtio --force --import --graphics vnc,listen=0.0.0.0 --noautoconsole

    参数说明

    • --name:虚拟机名称
    • --vcpus:CPU核心数
    • --memory:内存大小
    • --disk:指定磁盘文件路径及格式
    • --cdrom:添加的DVD驱动器
    • --network:配置网络
      • bridge=br0:指定之前创建的网桥
      • model=virtio:定义网卡的接入模式
    • --autostart:配置开机自启(按需配置)
    • --graphics vnc:配置VNC
    • listen=0.0.0.0:配置VNC监听地址
    • --noautoconsole:不自动运行控制台(默认是走console口安装)

    排错

    • 安装过程中,手动配置IP地址,如果提示找不到URL路径,需要返回并重新配置URL为实际的地址(如ftp://192.168.100.230/rhel6u4),这里的IP应为网桥br0的IP地址。
    • 给虚拟机分配的内存必须大于2048MB,否则可能会报错。

    命令行模式安装

    1. 虚拟机配置文件 shell

      深色版本

      1[root@qfedu.com ~]# ls /etc/libvirt/qemu
      2networks vm1.xml
    2. 存储虚拟机的介质 shell

      深色版本

      1[root@qfedu.com ~]# ls /var/lib/libvirt/images/
      2vm1.img
    3. 根据配置文件创建虚拟机
      • 需要有磁盘镜像文件: shell

        深色版本

        1[root@qfedu.com ~]# cp vm1.img vm2.img
      • 需要有配置文件: shell

        深色版本

        1[root@qfedu.com ~]# cp vm1.xml vm2.xml
      • 修改配置文件必要的内容(如UUID、MAC地址、主机名、磁盘镜像文件名)。
    4. 创建虚拟机 shell

      深色版本

      1[root@qfedu.com ~]# virsh define /etc/libvirt/qemu/vm2.xml
    5. 重启虚拟机 shell

      深色版本

      1[root@qfedu.com ~]# systemctl restart libvirtd
    6. 开启主机路由转发 shell

      深色版本

      1[root@qfedu.com ~]# vim /etc/sysctl.conf
      2net.ipv4.ip_forward = 1

      保存退出后,执行:

      shell

      深色版本

      1[root@qfedu.com ~]# sysctl -p

    实例

    使用模板镜像+配置文件方式创建虚拟机:

    1. 复制模板镜像和配置文件 shell

      深色版本

      1[root@KVM ~]# cp /var/lib/libvirt/images/vm2.img /var/lib/libvirt/images/vm3.img
      2[root@KVM ~]# cp /etc/libvirt/qemu/vm2.xml /etc/libvirt/qemu/vm3.xml
    2. 修改配置文件 xml

      深色版本

      1<domain type='kvm'>
      2  <name>vm3</name>
      3  <uuid>a2f62549-c6b7-4b8f-a8e2-c14edda35a78</uuid>
      4  <memory unit='KiB'>2099200</memory>
      5  <currentMemory unit='KiB'>2099200</currentMemory>
      6  <vcpu placement='static'>2</vcpu>
      7  <os>
      8    <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
      9    <boot dev='hd'/>
      10  </os>
      11  <features>
      12    <acpi/>
      13    <apic/>
      14  </features>
      15  <cpu mode='custom' match='exact' check='partial'>
      16    <model fallback='allow'>Haswell-noTSX</model>
      17  </cpu>
      18  <clock offset='utc'>
      19    <timer name='rtc' tickpolicy='catchup'/>
      20    <timer name='pit' tickpolicy='delay'/>
      21    <timer name='hpet' present='no'/>
      22  </clock>
      23  <devices>
      24    <emulator>/usr/libexec/qemu-kvm</emulator>
      25    <disk type='file' device='disk'>
      26      <driver name='qemu' type='qcow2'/>
      27      <source file='/var/lib/libvirt/images/vm3.img'/>
      28      <target dev='vda' bus='virtio'/>
      29      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
      30    </disk>
      31  </devices>
      32</domain>

xml

深色版本

1<disk type='file' device='disk'>
2    <driver name='qemu' type='qcow2'/>
3    <source file='/var/lib/libvirt/images/vm3-1.img'/>
4    <target dev='vda' bus='virtio'/>
5    <address type='pci' domain='0x0000' bus='0x00' slot='0x16' function='0x0'/>
6</disk>
7
8<controller type='u' index='0' model='ich9-ehci1'>
9    <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x7'/>
10</controller>
11
12<controller type='u' index='0' model='ich9-uhci1'>
13    <master startport='0'/>
14    <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0' multifunction='on'/>
15</controller>
16
17<controller type='u' index='0' model='ich9-uhci2'>
18    <master startport='2'/>
19    <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x1'/>
20</controller>
21
22<controller type='u' index='0' model='ich9-uhci3'>
23    <master startport='4'/>
24    <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x2'/>
25</controller>
26
27<controller type='pci' index='0' model='pci-root'/>
28
29<controller type='virtio-serial' index='0'>
30    <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
31</controller>
32
33<interface type='network'>
34    <mac address='52:54:00:f2:28:6f'/>
35    <source network='default'/>
36    <model type='virtio'/>
37    <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
38</interface>
39
40<serial type='pty'>
41    <target type='isa-serial' port='0'>
42        <model name='isa-serial'/>
43    </target>
44</serial>
45
46<console type='pty'>
47    <target type='serial' port='0'/>
48</console>
49
50<channel type='unix'>
51    <target type='virtio' name='org.qemu.guest_agent.0'/>
52    <address type='virtio-serial' controller='0' bus='0' port='1'/>
53</channel>
54
55<input type='mouse' bus='ps2'/>
56
57<input type='keyboard' bus='ps2'/>
58
59<memballoon model='virtio'>
60    <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
61</memballoon>
62
63</devices>
64</domain>

解释

这段配置描述了虚拟机的部分硬件配置:

  1. 磁盘配置
    • 类型为文件(file),设备类型为磁盘(disk)。
    • 使用qcow2格式。
    • 指定了磁盘文件的路径为/var/lib/libvirt/images/vm3-1.img
    • 目标设备名为vda,总线类型为virtio
    • PCI地址为domain='0x0000' bus='0x00' slot='0x16' function='0x0'
  2. U控制器配置
    • 包括一个EHCI控制器和三个UHCI控制器。
    • PCI地址分别为slot='0x04'的不同函数号。
  3. PCI控制器
    • 模型为pci-root
  4. virtio-serial控制器
    • PCI地址为domain='0x0000' bus='0x00' slot='0x05' function='0x0'
  5. 网络接口
    • MAC地址为52:54:00:f2:28:6f
    • 使用default网络源。
    • 总线类型为virtio
    • PCI地址为domain='0x0000' bus='0x00' slot='0x03' function='0x0'
  6. 串行端口和控制台
    • 包括一个串行端口和一个控制台,均指向isa-serial类型的端口0。
  7. QEMU Guest Agent通道
    • 用于与QEMU Guest Agent通信。
    • 使用virtio-serial类型的地址controller='0' bus='0' port='1'
  8. 输入设备
    • 包括鼠标和键盘,均连接到PS/2总线上。
  9. 内存气球设备
    • 模型为virtio
    • PCI地址为domain='0x0000' bus='0x00' slot='0x07' function='0x0'

确保在实际应用中根据需要调整这些配置项,特别是文件路径、MAC地址、以及其他可能影响虚拟机行为的参数。

 

 

给TA打赏
共{{data.count}}人
人已打赏
未分类

PDFBlocks API接口:为PDF文件添加自定义文本水印

2025-5-15 17:06:24

未分类

KVM虚拟化技术企业级配置与入门指南

2025-5-15 17:06:31

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索