OpenStack 是云操作系统,要学习 OpenStack,首先需要掌握一些虚拟化和云计算的相关知识。
 
虚拟化
 
虚拟化是云计算的基础,简单的说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的CPU、内存、IO、硬件资源,但逻辑上虚拟机之间是相互隔离的。
 
物理机我们一般称为宿主机(Host),宿主机上面的虚拟机被称为客户机(Guest)。那么Host是如何将自己的硬件资源虚拟化, 并提供给 Guest使用的呢?
 
这个主要是通过一个叫做 Hypervisor 的程序实现的。根据Hypervisor的实现方式和所处的位置,虚拟化又分为两种:1型虚拟化和2型虚拟化
 
1型虚拟化
 
Hypervisor 直接安装在物理机上,多个虚拟机在Hypervisor上运行,Hypervisor实现方式一般是一个特殊定制的Linux系统。Xen 和 Esxi 都属于这个类型
 
 
2型虚拟化
 
物理机上首先安装常规的操作系统,比如Redhat、Ubuntu和Windows。Hypervisor作为OS上的一个程序模块运行,并对虚拟机进行管理。KVM、VirtualBox 和 VMware Workstations都属于这种类型。
 
 
理论上讲:
    1型虚拟化一般对硬件虚拟化功能进行了特别的优化,性能上比2型要高
    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个东西:后台daemon程序 libvirtd、API库 和命令行工具virsh
 
    1、libvirt是服务程序,接受和处理API请求
    2、API库使得其他人可以开发基于libvirt的高级工具,比如virt-manager,这是个图形化的KVM管理工具,后面我们会详细介绍
    3、virsh是我们经常要用的KVM命令行工具,后面会有示例。
 
作为KVM和OpenStack的实施人员,virsh和virt-manager是一定要会用的。
 

O002、虚拟化的更多相关文章

  1. [原] KVM 虚拟化原理探究(1)— overview

    KVM 虚拟化原理探究- overview 标签(空格分隔): KVM 写在前面的话 本文不介绍kvm和qemu的基本安装操作,希望读者具有一定的KVM实践经验.同时希望借此系列博客,能够对KVM底层 ...

  2. BIOS中未启用虚拟化支持系列~~例如:因此无法安装Hyper-V

    异常处理汇总-服务器系列:http://www.cnblogs.com/dunitian/p/4522983.html 一般都是启动一下CUP虚拟化就可以了 比如华硕的:

  3. [原] KVM 虚拟化原理探究 —— 目录

    KVM 虚拟化原理探究 -- 目录 标签(空格分隔): KVM KVM 虚拟化原理探究(1)- overview KVM 虚拟化原理探究(2)- QEMU启动过程 KVM 虚拟化原理探究(3)- CP ...

  4. [原] KVM 虚拟化原理探究(6)— 块设备IO虚拟化

    KVM 虚拟化原理探究(6)- 块设备IO虚拟化 标签(空格分隔): KVM [toc] 块设备IO虚拟化简介 上一篇文章讲到了网络IO虚拟化,作为另外一个重要的虚拟化资源,块设备IO的虚拟化也是同样 ...

  5. [原] KVM 虚拟化原理探究(5)— 网络IO虚拟化

    KVM 虚拟化原理探究(5)- 网络IO虚拟化 标签(空格分隔): KVM IO 虚拟化简介 前面的文章介绍了KVM的启动过程,CPU虚拟化,内存虚拟化原理.作为一个完整的风诺依曼计算机系统,必然有输 ...

  6. [原] KVM 虚拟化原理探究(4)— 内存虚拟化

    KVM 虚拟化原理探究(4)- 内存虚拟化 标签(空格分隔): KVM 内存虚拟化简介 前一章介绍了CPU虚拟化的内容,这一章介绍一下KVM的内存虚拟化原理.可以说内存是除了CPU外最重要的组件,Gu ...

  7. [原] KVM 虚拟化原理探究(3)— CPU 虚拟化

    KVM 虚拟化原理探究(3)- CPU 虚拟化 标签(空格分隔): KVM [TOC] CPU 虚拟化简介 上一篇文章笼统的介绍了一个虚拟机的诞生过程,从demo中也可以看到,运行一个虚拟机再也不需要 ...

  8. [原] KVM 虚拟化原理探究(2)— QEMU启动过程

    KVM 虚拟化原理探究- QEMU启动过程 标签(空格分隔): KVM [TOC] 虚拟机启动过程 第一步,获取到kvm句柄 kvmfd = open("/dev/kvm", O_ ...

  9. Linux虚拟化学习笔记<一>

    关于虚拟化,原理的东西是非常复杂的,要想完全理解,没有足够的耐心是不不能完全学透这部分内容的.那下面我主要以资源汇总的形式把一些资料罗列出来,帮助大家快速理解虚拟化,快速使用和配置. 为什么要虚拟化: ...

随机推荐

  1. VLC和Qt结合编写流媒体rtsp播放器

            VLC播放器是一款功能强大且小巧的播放器,它支持多种多样的音视频格式,比如MPEG1,2以及mp3等等.并且通过Qt和VLC的结合能让每个开发者写出自己的视频流媒体播放器.     Q ...

  2. 【转】python 输入一个时间,获取这个时间的下一秒

    原文:https://blog.csdn.net/l_d_56/article/details/84832198 输入一个时间,获取这个时间的下一秒 PS:下面代码使用于 python 2.7 tim ...

  3. RequestsLibrary接口测试

    RequestsLibrary常用的关键字 关  键  字 描   述 Create Session 创建HTTP会话 Get Request 采用get方式请求 Post Request 采用Pos ...

  4. python汉字编解码问题

    http://www.cnblogs.com/rollenholt/archive/2011/08/01/2123889.html

  5. linux常用命令(8)cat命令

    cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. 1 命令格式:cat [选项] [文件]. ...

  6. ModelAndView及页面转发

    1.ModelAndView springMVC中返回值如果是ModelAndView,则其既包含模型数据信息,也包含视图信息. 在处理方法中可以使用ModelAndView对象的方法添加模型数据:a ...

  7. H3C 模拟器 pc与sw直连 登录web

    配置与上一节相同 开启web功能,并登录 [sw1]ip http enable [sw1]local-user admin New local user added. [sw1-luser-mana ...

  8. ubuntu安装dockers和images:dvwa

    docker安装 安装前需要更新系统 apt-get update apt-get upgrade apt-get install docker.io 安装完之后就可以试下: docker docke ...

  9. 4-2 编辑器之神--vim

    vim vi:Visual editor文本编辑器 文本:ascii,Unicode vim:VIsual editor iMproved 官网:www.vim.org 帮助网站:Vimhelp.or ...

  10. selenium三种断言以及异常类型

    elenium提供了三种模式的断言:assert .verify.waitfor 1)Assert(断言) 失败时,该测试将终止. 2)Verify(验证) 失败时,该测试将继续执行,并将错误记入日志 ...