openstack、kvm、qemu-kvm、libvirt、xen的关系
虚拟化技术—基础(1)
本文围绕下面3个问题进行对虚拟化技术展开讨论:
1、虚拟化技术实现方式有哪些?虚拟化技术分哪些?
2、请分别通过kvm、xen工具来实现虚拟化系统的部署?
3、请描述openstack、kvmqemu-kv、libvirt及xen之间的关系。
虚拟化诞生和发展
1961年 IBM709机实现了分时系统,将CPU占用切分为多个极短(1/100sec)时间片,每一个时间片都执行着不同的任务。通过对这些时间片的轮询,这样就可以将一个CPU虚拟化或者伪装成为多个CPU,并且让每一颗虚拟CPU看起来都是在同时运行,这就是虚拟机的雏形。后来的system360机都支持分时系统。
1972年 IBM正式将system370机的分时系统命名为虚拟机。
1990年 IBM推出的system390机支持逻辑分区,即将一个cpu分为若干份(最多10份),而且每份cpu都是独立的,也就是一个物理cpu可以逻辑的分为10个cpu。
直到IBM将分时系统开源后,个人PC终于临来了虚拟化的开端,后来才有了上述的虚拟机软件的发展。所以至今为止仍然有一部分虚拟机软件应用来了分时系统作为虚拟化的基础实现。
虚拟化是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。
虚拟化技术的目的
虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件,简单来说就是将底层资源进行分区,并向上层提供特定的和多样化的执行环境。
虚拟化的原理
在OS中加入一个虚拟化层(VMM),虚拟化层可以对下层(HostOS)硬件资源(物理CPU、内存、磁盘、网卡、显卡等)进行封装、隔离,抽象为另一种形式的逻辑资源,再提供给上层(GuestOS)使用。所以你可以理解VMM其实就是联系HostOS和GuestOS的一个中间件,当然虚拟化可以将一份资源抽象为多份,也可以将多份资源抽象为一份。
通过虚拟化技术实现的虚拟机一般被称之为GuestOS(客户),而作为GuestOS载体的物理主机称之为HostOS(宿主)。
虚拟机 Virtual Machine
满足下面几个条件的OS就是虚拟机:
由VMM提供的高效(>80%)、独立的计算机系统
拥有自己的虚拟硬件(CPU、内存、网络设备、存储设备)
对于上层软件,虚拟机就是真实的机器
Virtual Machine Monitor
虚拟化技术实现方式有哪些?
现在市场上最常见的虚拟化软件有VMWare workstation(VMWare)、VirtualBox(Oracle)、Hyper-V(Microsoft)、KVM(Redhat)、Xen等,这些软件统称之为VMM(Virtual Machine Monitor),使用不同的虚拟化实现。而这些虚拟化实现的方式可以分为:
全虚拟化:也成为原始虚拟化技术,该模型使用虚拟机协调guest操作系统和原始硬件,VMM在guest操作系统和裸硬件之间用于工作协调,一些受保护指令必须由Hypervisor(VMM 虚拟机管理程序)来捕获处理。既VMM会为GuestOS抽象模拟出它所需要的包括CPU、磁盘、内存、网卡、显卡等抽象硬件资源,所以全虚拟化的GuestOS并不会知道自己其实是一台虚拟机。全虚拟化的运行速度要快于硬件模拟,但是性能方面不如裸机,因为Hypervisor需要占用一些资源。典型的全虚拟化软件有:VMWare、Hyper-V、KVM-x86(复杂指令集)。

全虚拟化的两种实现方式: 1、基于二进制翻译的全虚拟化;
2、基于扫描和修补的全虚拟化。
半虚拟化:是另一种类似于全虚拟化的技术,它使用Hypervisor分享存取底层的硬件,但是它的guest操作系统集成了虚拟化方面的代码。该方法无需重新编译或引起陷阱,因为操作系统自身能够与虚拟进程进行很好的协作。典型的半虚拟化软件有:Xen、KVM-PowerPC(简易指令集)半虚拟化除了修改内核外还有另外一种实现方法–在每一个GuestOS中安装半虚拟化软件:VMTools、RHEVTools。

半虚拟化需要guest操作系统做一些修改,使guest操作系统意识到自己是处于虚拟化环境的,但是半虚拟化提供了与原操作系统相近的性能。
虚拟化技术分哪些类?
主机虚拟化:
完全虚拟化:vmare workstation,kvm,xen(hvm)
半虚拟化:xen,uml
模拟:qemu
用户空间虚拟化(容器):
lxc,openvz,Solaris Containers,FreeBSD jails
库虚拟化:
WINE Cywin
应用程序虚拟化:
jvm,pvm,……
kvm工具来实现虚拟化系统的部署(2)
kvm部署环境准备:
| 操作系统 |
CentOS Linux release 7.2.1511 (Core) |
| ip 地址 | 192.168.2.231 |
| 软件包:yum安装 | yum install -y |
| 关闭防火墙和selinux |
systemctl stop iptables.service vim /etc/sysconfig/selinux 文件里改成SELINUX=disabled |
一、前期准备
1、检查CPU虚拟化支持,如果有vmx 或者svm就说明支持VT;如果没有任何的输出,说明你的cpu不支持,将无法使用KVM虚拟机。

2、确保BIOS里开启VT: Intel(R) Virtualization Tech [Enabled] 使用如下命令:
|
1
2
3
4
|
[root@localhost ~]# lsmod |grep kvmkvm_intel 162153 0kvm 525259 1 kvm_intel[root@localhost ~]# modprobe kvm-intel |
3、启动libvirtd:
|
1
2
3
4
5
|
[root@localhost ~]# systemctl start libvirtd;systemctl enable libvirtd[root@localhost ~]# systemctl list-unit-files|grep libvirtdlibvirtd.service enabledlibvirtd.socket static [root@localhost ~]# |
二、桥接网络
使用桥接网络,虚拟机即可与其他机器互相访问。 1.复制ifcfg-em1 为 ifcfg-br0,并将ifcfg-br0改为如下配置

然后我们重启网络:
|
1
2
3
|
[root@localhost network-scripts]# service network restartRestarting network (via systemctl): [ OK ][root@localhost network-scripts]# |
三、安装软件包:
1、安装kvm
|
1
2
3
4
5
6
7
8
9
10
11
|
[root@localhost ~]# yum install qemu-kvm libvirt libguestfs-tools virt-install virt-manager libvirt-python bridge-utils -yLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfile * base: mirrors.cn99.com * extras: mirrors.cn99.com * updates: mirrors.aliyun.comPackage 10:qemu-kvm-1.5.3-105.el7_2.7.x86_64 already installed and latest versionPackage libvirt-1.2.17-13.el7_2.5.x86_64 already installed and latest versionPackage virt-install-1.2.1-8.el7.noarch already installed and latest versionPackage virt-manager-1.2.1-8.el7.noarch already installed and latest versionNothing to do |
qemu-kvm 主要的KVM程序包kvm相关安装包及其作用
python-virtinst 创建虚拟机所需要的命令行工具和程序库
virt-manager GUI虚拟机管理工具
virt-top 虚拟机统计命令
virt-viewer GUI连接程序,连接到已配置好的虚拟机
libvirt C语言工具包,提供libvirt服务
libvirt-client 为虚拟客户机提供的C语言工具包
virt-install 基于libvirt服务的虚拟机创建命令
bridge-utils 创建和管理桥接设备的工具
2、安装x-windows,使用图形化界面管理虚拟机
[root@localhost ~]# yum groupinstall "X Window System" -y
四、创建vm
[root@localhost ~]# mkdir -pv /var/kvm/images mkdir: created directory ‘/var/kvm’ mkdir: created directory ‘/var/kvm/images’
[root@localhost ~]# mkdir -pv /var/kvm/images mkdir: created directory ‘/var/kvm’ mkdir: created directory ‘/var/kvm/images’

virt-install \ --network bridge:br0 \ --name vm1 \ --ram=1024 \ --vcpus=1 \ --disk path=/var/kvm/images/vm1.img,size=10 \ --graphics none \ --location 'http://ftp.iij.ad.jp/pub/linux/centos/7/os/x86_64/' \ --extra-args="console=tty0 console=ttyS0,115200" #详细每个参数的意义可以查看扩展资料 #安装过程会让你选择textmode 还是vnc,选择textmode继续安装吧 #如果网络会有问题的话,尽量选择用--cdrom /path/to/centos7.iso

xen工具来实现虚拟化系统的部署(3)
环境准备同kvm
开始安装:

yum -y install centos-release-xen sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/CentOS-Xen.repo yum --enablerepo=centos-virt-xen -y update kernel yum --enablerepo=centos-virt-xen -y install xen vi /etc/default/grub # change memory amount for Domain0 (specify proper value on your system) GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=4096M,max:4096M cpuinfo com1=115200,8n1 ..... /bin/grub-bootxen.sh reboot

后面参考kvm过程,xen过程略;
openstack、kvm、qemu-kvm、libvirt、xen的关系
KVM是最底层的hypervisor,它是用来模拟CPU的运行,它缺少了对network和周边I/O的支持,所以我们是没法直接用它的。QEMU-KVM就是一个完整的模拟器,它是建基于KVM上面的,它提供了完整的网络和I/O支持. Openstack不会直接控制qemu-kvm,它会用一个叫libvit的库去间接控制qemu-lvm, libvirt提供了夸VM平台的功能,它可以控制除了QEMU的模拟器,包括vmware, virtualbox xen等等。所以为了openstack的夸VM性,所以openstack只会用libvirt而不直接用qemu-kvm。libvirt还提供了一些高级的功能,例如pool/vol管理。

转自:https://www.cnblogs.com/zuoyang/articles/5970405.html
openstack、kvm、qemu-kvm、libvirt、xen的关系的更多相关文章
- KVM/QEMU/qemu-kvm/libvirt 概念全解
目录 目录 前言 KVM QEMU KVM 与 QEMU qemu-kvm Libvirt Libvirt 在 OpenStack 中的应用 前言 如果是刚开始接触虚拟机技术的话, 对上述的概念肯定会 ...
- KVM 介绍(8):使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机 [Nova Libvirt QEMU/KVM Live Migration]
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...
- KVM(八)使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机
1. QEMU/KVM 迁移的概念 迁移(migration)包括系统整体的迁移和某个工作负载的迁移.系统整理迁移,是将系统上所有软件包括操作系统完全复制到另一个物理机硬件机器上.虚拟化环境中的迁移, ...
- OpenStack, kvm, qemu-kvm以及libvirt之关系
OpenStack, kvm, qemu-kvm以及libvirt之关系: KVM是最底层的hypervisor,它是用来模拟CPU的运行,它缺少了对network和周边I/O的支持,所以我们是没法直 ...
- Linux虚拟化技术KVM、QEMU与libvirt的关系(转)
说明:个人理解,KVM是内核虚拟化技术,而内核是不能使用在界面上使用的,那么此时QEMU提供了用户级别的使用界面,相互辅助.当然,单独使用QEMU也是可以实现一整套虚拟机,不过QEMU+KVM基本是标 ...
- KVM 介绍(5):libvirt 介绍 [ Libvrit for KVM/QEMU ]
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...
- KVM 介绍(6):Nova 通过 libvirt 管理 QEMU/KVM 虚机 [Nova Libvirt QEMU/KVM Domain]
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...
- Linux 桌面玩家指南:07. Linux 中的 Qemu、KVM、VirtualBox、Xen 虚拟机体验
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...
- QEMU KVM Libvirt手册(11): Managing Storage
When managing a VM Guest on the VM Host Server itself, it is possible to access the complete file sy ...
随机推荐
- C# JackLib系列之字体使用
字体的使用一般我们都是使用系统字体,这样比较方便,直接 Font font=new Font("微软雅黑",16f,FontStyle.Bold); 但是当我们用到一个系统没有的字 ...
- c++基础之引用reference
1.何为引用 简单来说就是,比如你换了个新名字,用新名字叫你,你也会答应 2.引用vs指针 -引用没有null,好比你说你换了个新名字,但是新名字是啥总得有点东西 -一旦引用被初始化后就不可以指到另外 ...
- C++小学生四则运算_余伟淇_郑鉴
https://github.com/kielingpao/sizeyunsuan 项目相关要求 1题目:实现一个自动生成小学四则运算题目的命令行程序 2说明 自然数:0, 1, 2, ….• 真分数 ...
- Nginx配置 简单写了个
#user nobody;worker_processes 1; #error_log logs/error.log;#error_log logs/error.log notice;#error_l ...
- C# 筛选string 类型里面的汉字,获取首字母字母,正则表达式Regex 常用验证
界面效果 1.提取汉字 private void buttonX1_Click(object sender, EventArgs e) { if (TxtYuan.Text.Trim() != &qu ...
- ubuntu 下安装ffmpeg
FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.采用LGPL或GPL许可证.它提供了录制.转换以及流化音视 频的完整解决方案.它包含了非常先进的音频/视频编解码库 ...
- android和.net webservice中的DES加密算法
也是看了一堆的例子,本身并不会写加密算法,好在只要会用就行了,我们把在app中使用的参数加密,然后在.net端的webservice中进行解密,本身并没有什么问题,但是android下和.net下的d ...
- 一个基于 .NET Core 2.0 开发的简单易用的快速开发框架 - LinFx
LinFx 一个基于 .NET Core 2.0 开发的简单易用的快速开发框架,遵循领域驱动设计(DDD)规范约束,提供实现事件驱动.事件回溯.响应式等特性的基础设施.让开发者享受到正真意义的面向对象 ...
- 手动给kvm虚机挂载lvm卷
1.查看计算节点上虚机挂载的卷 [root@xgto01n010243186070 ~]# virsh domblklist instance- Target Source ------------- ...
- Ping命令简单报错介绍
了解ABC类IP地址:网络.主机.子网.广播. ---------------------------- 学会ping: ping www.baidu.com 网络检测:ping某一主机可以正常启动! ...