虚拟化平台、主机

虚拟化技术介绍

一、常见虚拟化技术

二、虚拟化与云计算的关系

虚拟化是什么

虚拟化是一种技术,就是将不可拆分的实体资源变成可以自由划分的逻辑资源,从而实现资源的整合、隔离、在分配,云计算就是利用了虚拟化技术的这个特点

云计算是什么

云计算是一种服务模式,其思想就是把各种资源整合起来,然后租给有需要的用户,其中的资源包括处理器(CPU)、内存、存储、网络和其它基本的计算资源。通常我们通过虚拟化手段把这些资源分割打包提供给用户使用

虚拟化平台安装

一、Linux验证虚拟化支持

[root@server1 ~]# modprobe kvm
[root@server1 ~]# lsmod | grep kvm
kvm_intel             389120  5
kvm                   958464  1 kvm_intel
irqbypass              16384  7 kvm
[root@server1 ~]# egrep -o "vmx|svm" /proc/cpuinfo 

二、虚拟化平台安装

1、实验图例

2、安装服务

KVM/QEMU/LIBVIRTD

---KVM 是Linxu内核模块,它需要CPU指令集的支持,是一种硬件辅助虚拟化技术

---QEMU 是一个虚拟化的仿真工具,通过 ioctl 与内核模块交互完成对硬件的虚拟化支持

---Libvirt 是一个对虚拟化管理的接口和工具,提供客户端程序,例如:virsh、virt-manager

构建虚拟化平台工具软件包:

服务 软件包文件
虚拟化仿真程序 qemu-kvm
核心守护进程 libvirt-daemon
客户端程序 libvirt-client
QEMU管理模块 libvirt-daemon-driver-qemu
网络管理模块 libvirt-daemon-driver-network
DHCP、DNS服务 dnsmasq

virsh

提供管理各虚拟机的命令接口

支持交互/非交互模式,查看/创建/停止/关闭 ...

格式:virsh 控制指令 [资源名称] [参数] 

[root@ecs ~]# dnf install -y qemu-kvm libvirt-daemon libvirt-client libvirt-daemon-driver-qemu libvirt-daemon-driver-network dnsmasq
[root@ecs ~]# systemctl enable libvirtd --now
[root@ecs ~]# virsh version 
Compiled against library: libvirt 8.0.0
Using library: libvirt 8.0.0
Using API: QEMU 8.0.0
Running hypervisor: QEMU 6.2.0

3、虚拟化网络

1)创建网桥
命令 描述
virsh net-list [--all] 列出虚拟网络
virsh net-start 启动虚拟交换机
virsh net-destroy 强制停止虚拟交换机
virsh net-define 根据xml文件创建虚拟网络
virsh net-undefine 删除一个虚拟网络设备
virsh net-edit 修改虚拟交换机的配置
virsh net-autostart 设置开机自启动

网桥文件(模板来自官方网站)

官网手册:https://libvirt.org/docs.html

默认路径:/etc/libvirt/qemu/networks/vbr.xml

[root@ecs ~]# vim /etc/libvirt/qemu/networks/vbr.xml
<network>
  <name>vbr</name>
  <forward mode='nat'/>
  <bridge name='vbr' stp='on' delay='0'/>
  <ip address='192.168.100.254' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.100.128' end='192.168.100.200'/>
    </dhcp>
  </ip>
</network>
# 创建网桥
[root@ecs ~]# virsh net-define /etc/libvirt/qemu/networks/vbr.xml
Network vbr defined from /etc/libvirt/qemu/networks/vbr.xml
# 设置开机自启动
[root@ecs ~]# virsh net-autostart vbr
Network vbr marked as autostarted
# 启动网桥
[root@ecs ~]# virsh net-start vbr
Network vbr started
# 验证状态
[root@ecs ~]# virsh net-list --all
 Name   State    Autostart   Persistent
-----------------------------------------
 vbr    active   yes         yes

[root@ecs ~]# ifconfig vbr # 验证

虚拟机管理

一、虚拟机原理

1、虚拟机的构成

1)虚拟配置文件(*.xml)

文件默认路径:/etc/libvirt/qemu/

用途:定义了虚拟机的设备,例如:CPU、内存、网卡等

2)存储文件(*.img)

文件默认路径:/var/lib/libvirt/images/

用途:仿真虚拟机磁盘,存储所有数据信息

3)例如我们要创建 vmhost 虚拟机

创建 vmhost.img

创建 vmhost.xml

2、虚拟机磁盘

虚拟机磁盘可以使用块设备、逻辑卷设备、文件仿真等。

其中文件仿真模式具有易迁移、易扩展、支持多种磁盘格式、配置方便等特点,在云平台上被广泛使用。

在文件仿真中被广泛采用的CoW格式具有:

---支持弹性空间

---支持后端盘复用

---支持快照

---支持压缩

1)Copy On Write 写时拷贝技术

CoW 技术使用指针指向原始盘所有块

若一个块要被改写,首先把数据从原始盘拷贝到前端盘,然后在前端盘进行改写,最后把数据指针指向改写过的数据

原始盘始终是只读的

二、虚拟机配置管理

1、虚拟机磁盘管理

qemu-img 是虚拟机的磁盘管理命令,支持非常多的磁盘格式,例如 raw、qcow2、vdi、vmdk 等等。

1)qemu-img 命令格式

--- qemu-img 子命令 子命令参数 块文件名称 大小

2)常用子命令有:

--- create        创建一个磁盘

--- info        查看磁盘信息

3)创建磁盘
# 创建普通格式磁盘
[root@ecs ~]# qemu-img create -f raw disk1.img 20G
Formatting 'disk1.img', fmt=raw size=21474836480
# 创建 CoW 格式磁盘
[root@ecs ~]# qemu-img create -f qcow2 disk2.img 20G
Formatting 'disk2.img', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=21474836480 lazy_refcounts=off refcount_bits=16
# 验证
[root@ecs ~]# ls
disk1.img  disk2.img
[root@ecs ~]# qemu-img info disk1.img 
image: disk1.img
file format: raw
virtual size: 20 GiB (21474836480 bytes)
disk size: 1 MiB
[root@ecs ~]# qemu-img info disk2.img 
image: disk2.img
file format: qcow2
virtual size: 20 GiB (21474836480 bytes)
disk size: 196 KiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
    extended l2: false
[root@ecs ~]# rm -f disk1.img disk2.img 
[root@ecs ~]# ls
[root@ecs ~]# 
4)创建带后端盘的文件
# 上传镜像 cirros.qcow2 到 /var/lib/libvirt/images
[root@ecs ~]# cd /var/lib/libvirt/images/
[root@ecs images]# qemu-img create -b cirros.qcow2 -F qcow2 -f qcow2 vmhost.img 20G
[root@ecs images]# qemu-img info vmhost.img 
image: vmhost.img
file format: qcow2
virtual size: 20 GiB (21474836480 bytes)
disk size: 670 MiB
cluster_size: 65536
backing file: cirros.qcow2
backing file format: qcow2
Format specific information:
......

2、虚拟机配置文件

虚拟配置文件

---文件 /etc/libvirt/qemu/虚拟机名称.xml

虚拟机配置文件太长,记不住怎么办

---虚拟机配置文件可以用模板创建,能够认识修改即可

如何获取虚拟机模板

---官方网站

<domain type='kvm'>    # 虚拟机类型
  <name>vmhost</name>    #虚拟机名称
  <memory unit='KB'>1048576</memory>    # 最大内存
  <currentMemory unit='KB'>1048576</currentMemory>    # 当前内存
  <vcpu placement='static'>2</vcpu>    # CPU数量
  <os>
    <type arch='x86_64' machine='pc'>hvm</type>    # 系统引导参数
    <boot dev='hd'/>
    <bootmenu enable='yes'/>
    <bios useserial='yes'/>
  </os>
  <features>    # 电源管理特性
    <acpi/>
    <apic/>
  </features>
  <cpu mode='host-passthrough'></cpu>    # CPU仿真
  <clock offset='localtime'/>            # 系统时钟
  <on_poweroff>destroy</on_poweroff>    # 模拟硬件按钮
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>    # 设备定义
    <emulator>/usr/libexec/qemu-kvm</emulator>    # 仿真程序
    <disk type='file' device='disk'>            # 文件/磁盘仿真
      <driver name='qemu' type='qcow2'/>        # 文件格式
      <source file='/var/lib/libvirt/images/vmhost.img'/>    # 磁盘文件路径
      <target dev='vda' bus='virtio'/>
    </disk>
    <interface type='bridge'>    网卡仿真
      <source bridge='vbr'/>    # 连接网桥名称
      <model type='virtio'/>
    </interface>
    <channel type='unix'>    # agent客户端
      <target type='virtio' name='org.qemu.guest_agent.0'/>
    </channel>
    <serial type='pty'></serial>    # 终端类型
    <console type='pty'>
      <target type='serial'/>
    </console>
    <memballoon model='virtio'></memballoon>
  </devices>
</domain>

按要求使用模板创建虚拟机配置文件

---虚拟机名称:vmhost

---虚拟机配置:CPU(2核心) 内存(16G)

---虚拟机网络:vbr

[root@ecs ~]# vim /etc/libvirt/qemu/vmhost.xml
02: <name>vmhost</name>
03: <memory unit='KB'>1024000</memory>
04: <currentMemory unit='KB'>1024000</currentMemory>
05: <vcpu placement='static'>2</vcpu>
25: <source file='/var/lib/libvirt/images/vmhost.img'/>
29: <source bridge='vbr'/>

3、创建虚拟机

1)虚拟机管理命令
命令 说明
virsh list [--all] 列出虚拟机
virsh start/shutdown 启动/关闭虚拟机
virsh destroy 强制停止虚拟机
virsh define/undefine 创建/删除虚拟机
virsh console 连接虚拟机的 console
2)创建 vmhost 虚拟机
[root@ecs ~]# virsh define /etc/libvirt/qemu/vmhost.xml
Domain vmhost defined from /etc/libvirt/qemu/vmhost.xml
[root@ecs ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     vmhost                         shut off
[root@ecs ~]# virsh start vmhost
Domain vmhost started
[root@ecs ~]# virsh console vmhost # 两次回车
Connected to domain vmhost
Escape character is ^]

login as 'cirros' user. default password: 'gocubsgo'. use 'sudo' for root.
cirros login: 
退出使用 ctrl + ]
3)虚拟机管理命令(续)
命令 说明
virsh edit 修改虚拟机的配置
virsh autostart 设置虚拟机自启动
virsh dominfo 查看虚拟机摘要信息
virsh domiflist 查看虚拟机网卡信息
virsh domblklist 查看虚拟机硬盘信息

云服务类型

一、三大服务模式

云计算是一种服务模式。

1、IaaS: 基础设施服务,Infrastructure-as-a-service

把各种资源整合起来,然后租给有需要的用户,其中的资源包括处理器(CPU)、内存、存储、网络和其他基本的计算资源。

2、PaaS: 平台服务,Platform-as-a-service

除基础设施外还提供如:编程语言,运行环境,技术支持,甚至针对该平台而进行的应用系统开发、优化等服务,也就是中间件服务。

3、SaaS: 软件服务,Software-as-a-service

是一种通过Internet提供软件的模式,客户端可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务

二、公有云、私有云、混合云

公有云:是第三方的云供应商,通过互联网为广大用户提供的一种按需使用的服务器资源,是一种云基础设施。

私有云:是一个企业或组织的专用云环境。一般在企业内部使用,不对外提供服务,因此它也被视为一种企业云。

混合云:是在私有云的基础上,组合其他公有云资源,从而允许在不同云环境之间共享应用和数据的使用方式。

相关推荐

  1. 虚拟平台主流hypervisor工作原理分析

    2024-01-30 11:36:03       21 阅读
  2. webvirtcloud:kvm虚拟管理平台

    2024-01-30 11:36:03       41 阅读
  3. 部署虚拟web主机

    2024-01-30 11:36:03       56 阅读
  4. Nginx虚拟主机配置

    2024-01-30 11:36:03       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-30 11:36:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-30 11:36:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-30 11:36:03       82 阅读
  4. Python语言-面向对象

    2024-01-30 11:36:03       91 阅读

热门阅读

  1. Flask 与小程序 微信模板消息

    2024-01-30 11:36:03       62 阅读
  2. Flutter Web持久化存储SharedPreferences原理

    2024-01-30 11:36:03       59 阅读
  3. 安全刷写简单说明

    2024-01-30 11:36:03       51 阅读
  4. 二、Vue3文件目录介绍

    2024-01-30 11:36:03       55 阅读
  5. Jenkins

    Jenkins

    2024-01-30 11:36:03      60 阅读
  6. Android imageView.setImageXXX() 引发的卡顿问题

    2024-01-30 11:36:03       50 阅读
  7. OkHttp的理解和使用

    2024-01-30 11:36:03       49 阅读
  8. 大白话理解大型语言模型(LLM):预训练和微调

    2024-01-30 11:36:03       52 阅读
  9. Qt基础-进度条控件QPrgressBar详解

    2024-01-30 11:36:03       52 阅读