摘要
本文介绍了应用分层实现的技术原理、实现、应用场景以及使用限制。
关键字
应用分层、文件系统分层、注册表分层、minifilter。
术语清单
缩略语/术语 |
说明 |
Minifilter |
微软过滤驱动框架 |
Composite File System |
联合文件系统 |
File System Layering tech |
文件系统分层技术 |
Register System Layering tech |
注册表系统分层技术 |
App Layer |
应用分层 |
|
|
|
|
随着云计算技术的飞速发展,作为云计算典型的应用,云桌面以其数据安全、高效运维、统一管理、绿色节能等特性深受用户的青睐,在各行各业的场景中逐步取代部分传统的PC。
传统的广义上的云桌面技术无论是VDI架构,IDV架构还是VOI架构,都具备了桌面操作系统管理和分发的基本功能。但是仍然存在一些不足,当前管理员通常只能将安装好应用程序和数据的桌面系统整体分发给用户。这种方案带来的一个最大问题是:用户的桌面系统使用一段时间后,桌面中已经存在一些用户自己安装的应用和数据。如果此时管理员要对原来已经分发过的系统重新编辑更新再分发,就会导致用户的应用或数据丢失,大多数场景这是不能接受的。所以管理员应对该情况通常还是需要到每个用户那分别一一处理,带来重复的运维工作量。
下文要介绍的“应用分层技术”就是用来解决这个问题的。它能将管理员管理的操作系统、程序和数据同用户自己管理的程序和数据实现分离。这样管理员就可以随时统一对桌面系统更新如系统设置、程序的安装和更新等,并随时将更新推送给用户。
从技术上讲,应用分层技术的“层”对于Windows而言其实是一堆文件和注册表项的集合,这些文件和注册表项在软件安装过程被捕获并存储为虚拟磁盘。当一个“层”被分配给虚拟桌面时,该层所对应的虚拟磁盘中的相关应用和数据会被自动加入到系统中,就像系统安装了新应用程序效果一样。再通过该技术将所有这些层合并在一起,让用户看到的最终系统就是由多个这样的层拼装之后的完整桌面。这些层有的是只读的,有的是可写的。
如上图所示,使用应用分层技术后,用户桌面的操作系统被逻辑分层多个层。其中“原生操作系统”和“管理员的应用和配置”这两个层是可以由管理员来统一编辑和管理的,能够单独下发更新给用户。应用分层技术会将更新后的这些层自动和用户自管理的层合并。
Windows应用分层主要涉及两个核心技术,文件系统分层技术和注册表系统分层技术。
文件系统分层是通过文件系统虚拟化实现的。无论是在PC还是虚拟机上运行Windows操作系统,都存在一个安装Windows的系统盘,通常是C盘。这个逻辑驱动器包含了一些具有一定层次结构的文件和文件夹,他们确保windows正常引导并使windows服务或应用程序能够正常运行,同时用户可以在该盘读写数据。
对C盘的文件系统分层是按照一系列的层创建一个虚拟的逻辑C盘视图。这些层或者是一系列的虚拟磁盘或则是一系列的虚拟文件系统文件,在系统启动时这一系列的虚拟磁盘或虚拟文件系统文件通过文件系统过滤驱动(也被称为联合文件系统驱动)被附加合并到C盘内,组成一个虚拟合并的盘逻辑视图,在任何情况下通过C盘看到的是一个真正的由所有这些虚拟磁盘(或则说文件系统层)的合并视图。
如上图示例,每个层包含一个应用程序,它们分别有两个文件:一个exe和dll,每个层在一个单独的虚拟磁盘中,把这些虚拟磁盘挂载到虚拟机上后通过文件系统虚拟化驱动工具,将各个层次的文件在逻辑上合并到系统的C盘中,使系统看上去就好像这三个层中的文件系统本来就是C盘的文件一样。这时C盘的文件系统如下:
它是C盘原有文件和三个层文件的虚拟合并。打开Windows的资源管理器浏览C盘,你可以看到类似于上图的结构,看到来自不同层文件和目录被并在一起,有AppA、AppB和来自许多层的公共文件夹以及公共文件夹中来之不同层的文件DLL。
联合文件系统驱动是通过文件系统MiniFilter过滤驱动程序实现的。在逻辑上所有的文件都存在于文件系统中,文件系统层本身在虚拟磁盘中是NTFS,通过虚拟化文件系统的名称空间,以拦截IO请求文件,并将它们重定向到对应的层。 比如,如果双击App.exe的快捷方式,对文件系统的调用实际上进入了MiniFilter文件系统微过滤驱动,它将请求传递到对应的虚拟磁盘上。
多个文件系统分层文件系统呈现给用户Windows环境的文件系统逻辑如下图示例:
Operating System:基础的Windows操作系统层;
App Layer(office):安装了Office应用的层;
App Layer(fireFox):安装了firefox浏览器应用的层;
WriteLayer:可写层,包括windows运行过程产生的一些临时文件、用户写入的数据文件以及对应用层的已有文件修改通过写时拷贝机制写入的数据。
每个虚拟层安装的应用程序都有自己的目录文件列表结构,如果两个层的同一个路径下存在相同的文件名就产生了冲突。一般情况每个应用程序安装都有自己的目录结构,极少会出现冲突。应用分层技术解决这种文件冲突的主要机制是通过设置层优先级来解决的,层优先级高的文件呈现给windows系统。当通过Windows查看这些层文件时,它遵循一个自上而下的模型,越上层优先级越高。因此,如果同一个文件存在于两个层的同一路径中,根据优先级原则只有一个文件会被呈现给一个执行的Windows环境。用户看到也是这个优先级高的文件。如下图示例:
注册表系统分层技术和文件系统分层技术原理上类似,是通过虚拟注册表系统来实现的。对注册表系统的分层就是创建一系列虚拟注册表或者说是一系列虚拟的注册表蜂巢文件,通过注册表过滤驱动(联合注册表驱动)将这些个独立的注册表的视图虚拟的合并起来,以一个统一的完整注册表视图提供给操作系统使用。
注册表系统分层技术实现和呈现给用户的注册表视图结构以及冲突的优先级机制和文件系统基本一致。
场景一:安全补丁升级批量分发
在很多的用户工作的网络环境中,出于安全等各方面的考虑往往都是内网工作环境,其工作环境是和Internet隔离的,这就导致用户的工作环境中的云桌面无法通过internet进行在线升级;
场景二:软件、系统设置批量下发
云桌面运维过程中,可能会需要对一些办公软件进行升级、增加或者删除;或者是对操作系统做一些设置,比如IE浏览器的一些设置,网络的一些设置等。。
在云桌面中开启应用分层通过对每个云桌面创建一个个性化层来保存每个桌面的个性化设置、安装的软件以及用户的私有数据。管理员在管理端可以直接打开系统镜像进行编辑,对系统设置调整、安装相应的补丁、软件更新等。然后将编辑好的镜像重新批量分发给用户,无论是使用还原桌面的用户还是需要个性持久化存储的用户都能被集中更新,无需再分别到每个桌面上去操作。
一些云桌面使用场景希望每次关机后能自动还原系统到管理员下发的初始状态,比如出于安全考虑避免上次桌面使用者的数据残留,比如为了避免长期运行后系统臃肿变慢,每次还原可以让系统更干净、稳定和流畅等等。会议室、多媒体教室、医生门诊室等这些公用的云桌面通常都有这类需求。但是这些场景下不同的桌面因为完成的任务和工作环境不同,往往不同桌面有自己一些特殊的配置并不一样,即无法由管理员统一配置。比如医生门诊室的桌面、收费窗口桌面他们连接了不同的打印机和其它外设,各用户打印材料的格式不同(有打发票的,有打清单,有打文档的)需要对打印机做一些个性的设置。再比如多媒体教室中云桌面连接的触控显示屏,每块触控显示屏的校准信息也各不相同。象这类信息都无法由管理员通过基础系统镜像统一设置和下发,需要每个桌面分别配置。而这些桌面又希望使用还原的桌面,但是使用还原桌面这些个性化的设置通常就不能被保存下来。通过应用分层技术的灵活应用,就能够很好解决这个矛盾。
通过在还原桌面模式下开启应用分层,对桌面按照用户需求进行还原模式下的个性化设置,比如在一台还原桌面中配置打印机设置的各种参数,配置默认打印机等等,另外还可以在还原模式下对某些特定软件配置自动登录、记录用户名和密码等。这样就可以解决在还原桌面中保留用户需要的个性化配置数据,其非个性化配置仍然保持还原桌面的关机还原特性。
应用分层实现的模块本身是以一个底层驱动的方式驻留在Windows系统中,为了保证各个层中的文件或注册表信息对于操作系统是可见的,该驱动必须保证各个层中的应用启动的时间点晚于应用分层驱动的启动时间点,否则操作系统找不到这些层的文件就会导致相关应用启动失败。基于该原因应用分层存在一定的限制,对一些应用场景不支持或有条件支持。具体限制包括如下几类:
- 非usb类设备驱动:
由于应用分层驱动程序属于文件系统过滤驱动范畴,其在操作系统初始化启动过程中初始化顺序在系统硬件设备初始化之后,因此非USB类的设备驱动程序(如虚拟磁盘或虚拟显卡类驱动等)在用户桌面中用户自己安装,桌面重启时由于设备驱动初始化时应用分层驱动还没有启动,将无法找到应用分层磁盘中的驱动相关文件或注册表信息,导致重启后驱动不生效。
- 杀毒软件:
由于杀毒软件这类应用一般都涉及到很多底层的驱动程序,其中一些底层驱动程序启 动时间较早,早于应用分层的文件系统过滤驱动,系统重启时杀毒软件无法读取应用分层磁盘中的程序相关文件,出现错误或杀毒软件功能不能用。
- 服务启动类型是boot的服务:
由于Windows服务启动类型有如下几种启动类型:boot、system、auto、demand、disabled五种。其在系统中初始化顺序是由前到后的顺序依次初始化,由于应用分层驱动的服务启动类型是system类型,晚于boot类型。因此对于是boot类型的服务,应用分层将无法支持。使用boot类型的服务程序一般主要也是非usb类设备驱动、杀毒软件之类的程序。
- 系统安全补丁:
Windows系统安全补丁升级,如果涉及到内核的安全补丁,用户升级过程中会将内核文件写入到应用分层的个性化磁盘。对于这类内核补丁,系统引导时应用分层驱动还没有启动,因此重启系统后升级程序无法找到应用分层磁盘中的引导文件,导致升级无效或失败。
对于以上几类场景,规避的方式是这类应用或者windows的补丁升级不要由用户在自己的桌面中操作,可以由管理员在编辑镜像时统一安装好再分发给用户即可支持。
另外,应用分层驱动是基于minifilter框架开发的,由于在Windows7 sp1之前版本对于minifilter框架中部分功能不支持,所以应用分层技术只能在windows 7 sp1以及以上的版本才支持,包括Windows10。
云桌面结合应用分层技术,可以进一步大幅提升管理员对操作系统集中统一运维的效率。该技术目前在Windows上实现。未来在Linux以及国内操作系统上也会推出相应的应用分层技术。
相关推荐:
相关标签:
点赞
更多技术博文
-
全调度以太网(GSE),中国智算网络新标准
GSE网络作为一种全调度以太网技术,专为大规模AI训练集群设计,通过按需调度实现无损性能,提供灵活快速的部署方案,构建开放生态,显著提升智算效率和运维体验。
-
#知识百科
-
-
以太和PON,谁能更好地支撑办公室横向流量业务?
了解以太彩光与PON的区别,解析办公资源共享难题,锐捷极简以太彩光方案助您高效适配办公网,共享打印无压力!
-
#交换机
-
-
场景无线 驱动高效办公!锐捷新一代企业无线办公解决方案全新发布!
面对企业数智化转型中的无线办公网络挑战,锐捷新一代企业无线办公解决方案通过全场景AP、智能调度与云端智能运维等技术,实现网络性能、用户体验与运维效率的全面提升。
-
#无线网
-
#办公网
-
-
以太彩光和PON,运维管理谁技高一筹?
锐捷网络提供极简以太全光方案,简化配置流程,降低学习成本,让全光网络升级更平滑。
-
#交换机
-