主要内容:
虚拟化技术(安装虚拟化平台、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 1500inet 192.168.100.254 netmask 255.255.255.0 broadcast 192.168.100.255ether 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 0TX 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 --allName 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:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解。