CN101902502A - 一种基于Android的透明数据存储方法和系统 - Google Patents
一种基于Android的透明数据存储方法和系统 Download PDFInfo
- Publication number
- CN101902502A CN101902502A CN 201010247712 CN201010247712A CN101902502A CN 101902502 A CN101902502 A CN 101902502A CN 201010247712 CN201010247712 CN 201010247712 CN 201010247712 A CN201010247712 A CN 201010247712A CN 101902502 A CN101902502 A CN 101902502A
- Authority
- CN
- China
- Prior art keywords
- file
- local
- user
- under
- network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本发明涉及一种基于Android的透明数据存储的方法和系统,属于移动计算领域。本方法包括,读取系统的配置信息,利用用户文件系统接口模块提供一组可以重新实现文件操作语义的用户态的接口,通过用户态的程序实现这组用户态的文件操作接口。根据手机设备的网络连接情况,提供本地模式和网络模式下的基本的文件操作功能。本地模式下把文件操作重新定向到本地的另一个目录下;网络模式下利用ftp作为通讯协议,把文件操作重定向到服务器端。网络模式下为了提高效率增加了本地缓存,同时还要保证手机端和服务器端的数据一致性。
Description
技术领域
本发明涉及一种基于Android的透明数据存储的方法和系统,属于移动计算领域。
背景技术
Android是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,是一个为移动终端打造的真正开放和完整的移动软件。
随着移动计算技术的发展,手机的性能越来越强。虽然很多台式机上的应用也可以在手机上运行,但是作为一个移动设备,手机的存储容量还是不足以能够满足用户的所有需求。另外,手机设备的更换频率也很高,用户每次更换手机设备都需要同步数据。这两个问题给用户造成了很大的麻烦。
现有的手机已经能够支持通讯录等重要的数据的同步,但是对于一般的应用程序的配置文件和数据文件等还没有一种通用的解决方法。
网络文件系统可以扩展一台设备上的存储容量,但是如果要把数据存储在网络上,需要显式的指定存储路径,这样不兼容现有的手机应用程序。
发明内容
本发明提供了一种透明的数据存储方法和系统。用户和应用程序看来,文件依然是在本地的目录下,但是实际上文件存储在服务器上的,这样既扩展了手机端的存储容量,同时也避免修改现有的手机应用程序。
本发明的原理是:利用用户文件系统接口模块提供的机制,我们可以截获对于文件的各种操作,同时重新定义这些文件操作的具体实现,把对于本地文件的操作重新定向为对于服务器上的对应的文件的操作,这样就实现了数据的透明存储。
本方法包括,读取系统的配置信息,利用用户文件系统接口模块提供一组可以重新实现文件操作语义的用户态的接口,通过用户态的程序实现这组用户态的文件操作接口。根据手机设备的网络连接情况,提供本地模式和网络模式下的基本的文件操作功能。本地模式下把文件操作重新定向到本地的另一个目录下;网络模式下利用ftp作为通讯协议,把文件操作重定向到服务器端。网络模式下为了提高效率增加了本地缓存,同时还要保证手机端和服务器端的数据一致性。
本方明的流程,如附图1:
A.读取系统的配置文件,获得ftp服务器及透明存储的相关配置信息,配置信息主要包括:
AA.ftp服务器的IP地址;
AB.ftp服务器的账号;
AC.ftp服务器的密码;
AD.需要透明存储的数据所在的目录;
AE.网络模式下本地缓存的目录。
B.用用户文件系统接口模块提供一组可以重新实现文件操作语义的用户态的接口,具体做法为:
BA.在VFS中注册一个用户文件系统,根据需要把该文件系统挂载到某个特定的目录;
BB.把VFS中的所有文件操作转化为一组接口;
BC.提供用户态库来实现和操作系统内核之间的通讯,并把自己的接口提供给用户态程序;
C.通过用户态程序实现用户文件系统接口模块提供的用户态文件操作接口,根据手机设备的网络连接情况,提供本地模式和网络模式下的基本的文件操作功能,具体为:
CA.当网络连接不好的时候,采用本地模式把当前的文件操作重新定向到另一个本地目录下。所述的本地目录可以是手机设备的扩展存储,比如SD卡,也可以是网络模式下使用的本地缓存的目录。本地模式下具体实现了如下的文件操作接口:
CA1.open操作:计算另一个目录下对应文件所在的路径,用该路径作为参数调用open函数,如果得到的句柄有效,返回结果0(代表成功),否则返回-1(代表失败)。关闭句柄;
CA2.close操作:直接返回成功即可;
CA3.stat操作:计算另一个目录下对应文件所在的路径,用该路径作为参数调用stat函数,返回执行结果;
CA4.create操作:计算另一个目录下对应文件所在的路径,用该路径作为参数调用access函数,如果该文件存在那么返回失败。否则,调用open函数,指定参数为文件不存在则创建。返回open函数的执行结果;
CA5.mkdir操作:计算另一个目录下对应文件所在的路径,用该路径作为参数调用mkdir函数,返回执行结果;
CA6.unlink操作:计算另一个目录下对应文件所在的路径,用该路径作为参数调用unlink函数,返回执行结果;
CA7.rmdir操作:计算另一个目录下对应文件所在的路径,用该路径作为参数调用rmdir函数,返回执行结果;
CA8.read操作:计算另一个目录下对应文件所在的路径,用该路径作为参数调用open函数,获得文件句柄,如果句柄小于0,返回失败,用Iseek函数设置偏移位置,调用read函数,关闭句柄,返回read函数的执行结果;
CA9.write操作:计算另一个目录下对应文件所在的路径,用该路径作为参数调用open函数,获得文件句柄,如果句柄小于0,返回失败,用Iseek函数设置偏移位置,调用write函数,关闭句柄,返回write函数的执行结果;
CA10.readdir操作:计算另一个目录下对应文件所在的路径,读取全部的目录信息,返回结果;
CB.当网络可以连接的时候,采用网络模式文件操作重新定向到ftp服务器上的文件,并把结果返回给手机端,具体实现了如下操作:
CB1.open操作:计算服务器端对应文件的路径,通过请求文件的创建时间来判断服务器端对应的文件是否存在(如果不存在,ftp服务器返回空指针),如果存在返回成功,否则,返回失败。系统默认用户和应用程序对所有的透明存储的文件都具有最大的权限;
CB2.close操作:直接返回成功即可;
CB3.stat操作:计算服务器端对应文件的路径,通过请求文件的创建时间来判断服务器端对应的文件是否存在,如果不存在,返回失败,如果存在,那么通过请求该文件的大小来判断该文件是普通文件还是目录文件(目录文件没有size属性,所以如果请求目录文件的大小,ftp服务器返回失败),设置该文件的权限属性为最大,返回结果;
CB4.create操作:计算服务器端对应文件的路径,请求ftp服务器创建文件,返回请求结果;
CB5.mkdir操作:计算服务器端对应文件的路径,请求ftp服务器创建目录,返回请求结果;
CB6.unlink操作:计算服务器端对应文件的路径,请求ftp服务器删除文件,返回请求结果;
CB7.rmdir操作:计算服务器端对应文件的路径,请求ftp服务器删除目录,返回请求结果;
CB8.read操作:如果本地缓存中不存在该文件,那么更新缓存,然后读本地副本的内容;
CB9.write操作:更新服务器端文件的内容,如果本地缓存中有该文件的副本,那么同时更新本地缓存;
CB10.readdir操作:计算服务器端对应文件的路径,请求ftp服务器该目录的内容,解析返回的字符串,提取出所有的文件名以及文件类型(目录还是普通文件),默认所有文件的权限都是最大,返回结果。
D.网络模式下,增加本地缓存提高运行效率,在第一次读取文件时,缓冲整个文件内容到本地,来减少后续读文件操作的延迟,具体做法;
DA.read操作首先检查本地缓存中是否有该文件的副本,如果不存在副本,请求ftp服务器下载该文件到本地缓存中,如果存在,那么直接跳过这一步;
DB.利用read函数读取本地副本中的内容,返回执行结果;
E.网络模式下,保证手机端和服务器端的数据一致性,因此当write操作更新文件内容时,要保证本地的副本内容也被更新;
EA.write操作首先检查本地缓存中是否有该文件的副本,如果存在,那么利用wirte函数把更新写入副本中,否则跳过这一步;
EB.计算服务器端对应文件的路径,如果要求写入的字节数大于ftp一次传输的最大长度,那么拆分为多次的写文件的请求,返回一共写入的字节数。
本方面同时包含一种基于Android的支持透明数据存储的系统,如图2所示,该系统实现了用户文件系统接口模块提供的文件系统接口,把文件操作重新定向到了ftp服务器上。该系统采用本发明提供的方法实现,主要包括以下几个功能单元:
1.配置单元,主要用于:读取系统的配置文件,确定系统运行的各个参数;
2.用户文件系统接口模块,,主要用于:在VFS中注册自己,并提供一组用户态的接口来重新实现文件操作的语义;
3.功能单元,主要用于:实现用户文件系统接口模块提供的文件操作接口,根据网络情况分为本地模式的实现和网络模式的实现,网络模式下增加了本地缓存功能提高效率,同时也解决了本地副本和服务器文件的一致性问题;
4.通信单元,主要用于:手机端和ftp服务器端通信,封装ftp协议的具体议内容,提供各种ftp请求的库函数。
各模块之间的关系如下:
1.配置单元读取配置文件,获得系统运行的各项参数,并把这些参数传递给功能单元;
2.用户文件系统接口模块会调用功能单元的具体实现来最终完成文件操作;
3.功能单元在网络模式下,会通过通信单元与ftp服务器通信。
附图说明
图1:本发明基于Android的透明数据存储方法流程图;
图2:本发明基于Android的透明数据存储系统结构图。
具体实施方式
下面通过一个具体的实施例对本发明作进一步的阐述。
本实施例是针对的硬件是HTC生产的G2手机,该手机上安装的操作系统是Android 1.6,相应的linux内核版本是android-goldfish-2.6.29。我们使用一个台式机作为ftp服务器,安装的操作系统是Ubuntu 9.04,在该台式机上安装开源的ftp服务器软件vsftp,添加ftp的用户,并为每个用户建立一个单独的目录作为他们登录ftp后的根目录,配置ftp服务器的IP地址为192.168.3.72。本实施例中采用fuse作为用户文件系统接口模块。
本实施例的测试程序采用的是一款基于Android系统的看书软件PkuReader,主要的功能就是打开txt格式的书籍,提供基本的翻页,书签,修改字体和背景等功能。PkuReader会在手机的/data/data/目录下创建一个叫做pku.oslab.reader的目录,在目录中创建文件SETTING.xml来保存当前的字体,背景,以及书签位置。
本实施例的目的是透明地存储PkuReader的配置文件,使得用户更换了手机设备,只要使用相同的账号登录系统,那么具体的实施步骤如下:
1.配置系统信息,相应的参数为:
ftp服务器的IP地址; | 192.168.3.72 |
ftp服务器的账号; | UseA |
ftp服务器的密码; | UseA |
需要透明存储的数据所在的目录; | /data/data/pku.oslab.reader/ |
网络模式下本地缓存的目录。 | /data/mfs-cache/ |
2.利用fuse提供一组可以重新实现文件操作语义的用户态的接口,具体过程为:
√Android默认使用的linux内核并不支持fuse,因此我们需要重新编译linux的内核,在编译配置选项中添加fuse模块;
√利用fuse文件系统重新挂载/data/data/pku.oslab.reader/目录,这样对于这个目录的所有文件操作都会被fuse所截获。
3.通过用户态的程序实现fuse提供的文件操作接口,实现了本地模式和网络模式两种情况下的文件操作接口,当网络连接不上的时候,系统采用本地模式,当网络连接上的时候,系统采用网络模式;具体为:
√本地模式下,把/data/data/pku.oslab.reader/目录下的文件操作重新定向到/data/mfs-cache/目录下,实现了本方法所述的10种操作;
√网络模式下,把/data/data/pku.oslab.reader/目录下的文件操作重新定向到ftp服务器上的/<ftp-path>/UseA/目录下,我们使用一个开源的ftp库libftp来完成于ftp服务器的通信。
4.网络模式下,增加本地缓存提高运行效率,具体操作为:
√在手机端检查目录/data/mfs-cache/是否存在,如果不存在,那么创建目录/data/mfs-cache/,如果存在,那么需要清空目录中的所有文件和子目录,这样做是为了该设备上的本地副本已经不是最新的了;
√当应用程序读取配置文件内容时,read操作首先检查目录/data/mfs-cache/下面是否包含文件SETTING.xml,如果包含,那么直接读取
/data/mfs-cache/SETTING.xml的内容,否则下载ftp服务器上的文件
/<ftp-path>/UseA/SETTING.xml到/data/mfs-cache/目录下,然后读取副本内容。
5.网络模式下,保证手机端和服务器端的数据一致性
√当应用程序写配置文件的内容时,首先检查/data/mfs-cache/目录下是否有SETTING.xml文件,如果有那么需要更新/data/mfs-cache/SETTING.xml的内容
√更新服务器端的/<ftp-path>/UseA/SETTING.xml的内容
系统的测试,首先准备两台同样型号的HTC生产的G2手机A和B,在A,B上都安装我们的透明存储系统以及PkuReader软件。首先用账号UseA登录手机A,保证网络连接,修改PkuReader的配置信息,比如调整字体大小,更换背景图片等,然后关闭手机A。打开手机B,并使用UseA登录系统,保证网络连接,进入PkuReader软件,发现已经是新的配置。
Claims (7)
1.一种基于Android的透明数据存储的方法,其特征在于,包括以下步骤:
a)读取系统的配置文件,获得ftp服务器及透明存储的相关配置信息;
b)用用户文件系统接口模块提供一组可以重新实现文件操作语义的用户态的接口;
c)通过用户态程序实现用户文件系统接口模块提供的用户态文件操作接口,根据手机设备的网络连接情况,提供本地模式和网络模式下的基本的文件操作功能;
d)网络模式下,增加本地缓存提高运行效率,在第一次读取文件时,缓冲整个文件内容到本地,来减少后续读文件操作的延迟;
e)网络模式下,保证手机端和服务器端的数据一致性,因此当write操作更新文件内容时,要保证本地的副本内容也被更新。
2.如权利要求1所述的方法,其特征在于,所述步骤A中配置的信息包括:
A1.ftp服务器的IP地址;
A2.ftp服务器的账号;
A3.ftp服务器的密码;
A4.需要透明存储的数据所在的目录;
A5.网络模式下本地缓存的目录。
3.如权利要求2所述的方法,其特征在于,所述步骤B的实现方法为:
B1.在VFS中注册一个用户文件系统,根据需要把该文件系统挂载到某个特定的目录;
B2.把VFS中的所有文件操作转化为一组接口;
B3.提供用户态库来实现和操作系统内核之间的通讯,并把自己的接口提供给用户态程序。
4.如权利要求3所述的方法,其特征在于,所述步骤C的实现方法为:
C1.当网络连接不好的时候,采用本地模式把当前的文件操作重新定向到另一个本地目录下。所述的本地目录可以是手机设备的扩展存储,比如SD卡,也可以是网络模式下使用的本地缓存的目录;本地模式下具体实现的文件操作接口包括open,close,stat,create,mkdir,unlink,rmdir,read,write,readdir;
C2.当网络可以连接的时候,采用网络模式文件操作重新定向到ftp服务器上的文件,并把结果返回给手机端;网络模式下实现的文件操作接口包括open,close,stat,create,mkdir,unlink,rmdir,read,write,readdir。
5.如权利要求4所述的方法,其特征在于,所述步骤D实现方法为:
D1.read操作首先检查本地缓存中是否有该文件的副本,如果不存在副本,请求ftp服务器下载该文件到本地缓存中,如果存在,那么直接跳过这一步;
D2.利用read函数读取本地副本中的内容,返回执行结果。
6.如权利要求5所述的方法,其特征在于,所述步骤E实现方法为:
E1.write操作首先检查本地缓存中是否有该文件的副本,如果存在,那么利用wirte函数把更新写入副本中,否则跳过这一步;
E2.计算服务器端对应文件的路径,如果要求写入的字节数大于ftp一次传输的最大长度,那么拆分为多次的写文件的请求,返回一共写入的字节数。
7.一种基于Android的透明数据存储系统,其特征在于,该系统的实现方法如权利要求1所述;系统包含如下几个功能单元:
-配置单元,主要用于:读取系统的配置文件,确定系统运行的各个参数;
-用户文件系统接口模块,,主要用于:在VFS中注册自己,并提供一组用户态的接口来重新实现文件操作的语义;
-功能单元,主要用于:实现用户文件系统接口模块提供的文件操作接口,根据网络情况分为本地模式的实现和网络模式的实现,网络模式下增加了本地缓存功能提高效率,同时也解决了本地副本和服务器文件的一致性问题;
-通信单元,主要用于:手机端和ftp服务器端通信,封装ftp协议的具体议内容,提供各种ftp请求的库函数。
各模块之间的关系如下:
1.配置单元读取配置文件,获得系统运行的各项参数,并把这些参数传递给功能单元;
2.用户文件系统接口模块会调用功能单元的具体实现来最终完成文件操作;
3.功能单元在网络模式下,会通过通信单元与ftp服务器通信。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010247712A CN101902502B (zh) | 2010-08-08 | 2010-08-08 | 一种基于Android的透明数据存储方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010247712A CN101902502B (zh) | 2010-08-08 | 2010-08-08 | 一种基于Android的透明数据存储方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101902502A true CN101902502A (zh) | 2010-12-01 |
CN101902502B CN101902502B (zh) | 2012-10-10 |
Family
ID=43227700
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010247712A Active CN101902502B (zh) | 2010-08-08 | 2010-08-08 | 一种基于Android的透明数据存储方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101902502B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103218227A (zh) * | 2013-04-10 | 2013-07-24 | 广东欧珀移动通信有限公司 | 一种安卓设备内置硬盘上兼容多种文件系统的方法及装置 |
CN103383660A (zh) * | 2013-04-01 | 2013-11-06 | 华为终端有限公司 | 一种Android系统cache分区功能实现方法、装置及终端设备 |
CN104917826A (zh) * | 2015-05-26 | 2015-09-16 | 浪潮电子信息产业股份有限公司 | 一种异构环境下通过自动编码转换的方式访问ftp的方法 |
WO2015149407A1 (zh) * | 2014-04-02 | 2015-10-08 | 南京鼎岩信息科技有限公司 | 一种基于虚拟化技术的读写方法及系统 |
CN110971708A (zh) * | 2019-12-19 | 2020-04-07 | 吉林大学 | 安卓与Ubuntu系统信息传输方法及系统、设备、介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101056235A (zh) * | 2007-05-08 | 2007-10-17 | 中山大学 | 数字家庭网络中实现数据实时备份的系统 |
-
2010
- 2010-08-08 CN CN201010247712A patent/CN101902502B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101056235A (zh) * | 2007-05-08 | 2007-10-17 | 中山大学 | 数字家庭网络中实现数据实时备份的系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103383660A (zh) * | 2013-04-01 | 2013-11-06 | 华为终端有限公司 | 一种Android系统cache分区功能实现方法、装置及终端设备 |
CN103218227A (zh) * | 2013-04-10 | 2013-07-24 | 广东欧珀移动通信有限公司 | 一种安卓设备内置硬盘上兼容多种文件系统的方法及装置 |
CN103218227B (zh) * | 2013-04-10 | 2016-01-06 | 广东欧珀移动通信有限公司 | 一种安卓设备内置硬盘上兼容多种文件系统的方法及装置 |
WO2015149407A1 (zh) * | 2014-04-02 | 2015-10-08 | 南京鼎岩信息科技有限公司 | 一种基于虚拟化技术的读写方法及系统 |
CN104917826A (zh) * | 2015-05-26 | 2015-09-16 | 浪潮电子信息产业股份有限公司 | 一种异构环境下通过自动编码转换的方式访问ftp的方法 |
CN110971708A (zh) * | 2019-12-19 | 2020-04-07 | 吉林大学 | 安卓与Ubuntu系统信息传输方法及系统、设备、介质 |
CN110971708B (zh) * | 2019-12-19 | 2021-11-30 | 吉林大学 | 安卓与Ubuntu系统信息传输方法及系统、设备、介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101902502B (zh) | 2012-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101902502B (zh) | 一种基于Android的透明数据存储方法和系统 | |
US8484260B2 (en) | Method for a cloud-based meta-file system to virtually unify remote and local files across a range of devices' local file systems | |
CN102667772B (zh) | 文件级分级存储管理系统、方法和设备 | |
CN103116618B (zh) | 基于客户端持久缓存的远程文件系统镜像方法及系统 | |
US20090063556A1 (en) | Root node for carrying out file level virtualization and migration | |
CN108228818A (zh) | 网页资源加载方法及装置、电子设备、以及存储介质 | |
US20080235300A1 (en) | Data migration processing device | |
EP2555118B1 (en) | File server apparatus, method of controlling storage system, and program | |
CN101272313B (zh) | 进行文件级的虚拟化的中间装置、文件服务器系统和中继方法 | |
CN101082927B (zh) | 一种基于上下文文件系统的文件服务方法 | |
CN109725933B (zh) | 大数据文档生成方法、装置、设备及计算机可读存储介质 | |
CN103064637A (zh) | 一种网盘的缓存同步方法及系统 | |
CN104539685B (zh) | 一种OpenStack云桌面的U盘识别系统及方法 | |
CN102411506A (zh) | Java系统业务单元插件式管理系统及业务功能动态变更方法 | |
CN104951360A (zh) | 基于Docker的配置管理方式及装置 | |
CN103946844A (zh) | 跨集群文件系统同步更新 | |
CN102982151B (zh) | 多个物理文件合并为一个逻辑文件的方法 | |
CN104104708A (zh) | 多个云端储存空间的存取方法及电子通讯装置 | |
CN103067480A (zh) | 一种网盘的同步方法及系统 | |
US20150046394A1 (en) | Storage system, storage control device, and storage medium storing control program | |
CN104168309A (zh) | 基于云服务的数据备份与操作方法 | |
CN108920489A (zh) | 数据库的部署方法、装置及设备 | |
US20130065563A1 (en) | Method and Device for Operating Telephone Directory | |
CN108268299A (zh) | 一种基于OpenStack云平台的Docker共享存储解决方法 | |
CN106021327A (zh) | 一种支持多用户同时读写的网盘系统构建方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |