主要内容:

虚拟化技术(安装虚拟化平台、COW写时复制创建磁盘文件、配置虚拟网络)、公有云介绍

补充:C:\Users> subts X: G:\vms   //映射盘符(> subts X: /D删除映射)

一、虚拟化技术介绍

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

虚拟化与云计算是现代 IT 架构中的两个关键技术,它们之间有着密切的关系,但也有明显的区别。

1)虚拟化

虚拟化 是一种技术,允许在一台物理硬件上运行多个虚拟机(VM)或容器,每个虚拟机或容器都可以运行独立的操作系统和应用程序。虚拟化的主要目标是提高硬件资源的利用率、灵活性和可管理性。

  • 关键技术

    • 虚拟机管理程序(Hypervisor):如 VMware ESXi、Microsoft Hyper-V、KVM 等。
    • 容器化:如 Docker、LXC 等。
  • 主要优势

    • 资源隔离:每个虚拟机或容器独立运行,互不干扰。
    • 资源利用率:提高硬件资源的利用率,减少浪费。
    • 灵活性:快速部署、迁移和扩展虚拟机或容器。

2)云计算

云计算 是一种基于互联网的计算模式,提供按需的计算资源(如服务器、存储、数据库、网络、软件等),用户可以根据需要动态调整资源,并按使用量付费。云计算的核心是资源池化和按需服务。

  • 服务模型

    • IaaS(基础设施即服务):提供虚拟化的计算、存储和网络资源。
    • PaaS(平台即服务):提供开发和运行应用程序的平台。
    • SaaS(软件即服务):提供基于云的应用程序。
  • 部署模型

    • 公有云:资源由第三方云服务提供商管理,用户通过互联网访问。
    • 私有云:资源由企业内部管理,仅供内部使用。
    • 混合云:结合公有云和私有云,灵活调配资源。

基础技术:

  • 虚拟化是云计算的基础:云计算依赖虚拟化技术来实现资源的池化和动态分配。虚拟化技术使得云计算能够提供灵活、可扩展的计算资源。

资源池化:

  • 虚拟化实现资源池化:通过虚拟化,物理资源(如 CPU、内存、存储)被抽象为虚拟资源池,云计算平台可以按需分配这些资源给用户。

动态扩展:

  • 虚拟化支持动态扩展:虚拟化技术使得云计算平台能够快速创建、销毁和迁移虚拟机或容器,实现资源的动态扩展和收缩。

虚拟化

是一种底层技术,专注于硬件资源的抽象和隔离。

适用于需要提高硬件资源利用率和灵活性的场景,如数据中心、企业内部 IT 环境。

通常由企业内部 IT 团队管理,提供定制化的虚拟化环境。

云计算

是一种高层服务模式,专注于提供按需的计算资源和服务。

适用于需要按需获取和使用计算资源的场景,如互联网应用、大数据处理、开发测试环境。

由云服务提供商管理,用户通过互联网访问和使用云服务。

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

1)VMware(收费,企业版 ESXi)

VMware ESXi 是一种裸机虚拟化管理程序,广泛用于企业级虚拟化环境。以下是简要介绍:

  • 特点

    • 高性能:直接在物理服务器上运行,提供高性能的虚拟化。
    • 企业级功能:支持高可用性、负载均衡、资源管理等企业级功能。
    • 管理工具:提供 vSphere 管理套件,包括 vCenter Server 和 vSphere Client。
    • 安全性:提供强大的安全功能,如虚拟机加密、访问控制等。
  • 适用场景

    • 大型企业数据中心
    • 需要高性能和高可用性的应用环境
    • 需要集中管理和监控的复杂虚拟化环境

2)Proxmox

Proxmox 是一个开源的虚拟化管理平台,基于 KVM 和 LXC 技术。以下是简要介绍:

  • 特点

    • 开源:完全开源,社区支持强大。
    • 集成管理:集成了 KVM 虚拟化和 LXC 容器化,提供统一的管理界面。
    • Web 管理界面:提供直观的 Web 管理界面,方便管理和监控。
    • 高可用性:支持集群和高可用性配置,确保服务连续性。
  • 适用场景

    • 中小型企业
    • 需要开源解决方案的环境
    • 需要灵活和可扩展的虚拟化平台

3、Linux虚拟化平台安装

KVM 是Linux内核模块,它需要CPU指令集(Intel-VT/AMD-V)的支持,是一种硬件辅助虚拟化技术;

  • - QEMU 是一个虚拟化的仿真工具,通过ioctl与内核模块交互完成对硬件的虚拟化支持;
  • - Libvirt 是一个虚拟化管理的接口和工具,提供客户端程序(如virsh、virt-manager)

① qemu-kvm

- 为kvm提供底层系统设备仿真支持;

② libvirt-daemon

- libvirtd 守护进程,管理虚拟机

③ libvirt-client

- 客户端软件,提供客户端管理命令(virsh)

④ libvirt-daemon-driver-qemu

- libvirtd 连接 qemu 的驱动


Linux虚拟化平台安装示例:

① 查看是否支持虚拟化

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

[root@localhost ~]# lsmod | grep kvm   //列出已有且加载的模块
kvm_amd              2176426  0
kvm                   578518  1 kvm_amd
irqbypass              13503  1 kvm

② 验证yum仓库的配置

[root@localhost ~]# yum makecache
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
CentOS-Base                                                                                                                       | 3.6 kB  00:00:00
(1/2): CentOS-Base/other_db                                                                                                       | 2.5 MB  00:00:00
(2/2): CentOS-Base/filelists_db                                                                                                   | 6.9 MB  00:00:00
Metadata Cache Created

[root@localhost ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                                                repo name                                                                   status
CentOS-Base                                                            CentOS-7 - Base                                                             9,911
repolist: 9,911

③ 安装 libvirtd虚拟化平台

虚拟化平台的软件包已默认整合在系统安装光盘中,直接可以使用yum进行安装

[root@localhost ~]# yum -y install qemu-kvm \   //提供仿真支持
libvirt-daemon \    // libvirtd 守护进程
libvirt-daemon-driver-qemu \    // libvirtd 连接 qemu 的驱动
libvirt-client    //提供客户端管理命令virsh

[root@localhost ~]# systemctl enable --now libvirtd   //启动服务并开机自启
[root@localhost ~]# virsh version    //查看virsh版本
Compiled against library: libvirt 3.9.0
Using library: libvirt 3.9.0
Using API: QEMU 3.9.0
Running hypervisor: QEMU 1.5.3

4、虚拟机的组成

虚拟机的组成主要包括两个关键部分:虚拟磁盘文件和虚拟机配置文件。

1)虚拟磁盘文件(*.img)

虚拟磁盘文件 是虚拟机存储数据的文件,通常以.img 或 .qcow2 等格式存储。这些文件模拟了物理硬盘,存储虚拟机的操作系统、应用程序和用户数据。

文件默认路径

  • 基于 libvirt 的虚拟化环境中,虚拟磁盘文件通常存储在 /var/lib/libvirt/images/ 目录下

用途

  • 存储数据:虚拟磁盘文件存储虚拟机的所有数据,包括操作系统、应用程序和用户数据
  • 配置虚拟机资源参数:虚拟磁盘文件的大小、格式和性能参数可以通过配置文件进行设置

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

虚拟配置文件 是描述虚拟机配置的 XML 文件,包含了虚拟机的所有配置参数,如虚拟 CPU、内存、网络接口、磁盘设备等。

文件默认路径

  • 基于 libvirt 的虚拟化环境中,虚拟配置文件通常存储在 /etc/libvirt/qemu/ 目录下

用途

  • 仿真虚拟机磁盘:配置文件中定义了虚拟磁盘文件的路径和参数,用于仿真虚拟机的磁盘设备
  • 存储所有数据信息:配置文件包含了虚拟机的所有配置信息,如 CPU 数量、内存大小、网络接口、磁盘设备等

详细说明:

虚拟磁盘文件(*.img)
  • 格式

    • raw:原始格式,性能高,但占用空间大。
    • qcow2:QEMU Copy-On-Write 格式,支持快照、压缩和加密,占用空间小。
    • vmdk:VMware 使用的格式,兼容性好。
  • 管理工具

    • qemu-img:用于创建、转换和管理虚拟磁盘文件的工具。
    • virsh:用于管理虚拟机的命令行工具,可以操作虚拟磁盘文件。
虚拟配置文件(*.xml)
  • 内容

    • 虚拟机名称:虚拟机的唯一标识符。
    • CPU 配置:虚拟 CPU 的数量和类型。
    • 内存配置:虚拟内存的大小。
    • 磁盘设备:虚拟磁盘文件的路径和参数。
    • 网络接口:虚拟网络接口的配置,如桥接、NAT 等。
    • 其他设备:如 USB 设备、显卡等。
  • 管理工具

    • virsh:用于管理虚拟机的命令行工具,可以编辑和查看虚拟配置文件。
    • virt-manager:图形化管理工具,可以创建、编辑和管理虚拟机配置文件。

二、COW 写时复制

在虚拟化环境中,写时复制(Copy-On-Write,COW) 技术被广泛应用于虚拟磁盘文件,以提高存储效率和性能。特别是在 QEMU/KVM 虚拟化平台中,qcow2 格式的虚拟磁盘文件就是基于 COW 技术实现的。

1)虚拟机磁盘格式特点:

  • ① 弹性空间
  • ② 支持后端盘复用
  • ③ 支持快照
  • ④ 支持压缩
  • ⑤ 磁盘I/O性能较高

2)COW技术原理

  • 初始状态:虚拟机启动时,其虚拟磁盘文件(如 qcow2 格式)会指向基础镜像。所有读操作都直接从基础镜像中读取数据。
  • 写操作触发复制:当虚拟机尝试写入数据时,系统会检测到这个写操作。
  • 创建数据块副本:系统会为即将写入的数据块创建一个副本,并将写操作应用到这个副本上。
  • 更新元数据:虚拟磁盘文件的元数据会更新,指向新的数据块副本,而不是基础镜像中的数据块。
  • 读操作继续共享:对于读操作,虚拟机仍然可以从基础镜像中读取数据,不会触发复制操作。

3)磁盘管理命令(qemu-img)

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

  • 命令格式:qemu-img 子命令 子命令参数 块文件名称(磁盘文件) 大小
  • 常用子命令:

[create]   创建一个磁盘

[convert]  转换磁盘格式

[info]     查看磁盘信息

补充:使用qemu-img help 可查看帮助


创建带后端盘的qcow2镜像示例:

  • 上传cirros.qcow2后端盘(原始盘)到虚拟机(参考:/linux-soft/5/ cirros.qcow2)
  • 通过qemu-img磁盘管理命令,创建虚拟机磁盘;
[root@localhost ~]# cp cirros.qcow2 /var/lib/libvirt/images/    //拷贝到硬盘存储文件
[root@localhost ~]# cd /var/lib/libvirt/images/
[root@localhost images]# ls
cirros.qcow2
[root@localhost images]# qemu-img create -f qcow2 -b cirros.qcow2 vmhost.img 30G
Formatting 'vmhost.img', fmt=qcow2 size=32212254720 backing_file='cirros.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off

补充:[ -f ]指定磁盘格式类型,[ -b ]指定后端盘

[root@localhost images]# qemu-img info vmhost.img    //查看磁盘信息
image: vmhost.img
file format: qcow2
virtual size: 30G (32212254720 bytes)
disk size: 196K
cluster_size: 65536
backing file: cirros.qcow2
Format specific information:
    compat: 1.1
lazy refcounts: false

补充:准备磁盘文件vmhost.img后,进行下一步创建虚拟机前,一定要先配置好虚拟环境的网络;

三、虚拟机网络管理

1)网络管理命令(virsh)

提供管理各虚拟机的命令接口;支持交互/非交互模式(如查看、创建、停止、关闭…)

  • 格式:virsh 管理命令 [虚拟机名称] [参数]
  • 虚拟网络配置文件路径:/etc/libvirt/qemu/networks/vbr.xml

官方文档地址:libvirt: XML Format   //模板文件案例

2)虚拟网络设备管理命令

命令

说明

virsh net-list [--all]

列出虚拟网络[--all 全部虚拟机,包括未启动虚拟机]

virsh net-start

启动虚拟交换机

virsh net-destroy

强制停止虚拟交换机

virsh net-define

根据xml文件创建虚拟网络

virsh net-undefine

删除一个虚拟网络设备

virsh net-edit

修改虚拟交换机的配置

virsh net-autostart

设置开机自启动


配置虚拟网络示例:

① 编写虚拟配置文件 /etc/libvirt/qemu/networks/vbr.xml

[root@localhost ~]# vim /etc/libvirt/qemu/networks/vbr.xml   //扩展描述语言xml
<network>
  <name>vbr</name>      //网桥描述名(virsh net-list查看)
  <forward mode='nat'/>    //NAT模式
  <bridge name='vbr' stp='on' delay='0'/>    //网桥设备名(ifconfig查看),尽量与描述名一致、stp生成树防止网络打环
  <ip address='192.168.100.254' netmask='255.255.255.0'>   //网桥设备IP地址、掩码
    <dhcp>
      <range start='192.168.100.100' end='192.168.100.200'/>  //网桥设备DHCP分配范围
    </dhcp>
  </ip>
</network>

② 创建虚拟网桥(即虚拟交换机)

[root@localhost ~]# cd /etc/libvirt/qemu/networks/
[root@localhost networks]# ls
autostart  vbr.xml
[root@localhost networks]# virsh net-define vbr.xml  //根据xml文件创建虚拟网桥
Network vbr defined from vbr.xml
[root@localhost networks]# virsh net-start vbr   //启动虚拟网桥
Network vbr started
[root@localhost networks]# virsh net-autostart vbr   //设置开机自启动
Network vbr marked as autostarted

③ 验证查看网卡信息,列出虚拟网络

[root@localhost networks]# ifconfig | grep vbr
vbr: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.100.254  netmask 255.255.255.0  broadcast 192.168.100.255
        ether 52:54:00:b0:aa:62  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@localhost networks]# virsh net-list    //列出虚拟网路
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 vbr                  active     yes           yes

 ④ 停止(关闭)虚拟网桥

[root@localhost ~]# virsh net-destroy vbr    //停止虚拟网桥
Network vbr destroyed
[root@localhost ~]# virsh net-list --all
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 vbr                  inactive   yes           yes

⑤ 删除虚拟网桥

[root@localhost ~]# virsh net-undefine vbr    //删除虚拟网桥
Network vbr has been undefined
[root@localhost ~]# virsh net-list --all   //显示为空
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 
[root@localhost ~]# ls /etc/libvirt/qemu/networks/    //删除虚拟网桥同时也删除xml文件
autostart

补充:删除xml文件,恢复则重复创建虚拟配置文件和虚拟网络步骤

⑥ 修改虚拟交换机的配置

[root@localhost networks]# virsh net-edit vbr   //启用后虚拟网桥后不能再使用vim修改
Network vbr XML configuration not changed.

# 修改后需重启

[root@localhost networks]# virsh net-destroy vbr    //强制关闭虚拟交换机
Network vbr destroyed
[root@localhost networks]# virsh net-start vbr    //启动虚拟交换机
Network vbr started

四、虚拟机配置管理

1)配置文件默认路径:/etc/libvirt/qemu/vmhost.xml

2)配置文件编辑方式:

  • ① 创建虚拟机之前使用vim编辑配置文件;
  • ② 创建虚拟机之后使用virsh edit 编辑配置文件;
  • ③ 修改完配置文件后,必须先关机再启动才可生效,重启无效;

官方文档地址:libvirt: XML Format

3)虚拟机管理命令

命令

说明

virsh list [--all]

列出虚拟机

virsh start / shutdown / reboot

启动/关闭/重启虚拟机

virsh destroy

强制停止虚拟机(类似断电)

virsh define/undefine

创建/删除虚拟机

virsh ttyconsole

显示终端设备

virsh console

连接虚拟机的 console

virsh edit

修改虚拟机的配置

virsh autostart

设置虚拟机自启动

virsh dominfo

查看虚拟机摘要信息

virsh domiflist

查看虚拟机网卡信息

virsh domblklist

查看虚拟机硬盘信息


配置虚拟机示例:

  • 配置文件通过node_base.xml模板生成,将其拷贝到虚拟机中,根据需求修改对应配置;
  • 拷贝node_base.xml到/etc/libvirt/qemu/虚拟机名字.xml

① 修改配置文件

[root@localhost ~]# cp node_base.xml /etc/libvirt/qemu/vmhost.xml
[root@localhost ~]# vim /etc/libvirt/qemu/vmhost.xml
2   <name>vmhost</name>     //虚拟机名称
3   <memory unit='KB'>1024000</memory>    //占用最大内存
4   <currentMemory unit='KB'>1024000</currentMemory>   //当前使用内存(可动调整)
5   <vcpu placement='static'>2</vcpu>    //虚拟的CPU核数
26       <source file='/var/lib/libvirt/images/vmhost.img'/>    //指定磁盘文件

② 创建虚拟机

[root@localhost ~]# virsh list    //列出虚拟机(暂时为空)
 Id    Name                           State
----------------------------------------------------

[root@localhost ~]# virsh define /etc/libvirt/qemu/vmhost.xml   //创建虚拟机
Domain vmhost defined from /etc/libvirt/qemu/vmhost.xml
[root@localhost ~]# virsh start vmhost    //启动虚拟机
Domain vmhost started
[root@localhost ~]# virsh list     //列出虚拟机(running启动状态)
 Id    Name                           State
----------------------------------------------------
 1     vmhost                         running
 
[root@localhost ~]# virsh console vmhost    //连接虚拟机的console,回车
Connected to domain vmhost
Escape character is ^]    //再次回车
 
login as 'cirros' user. default password: 'gocubsgo'. use 'sudo' for root.
cirros login: cirros     //输入用户cirros
Password:     //输入密码gocubsgo
$ id
uid=1000(cirros) gid=1000(cirros) groups=1000(cirros)
$ sudo -s sh
$ id
uid=0(root) gid=0(root) groups=0(root),10(wheel)
$ su -l
#    //身份已由$变成#

补充:退出使用【ctrl + ] 】

扩展:命令演示

[root@localhost ~]# virsh shutdown vmhost    //关闭虚拟机(destroy强制关闭)
Domain vmhost is being shutdown

[root@localhost ~]# virsh undefine vmhost     //删除虚拟机(包括xml文件)
Domain vmhost has been undefined

[root@localhost ~]# virsh ttyconsole vmhost    //显示终端设备
/dev/pts/1

[root@localhost ~]# virsh edit vmhost     //修改虚拟机的配置
Domain vmhost XML configuration not changed.

[root@localhost ~]# virsh autostart vmhost    //设置虚拟机自启动
Domain vmhost marked as autostarted

[root@localhost ~]# virsh dominfo vmhost    //查看虚拟机摘要信息
Id:             5
Name:           vmhost
UUID:           cdcf28fa-b88d-49f7-b808-c96e06725ee9
OS Type:        hvm
State:          running
CPU(s):         2
CPU time:       3.2s
Max memory:     1000448 KiB
Used memory:    1000000 KiB
Persistent:     yes
Autostart:      enable
Managed save:   no
Security model: none
Security DOI:   0

[root@localhost ~]# virsh domiflist vmhost     //查看虚拟机网卡信息
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet0      bridge     vbr        virtio      52:54:00:d7:6f:4c

[root@localhost ~]# virsh domblklist vmhost    //查看虚拟机硬盘信息
Target     Source
------------------------------------------------
vda        /var/lib/libvirt/images/vmhost.img

五、云计算

云计算(Cloud Computing) 是一种通过互联网提供计算资源和服务的技术模型。它允许用户按需访问和使用计算资源,如服务器、存储、数据库、网络、软件、分析和智能服务,而无需管理底层基础设施。云计算的核心理念是将计算资源作为一种服务提供给用户,用户可以根据需求灵活地扩展或缩减资源的使用。

1、云计算的主要特点

按需自助服务(On-Demand Self-Service):

  • 用户可以根据需要自动获取计算资源,无需人工干预

广泛的网络访问(Broad Network Access):

  • 通过标准网络协议和接口,用户可以从任何地方、任何设备访问云服务

资源池化(Resource Pooling):

  • 计算资源(如服务器、存储、网络)被集中管理,并根据用户需求动态分配

快速弹性(Rapid Elasticity):

  • 用户可以根据需求快速扩展或缩减资源的使用,实现资源的弹性伸缩

按使用付费(Measured Service):

  • 用户只需为实际使用的资源付费,通常按照使用量(如计算时间、存储空间、带宽)计费

2、云计算的服务模型

1)基础设施即服务(Infrastructure as a Service, IaaS)

提供基本的计算资源,如虚拟机、存储和网络。用户可以在这些基础设施上部署和运行操作系统、应用程序等。

示例:Amazon Web Services (AWS) EC2、Microsoft Azure Virtual Machines、Google Compute Engine。

2)平台即服务(Platform as a Service, PaaS)

提供一个平台,用户可以在该平台上开发、运行和管理应用程序,而无需管理底层基础设施。

示例:Google App Engine、Microsoft Azure App Service、Heroku。

3)软件即服务(Software as a Service, SaaS)

提供完整的应用程序,用户可以通过互联网访问和使用这些应用程序,而无需安装和管理它们。

示例:Google Workspace、Microsoft 365、Salesforce。

 

3、云计算的部署模型

公有云(Public Cloud)

由第三方云服务提供商拥有和运营,资源和服务通过互联网提供给公众使用。

示例:AWS、Microsoft Azure、Google Cloud Platform。

私有云(Private Cloud)

由单个组织拥有和运营,资源和服务仅供该组织内部使用。

示例:VMware vSphere、OpenStack。

混合云(Hybrid Cloud)

结合公有云和私有云,允许数据和应用程序在两者之间共享和迁移。

示例:使用 AWS Outposts 将 AWS 服务扩展到本地数据中心。

社区云(Community Cloud)

由多个组织共享的云环境,通常用于满足特定社区的需求。

示例:医疗行业的共享云平台,用于数据交换和协作。

4、云计算的优势

成本效益:用户只需为实际使用的资源付费,避免了前期的大量硬件投资

灵活性和可扩展性:用户可以根据需求快速扩展或缩减资源的使用,适应业务的变化

高可用性和可靠性:云服务提供商通常提供高可用性和冗余机制,确保服务的连续性和可靠性

全球覆盖:云服务提供商在全球范围内拥有多个数据中心,用户可以选择最近的区域以降低延迟

快速部署:用户可以快速部署和配置资源,加速应用程序的开发和上线

小结:

本篇章节为【第五阶段】CLOUD-DAY1 的学习笔记,这篇笔记可以初步了解到 虚拟化技术(安装虚拟化平台、COW写时复制创建磁盘文件、配置虚拟网络)、云计算介绍,除此之外推荐参考相关学习网址:


Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部