虚拟化、公有云

本文详细介绍了虚拟化技术的概念,以及其与云计算的关系,特别是KVM、QEMU和Libvirt在虚拟化平台安装和管理中的作用。涵盖了Linux验证、虚拟机原理、网络配置和云服务模式(IaaS、PaaS、SaaS)的区别,以及公有云、私有云和混合云的对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常见虚拟化技术

一、虚拟化主要厂商及产品介绍

系列

PC/服务器版代表

VMwareVMware Workstation、VSphere
MicrosoftVirtualPC、Hyper-V
RedHatKVM、RHEV
CitrixXen
OracleOracle VM VirtualBox

虚拟化与云计算的关系

一、虚拟化是什么

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

二、云计算是什么

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

虚拟化平台安装

一、Linux验证虚拟化支持

[root@localhost ~]# grep -Po "vmx|svm" /proc/cpuinfo
grep -Po "vmx|svm" /proc/cpuinfo
vmx
... ...

[root@localhost ~]# lsmod | grep kvm
kvm_intel              174841  6
kvm                    578518  1 kvm_intel
irqbypass                13503 1 kvm
[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 是Linux内核模块,它需要CPU指令集(Inter-VT/AMD-V)的支持,是一种硬件辅助虚拟化技术
  • QEMU 是一个虚拟化的仿真工具,通过 ioctl 与内核模块交互完成对硬件的虚拟化支持
  • Libvitr 是一个对虚拟化管理的接口和工具,提供客户端程序,例如:virsh,virt-manager

3、安装服务

1)、构建虚拟化平台工具软件包:
服务软件包文件
虚拟化仿真程序qemu-kvm
核心守护进程libvirt-daemon
客户端程序libvirt-client
QEMU管理模块libvirt-daemon-driver-qemu
网络管理模块libvirt-daemon-driver-network
DHCP、DNS服务dnsmasq
2)、qemu-kvm虚拟化平台安装 

虚拟化平台的软件包已经默认整合在系统安装光盘中

安装虚拟化平台

[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)virsh

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

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

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

[root@ecs ~]# virsh version
setlocale: No such file or directory
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

虚拟化网络

一、网桥文件

模板来自官方网站

官网手册: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>

二、虚拟网络管理命令 

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

设置开机自启动

三、创建网桥

# 通过配置文件定义网桥设备
[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、虚拟配置文件(*.xml)

  • 文件默认路径:/etc/libvirt/qemu/
  • 用途:定义了虚拟机的设备,例如:CPU、内存、网卡等

2、存储文件(*.img)

  • 文件默认路径:/var/lib/libvirt/images/
  • 用途:仿真虚拟机磁盘,存储所有数据信息

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

  • 创建 vmhost.img

  • 创建 vmhost.xml

二、虚拟机磁盘

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

文件仿真 在软件层面模拟存储设备的技术,通常指的是通过软件工具模拟真实文件系统的行为

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

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

  • 支持弹性空间
  • 支持后端盘复用
  • 支持快照
  • 支持压缩

1、CoW

Copy On Write 写时拷贝技术

  • CoW 技术中,指针并不直接指向原始盘的所有快,而是用于管理和追踪数据块的状态。
    初始状态下,所有的指针都指向原始盘中的相应数据块。这意味着系统中的每一个数据块都有一个指针指向其在原始盘中的位置。
    
    当某个数据块需要被修改时,系统不会直接修改原始盘中的数据块,而是会在新的位置创建一个副本,并将修改应用到这个副本上。
    创建副本后,指针会被更新,指向新的数据块。原始数据块保持不变,仍然可以被其它快照或版本引用。
    
    在创建快照时,系统会记录当前所有数据块的指针状态。这些指针指向的数据块构成了快照的一个完整视图。
    当后续有数据块被修改时,快照中的指针仍然指向原始数据块,从而保证快照的一致性和完整性。
    快照可以是原始数据的快照,也可以是修改后的数据的快照,这取决于快照创建的时间点。
  • 若一个块要被改写,首先把数据从原始盘拷贝到前端盘,然后在前端盘进行改写,最后把数据指针指向改写过的数据
  • 原始盘通常被视为只读的

虚拟机配置管理

一、虚拟机磁盘管理

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:
......

二、虚拟机配置文件管理

1、虚拟配置文件

文件:/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>

2、示例

---虚拟机名称: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'/>

三、创建虚拟机

1、虚拟机管理命令

命令说明
virsh list [--all]列出虚拟机
virsh start/shutdown/reboot启动/关闭/重启虚拟机
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:基础设施服务(把各种资源整合起来,然后租给有需要的用户,其中的资源包括处理器(CPU)、内存、存储、网络和其他基本的计算资源)
  • Paas:平台服务(除基础设施外还提供如:编程语言,运行环境,技术支持,甚至针对该平台而进行的应用系统开发、优化等服务,也就是中间件服务)
  • SaaS:软件服务(是一种通过Internet提供软件的模式,客户端可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务)

2、公有云、私有云、混合云

  • 公有云:是第三方的云供应商,通过互联网为广大用户提供的一种按需使用的服务器资源,是一种云基础设施。
  • 私有云:是一个企业或组织的专用云环境。一般在企业内部使用,不对外提供服务,因此它也被视为一种企业云。
  • 混合云:是在私有云的基础上,组合一个或多个公有云资源,从而允许在不同云环境之间共享应用和数据的使用方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值