当前位置:硬件测评 > 虚拟化

虚拟化

  • 发布:2023-10-09 21:09


OpenStack 是一个云操作系统。要学习OpenStack,首先需要掌握一些虚拟化和云计算的知识。


虚拟化


虚拟化是云计算的基础。简单来说,虚拟化允许在一台物理服务器上运行多个虚拟机。虚拟机共享物理机的CPU、内存、IO硬件资源,但虚拟机之间逻辑上相互隔离。

物理机一般称为主机,主机上的虚拟机称为访客。

那么Host如何虚拟化自己的硬件资源并提供给Guest呢?
这主要是通过一个叫做Hypervisor的程序来实现的。

根据Hypervisor的实现方式和位置,虚拟化分为两种类型:
Type 1虚拟化和Type 2虚拟化

类型 1 虚拟化

Hypervisor直接安装在物理机上,多个虚拟机运行在Hypervisor上。 Hypervisor的实现一般是专门定制的Linux系统。 Xen 和 VMWare 的 ESXi 都属于这一类。

2 类虚拟化

首先在物理机上安装常规操作系统,如Redhat、Ubuntu、Windows等。管理程序作为操作系统上的程序模块运行并管理管理虚拟机。 KVM、VirtualBox 和 VMWare Workstation 都属于这一类。

理论上:

Type 1虚拟化一般优化了硬件虚拟化功能,性能比Type 2更高;

Type 2虚拟化更加灵活,因为它基于通用操作系统,例如支持虚拟机嵌套。嵌套意味着您可以在 KVM 虚拟机内运行 KVM。


KVM


下面重点介绍KVM,一种2类虚拟化技术。

基本概念

x86平台上最流行、使用最广泛的虚拟化解决方案是KVM。 OpenStack对KVM的支持也是最好的,所以我们的教程自然选择KVM作为实验环境的Hypervisor。

KVM的全称是Kernel-Based Virtual Machine。也就是说,KVM是基于Linux内核实现的。
KVM 有一个名为 kvm.ko 的内核模块,仅用于管理虚拟 CPU 和内存。

谁来实现存储、网络设备等IO的虚拟化?
这是由 Linux 内核和 Qemu 实现的。

说白了,作为一个hypervisor,KVM本身只关注两个方面:虚拟机调度和内存管理。 IO外设的任务委托给Linux内核和Qemu。

Libvirt

当你在网上阅读KVM相关的文章时,你肯定会经常看到Libvirt。

什么是 Libvirt?
简单来说就是KVM的管理工具

其实Libvirt除了管理KVM等Hypervisor之外,还可以管理Xen、VirtualBox等。
OpenStack底层也使用了Libvirt,所以有必要学习一下。

Libvirt包含3个东西:后台守护程序libvirtd、API库和命令行工具virsh

  1. libvirtd是一个服务程序,接收并处理API请求;

  2. API库允许其他人基于Libvirt开发高级工具,例如virt-manager,这是一个图形化的KVM管理工具,我们稍后也会介绍;

  3. virsh是我们经常使用的KVM命令行工具,后面会有它的使用示例。

作为KVM和OpenStack的实现者,你必须会使用virsh和virt-manager。

今天的5分钟差不多了,下次玩KVM



相关文章