虚拟化技术介绍
一、常见虚拟化技术
二、虚拟化与云计算的关系
虚拟化是什么
虚拟化是一种技术,就是将不可拆分的实体资源变成可以自由划分的逻辑资源,从而实现资源的整合、隔离、在分配,云计算就是利用了虚拟化技术的这个特点
云计算是什么
云计算是一种服务模式,其思想就是把各种资源整合起来,然后租给有需要的用户,其中的资源包括处理器(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提供软件的模式,客户端可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务
二、公有云、私有云、混合云
公有云:是第三方的云供应商,通过互联网为广大用户提供的一种按需使用的服务器资源,是一种云基础设施。
私有云:是一个企业或组织的专用云环境。一般在企业内部使用,不对外提供服务,因此它也被视为一种企业云。
混合云:是在私有云的基础上,组合其他公有云资源,从而允许在不同云环境之间共享应用和数据的使用方式。