• KVM虚拟化介绍和安装使用方法


    一、KVM虚拟化介绍

    虚拟化:在一台计算机上虚拟出多个逻辑的计算机,而且每个逻辑计算机
    它可以是不同操作系统

    虚拟化技术:可以扩大硬件容量,单个cpu模拟出多个cpu并行,
    允许一个平台上同时运行多个操作系统,应用程序都可以在相互独立
    的空间内运行,而且互不影响。

    为什么企业使用虚拟化技术
    1、节约成本
    2、提高效率,物理机我们一般称为宿主机(Host),宿主机上面的虚拟机称为客户机(Guest)。

    那么 Host 是如何将自己的硬件资源虚拟化,并提供给 Guest 使用的呢?
    这个主要是通过一个叫做 Hypervisor 的程序实现的。

    Hypervisor:一种运行在物理服务器硬件与操作系统之间的中间软件层
    可允许多个操作系统和应用来共享硬件资源

    根据 Hypervisor 的实现方式和所处的位置,虚拟化又分为两种:

    • 完全虚拟化:直接在物理机上部署虚拟化,且不需要修改操作系统内核
    • 半虚拟化:需要修改操作系统内核,使其支持虚拟化驱动来实现虚拟化技术

    1、完全虚拟化

    Hypervisor 直接安装在物理机上,多个虚拟机在 Hypervisor 上运行。Hypervisor 实现方式一般是一个特殊定制的 Linux 系统。Xen 和 VMWare 的 ESXi 都属于这个类型
    在这里插入图片描述

    2、半虚拟化

    在这里插入图片描述
    理论上讲:
    完全虚拟化一般对硬件虚拟化功能进行了特别优化,性能上比半虚拟化要高;
    半虚拟化因为基于普通的操作系统,会比较灵活,比如支持虚拟机嵌套。嵌套意味着可以在KVM虚拟机中再运行KVM。

    二、kvm介绍
    kVM 全称是 Kernel-Based Virtual Machine。也就是说 KVM 是基于 Linux 内核实现的。
    KVM有一个内核模块叫 kvm.ko,只用于管理虚拟 CPU 和内存。
    那 IO 的虚拟化,比如存储和网络设备则是由 Linux 内核与Qemu来实现。
    Qemu 是纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备,我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机,虚拟机认为自己和硬件打交道,但其实是和 Qemu 模拟出来的硬件打交道,Qemu 将这些指令转译给真正的硬件。
    正因为 Qemu 是纯软件实现的,所有的指令都要经 Qemu 过一手,性能非常低,所以,在生产环境中,大多数的做法都是配合 KVM 来完成虚拟化工作,因为 KVM 是硬件辅助的虚拟化技术,主要负责 比较繁琐的 CPU 和内存虚拟化,而 Qemu 则负责 I/O 虚拟化,两者合作各自发挥自身的优势,相得益彰.

    作为一个 Hypervisor,KVM 本身只关注虚拟机调度和内存管理这两个方面。IO 外设的任务交给 Linux 内核和 Qemu。

    Libvirt 就是 KVM 的管理工具。管理虚拟机和虚拟化功能的软件
    其实,Libvirt 除了能管理 KVM 这种 Hypervisor,还能管理 Xen,VirtualBox 等。
    Libvirt 包含 3 个东西:后台 daemon 程序 libvirtd、API 库和命令行工具 virsh
    1、libvirtd是服务程序,接收和处理 API 请求;
    2、API 库使得其他人可以开发基于 Libvirt 的高级工具,比如 virt-manager,这是个图形化的 KVM 管理工具;
    3、virsh 是我们经常要用的 KVM 命令行工具

    三、KVM部署(基于CentOS7)
    环境说明:
    系统:CentOS7
    IP:192.168.100.100

    1、CPU虚拟化功能
    部署前请确保你的CPU虚拟化功能已开启,分为两种情况:
    (1)虚拟机要关机设置CPU虚拟化
    (2)物理机要在BIOS里开启CPU虚拟化

    2、虚拟机设置(内存:8G 磁盘:200G 虚拟化功能:开启)
    //设置虚拟机内存,添加一块200G的硬盘
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    //开启虚拟化
    在这里插入图片描述//新建分区,将硬盘所有大小都给这个分区
    注意要关闭防火墙和selinux

    [root@RS1 ~]# lsblk 
    NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda               8:0    0   50G  0 disk 
    ├─sda1            8:1    0    1G  0 part /boot
    └─sda2            8:2    0   49G  0 part 
      ├─centos-root 253:0    0   44G  0 lvm  /
      └─centos-swap 253:1    0    5G  0 lvm  [SWAP]
    sdb               8:16   0  200G  0 disk 
    sr0              11:0    1  4.2G  0 rom  
    [root@RS1 ~]# parted /dev/sdb 
    GNU Parted 3.1
    使用 /dev/sdb
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted) mklabel                                                          
    新的磁盘标签类型? msdos                                                  
    (parted) unit                                                             
    Unit?  [compact]? MiB                                                     
    (parted) p                                                                
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdb: 204800MiB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags: 
    
    Number  Start  End  Size  Type  File system  标志
    
    (parted) mkpart                                                           
    分区类型?  primary/主分区/extended/扩展分区? primary                     
    文件系统类型?  [ext2]? xfs                                               
    起始点? 10MiB                                                            
    结束点? 204790MiB                                                        
    (parted) p                                                                
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdb: 204800MiB
    Sector size (logical/physical): 512B/512B
    Partition Table: msdos
    Disk Flags: 
    
    Number  Start    End        Size       Type     File system  标志
     1      10.0MiB  204790MiB  204780MiB  primary
    
    (parted) q                                                                
    信息: You may need to update /etc/fstab.
    
    //格式化
    [root@RS1 ~]# udevadm settle
    [root@RS1 ~]# mkfs.xfs /dev/sdb
    sdb   sdb1  
    [root@RS1 ~]# mkfs.xfs /dev/sdb1 
    meta-data=/dev/sdb1              isize=512    agcount=4, agsize=13105920 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=1, sparse=1, rmapbt=0
             =                       reflink=1
    data     =                       bsize=4096   blocks=52423680, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
    log      =internal log           bsize=4096   blocks=25597, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    [root@RS1 ~]# blkid /dev/sdb1 
    /dev/sdb1: UUID="0df1b1eb-b450-4761-a2a7-38b7ef24d599" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="e9ad57d5-01"
    [root@RS1 ~]# 
    
    //挂载
    [root@RS1 ~]# mkdir /kvmdata
    [root@RS1 ~]# vim /etc/fstab
    #最下面添加
    UUID="0df1b1eb-b450-4761-a2a7-38b7ef24d599" /kvmdata xfs defaults 0 0
    [root@
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
  • 相关阅读:
    20C++面向对象编程----1、类的封装
    mysql出现提示错误10061的解决方法
    java健身俱乐部管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
    kubernetes CNI(Container Network Inferface)
    了解LVS,配置LVS
    污水中COD超标的处理方法
    十分钟速成DevOps实践
    glib主事件循环
    什么是鉴权?一篇文章带你了解postman的多种方式
    【新手友好】用Pyspark和GraphX解析复杂网络数据
  • 原文地址:https://blog.csdn.net/m0_52091913/article/details/127125891