【桌面虚拟化】之三 Persistent vs NonP
作者:范军 (Frank Fan) 新浪微博:@frankfan7
在【桌面虚拟化】之二类型及案例中我们探讨了桌面虚拟化的两种架构,HostedVirtual Desktop (VDI) 和 Published Desktop/App. 本文深入分析其中VDI的两种桌面类型,Persistent和NonPersistent。
一 定义:
Persistent Desktop: 通常为每个用户分配专有的虚拟桌面。用户数据和个人设置保存在该虚拟机。
Non Persistent Desktop: 通常是从虚拟桌面池内选择虚拟机随机分配给用户。用户数据和个人设置不会保存。每次登陆后恢复到最初的原始状态。
优点 |
不足 |
|
Persistent |
·应用和桌面Image是整合在一起的;无需额外安装应用 ·可以采用和物理桌面一致的管理工具和方法。 ·从用户的角度看,该虚拟桌面和传统物理桌面没有任何区别 |
·需要更多的存储空间 ·有可能管理上相对复杂些,毕竟每个桌面都是不同的 ·可能第一次创建桌面的时间相对较长 ·需要设计完善的容灾方案,比如整个数据中心中断的情况。 |
Non Persistent |
·可以很快的创建桌面 ·相对需要较少的存储空间 ·在灾难发生时,很容易的把用户切换到安全的数据中心 |
·如果应用不是包括在OS Image内,需要有第三方软件来管理 ·有可能需要采用Application Virtualisation |
二 实现技术的演进
早期- Linked Clone
在VDI技术出现的早期,存储成本很高。我们先撇开de-duplication,compression等底层的存储优化技术不谈,假设每个桌面OS需要40G,那么1000个桌面需要的可用存储空间就是1000*40G=40T。
有没有什么办法能降低存储成本呢?
于是出现了Linked Clone技术,这就允许所有的虚拟桌面共享一个Master Image,所有和操作系统相关的读操作都从这个MasterImage获取。然后再为每一个虚拟桌面分配一个DeltaDisk,所有的写操作都记录到这个DeltaDisk。这下就节省了很多存储。但是注意,随着越来越多的写操作,这个DeltaDisk会占用越来越多的空间,到最后甚至会占用和MasterImage一样的空间。那怎么办?刷新虚拟桌面。刷新后的DeltaDisk会恢复到最初的大小。对于NonPersistent的情况,经常刷新是可以接受的,因为本来NonPersisent Desktop的Disk上没有用户的数据和个性设置。但如果刷新PersistentDesktop,就必须有方案如何管理并恢复用户的数据和个性设置。
中期– 存储分层(2011年之前)
除了解决存储空间问题,VDI面临的一大问题就是存储性能。存储分层的技术可以让频繁访问的linked Clone数据存储在SSD或者Flash等快速设备上,从而提高性能。下图来自ABriefHistory of Desktop Storage Architecture一文
HostDASD (Host Direct Access Storage Device) 也就是指ESXiHost本地访问的SSD或者Flash。CorporateFiler 用于存储应用程序和用户数据。
但由于SSD和Flash不菲的价格,并不适用于所有的数据。
在这个时期 NonPersistent 和Linked Clone的黄金组合确实是一个不错的方案,成本可以接受。
当今和未来
自2011年以来,Flash-based阵列以及很多新的存储技术逐渐成熟。inline IO de-duplication, offline de-duplicationand data compression也得到了市场的验证。这就意味着用于VDI的存储成本大幅下降,而性能却有很大提高。原来因为存储成本高而对Persistent Desktop望而生畏的用户,现在应该重新考虑Persistent。对于这些新的存储技术在VDI上的应用,请持续关注后续文章。
三 总结
无论才用哪种VDI类型,都应该先从客户需求出发。对于适合于Persistent的情形,应该考虑采用适当的存储方案来降低成本。
参考:
Persistent vs. Non-Persistent Debate Video
Open letter to non-persistent VDI fanboys
【桌面虚拟化】之三 Persistent vs NonP的更多相关文章
- spice在桌面虚拟化中的应用系列之三(USB映射实现,SSL加密,密码认证,多客户端支持)
本系列其它文章 spice在桌面虚拟化中的应用系列之一(spice简介,性能优化等) spice在桌面虚拟化中的应用系列之二(Linux平台spice客户端的编译安装,支持USB映射) 1.spice ...
- Citrix服务器虚拟化之三十 XenApp 6.5发布流式应用程序
Citrix服务器虚拟化之三十 XenApp 6.5发布流式应用程序 XenApp可发布以下类型的资源向用户提供信息访问,这 ...
- Citrix 服务器虚拟化之三十一 XenApp 6.5负载均衡
Citrix 服务器虚拟化之三十一 XenApp 6.5负载均衡 说明: 环境基于实验三十 1.准备一台Windows Server 2008 R2的虚拟机名为XenAPP2,然后加入域k ...
- Citrix 服务器虚拟化之二十一 桌面虚拟化之部署Provisioning Services
Citrix 服务器虚拟化之二十一 桌面虚拟化之部署Provisioning Services Provisioning Services 是Citrix 出品的一系列虚拟化产品中最核心的一个组件, ...
- VMware vSphere 服务器虚拟化之二十五 桌面虚拟化之终端服务池
VMware vSphere 服务器虚拟化之二十五 桌面虚拟化之终端服务池 终端服务池是指由一台或多台微软终端服务器提供服务的桌面源组成的池.终端服务器桌面源可交付多个桌面.它具有以下特征: 1.终端 ...
- Citrix 服务器虚拟化之十八 桌面虚拟化之部署MCS随机桌面池
Citrix 服务器虚拟化之十八 桌面虚拟化之部署MCS随机桌面池 完成桌面模版的制作后,可以开始虚拟桌面池的发布 说明: 环境基于实验十七 1.登录DC服务器创建一个组织单位名为Citrix,然后 ...
- Citrix 服务器虚拟化之三十二 XenConvert
Citrix 服务器虚拟化之三十二 XenConvert 简介: Citrix XenConvert 是用于实现物理到虚拟(P2V)转换的工具,可将工作负载从运行 Windows 的服务器或桌面计算 ...
- VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池
VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池 在上一节我们创建了完整克隆的自动专有桌面池,在创建过程比较缓慢,这次我们将学习创建Vi ...
- VMware vSphere 服务器虚拟化之二十八 桌面虚拟化之安装View传输服务器
VMware vSphere 服务器虚拟化之二十八 桌面虚拟化之安装View传输服务器 View 传输服务器用于管理和简化数据中心与在最终用户本地系统上检出使用的 View 桌面之间的数据传输.必须安 ...
随机推荐
- android面试题之七
三十六.请解释下在单线程模型中Message.Handler.Message Queue.Looper之间的关系. 简单的说,Handler获取当前线程中的looper对象,looper用来从存放Me ...
- C++内存分配的五种方法
在C++中,内存分成5个区,他们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区. 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区.里面的变量通常是局部变量.函数参数 ...
- 《javascript设计模式》读书笔记四(单例模式)
1.单利模式简单介绍 在<设计模式>中单利模式是一种比較简单的模式,定义例如以下: 确保某一个类仅仅有一个实例,并且自行实例化并向整个系统提供这个实例. 在javascript中则将代码组 ...
- WIN7下使用.net(C#)监视剪贴板 (转)
最近需要做一个小程序,需要常驻后台,监视剪贴板变化并提取内容, 在网上查了一些资料,先采用SetClipboardViewer方法实现,具体原理可以参考http://www.cnblogs.com/j ...
- oracle启动,提示“LRM-00109: could not open parameter file”
转载自 http://blog.sina.com.cn/s/blog_53e731b70101liku.html oracle启动,提示“LRM-00109: could not open par ...
- C#holle world
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Struts2的模型驱动
Struts2即支持属性驱动,也支持模型驱动 属性驱动:在Action中提供与表单字段一一对应的属性,然后一一set赋值 模型驱动:使得表单字段都自动被set到一个JavaBean中,类似于Strut ...
- C/C++中的常成员函数
代码: #include <iostream> using namespace std; class A{ public: void func1(){ cout<<" ...
- OpenSuse13.2硬盘安装
直接参考文章:OpenSuse硬盘安装 补充: Win7引导Grub4dos时,本人尝试根据xp引导方式中使用boot.ini来引导,引导成功,不需要bcdedit命令,简化了引导步骤.
- 文件系统:介绍一个高大上的东西 - 零基础入门学习Python030
文件系统:介绍一个高大上的东西 让编程改变世界 Change the world by program 接下来我们会介绍跟Python的文件相关的一些十分有用的模块.模块是什么?不知大家对以下代码还有 ...