《每天5分钟玩转OpenStack》之虚拟化 & KVM

虚拟化

虚拟化是云计算的基础。

简单地说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,

虚拟机共享物理机的CPU、内存、IO硬件资源,但逻辑上虚拟机之间是相互隔离的。

物理机我们一般称为宿主机(Host)宿主机上面的虚拟机称为客户机(Guest )

那么Host是如何将自己的硬件资源虚拟化,并提供给Guest 使用的呢?

这个主要是通过一个叫做Hypervisor 的程序实现的。

根据Hypervisor 的实现方式和所处的位置,虚拟化又分为两种:1型虚拟化和2型虚拟化。


1型虚拟化

HypervisorF 直接安装在物理机上,多个虚拟机在Hypervisor 上运行Hypervisor 实现方式般是一个特殊定制的Linux 系统。Xen和VMWare 的ESXi都属于这个类型,如图1-1所示。


2型虚拟化

物理机上首先安装常规的操作系统,比如 Redhat 、Ubuntu 和Windows 。

Hypervisor 作为os上的一个程序模块运行,并对虚拟机进行管理。

KVM、VirtualBox 和VMWare Workstation 都属于这个类型,如图1-2所示。


理论上讲:

1型虚拟化一般对硬件虚拟化功能进行了特别优化性能上比2型要;

2型虚拟化因为基于普通的操作系统,会比较灵活,比如支持虚拟机嵌套

嵌套意味着可以在KVM虚拟机中再运行KVM


KVM

下面重点介绍KVM这种2型虚拟化技术

x86平台上最热门、运用最广泛的虚拟化方案莫过于KVM了。

OpenStack 对KVM支持得也最好,我们的教程也理所当然选择KVM作为实验环境的Hypervisor 。

KVM全称是Kemel -Based Virtual Machine。也就是说KVM是基于Linux 内核实现的。

KVM有一个内核模块叫kvm.ko,只用于管理虚拟CPU和内存

那 IO 的虚拟化,比如存储和网络设备由谁实现呢?

这个就交给Linux 内核和Qemu来实现。

说白了,作为一个Hypervisor,KVM本身只关注虚拟机调度内存管理这两个方面

IO外设的任务交给Linux 内核和Qemu。

Libvirt

大家在网上看KVM相关文章的时候肯定经常会看到Libvirt 这个东西。

Libvirt 是啥?

简单地说就是KVM的管理工具

其实,Libvirt 除了能管理KM这种Hypervisor,还能管理Xen,VirtualBox 等

OpenStack 底层使用Libvirt,所以很有必要学习一下。

Libvirt 包含3个东西:后台daemon 程序libvirtd APl库和命令行工具virsh


  • libvirtd 是服务程序,接收和处理API请求;

  • API库使得其他人可以开发基于Libvirt 的高级工具,比如virt-manager ,这是个图形化的KVM管理工具,后面我们也会介绍;

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

作为KVM和OpenStack 的实施人员,virsh virt-manager 是一定要会用的。

--

待续...

继本篇下一篇是KVM实操

发布了208 篇原创文章 · 获赞 120 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/frdevolcqzyxynjds/article/details/105038911