Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
READ/WRITE METHOD AND SYSTEM BASED ON VIRTUALIZATION TECHNOLOGY
Document Type and Number:
WIPO Patent Application WO/2015/149407
Kind Code:
A1
Abstract:
A read/write method based on virtualization technology, comprising the following steps: taking over a read/write operation instruction sent to a specified directory of a terminal by a user; processing the read/write operation instruction according to the network connection status and sending the processed read/write operation instruction to the local cache of a server or terminal; processing the read/write operation instruction in the local cache of the server or the terminal and sending a processing result to the user, enabling the read/write operation to be unrestrained by the storage medium capacity of the terminal, reducing wasted space and improving user experience.

Inventors:
LIU SHENGKUN (CN)
LIN MINDA (CN)
WU YANG (CN)
WANG SHIQING (CN)
DU YU (CN)
LEI XUN (CN)
Application Number:
PCT/CN2014/076101
Publication Date:
October 08, 2015
Filing Date:
April 24, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
NANJING DINGYAN INFORMATION TECHNOLOGY CO LTD (CN)
International Classes:
G06F11/14
Foreign References:
CN102014158A2011-04-13
CN101902502A2010-12-01
CN101398744A2009-04-01
CN101304360A2008-11-12
Attorney, Agent or Firm:
NANJING ZHONGSHAN PATENT AGENT CO.,LTD. et al. (CN)
南京钟山专利代理有限公司 (CN)
Download PDF:
Claims:
权 利 要 求 书

1. 一种基于虚拟化技术的读写方法, 其特征在于, 所述方法包括以下步骤:

接管用户向终端的指定目录发出的读写操作指令;

根据网络连接状态处理所述的读写操作指令, 将其发送到服务器或终端的本

地缓存;

在所述的服务器或终端的本地缓存中处理所述的读写操作指令并将处理结果发送给用户。

2. 根据权利要求 1 所述的一种基于虚拟化技术的读写方法, 其特征在于, 所述的接管用户 向终端的指定目录发出的读写指令的步骤通过虚拟目录、 给系统调用挂钩子或调整内核源代 码的方式实现。

3. 根据权利要求 1 所述的一种基于虚拟化技术的读写方法, 其特征在于, 所述的根据网络 连接状态处理所述的读写操作指令, 将其发送到服务器或终端的本

地缓存的步骤包括:

在有网络时:

对于所述的读操作指令, 先尝试从终端的本地缓存中读取, 如果本地缓存中没有, 再从服务 器中读取;

对于写操作指令则写入服务器或本地缓存;

在无网络时:

对于所述的读操作指令则从本地缓存读取;

对于所述的写操作指令则写入到本地缓存。

4. 根据权利要求 1-3之一所述的一种基于虚拟化技术的读写方法, 其特征在于, 所述的终端 为安卓系统的智能设备。

5. 一种计算机程序产品, 包含用于执行根据权利要求 1-4中任何一个权利要求所述方法的计 算机程序代码。

6. 一种基于虚拟化技术的读写系统, 其特征在于, 所述的系统包括驱动模块、 数据处理模 块和终端的本地缓存, 所述的驱动模块设于终端中, 用于接管用户向终端的指定目录发出的 读写操作指令, 根据网络连接状态处理所述的读写操作指令, 将其发送到服务器或终端的本 地缓存;

在有网络时:

对于所述的读操作指令, 先尝试从终端的本地缓存中读取, 如果本地缓存中没有, 再从服务 器中读取;

对于写操作指令则写入服务器或本地缓存; 在无网络时:

对于所述的读操作指令则从本地缓存读取;

对于所述的写操作指令则写入到本地缓存;

所述的数据处理模块设于服务器中, 用于处理驱动模块发来的读写指令, 将结果发送给用户。

7. 根据权利要求 5 所述的一种基于虚拟化技术的读写系统, 其特征在于, 所述的驱动模块 通过虚拟目录、 给系统调用挂钩子或调整内核源代码的方式接管用户向终端的指定目录发出 的读写指令。

8. 根据权利要求 5 所述的一种基于虚拟化技术的读写系统, 其特征在于, 所述的本地缓存 包括读缓存模块和写缓存模块, 所述的读缓存模块用于缓存系统正常运行所需要的数据, 所 述写缓存模块用于在没有网络时以及备份过程中缓存数据。

9. 根据权利要求 5-7之一所述的一种基于虚拟化技术的读写系统, 其特征在于,

所述的终端为安卓系统的智能设备。

10. 一种装置, 包括

至少一个处理器, 及

至少一个存储器, 含有计算机程序代码, 所述至少一个存储器和所述计算机程序代码被配置 为利用所述至少一个处理器使得所述装置

接管用户向终端的指定目录发出的读写操作指令;

根据网络连接状态处理所述的读写操作指令, 将其发送到服务器或终端的本

地缓存;

在所述的服务器或终端的本地缓存中处理所述的读写操作指令并将处理结果发送给用户。

Description:
一种基于虚拟化技术的读写方法及系统 技术领域

[0001] 本发明涉及数据备份与还原领域、 软件部署、 服务器存储及透明计算技术。

背景技术

[0002] 随着计算机、 平板、 手机等电子设备走入大众日常生活的方方面面 , 用户数据的安 全性也越来越被人们所关注。 数据安全不仅包含数据不被外人窃取, 还包含数据不会由于误 操作、 设备损坏等原因而遗失。 为了避免数据由于各种原因而遗失, 通常会定时将数据进行 备份, 在必要的时候再进行恢复。

[0003] 安卓系统是由 Google 公司和开放手机联盟领导及开发的操作系统。 它是一种基于 Linux 的开放源代码的操作系统。 主要使用于智能手机、 平板设备、 智能电视等电子设备。 安卓系统的系统架构和其操作系统一样, 采用了分层的架构。 从架构图看, 安卓系统分为四 个层, 从高层到低层分别是应用程序层、 应用程序框架层、 系统运行库层和 Linux内核层。

[0004] 目前安卓系统已经存在备份和恢复软件, 现在的解决方案为: 当用户备份时, 将用 户安装的二进制可执行文件、 系统配置、 通讯录等数据打包压缩成文件, 然后将打包的文件 存放到 SD卡等存储介质中。 需要恢复时将打包的文件再解开恢复到原来的 位置。

[0005] 发明人在发明过程中, 发现现有技术至少存在如下问题:

A、 备份和恢复的过程漫长, 由于二进制可执行文件的多寡, 用户数据的大小会导致备份和 恢复的过程短则几分钟长则数十分钟。

[0006] B、 备份时数据量大, 使备份的份数受到终端存储介质容量的限制。

[0007] C、 二进制可执行文件批量部署工作量大, 效率低。 所需时间会随着终端数量而线性 增长。

[0008] D、 二进制可执行文件的数据存储容易受到硬件设 备容量的限制。

[0009] E、 对于大多数二进制可执行文件而言, 无法使用私有的网络存储空间。

发明内容

[0010] 本发明提供了一种新型读写技术, 可以使读写操作不受终端存储介质容量的约束 , 减少了空间浪费, 增强了用户体验。

[0011] 为了实现上述目的, 本发明采用的技术方案如下:

一种基于虚拟化技术的读写方法, 所述方法包括以下步骤:

接管用户向终端的指定目录发出的读写操作 指令; 根据网络连接状态处理所述的读写操作指令, 将其发送到服务器或终端的本

地缓存;

在所述的服务器或终端的本地缓存中处理所 述的读写操作指令并将处理结果发送给用户。

[0012] 一种基于虚拟化技术的读写系统, 所述的系统包括驱动模块、 数据处理模块和终端 的本地缓存, 所述的驱动模块设于终端中, 用于接管用户向终端的指定目录发出的读写操 作 指令, 根据网络连接状态处理所述的读写操作指令, 将其发送到服务器或终端的本地缓存; 在有网络时:

对于所述的读操作指令, 先尝试从终端的本地缓存中读取, 如果本地缓存中没有, 再从服务 器中读取;

对于写操作指令则写入服务器或本地缓存;

在无网络时:

对于所述的读操作指令则从本地缓存读取;

对于所述的写操作指令则写入到本地缓存。

[0013] 所述的数据处理模块设于服务器中, 用于处理驱动模块发来的读写指令, 将处理结 果发送给用户。

[0014] 注: 为了加快数据读写速度, 降低对网络的依赖性等目的, 数据会被缓存在本地存 储介质 (如 SD卡或 Flash芯片) 上设置的一块区域内, 这块区域就叫做 "本地缓存"。

附图说明

[0015] 图 1是对本发明背景技术的说明, 安卓系统的架构图;

图 2为本发明整体流程图;

图 3为说明缓存算法举例说明镜像关系示意图;

图 4为现有技术中, 安卓系统中备份恢复软件的基本流程图;

图 5为本发明实施例二备份过程的基本流程图;

图 6为本发明实施例三恢复过程的基本流程图。

具体实施方式

[0016] 本发明提供了一种新型备份和还原技术, 可以使备份和还原在一瞬间完成, 且不受 本地存储介质容量的约束, 减少了空间浪费, 增强了用户体验。

[0017] 为了实现上述目的, 本方法采用了以下方法, 其中包括:

1、 在安卓系统的终端设备中加载一个驱动程序, 该驱动会虚拟出多个存储设备, 然后将这 些虚拟的存储设备分别挂载到指定路径的目录 节点中, 优选的, 分别挂载至 l」/ S dcard、 /system, /data 等指定的目录节点中, 使这些目录节点变为虚拟目录。 对这些目录的读写操作被转换 成对虚拟设备的读写操作, 对虚拟设备的读写操作又被转化成对网络服务 器或本地缓存的读 写操作。 于是, 实现了对这些目录访问的接管。

[0018] 为了实现接管目录的读写操作, 通过给系统调用挂钩子 (即在运行期替换系统调用 函数)、 调整内核源代码等方式也可以实现同样的效果 。 具体的, 可以采用替换 open、 filp_open、 file—open—root 等等系统调用, 或者修改 file—open—name、 do_sys_open、 do_filp_open或者 path_openat等内核函数。 在挂钩后的系统调用或修改后的内核函数里面 , 可以检査调用该系统调用时的文件或目录的路 径, 如果处于 /sdcard、 /system, /data等指定的 目录节点中, 则构造一个特殊的 struct file。 在这个结构中, 成员变量 f_op将指向一个特殊 的文件操作函数表 struct ffle_operations。 于是, 实现对这些目录读写访问的接管。

[0019] 2、 在 Windows或 Linux服务器中, 提供一个服务器程序, 为安卓系统的终端设备提 供空间, 用于存储安卓系统终端设备的二进制可执行文 件和用户数据。

[0020] 3、 安卓系统中的二进制可执行文件通过网络读写 服务器中提供的存储空间。

[0021] 4、 当二进制可执行文件读写被接管的目录时, 驱动程序将读写操作重定向到服务器 中提供的存储空间。

[0022] 5、 为了解决对网络的依赖, 在安卓系统终端设备的存储介质中还会存在一 个缓存。 该缓存中包含了当前系统指定的目录节点中所 需要的所有二进制可执行文件和数据。 从而使 设备在离开网络时可以正常使用。 (此时, 无法执行下文实施例二及实施例三中所述的备 份 和恢复。)

6、 在联网的情况下, 用户需要备份时, 发出指令到服务器产生一个镜像。 需要恢复时用户 发指令到服务器, 将该设备的当前镜像切换到指定的镜像, 然后重启设备即可。

[0023] 本发明的技术方案具有以下优点:

1、 备份和恢复过程均可快速完成。

[0024] 2、 备份数据主要存储在服务器中, 空间不受限制, 备份数量不受限制。

[0025] 3、 镜像之间存在关联, 镜像中仅仅包含新增或修改数据, 节省空间。

[0026] 4、 整个过程对二进制可执行文件完全透明, 无需对普通二进制可执行文件做任何修 改。

[0027] 5、 本地存在缓存, 对网络不存在绝对的依赖关系。

[0028] 6、 本发明并没有备份系统中所有数据, 也没有仅仅备份特定类型的数据, 而是有针 对性的备份除系统之外的由于用户操作而产生 的那部分数据。 其中不仅包含二进制可执行文 件和特定类型的数据, 还可包含用户使用摄像头拍的照片、 视频, 从网上下载的歌曲、 电子 书等等。

[0029] 本发明,包含以下几个部分:

1、 安卓系统下的驱动程序, 负责接管指定目录的读写操作。

[0030] 2、 安卓系统下的桌面启动器 (Launcher), 负责给用户展示二进制可执行文件, 为用 户提供操作界面。

[0031] 3、 服务器上的服务程序, 为安卓系统终端提供存储空间、 实现备份、 还原、 响应终 端驱动程序的读写请求等指令。

[0032]整套系统的详细运行流程如下:

1、 驱动程序随安卓系统的启动而启动, 在系统启动过程中, 驱动程序会创建一些虚拟存储 设备, 然后借助 Linux内核的虚拟文件系统, 将这些设备挂载到指定的目录节点中。 于是, 当读写这些目录时, 读写操作就会重定向到虚拟存储设备中。

[0033] 2、 此时, 由于网络还没有启动, 将无法跟服务器连接, 数据的读写操作均重定向到 终端中的本地缓存。

[0034] 3、 桌面启动器 (Launcher) 在安卓系统的最后启动, 启动后会等待网络的连接。

[0035] 4、 如果网络启动失败, 将进入离线模式。 还原和备份操作会被禁用, 但不影响系统 的正常使用, 如果不禁用, 将会导致意想不到的运行无法进行的结果。

[0036] 5、 如果网络启动成功, 驱动会跟服务器通过网络连接起来。 数据读写操作也将重定 向到网络服务器中, 同时缓存到终端中的本地缓存。

[0037] 6、 如果网络启动失败, 驱动无法跟服务器连接时, 数据的读写操作将重定向到终端 存储介质的本地缓存中。 等连接到网络时再将这些数据传输到网络服务 器上。 这里, 为了将 离线状态下产生的数据上传到服务器上, 所以要将终端存储介质的缓存数据传输到服务 器上。

[0038] 目录读写的网络交互流程:

1、 普通二进制可执行文件读写指定目录时, 访问被驱动程序拦截。

[0039] 2、 读写操作被发送到服务器的指定端口。

[0040] 3、 服务器接收到读写操作请求后, 按照终端发送的指令执行读写操作。

[0041] 4、 服务器将读取的数据和操作结果返回给终端。

[0042] 5、 终端驱动将服务器返回的数据和操作结果返回 给二进制可执行文件。

[0043]服务器对读请求的处理:

1、 从当前镜像中寻找用户需要的数据。 将存在的那部分数据读取出来。 [0044] 2、 检査是否读取完成, 如果读取完成将数据返回给终端。

[0045] 3、 如果还没有读取完成, 在该镜像的依赖镜像中寻找那些不存在的数据 。 将存在的 那部分数据读取出来, 合并到已经读取到的数据中。 然后跳转到第 2步执行。

[0046]服务器对写请求的处理:

直接将数据写入到当前镜像中。 然后, 发送写成功数据包给终端驱动。

[0047] 缓存方法:

在本地缓存中还会存在两个缓存文件 读缓存和写缓存。 其中, 写缓存是在没有网络时以 及备份过程中写数据时使用, 读缓存会缓存系统正常运行所需要的数据。

[0048] 这样一方面解决了对网络的严重依赖, 还加快了数据读写的速度。

[0049] 但是, 在备份过程中本地缓存中并不会将写入服务器 中所有的数据全部进行缓存, 而只是缓存那些需要的数据。 不妨举例说明, 这种缓存方法有效利用了终端的空间:

1、 在服务器端写入 4个镜像, 分别是 0镜像、 1镜像、 2镜像和当前镜像。 其中, 0镜 像中包含文件 a、 bo

[0050] 1镜像基于 0镜像创建, 包含 A、 c文件。 而 A文件是覆盖 a的文件。

[0051] 2镜像也是基于 0镜像创建, 包含 d文件。

[0052] 当前镜像, 基于 1镜像创建, 其中包含文件 e。

[0053] 其中的关系如图 3所示。

[0054] 2、 此时本地缓存中将会存在当前镜像中的 e文件, 1镜像中的 、 c文件以及 0镜像 中的 b文件。

[0055] 通过对目录读写操作的接管, 我们便可以解决安卓系统中的各种问题, 其中至少包 括: 快速备份 /还原、 二进制可执行文件的批量部署、 执行二进制可执行文件存储的重定向 等等。 对于这几种应用的详细说明如下:

数据备份:

1、 用户通过终端二进制可执行文件对服务器端发 出备份指令。

[0056] 2、 服务器接到指令后, 创建一份新的空白的镜像文件作为新的当前镜 像。 将原来的 当前镜像标记为新的当前镜像的依赖镜像。

[0057] 3、 服务器发送操作成功结果给终端二进制可执行 文件。

[0058] 数据还原:

1、 用户通过终端二进制可执行文件选择一个已经 保存的镜像作为新的当前镜像。 然后, 发 出还原指令。 [0059] 2、 服务器接到指令后, 将用户选择的镜像设置为当前镜像。

[0060] 3、 服务器发送操作成功结果给终端二进制可执行 文件。

[0061] 4、 终端二进制可执行文件重启安卓系统, 以使系统和二进制可执行文件的状态切换 到新的当前镜像。

[0062] 二进制可执行文件批量部署

1、 在每个终端均接管 /data目录。

[0063] 2、 服务器将所有终端对该目录的读写请求全部重 定向到相同的镜像中。

[0064] 于是, 当任意一个终端安装某个软件时, 软件将会安装到服务器的镜像中。 由于该 镜像会被所有终端使用。 于是, 该软件也就安装到了所有的终端中。

[0065] 在此基础上, 还可以通过限制终端对镜像的写操作, 达到防止软件被误删的目的。

[0066]重定向二进制可执行文件的存储

通过接管指定二进制可执行文件的存储目录 , 将该目录的读写操作重定向到服务器中。 从而 实现在不改动二进制可执行文件的前提下, 改变其存储行为。 举例说明如下。

[0067] 通过本发明的算法, 接管相机应用的存储目录 / S dcard/DCIM。 于是, 相机拍照保存的 照片便被存储到了网络服务器上。 而图库等软件同样可以显示该目录中的照片。

[0068] 整个过程中, 相机、 图库等二进制可执行文件并没有做任何改动。 当然该算法不仅 仅可以应用于拍照, 还可以应用与办公软件、 视频文件、 浏览器的缓存文件等等。

[0069] 于是, 终端的所有二进制可执行文件均可以在不经过 改动的情况下使用私有网络存 储空间。

[0070] 下面, 结合实施例对本发明的技术方案作进一步说明 。

[0071] 实施例一

一种基于虚拟化技术的读写方法, 所述方法包括以下步骤:

驱动模块接管用户向终端的指定目录发出的 读写操作指令;

根据网络连接状态处理所述的读写操作指令 , 将其发送到服务器或终端的本地缓存; 在所述的服务器或终端的本地缓存中处理所述 的读写操作指令并将处理结果发送给用户。

[0072] 所述的接管用户向终端的指定目录发出的读写 操作指令的步骤通过虚拟目录 (即虚 拟出多个存储设备, 然后 (可借助 Linux内核的虚拟文件系统) 将这些存储设备分别挂载到 指定目录节点中, 使这些目录节点变为虚拟目录。 对这些目录的读写操作被转换成对虚拟设 备的读写操作, 对虚拟设备的读写操作又被转化为对服务器的 读写操作。)、 给系统调用挂钩 子 (即在运行期替换系统调用函数, 在挂钩后的系统调用里面, 可以检査到调用该系统时的 文件或目录的路径, 如果处于指定的目录节点中则构造一个特殊的 struct file,在这个结构中, 成员变量 f_op 将指向一个特殊的文件操作函数表 structfile_oprations。 于是, 实现对指定目 录读写访问的接管。 替换的系统调用函数, 例如替换 open、 ffle_open、 ffle_open_root等系统 调用函数; 指定目录, 例如 /sdcard、 /system, /data等目录) 或调整内核源代码 (即在运行期 修改一些内核函数, 在修改后的内核函数里面, 可以检査到调用该系统时的文件或目录的路 径, 如果处于指定的目录节点中则构造一个特殊的 struct file,在这个结构中, 成员变量 f_op 将指向一个特殊的文件操作函数表 struct file_oprations。 于是, 实现对指定目录读写访问的 接管。 修改的内核函数, 例如修改 ffle_open_name、 do_sys_open、 do_filp_open 或者 path_openat等内核函数) 等方式实现。

[0073] 所述的根据网络连接状态处理所述的读写操作 指令, 将其发送到服务器或终端的本 地缓存的步骤包括:

在有网络时:

对于所述的读操作指令, 先尝试从终端的本地缓存中读取, 如果本地缓存中没有, 再从服务 器中读取;

对于写操作指令则写入服务器或本地缓存;

在无网络时:

对于所述的读操作指令则从本地缓存读取;

对于所述的写操作指令则写入到本地缓存。

[0074] 一种基于虚拟化技术的读写系统, 所述的系统包括驱动模块、 数据处理模块和终端 的本地缓存, 所述的驱动模块嵌入或置入终端中, 用于接管用户向终端的指定目录发出的读 写操作指令, 根据网络连接状态处理所述的读写操作指令, 将其发送到服务器或终端的本地 缓存;

在有网络时:

对于所述的读操作指令, 先尝试从终端的本地缓存中读取, 如果本地缓存中没有, 再从服务 器中读取;

对于写操作指令则写入服务器或本地缓存;

在无网络时:

对于所述的读操作指令则从本地缓存读取;

对于所述的写操作指令则写入到本地缓存。

[0075] 所述的数据处理模块设于服务器中, 用于处理驱动模块发来的读写指令, 将结果发 送给用户。

[0076] 所述的数据处理模块设于服务器中, 用于处理驱动模块发来的读写指令, 将结果发 送给用户。

[0077] 所述的驱动模块通过虚拟目录、 给系统调用挂钩子或调整内核源代码等方式接 管用 户向终端的指定目录发出的读写指令。

[0078] 所述的终端存储介质中的本地缓存包括读缓存 模块和写缓存模块, 所述的读缓存模 块用于缓存系统正常运行所需要的数据, 所述写缓存模块用于在没有网络时以及备份过 程中 缓存数据。

[0079] 所述的终端可为安卓系统的智能设备。

[0080] 实施例二

一种基于虚拟化技术的数据备份方法, 所述方法包括以下步骤:

接管用户向终端的指定目录发出的备份指令 ;

根据网络连接状态处理所述的备份指令, 将其发送到服务器或终端的本地缓

存;

在所述的服务器或终端的本地缓存中处理所 述的备份指令并将处理结果发送给用户; 服务器接到备份指令后, 创建一份新的空白的镜像文件作为新的当前镜 像。 将原来的当前镜 像标记为新的当前镜像的依赖镜像, 将操作成功结果发送给终端。

[0081] 所述的接管用户向终端的指定目录发出的备份 指令的步骤: 通过虚拟目录 (即虚拟 出多个存储设备, 然后 (可借助 Linux内核的虚拟文件系统) 将这些存储设备分别挂载到指 定目录节点中, 使这些目录节点变为虚拟目录。 对这些目录的备份操作被转换成对虚拟设备 的备份操作, 对虚拟设备的备份操作又被转化为对服务器的 备份操作。)、 给系统调用挂钩子 (即在运行期替换系统调用函数, 在挂钩后的系统调用里面, 可以检査到调用该系统时的文 件或目录的路径, 如果处于指定的目录节点中则构造一个特殊的 struct file,在这个结构中, 成员变量 f_op 将指向一个特殊的文件操作函数表 structfile_oprations。 于是, 实现对指定目 录读写访问的接管。 替换的系统调用函数, 例如替换 open、 ffle_open、 ffle_open_root等系统 调用函数; 指定目录, 例如 /sdcard、 /system, /data等目录) 或调整内核源代码 (即在运行期 修改一些内核函数, 在修改后的内核函数里面, 可以检査到调用该系统时的文件或目录的路 径, 如果处于指定的目录节点中则构造一个特殊的 struct file,在这个结构中, 成员变量 f_op 将指向一个特殊的文件操作函数表 struct file_oprations。 于是, 实现对指定目录读写访问的 接管。 修改的内核函数, 例如修改 ffle_open_name、 do_sys_open、 do_filp_open 或者 path_openat等内核函数) 等方式实现。

[0082] 所述的根据网络连接状态处理所述的备份指令 , 将其发送到服务器或终端的本地缓 存的步骤包括:

在有网络时:

写入服务器或本地缓存;

在无网络时:

写入到本地缓存。

[0083] 所述备份方法还包括在本地缓存 (此处的本地缓存可以是终端存储介质中的本 地缓 存) 中进行写缓存的步骤, 其中, 所述的写缓存的步骤并不会将写入服务器中所 有的数据全 部进行缓存, 而只是缓存那些需要的数据。 不妨举例说明, 这种缓存方法可有效利用终端的 空间 (或者可以说是终端存储介质的空间):

1、 在服务器端写入 4个镜像, 分别是 0镜像、 1镜像、 2镜像和当前镜像。 其中, 0镜像中 包含文件&、

[0084] 1镜像基于 0镜像创建, 包含 A、 c文件。 而 A文件是覆盖 a的文件。

[0085] 2镜像也是基于 0镜像创建, 包含 d文件。

[0086] 当前镜像, 基于 1镜像创建, 其中包含文件 e。

[0087] 其中的关系如图 所示。

[0088] 2、 此时终端存储介质中的本地缓存中将会存在当 前镜像中的 e文件, 1镜像中的八、 c文件以及 0镜像中的 文件。

[0089] 一种基于虚拟化技术的备份系统, 其特征在于, 所述的系统包括驱动模块、 数据处 理模块和终端的本地缓存,

所述的驱动模块设于终端中, 用于接管用户向终端的指定目录发出的备份指 令, 根据网络连 接状态处理所述的备份指令, 将其发送到服务器或终端的本地缓存;

在有网络时:

写入服务器或本地缓存, 其过程举例如下:

1、 在服务器端写入 4个镜像, 分别是 0镜像、 1镜像、 2镜像和当前镜像。 其中, 0镜像中 包含文件&、

[0090] 1镜像基于 0镜像创建, 包含 A、 c文件。 而 A文件时覆盖 a的文件。

[0091] 2镜像也是基于 0镜像创建, 包含 d文件。

[0092] 当前镜像, 基于 1镜像创建, 其中包含文件 e。 [0093] 其中的关系如图 3所示。

[0094] 2、 此时终端存储介质中的本地缓存中将会存在当 前镜像中的 e文件, 1镜像中的八、 c文件以及 0镜像中的 b文件。

[0095] 在无网络时:

写入到本地缓存。

[0096] 所述的数据处理模块设于服务器中, 用于处理驱动模块发来的备份指令, 驱动模块 接到备份指令后, 创建一份新的空白的镜像文件作为新的当前镜 像。 将原来的当前镜像标记 为新的当前镜像的依赖镜像, 将操作成功的结果发送给驱动模块, 驱动模块将服务器发送来 的操作成功结果发送给终端的二进制可执行文 件。

[0097] 以上所述的终端可以为安卓系统的智能设备。

[0098] 所述的终端存储介质中的本地缓存包括读缓存 模块和写缓存模块, 所述的读缓存模 块用于缓存系统正常运行所需要的数据, 所述写缓存模块用于在没有网络时以及备份过 程中 缓存数据。

[0099] 实施例三

一种基于虚拟化技术的数据还原方法, 所述方法包括以下步骤: 用户通过终端二进制可执行 文件选择一个已经保存的镜像作为新的当前镜 像, 发出还原指令,

接管用户向终端的指定目录发出的还原指令 ,

根据网络连接状态处理所述的还原指令, 将其发送到服务器或终端的本地缓存;

在有网络时:

先尝试从终端的本地缓存中读取, 如果本地缓存中没有, 再从服务器中读取;

在无网络时:

从本地缓存读取;

在所述的服务器或终端的本地缓存中处理所 述的读写操作指令, 其过程如下:

服务器接到还原指令后, 将用户选择的镜像设置为当前镜像,

1、 从当前镜像中寻找用户需要的数据。 将存在的那部分数据读取出来。

[0100] 2、 检査是否读取完成, 如果读取完成将数据返回给终端。

[0101] 3、 如果还没有读取完成, 在该镜像的依赖镜像中寻找那些不存在的数据 。 将存在的 那部分数据读取出来, 合并到已经读取到的数据中。 然后跳转到第 2步执行。

[0102] 所述的接管用户向终端的指定目录发出的还原 指令的步骤通过虚拟目录 (即虚拟出 多个存储设备, 然后 (可借助 Linux内核的虚拟文件系统) 将这些存储设备分别挂载到指定 目录节点中, 使这些目录节点变为虚拟目录。 对这些目录的还原操作被转换成对虚拟设备的 还原操作, 对虚拟设备的还原操作又被转化为对服务器的 还原操作。)、 给系统调用挂钩子 (即在运行期替换系统调用函数, 在挂钩后的系统调用里面, 可以检査到调用该系统时的文 件或目录的路径, 如果处于指定的目录节点中则构造一个特殊的 struct file,在这个结构中, 成员变量 f_op 将指向一个特殊的文件操作函数表 structfile_oprations。 于是, 实现对指定目 录读写访问的接管。 替换的系统调用函数, 例如替换 open、 ffle_open、 ffle_open_root等系统 调用函数; 指定目录, 例如 /sdcard、 /system, /data等目录) 或调整内核源代码 (即在运行期 修改一些内核函数, 在修改后的内核函数里面, 可以检査到调用该系统时的文件或目录的路 径, 如果处于指定的目录节点中则构造一个特殊的 struct file,在这个结构中, 成员变量 f_op 将指向一个特殊的文件操作函数表 struct file_oprations。 于是, 实现对指定目录读写访问的 接管。 修改的内核函数, 例如修改 ffle_open_name、 do_sys_open、 do_filp_open 或者 path_openat等内核函数) 等方式实现。

[0103] 一种基于虚拟化技术的读写系统, 所述的系统包括驱动模块、 数据处理模块和终端 的本地缓存, 所述的驱动模块设于终端中, 用于接管用户向终端的指定目录发出的还原指 令, 根据网络连接状态处理所述的还原指令, 将其发送到服务器或终端的本地缓存;

在有网络时:

先尝试从终端的本地缓存中读取, 如果本地缓存中没有, 再从服务器中读取;

在无网络时:

从本地缓存读取;

所述的数据处理模块设于服务器中, 用于处理驱动模块发来的还原指令, 将结果发送给用户。

[0104] 所述的数据处理模块设于服务器中, 用于处理驱动模块发来的读写指令, 其过程如 下:

服务器接到还原指令后, 将用户选择的镜像设置为当前镜像,

1、 从当前镜像中寻找用户需要的数据。 将存在的那部分数据读取出来。

[0105] 2、 检査是否完全读取完成, 如果读取完成将数据返回给终端。

[0106] 3、 如果还没有读取完成, 在该镜像的依赖镜像中寻找那些不存在的数据 。 将存在的 那部分数据读取出来, 合并到已经读取到的数据中。 然后跳转到第 2步执行。

[0107] 最后将结果发送给用户。

[0108] 所述的驱动模块通过虚拟目录、 给系统调用挂钩子或调整内核源代码等方式接 管用 户向终端的指定目录发出的还原指令。 [0109] 所述的终端存储介质中的本地缓存包括读缓存 模块和写缓存模块, 所述的读缓存模 块用于缓存系统正常运行所需要的数据, 所述写缓存模块用于在没有网络时以及备份过 程中 缓存数据。

[0110] 所述的终端可为安卓系统的智能设备。

[0111] 实施例四

一种基于虚拟化技术的二进制可执行文件批 量部署的方法, 所述方法包括以下步骤: 每个终 端均接管用户向 /data 目录发出的读写指令, 将其发送到服务器或发送到终端存储介质中的 本地缓存;

在有网络时:

对于所述的读操作指令, 先尝试从终端的本地缓存中读取, 如果本地缓存中没有, 再从服务 器中读取;

对于写操作指令则写入服务器或本地缓存;

在无网络时:

对于所述的读操作指令则从本地缓存读取;

对于所述的写操作指令则写入到本地缓存。

[0112] 所述服务器将所有终端对该目录的读写请求全 部重定向到相同的镜像中。

[0113] 于是, 当任意一个终端安装某个软件时, 软件将会安装到服务器的镜像中。 由于该镜 像会被所有终端使用。 于是, 该软件也就安装到了所有的终端中。

[0114] 所述的接管用户向终端的指定目录发出的读写 指令的步骤通过虚拟目录、 给系统调用 挂钩子或调整内核源代码等方式实现。 (到底是三种实现方式还是两种实现方式, 此处以及 前面所有相关地方都有些歧义)

一种基于虚拟化技术的二进制可执行文件批 量部署的系统, 所述的系统包括驱动模块、 数据 处理模块和终端的本地缓存, 所述的驱动模块设于终端中, 用于接管用户向终端的 /data 目 录发出的读写操作指令, 根据网络连接状态处理所述的读写操作指令, 将其发送到服务器或 终端的本地缓存;

在有网络时:

对于所述的读操作指令, 先尝试从终端的本地缓存中读取, 如果本地缓存中没有, 再从服务 器中读取;

对于写操作指令则写入服务器或本地缓存;

在无网络时: 对于所述的读操作指令则从本地缓存读取;

对于所述的写操作指令则写入到本地缓存。

[0115] 所述的数据处理模块设于服务器中, 用于处理驱动模块发来的读写指令, 将所有终端 对该目录的读写请求全部从重定向到相同的镜 像中。 将结果发送给用户。

[0116] 所述的数据处理模块设于服务器中, 用于处理驱动模块发来的读写指令, 将结果发送 给用户。

[0117] 所述的驱动模块通过虚拟目录、 给系统调用挂钩子或调整内核源代码等方式接 管用户 向终端的指定目录发出的读写指令。

[0118] 所述的终端存储介质中的本地缓存包括读缓存 模块和写缓存模块, 所述的读缓存模块 用于缓存系统正常运行所需要的数据, 所述写缓存模块用于在没有网络时以及备份过 程中缓 存数据。

[0119] 所述的终端可为安卓系统的智能设备。

[0120] 在此基础上, 还可以通过限制终端对镜像的写操作, 达到防止软件被误删的目的。

[0121] 实施例五

一种基于虚拟化技术的重定向二进制可执行 文件的存储方法, 所述方法包括以下步骤: 接管 用户向终端的指定目录发出的写操作指令, 根据网络连接状态处理所述的写操作指令, 将其 发送到服务器或发送到本地缓存;

服务器或本地缓存存储后将操作成功结果发 送给终端。 从而实现在不改动二进制可执行文件 的前提下, 改变其存储行为。 举例说明如下:

通过本发明的方法, 接管用户向终端的相机应用的存储目录 /sdcard/DCIM发出的写操作指令; 在有网络时, 将写操作指令写入服务器;

于是, 相机拍照保存的照片便被存储到了网络服务器 上。 而图库等软件同样可以显示该目录 中的照片。

[0122] 在无网络时, 将写操作指令写入到本地缓存。

[0123] 整个过程中, 相机、 图库等二进制可执行文件并没有做任何改动。 当然该方法不仅 仅可以应用于拍照, 还可以应用与办公软件、 视频文件、 浏览器的缓存文件等等。

[0124] 于是, 终端的所有二进制可执行文件均可以在不经过 改动的情况下使用云存储空间。

[0125] 所述的接管用户向终端的指定目录发出的读写 指令的步骤通过虚拟目录、 给系统调 用挂钩子或调整内核源代码等方式实现。

[0126] 所述的终端可为 Android的智能设备。 [0127] 相应地, 一种基于虚拟化技术的重定向二进制可执行文 件的存储系统, 所述的系统 包括驱动模块、 数据处理模块和终端的本地缓存, 所述的驱动模块设于终端中, 用于接管用 户向终端的相机应用的存储目录 /sdcard/DCIM发出的写操作指令, 根据网络连接状态处理所 述的写操作指令, 将其发送到服务器或终端的本地缓存;

在有网络时:

写入服务器;

在无网络时:

写入到本地缓存。

[0128] 所述的数据处理模块设于服务器中, 用于存储数据后将操作成功结果发送给用户。

[0129] 所述的驱动模块通过虚拟目录、 给系统调用挂钩子或调整内核源代码的方式接 管用 户向终端的相机应用的存储目录 /sdcard/DCIM目录发出的读写指令。

[0130] 所述的本地缓存包括读缓存模块和写缓存模块 , 所述的读缓存模块用于缓存系统正 常运行所需要的所有数据, 所述写缓存模块用于在没有网路时以及备份过 程中缓存数据。

[0131] 所述的终端可以为 Android的智能设备。