CN106021327B - 一种支持多用户同时读写的网盘系统及其读文件方法、写文件方法 - Google Patents
一种支持多用户同时读写的网盘系统及其读文件方法、写文件方法 Download PDFInfo
- Publication number
- CN106021327B CN106021327B CN201610297399.3A CN201610297399A CN106021327B CN 106021327 B CN106021327 B CN 106021327B CN 201610297399 A CN201610297399 A CN 201610297399A CN 106021327 B CN106021327 B CN 106021327B
- Authority
- CN
- China
- Prior art keywords
- file
- data block
- network disk
- service module
- information
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 24
- 230000007246 mechanism Effects 0.000 claims abstract description 7
- 238000004891 communication Methods 0.000 claims description 15
- 230000004048 modification Effects 0.000 claims description 9
- 238000012986 modification Methods 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 6
- 230000002085 persistent effect Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000010276 construction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种支持多用户同时读写的网盘系统构建方法。网盘系统包括网盘服务器装置、网盘客户端装置及网络装置;网盘系统中文件的文件数据块可分散存储在网盘服务器和多个用户终端中;网盘服务器中记录每个文件的最新元信息及每个数据块的物理位置,并通过事件订阅机制通知已订阅该文件数据块变更事件且在线的用户终端。用户终端访问某文件的指定文件数据块时,若该文件数据块不在网盘服务器中,只需将该文件数据块而不是该文件的全部数据块从其所在的用户终端传递到网盘服务器中然后再传递到待访问该文件的用户终端设备上。本发明有效地提高多用户同时读写网盘系统的效率,尤其是多个用户多个终端设备对网盘系统中同一文件的并发访问。
Description
技术领域
本发明属于计算机领域,主要关注提高多用户、多终端设备下访问网盘系统中文件的响应速度,降低对网盘系统中文件访问的延迟。
背景技术
目前各类网盘系统提高网盘客户端的文件访问速度主要采用针对整个文件或者文件数据块计算MD5或者SHA数字摘要值,若对应的整个文件或者文件数据块的数字摘要值与已存在的某个文件或者文件数据块的数字摘要值相同,则网盘客户端无须再与网盘服务器针对该文件或者文件数据块进行数据传输。但是对于其它网盘客户端而言,仍需要将整个文件全部更新到网盘服务器然后再将整个文件全部更新到其它网盘客户端后,该网盘客户端才能访问该文件,因此网盘系统中文件访问延迟很大。
发明内容
本发明目的是为了提高多用户、多终端下高效访问网盘系统中文件,尤其是多个用户、多个终端对网盘系统中同一文件的并发访问。本发明给出一种支持多用户同时读写的网盘系统以及网盘系统文件访问方法。
本发明公开了一种支持多用户同时读写的网盘系统,所述系统包括网盘服务器装置、网盘客户端装置及网络装置;网盘系统中文件的文件数据块可分散存储在网盘服务器和多个用户终端中;网盘服务器中记录每个文件的最新元信息及每个数据块的物理位置,并通过事件订阅机制通知已订阅该文件数据块变更事件且在线的用户终端。本发明公开了一种支持多用户同时读写的网盘系统的文件访问方法,所述方法包括读文件方法和写文件方法。用户终端访问某文件的指定文件数据块时,若该文件数据块不在网盘服务器中,只需将该文件数据块而不是该文件的全部数据块从其所在的用户终端传递到网盘服务器中然后再传递到待访问该文件的用户终端设备上。
本发明技术方案
1.一种支持多用户多终端同时读写的网盘系统,所述网盘系统包括网盘服务器装置、网盘客户端装置以及网络装置;网盘服务器装置,主要用于网盘系统存储和管理所有文件的元信息和文件数据块,存储、管理和认证所有用户元信息,存储、管理和认证所有用户终端设备元信息,并为网盘客户端装置提供文件、文件数据块检索、访问和变更服务;网盘客户端装置,主要用于网盘客户端存储所访问文件的全部或者部分元数据、全部或者部分文件数据块,与网盘服务器装置进行文件数据同步,并为网盘客户端中应用程序提供文件访问服务;网络装置负责为网盘服务器装置和网盘客户端装置之间的数据通信提供服务;
其中,
网盘服务器装置包括网络服务模块、事件服务模块、终端服务模块、用户服务模块、目录服务模块、文件服务模块、文件数据块服务模块、基础数据块服务模块、全局参数服务模块和存储区;存储区模块负责网盘服务器装置内数据的持久存储,基础数据块服务模块直接与存储区连接从而实现对网盘服务器装置内数据块的管理;事件服务模块、终端服务模块、用户服务模块、目录服务模块、文件服务模块、文件数据块服务模块和全局参数服务模块分别与基础数据块服务模块连接并通过基础数据块服务模块来获得各自元信息和数据块的存储;网络服务模块提供网络通信服务,事件服务模块直接与网络服务模块连接从而获得网络通信服务;终端服务模块、用户服务模块、目录服务模块、文件服务模块和文件数据块服务模块分别与事件服务模块连接并通过事件服务模块为网盘客户端装置提供服务,事件服务模块与基础数据块服务模块连接从而实现事件数据的存储;终端服务模块负责存储、管理和认证所有用户终端设备元信息,终端服务模块与事件服务模块连接从而对外提供终端服务,终端服务模块与基础数据块服务模块连接从而实现元信息的存储;用户服务模块负责存储、管理和认证所有用户元信息,用户服务模块与事件服务模块连接从而对外提供用户服务,用户服务模块与基础数据块服务模块连接从而实现元信息的存储;目录服务模块负责网盘系统中目录信息的管理,目录服务模块与文件服务模块连接而实现对指定目录内的文件服务,目录服务模块与事件服务模块连接从而对外提供目录服务,目录服务模块与基础数据块服务模块连接从而实现元信息的存储;文件服务模块负责网盘系统中文件信息的管理,文件服务模块与目录服务模块连接并向目录服务模块提供文件服务,文件服务模块与文件数据块服务模块连接而实现对指定文件的文件数据块服务,文件服务模块与事件服务模块连接从而对外提供文件服务,文件服务模块与基础数据块服务模块连接从而实现元信息的存储;文件数据块服务模块负责网盘系统中文件的数据块信息的管理,文件数据块服务模块与文件服务模块连接并向文件服务模块提供文件数据块服务,文件数据块服务模块与事件服务模块连接从而对外提供文件数据块服务,文件数据块服务模块与基础数据块服务模块连接从而实现元信息和文件数据块存储;全局参数服务模块负责网盘系统中网盘服务器装置内全局参数的管理,全局参数服务模块与基础数据块服务模块连接从而实现全局参数存储,网盘服务器装置内全局参数包括数据块大小、数据块总数、起始数据块ID、截止数据块ID、空闲数据块池、空闲元数据块池、空闲文件数据块池、用户元信息池、终端元信息池、文件元信息池、文件数据块元信息池和根目录文件 ID;
网盘客户端装置包括应用程序、文件系统接口层模块、网络服务模块、事件服务模块、目录服务模块、文件服务模块、文件数据块服务模块、基础数据块服务模块、全局参数服务模块和存储区;应用程序为网盘客户端装置上运行的第三方应用程序,应用程序与文件系统接口层模块连接从而获得文件系统访问服务;文件系统接口层模块分别与应用程序、目录服务模块和文件服务模块连接,文件系统接口层模块通过调用目录服务模块和文件服务模块为上层的应用程序提供网盘系统的文件访问服务;存储区模块负责网盘客户端装置内数据的持久存储,基础数据块服务模块直接与存储区连接从而实现对网盘客户端装置内数据块的管理;事件服务模块、目录服务模块、文件服务模块、文件数据块服务模块和全局参数服务模块分别与基础数据块服务模块连接并通过基础数据块服务模块来获得各自元信息和数据块的存储;网络服务模块提供网络通信服务,事件服务模块直接与网络服务模块连接从而获得网络通信服务;目录服务模块、文件服务模块和文件数据块服务模块分别与事件服务模块连接并通过事件服务模块来访问网盘服务器装置和其它网盘客户端装置,事件服务模块与基础数据块服务模块连接从而实现事件数据的存储;目录服务模块负责网盘系统中网盘客户端装置内目录信息的管理,目录服务模块与文件服务模块连接而实现对指定目录内的文件服务,目录服务模块与事件服务模块连接从而与网盘服务器装置和其它网盘客户端装置进行数据同步,目录服务模块与基础数据块服务模块连接从而实现元信息的存储;文件服务模块负责网盘系统中网盘客户端装置内文件信息的管理,文件服务模块与目录服务模块连接并向目录服务模块提供文件服务,文件服务模块与文件数据块服务模块连接而实现对指定文件的文件数据块服务,文件服务模块与事件服务模块连接从而与网盘服务器装置和其它网盘客户端装置进行数据同步,文件服务模块与基础数据块服务模块连接从而实现元信息的存储;文件数据块服务模块负责网盘系统中网盘客户端装置内文件的数据块信息的管理,文件数据块服务模块与文件服务模块连接并向文件服务模块提供文件数据块服务,文件数据块服务模块与事件服务模块连接从而与网盘服务器装置和其它网盘客户端装置进行数据同步,文件数据块服务模块与基础数据块服务模块连接从而实现元信息和文件数据块存储;全局参数服务模块负责网盘系统中网盘客户端装置内全局参数的管理,全局参数服务模块与基础数据块服务模块连接从而实现全局参数存储,网盘客户端装置内全局参数包括数据块大小、数据块总数、起始数据块ID、截止数据块ID、空闲数据块池、空闲元数据块池、空闲文件数据块池、文件元信息池、文件数据块元信息池、网盘服务器设备元信息、本地终端设备元信息、用户元信息和根目录文件ID,其中网盘服务器设备元信息和本地终端设备元信息的数据结构相同;
网盘服务器装置和网盘客户端装置中关于终端设备的核心数据结构为终端设备元信息,终端设备元信息包括设备ID、设备元信息头、网络地址和网络端口,其中设备ID为该终端设备的唯一标识符,设备元信息头包括信息版本标记、设备名称、设备物理类型、设备网络协议和状态;
网盘服务器装置和网盘客户端装置中关于用户的核心数据结构为用户元信息,用户元信息包括用户ID、用户元信息头和用户根目录文件ID,其中用户ID为该用户的唯一标识符,用户元信息头包括信息版本标记、用户名、用户认证信息、状态;
网盘服务器装置和网盘客户端装置中关于目录和文件的核心数据结构包括文件元信息、目录元信息、普通文件元信息和本地文件数据块元信息;文件元信息是目录和普通文件共同的元信息,文件元信息包括文件ID、副本ID、文件公共元信息和扩展元信息,其中文件ID和副本ID共同决定文件的唯一标识;文件公共元信息包括元信息版本标记、文件类型、权限信息、创建修改时间、主控设备ID和状态,其中文件类型用来区分该文件是否为目录文件,主控设备ID代表该文件当前最新全局版本的文件数据块所在的终端设备;目录元信息包括目录元信息头和目录文件项池,其中目录元信息头包括数据块总数、目录文件项总数、目录文件项摘要和状态,目录文件项池存储该目录下所有目录文件项,目录文件项包括文件ID和文件名;普通文件元信息包括普通文件元信息头和全局文件数据块元信息序列池,其中普通文件元信息头包括数据块总数、文件大小、文件体摘要和状态,全局文件数据块元信息序列池存储该文件所有文件数据块对应的全局文件数据块元信息的有序集合;全局文件数据块元信息包括全局文件数据块ID、本地文件数据块ID、全局版本标记、本地版本标记、状态和网络存储的设备ID的池,其中网络存储的设备ID的池存储该文件数据块的最新数据的终端设备ID;本地文件数据块元信息包括数据块摘要、数据块ID、引用数和状态,其中引用数表明该本地文件数据块属于不同文件的数目,只有当该引用数为零时方回收该本地文件数据块元为空闲文件数据块。
所述系统中,网盘系统中每个文件以数据块为单位存储,文件的所有数据块分散存储在网盘服务器装置和网盘客户端装置中;针对网盘系统中的每一个文件,网盘服务器装置中存储该文件相关的各种元信息,网盘服务器装置无需存储该文件的所有文件数据块的数据;网盘服务器装置中该文件的全局文件数据块元信息序列池包含了该文件的所有本地文件数据块ID号和网络存储的设备ID,其中,本地文件数据块ID号为该文件数据块在网盘服务器装置中的位置信息,网络存储的设备ID为该文件数据块在其它网盘客户端装置的位置信息;针对某个网盘客户端装置,该网盘客户端装置只需存储该网盘客户端装置的上层应用程序所要访问网盘系统中文件的相关各种元信息和该文件中所要访问的部分文件数据块,网盘客户端装置中该文件的全局文件数据块元信息序列池包含了该文件的所有全局文件数据块ID号、所有本地文件数据块ID号和网络存储的设备ID,其中,本地文件数据块ID号为该文件数据块网盘客户端装置中的位置信息,网络存储的设备ID为该文件数据块在其它网盘客户端装置或者网盘服务器装置的位置信息,全局文件数据块ID号为该文件数据块在网盘服务器装置的位置信息。
所述系统中,网盘系统中文件只能有一个全局文件版本,全局文件版本的副本ID为空;网盘系统中文件可以有零个或者多个文件副本,同一个文件的文件副本各自拥有不同的非空副本ID;全局文件版本和文件副本拥有相同的文件ID,每个网盘客户端装置只能看到网盘系统中该文件的全局文件版本和该终端设备上该文件的文件副本。
所述系统中,当网盘客户端装置修改某文件时,若该文件在该网盘客户端装置没有文件副本则该网盘客户端装置首先建立该文件的文件副本,然后针对该文件副本进行修改,对该文件副本修改后该网盘客户端装置可随时向网盘服务器装置申请成为该文件的全局文件版本;当网盘客户端装置将某文件的本地文件副本的文件元信息提交到网盘服务器装置并且被网盘服务器装置接受为该文件的全局文件版本时,该网盘客户端装置将删除该文件在本地的全局文件版本,并且该网盘客户端装置将该文件的本地文件副本转为在本地的全局文件版本;当网盘客户端装置将某文件的本地文件副本的文件元信息提交到网盘服务器装置并且不被网盘服务器装置接受为该文件的全局文件版本时,该网盘客户端装置可以将该文件的本地文件副本通过改变文件名字从而成为一个新文件的文件副本,该网盘客户端装置对该新文件的文件副本可随时向网盘服务器装置申请成为该新文件的全局文件版本。
所述系统中,网盘客户端装置和网盘服务器装置之间文件访问和同步服务采用事件订阅机制,事件接收和处理统一由各自的事件服务模块来完成;所有事件采用统一的事件信息结构体,事件信息结构体包括事件ID、事件来源类型、事件业务类型、事件源终端ID、事件源执行体ID、事件目的终端ID、事件时间标记、事件回执通知标记、事件内容体长度、事件内容体摘要、事件头摘要和事件内容体,其中事件ID为事件的唯一标识;事件来源类型包括网盘服务器发送给网盘客户端的事件类型、网盘客户端发送给网盘服务器的事件类型、网盘服务器发送给本地的事件类型和网盘客户端发送给本地的事件类型;事件业务类型包括文件的元信息及文件块的创建、修改、删除、下载和上传的业务,也包括目录元信息的创建、修改、删除、下载和上传的业务,也包括用户注册、注销、更新、认证和查询的业务,也包括终端设备的登记、更新和查询的业务,事件服务模块根据不同的事件业务类型来访问对应业务服务模块来执行事件相关业务。
所述系统中,网盘客户端装置和网盘服务器装置中事件服务模块的处理流程如下:
第1步、接收事件请求;
第2步、分析事件类型,如果事件为本地执行事件,则执行第5步,否则执行第3步;
第3步、事件不是远程执行事件,则执行第10步,否则执行第4步;
第4步、该事件通过网络发送到指定网络设备,并执行第6步;
第5步、在本地调用相关模块执行该事件;
第6步、是否通知事件源,如果无需通知事件源则执行第10步,否则执行第7步;
第7步、事件源是否为远程,如果事件源是远程则执行9步,否则执行第8步;
第8步、将该事件回执通知给本地事件源执行体,并执行第10步;
第9步、将该事件回执通知通过网络发送到指定网络设备,并执行第10步;
第10步、事件处理完毕返回。
所述系统中,用户从网盘客户端装置登录到网盘服务器装置时需要通过网盘服务器装置的认证,当用户及网盘客户端装置通过网盘服务器装置认证后,网盘服务器将用户及网盘客户端装置的登录信息记下来并跟踪用户退出事件,该登录信息可记录在“用户登录表”中,用户登录表中包括用户ID、终端ID、网络物理地址、登录时间、退出时间和状态;当网盘系统中网盘服务器装置内某个文件信息被修改,则网盘服务器装置向拥有该文件的所有在线网盘客户端装置发送“文件更新事件”,从而使得相关在线网盘客户端装置可以及时更新该文件元信息和文件数据块。
2.一种支持多用户多终端同时读写的网盘系统的读文件方法,网盘客户端装置中“应用程序”读取网盘系统中指定文件的指定文件数据到指定内存空间的方法包括具体步骤如下:
第1步、网盘客户端装置中“文件系统接口层”接收来自上层“应用程序”的读取网盘系统中指定文件的指定偏移量位置及长度的文件数据到指定内存空间的请求,并将该读请求转化为读取网盘系统中指定文件的指定第i块文件数据块内容到指定内存空间的读请求;
第2步、网盘客户端装置的“文件服务”模块读取该文件的“文件元信息”,进一步获取该指定第i块文件数据块的“全局文件数据块ID号”和“本地文件数据块ID号”;
第3步、根据第2步中文件数据块的“本地文件数据块ID号”,判断该文件数据块的内容是否在本地网盘客户端装置中存在,若存在则执行第4步,否则执行第5步;
第4步、根据第2步中文件数据块的“本地文件数据块ID号”读取该数据块的“本地文件数据块元信息”,进一步判断该“本地文件数据块”的状态是否有效,若该“本地文件数据块”的状态为有效,则执行第7步,否则执行第5步;
第5步、针对第2步中指定文件的该指定文件数据块的“全局文件数据块ID号”,向本地“事件服务模块”发送“下载文件数据块”事件,并在指定时间内等待该事件完成;
第6步、判断第5步中“下载文件数据块”事件是否完成,如完成则执行第7步,否则执行第9步;
第7步、重新读取该文件的“文件元信息”,并获得该文件数据块的“全局文件数据块ID号”和“本地文件数据块ID号”;
第8步、根据该文件数据块的“本地文件数据块ID号”读取对应的“本地文件数据块元信息”从而获得“本地数据块ID”,读取该本地数据块到指定内存,并设置读取指定文件的指定文件数据块内容到指定内存空间的访问请求成功信息,并进一步执行第10 步;
第9步、设置读取指定文件的指定文件数据块内容到指定内存空间的访问请求失败信息,进一步执行第10步;
第10步、读请求操作结束。
3.一种支持多用户多终端同时读写的网盘系统的写文件方法,网盘客户端装置中“应用程序”将新数据写到网盘系统中指定文件的指定偏移量位置的方法包括具体步骤如下:
第1步、网盘客户端装置中“文件系统接口层”接收来自上层“应用程序”将新数据写到网盘系统中指定文件的指定偏移量位置的请求,并将该写请求转化为将新数据写到网盘系统中指定文件的指定第i块文件数据块的请求;
第2步、网盘客户端装置的“文件服务”模块读取该文件的“文件元信息”,进一步获取该指定第i块文件数据块的“全局文件数据块ID号”和“本地文件数据块ID号”;
第3步、判断第2步中该指定文件数据块是否为新增数据块,如果该指定文件数据块是新增数据块,则执行第9步,否则执行第4步;
第4步、判断第2步中该指定文件数据块是否将被完全写覆盖,如果该指定文件数据块将被完全写覆盖,则执行第9步,否则执行第5步;
第5步、判断第2步中该指定文件数据块是否已在本地,如果该指定文件数据块尚未在本地存储中,则执行第7步,否则执行第6步;
第6步、判断第2步中该指定文件数据块的本地数据块是否有效,如果该指定文件数据块的本地数据块有效,则执行第8步,否则执行第7步;
第7步、向网盘服务器装置发送获取第2步中该指定文件数据块的事件、并等待第2步中该指定文件数据块的数据被下载到本地,如果第2步中该指定文件数据块的数据未能被下载到本地,则执行第12步,否则执行第8步;
第8步、获取本地一个空闲数据块作为新数据块,并将第2步中该指定文件数据块的原数据块内容复制到该新数据块,并进一步执行第10步;
第9步、获取本地一个空闲数据块作为新数据块,并进一步执行第10步;
第10步、将第1步中新数据写入新数据块中,并更新新数据块的元信息,设置写数据块成功;
第11步、向网盘服务器装置发送“文件数据块修改”事件,并进一步执行第13步;
第12步、设置写数据块失败,并进一步执行第13步;
第13步、写请求操作结束。
本发明的优点和积极效果:
本发明给出了一种支持多用户同时读写的网盘系统以及构建方法。现有的网盘系统中,用户在网盘客户端系统中欲打开某个网盘系统中的文件时,必须首先将该文件的所有数据从网盘服务器端系统中全部下载下来才能打开,这种方式使用户等待时间长;另外当用户在网盘客户端对某个网盘系统中的文件进行修改时,只能有一个网盘客户端对同一个文件进行修改。上述问题导致在多个用户、多终端情况下对同一个文件进行修改的用户体验非常不好。而本发明通过无需将文件的所有文件数据块一次性上传到网盘服务器的情况下可以对外提供文件的最新全局文件版本的访问服务,因此可以有效地提高网盘系统中文件访问的效率;以及本发明通过多文件副本机制,有效地支持多个用户、多终端情况下对同一个文件的并行修改以及全局文件版本的转化。
附图说明
图1是网盘系统的逻辑功能架构示意图。
图2是网盘系统中终端设备元信息数据结构示意图。
图3是网盘系统中用户元信息数据结构示意图。
图4是网盘系统中用户登录数据结构示意图。
图5是网盘系统中文件及目录核心元信息数据结构示意图。
图6是网盘系统中事件服务模块事件处理过程示意图。
图7是网盘客户端装置上文件数据块读访问流程图。
图8是网盘客户端装置上文件数据块写访问流程图。
具体实施方式
本发明提供了一种支持多用户同时读写的网盘系统以及构建方法。为能进一步了解本发明的技术内容、特点及功效,兹列举以下应用实例,并配合附图详细说明如下:
实施例1、一种支持多用户同时读写的网盘系统
本发明提供了一种支持多用户同时读写的网盘系统,具体包括如下:
网盘服务器装置200、网盘客户端装置100以及网络装置300;网盘服务器装置200,主要用于网盘系统存储和管理所有文件的元信息和文件数据块,存储、管理和认证所有用户元信息,存储、管理和认证所有用户终端设备元信息,并为网盘客户端装置提供文件、文件数据块检索、访问和变更服务;网盘客户端装置100,主要用于网盘客户端存储所访问文件的全部或者部分元数据、全部或者部分文件数据块,与网盘服务器装置进行文件数据同步,并为网盘客户端中应用程序提供文件访问服务;网络装置300负责为网盘服务器装置200和网盘客户端装置100之间的数据通信提供服务;
其中,
网盘服务器装置200包括网络服务模块210、事件服务模块211、终端服务模块230、用户服务模块240、目录服务模块250、文件服务模块260、文件数据块服务模块270、基础数据块服务模块280、全局参数服务模块212和存储区290;存储区模块290负责网盘服务器装置200内数据的持久存储,基础数据块服务模块280直接与存储区290连接从而实现对网盘服务器装置200内数据块的管理;事件服务模块211、终端服务模块230、用户服务模块240、目录服务模块250、文件服务模块260、文件数据块服务模块270和全局参数服务模块212分别与基础数据块服务模块280连接并通过基础数据块服务模块280来获得各自元信息和数据块的存储;网络服务模块210提供网络通信服务,事件服务模块211 直接与网络服务模块210连接从而获得网络通信服务;终端服务模块230、用户服务模块 240、目录服务模块250、文件服务模块260和文件数据块服务模块270分别与事件服务模块211连接并通过事件服务模块211为网盘客户端装置100提供服务,事件服务模块211 与基础数据块服务模块280连接从而实现事件数据的存储;终端服务模块230负责存储、管理和认证所有用户终端设备元信息,终端服务模块230与事件服务模块211连接从而对外提供终端服务,终端服务模块230与基础数据块服务模块280连接从而实现元信息的存储;用户服务模块240负责存储、管理和认证所有用户元信息,用户服务模块240与事件服务模块211连接从而对外提供用户服务,用户服务模块240与基础数据块服务模块280 连接从而实现元信息的存储;目录服务模块250负责网盘系统中目录信息的管理,目录服务模块250与文件服务模块260连接而实现对指定目录内的文件服务,目录服务模块250 与事件服务模块211连接从而对外提供目录服务,目录服务模块250与基础数据块服务模块280连接从而实现元信息的存储;文件服务模块260负责网盘系统中文件信息的管理,文件服务模块260与目录服务模块250连接并向目录服务模块250提供文件服务,文件服务模块260与文件数据块服务模块270连接而实现对指定文件的文件数据块服务,文件服务模块260与事件服务模块211连接从而对外提供文件服务,文件服务模块260与基础数据块服务模块280连接从而实现元信息的存储;文件数据块服务模块270负责网盘系统中文件的数据块信息的管理,文件数据块服务模块270与文件服务模块260连接并向文件服务模块260提供文件数据块服务,文件数据块服务模块270与事件服务模块211连接从而对外提供文件数据块服务,文件数据块服务模块270与基础数据块服务模块280连接从而实现元信息和文件数据块存储;全局参数服务模块212负责网盘系统中网盘服务器装置 200内全局参数的管理,全局参数服务模块212与基础数据块服务模块280连接从而实现全局参数存储,网盘服务器装置内全局参数包括数据块大小、数据块总数、起始数据块ID、截止数据块ID、空闲数据块池、空闲元数据块池、空闲文件数据块池、用户元信息池、终端元信息池、文件元信息池、文件数据块元信息池和根目录文件ID;
网盘客户端装置100包括应用程序130、文件系统接口层模块140、网络服务模块110、事件服务模块111、目录服务模块150、文件服务模块160、文件数据块服务模块170、基础数据块服务模块180、全局参数服务模块112和存储区190;应用程序130为网盘客户端装置100上运行的第三方应用程序,应用程序130与文件系统接口层模块140连接从而获得文件系统访问服务;文件系统接口层模块140分别与应用程序130、目录服务模块150 和文件服务模块连接160,文件系统接口层模块140通过调用目录服务模块150和文件服务模块160为上层的应用程序130提供网盘系统的文件访问服务;存储区模块190负责网盘客户端装置100内数据的持久存储,基础数据块服务模块180直接与存储区190连接从而实现对网盘客户端装置100内数据块的管理;事件服务模块111、目录服务模块150、文件服务模块160、文件数据块服务模块170和全局参数服务模块112分别与基础数据块服务模块180连接并通过基础数据块服务模块180来获得各自元信息和数据块的存储;网络服务模块110提供网络通信服务,事件服务模块111直接与网络服务模块110连接从而获得网络通信服务;目录服务模块150、文件服务模块160和文件数据块服务模块170分别与事件服务模块111连接并通过事件服务模块111来访问网盘服务器装置200和其它网盘客户端装置100,事件服务模块111与基础数据块服务模块180连接从而实现事件数据的存储;目录服务模块150负责网盘系统中网盘客户端装置内目录信息的管理,目录服务模块150与文件服务模块160连接而实现对指定目录内的文件服务,目录服务模块150与事件服务模块111连接从而与网盘服务器装置200和其它网盘客户端装置100进行数据同步,目录服务模块150与基础数据块服务模块180连接从而实现元信息的存储;文件服务模块160负责网盘系统中网盘客户端装置内文件信息的管理,文件服务模块160与目录服务模块150连接并向目录服务模块150提供文件服务,文件服务模块160与文件数据块服务模块170连接而实现对指定文件的文件数据块服务,文件服务模块160与事件服务模块 111连接从而与网盘服务器装置200和其它网盘客户端装置100进行数据同步,文件服务模块160与基础数据块服务模块180连接从而实现元信息的存储;文件数据块服务模块170 负责网盘系统中网盘客户端装置内文件的数据块信息的管理,文件数据块服务模块170与文件服务模块160连接并向文件服务模块提供文件数据块服务,文件数据块服务模块170 与事件服务模块111连接从而与网盘服务器装置200和其它网盘客户端装置100进行数据同步,文件数据块服务模块170与基础数据块服务模块180连接从而实现元信息和文件数据块存储;全局参数服务模块112负责网盘系统中网盘客户端装置内全局参数的管理,全局参数服务模块112与基础数据块服务模块180连接从而实现全局参数存储,网盘客户端装置内全局参数包括数据块大小、数据块总数、起始数据块ID、截止数据块ID、空闲数据块池、空闲元数据块池、空闲文件数据块池、文件元信息池、文件数据块元信息池、网盘服务器设备元信息、本地终端设备元信息、用户元信息和根目录文件ID,其中网盘服务器设备元信息和本地终端设备元信息的数据结构相同;
网盘服务器装置200和网盘客户端装置100中关于终端设备的核心数据结构为终端设备元信息,终端设备元信息包括设备ID、设备元信息头、网络地址和网络端口,其中设备ID为该终端设备的唯一标识符,设备元信息头包括信息版本标记、设备名称、设备物理类型、设备网络协议和状态;
例如,终端设备元信息实例1:{设备ID:1001,设备元信息头{信息版本标记:1.0,设备名称:iphoneuser1,设备物理类型:iphone6,设备网络协议:tcp/ipV4,状态:在线},网络地址:202.116.16.10和网络端口:2001}。
网盘服务器装置200和网盘客户端装置100中关于用户的核心数据结构为用户元信息,用户元信息包括用户ID、用户元信息头和用户根目录文件ID,其中用户ID为该用户的唯一标识符,用户元信息头包括信息版本标记、用户名、用户认证信息、状态;
例如,用户元信息实例2:{用户ID:3001,用户元信息头{信息版本标记:1.1,用户名:Tom,用户认证信息:tompwd,状态:有效},用户根目录文件ID:40010}。
网盘服务器装置和网盘客户端装置中关于目录和文件的核心数据结构包括文件元信息、目录元信息、普通文件元信息和本地文件数据块元信息;文件元信息是目录和普通文件共同的元信息,文件元信息包括文件ID、副本ID、文件公共元信息和扩展元信息,其中文件ID和副本ID共同决定文件的唯一标识;文件公共元信息包括元信息版本标记、文件类型、权限信息、创建修改时间、主控设备ID和状态,其中文件类型用来区分该文件是否为目录文件,主控设备ID代表该文件当前最新全局版本的文件数据块所在的终端设备;目录元信息包括目录元信息头和目录文件项池,其中目录元信息头包括数据块总数、目录文件项总数、目录文件项摘要和状态,目录文件项池存储该目录下所有目录文件项,目录文件项包括文件ID和文件名;普通文件元信息包括普通文件元信息头和全局文件数据块元信息序列池,其中普通文件元信息头包括数据块总数、文件大小、文件体摘要和状态,全局文件数据块元信息序列池存储该文件所有文件数据块对应的全局文件数据块元信息的有序集合;全局文件数据块元信息包括全局文件数据块ID、本地文件数据块ID、全局版本标记、本地版本标记、状态和网络存储的设备ID的池,其中网络存储的设备ID的池存储该文件数据块的最新数据的终端设备ID;本地文件数据块元信息包括数据块摘要、数据块ID、引用数和状态,其中引用数表明该本地文件数据块属于不同文件的数目,只有当该引用数为零时方回收该本地文件数据块元为空闲文件数据块。
目录也是一种文件,目录文件中的数据内容就是文件ID和文件名字的集合,因此目录和普通文件都共用同一个“文件元信息”,通过“文件元信息”中“文件公共元信息”的“文件类型”来区分是目录文件、还是普通文件、或者其它类型文件。
目录元信息中的目录文件项池为目录文件项在本地存储中的起始数据块编号,目录元信息中的目录元信息头中标明了数据块总数、也标明了实际的目录文件项总数。
全局文件数据块元信息中的全局文件数据块ID是在网盘服务器装置和网盘客户端装置都唯一标识某个文件数据块;全局文件数据块元信息中的本地文件数据块ID则只在网盘客户端装置内部唯一标识某个文件数据块;当某个网盘客户端装置修改某文件并提交转变为该文件的全局版本时,该文件相关修改过的最新文件数据块同时拥有全局文件数据块 ID编号。
本地文件数据块元信息中的数据块ID为在本地存储区中数据块的编号,根据该数据块ID可以访问到该文件数据块的实际数据内容。
一个本地文件数据块可以被多个文件所共用,只有该本地文件数据块的引用数为零时方可将该本地文件数据块回收为空闲文件数据块,这样可以大大减少本地存储空间的利用效率。
所述系统中,网盘系统中每个文件以数据块为单位存储,文件的所有数据块分散存储在网盘服务器装置和网盘客户端装置中;针对网盘系统中的每一个文件,网盘服务器装置中存储该文件相关的各种元信息,网盘服务器装置无需存储该文件的所有文件数据块的数据;网盘服务器装置中该文件的全局文件数据块元信息序列池包含了该文件的所有本地文件数据块ID号和网络存储的设备ID,其中,本地文件数据块ID号为该文件数据块在网盘服务器装置中的位置信息,网络存储的设备ID为该文件数据块在其它网盘客户端装置的位置信息;针对某个网盘客户端装置,该网盘客户端装置只需存储该网盘客户端装置的上层应用程序所要访问网盘系统中文件的相关各种元信息和该文件中所要访问的部分文件数据块,网盘客户端装置中该文件的全局文件数据块元信息序列池包含了该文件的所有全局文件数据块ID号、所有本地文件数据块ID号和网络存储的设备ID,其中,本地文件数据块ID号为该文件数据块网盘客户端装置中的位置信息,网络存储的设备ID为该文件数据块在其它网盘客户端装置或者网盘服务器装置的位置信息,全局文件数据块ID号为该文件数据块在网盘服务器装置的位置信息。
一个文件的全部文件数据块无需全部存放到网盘服务器装置,但一个文件的全局版本文件的元信息必须上传到网盘服务器装置,这样当另外一个网盘客户端装置打算访问某个文件时,即使该文件的全部文件数据块尚未更新到网盘服务器装置时也可以直接访问。
所述系统中,网盘系统中文件只能有一个全局文件版本,全局文件版本的副本ID为空;网盘系统中文件可以有零个或者多个文件副本,同一个文件的文件副本各自拥有不同的非空副本ID;全局文件版本和文件副本拥有相同的文件ID,每个网盘客户端装置只能看到网盘系统中该文件的全局文件版本和该终端设备上该文件的文件副本。
本方法引入文件副本使得多个用户同时写同一个文件成为可能。
所述系统中,当网盘客户端装置修改某文件时,若该文件在该网盘客户端装置没有文件副本则该网盘客户端装置首先建立该文件的文件副本,然后针对该文件副本进行修改,对该文件副本修改后该网盘客户端装置可随时向网盘服务器装置申请成为该文件的全局文件版本;当网盘客户端装置将某文件的本地文件副本的文件元信息提交到网盘服务器装置并且被网盘服务器装置接受为该文件的全局文件版本时,该网盘客户端装置将删除该文件在本地的全局文件版本,并且该网盘客户端装置将该文件的本地文件副本转为在本地的全局文件版本;当网盘客户端装置将某文件的本地文件副本的文件元信息提交到网盘服务器装置并且不被网盘服务器装置接受为该文件的全局文件版本时,该网盘客户端装置可以将该文件的本地文件副本通过改变文件名字从而成为一个新文件的文件副本,该网盘客户端装置对该新文件的文件副本可随时向网盘服务器装置申请成为该新文件的全局文件版本。
每个网盘客户端装置只能看到网盘系统中该文件的全局文件版本和该终端设备上该文件的文件副本。只有当某个网盘客户端装置将其上的某文件的文件副本申请成为全局文件版本,其它网盘客户端装置才能看到该文件的最新版本。
所述系统中,网盘客户端装置和网盘服务器装置之间文件访问和同步服务采用事件订阅机制,事件接收和处理统一由各自的事件服务模块来完成;所有事件采用统一的事件信息结构体,事件信息结构体包括事件ID、事件来源类型、事件业务类型、事件源终端ID、事件源执行体ID、事件目的终端ID、事件时间标记、事件回执通知标记、事件内容体长度、事件内容体摘要、事件头摘要和事件内容体,其中事件ID为事件的唯一标识;事件来源类型包括网盘服务器发送给网盘客户端的事件类型、网盘客户端发送给网盘服务器的事件类型、网盘服务器发送给本地的事件类型和网盘客户端发送给本地的事件类型;事件业务类型包括文件的元信息及文件块的创建、修改、删除、下载和上传的业务,也包括目录元信息的创建、修改、删除、下载和上传的业务,也包括用户注册、注销、更新、认证和查询的业务,也包括终端设备的登记、更新和查询的业务,事件服务模块根据不同的事件业务类型来访问对应业务服务模块来执行事件相关业务。
本方法中文件的元信息及文件块的创建、修改、删除、下载和上传等具体业务事实上是由本地的事件服务模块通过网络服务模块来具体实现的,而其它业务模块是通过向事件服务模块发送不同类型的事件来获得上述具体业务的执行结果。
所述系统中,网盘客户端装置和网盘服务器装置中事件服务模块的处理流程如下,如图6所示:
第1步、接收事件请求;
第2步、分析事件类型,如果事件为本地执行事件,则执行第5步,否则执行第3步;
第3步、事件不是远程执行事件,则执行第10步,否则执行第4步;
第4步、该事件通过网络发送到指定网络设备,并执行第6步;
第5步、在本地调用相关模块执行该事件;
第6步、是否通知事件源,如果无需通知事件源则执行第10步,否则执行第7步;
第7步、事件源是否为远程,如果事件源是远程则执行9步,否则执行第8步;
第8步、将该事件回执通知给本地事件源执行体,并执行第10步;
第9步、将该事件回执通知通过网络发送到指定网络设备,并执行第10步;
第10步、事件处理完毕返回。
本方法中第5步在本地调用相关模块执行该事件:即当该事件为本地执行事件,事件服务模块将在本地调用相关模块执行该事件。其中相关模块包括文件的元信息及文件块的创建、修改、删除、下载和上传的具体业务模块,不同事件类型对应不同的具体业务模块,这些具体业务模块既可以采用动态注册到事件服务模块中、也可以静态绑定在事件服务模块中。
所述系统中,用户从网盘客户端装置登录到网盘服务器装置时需要通过网盘服务器装置的认证,当用户及网盘客户端装置通过网盘服务器装置认证后,网盘服务器将用户及网盘客户端装置的登录信息记下来并跟踪用户退出事件,该登录信息可记录在“用户登录表”中,用户登录表中包括用户ID、终端ID、网络物理地址、登录时间、退出时间和状态;当网盘系统中网盘服务器装置内某个文件信息被修改,则网盘服务器装置向拥有该文件的所有在线网盘客户端装置发送“文件更新事件”,从而使得相关在线网盘客户端装置可以及时更新该文件元信息和文件数据块。
当网盘系统中网盘服务器装置内某个文件信息被修改,根据在线网盘客户端装置上用户的根目录来判断该文件是否属于该用户所能访问的文件,如果此文件是该用户所能访问的文件,则向该网盘客户端装置发送“文件更新事件”。
实施例2、一种支持多用户多终端同时读写的网盘系统的读文件方法
本发明提供了一种支持多用户多终端同时读写的网盘系统的读文件方法,网盘客户端装置中“应用程序”读取网盘系统中指定文件的指定文件数据到指定内存空间的方法包括具体步骤如下:
第1步、网盘客户端装置中“文件系统接口层”接收来自上层“应用程序”的读取网盘系统中指定文件的指定偏移量位置及长度的文件数据到指定内存空间的请求,并将该读请求转化为读取网盘系统中指定文件的指定第i块文件数据块内容到指定内存空间的读请求;
例如:
“文件系统接口层”提供的读函数:ssize_t read(struct file*file,char*buf,size_t count, loff_t*pos)
“文件系统接口层”接收来自上层“应用程序”的读取网盘系统中指定文件的请求后,根据全局参数服务中数据块的大小可以计算出读取网盘系统中指定文件的指定第i块文件数据块,即可以计算出i的值。
第2步、网盘客户端装置的“文件服务”模块读取该文件的“文件元信息”,进一步获取该指定第i块文件数据块的“全局文件数据块ID号”和“本地文件数据块ID号”;
例:该文件的“文件元信息”一定可读,因为在打开该文件即open()操作时就已经装载了该文件的“文件元信息”。
第3步、根据第2步中文件数据块的“本地文件数据块ID号”,判断该文件数据块的内容是否在本地网盘客户端装置中存在,若存在则执行第4步,否则执行第5步;
例:文件数据块的“本地文件数据块ID号”才是标明该文件数据块是否在本地存储区的依据。
第4步、根据第2步中文件数据块的“本地文件数据块ID号”读取该数据块的“本地文件数据块元信息”,进一步判断该“本地文件数据块”的状态是否有效,若该“本地文件数据块”的状态为有效,则执行第7步,否则执行第5步;
例:如果该“本地文件数据块”的状态为无效,那么意味着该文件数据块尚不在本地存储区。本发明支持对一个文件下载到本地存储时只需部分文件数据块的下载。
第5步、针对第2步中指定文件的该指定文件数据块的“全局文件数据块ID号”,向本地“事件服务模块”发送“下载文件数据块”事件,并在指定时间内等待该事件完成;
例:事件服务模块承担了下载某个文件数据块的具体任务。
第6步、判断第5步中“下载文件数据块”事件是否完成,如完成则执行第7步,否则执行第9步;
例:如果网络下载超时或者其它原因,则意味着下载文件数据块失败,则文件读操作失败。
第7步、重新读取该文件的“文件元信息”,并获得该文件数据块的“全局文件数据块ID号”和“本地文件数据块ID号”;
例:根据“本地文件数据块ID号”,可以由全局文件数据块元信息可以找到本地文件数据块元信息。
第8步、根据该文件数据块的“本地文件数据块ID号”读取对应的“本地文件数据块元信息”从而获得“本地数据块ID”,读取该本地数据块到指定内存,并设置读取指定文件的指定文件数据块内容到指定内存空间的访问请求成功信息,并进一步执行第10 步;
例:根据本地文件数据块元信息可以找到本地数据块的ID编号,因此可以访问到该文件数据块的具体内容。
第9步、设置读取指定文件的指定文件数据块内容到指定内存空间的访问请求失败信息,进一步执行第10步;
第10步、读请求操作结束。
实施例3、一种支持多用户多终端同时读写的网盘系统的写文件方法
一种支持多用户多终端同时读写的网盘系统的写文件方法,网盘客户端装置中“应用程序”将新数据写到网盘系统中指定文件的指定偏移量位置的方法包括具体步骤如下:
第1步、网盘客户端装置中“文件系统接口层”接收来自上层“应用程序”将新数据写到网盘系统中指定文件的指定偏移量位置的请求,并将该写请求转化为将新数据写到网盘系统中指定文件的指定第i块文件数据块的请求;
例如:
“文件系统接口层”提供写函数:ssize_t write(struct file*file,const char*buf,size_t count,loff_t*pos)
“文件系统接口层”根据全局参数服务中数据块的大小可以计算出写网盘系统中指定文件的指定第i块文件数据块,即可以计算出i的值。
第2步、网盘客户端装置的“文件服务”模块读取该文件的“文件元信息”,进一步获取该指定第i块文件数据块的“全局文件数据块ID号”和“本地文件数据块ID号”;
第3步、判断第2步中该指定文件数据块是否为新增数据块,如果该指定文件数据块是新增数据块,则执行第9步,否则执行第4步;
例:如果是在已有文件的尾部添加新的数据,即新增数据块,则无需先获取该文件的其它文件数据块,可直接在本地新申请一个数据块并写入新数据即可。
第4步、判断第2步中该指定文件数据块是否将被完全写覆盖,如果该指定文件数据块将被完全写覆盖,则执行第9步,否则执行第5步;
例:如果该指定文件数据块将被完全写覆盖,则无需先获取该文件数据块已有内容,只需直接在本地新申请一个数据块并写入新数据即可。
第5步、判断第2步中该指定文件数据块是否已在本地,如果该指定文件数据块尚未在本地存储中,则执行第7步,否则执行第6步;
例:如果该指定文件数据块不能被完全写覆盖,则必须先先获取该文件数据块已有内容,如果该文件数据块不在本地存储中,需要先从网络中下载该文件数据块到本地存储。
第6步、判断第2步中该指定文件数据块的本地数据块是否有效,如果该指定文件数据块的本地数据块有效,则执行第8步,否则执行第7步;
例:该指定文件数据块即使在本地存储,还要判断该本地数据块状态是否有效,因此很有可能其它网盘客户端装置修改了该文件并申请提交了文件的全局版本,那么网盘服务器装置将会通知当前网盘客户端装置该文件的本地数据块为无效的事件,而当前网盘客户端装置中的事件服务模块会异步地修改该本地数据块的状态为无效。
第7步、向网盘服务器装置发送获取第2步中该指定文件数据块的事件、并等待第2步中该指定文件数据块的数据被下载到本地,如果第2步中该指定文件数据块的数据未能被下载到本地,则执行第12步,否则执行第8步;
第8步、获取本地一个空闲数据块作为新数据块,并将第2步中该指定文件数据块的原数据块内容复制到该新数据块,并进一步执行第10步;
第9步、获取本地一个空闲数据块作为新数据块,并进一步执行第10步;
例:本方法采用修改时的文件副本机制,因此修改过程中不会直接覆盖已有文件数据块,必须申请一个新的数据块,然后对该新数据块进行覆盖和修改操作。
第10步、将第1步中新数据写入新数据块中,并更新新数据块的元信息,设置写数据块成功;
例:文件数据的修改后,还要更新文件相关的元信息。
第11步、向网盘服务器装置发送“文件数据块修改”事件,并进一步执行第13步;
第12步、设置写数据块失败,并进一步执行第13步;
第13步、写请求操作结束。
考虑到在此公开的对本发明的描述和特例的实施例,本发明的其他实施例对于本领域的技术人员来说是显而意见的。这些说明和实施例仅作为例子来考虑,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种支持多用户多终端同时读写的网盘系统,其特征在于,该网盘系统包括网盘服务器装置、网盘客户端装置以及网络装置;网盘服务器装置,用于网盘系统存储和管理所有文件的元信息和文件数据块,存储、管理和认证所有用户元信息,存储、管理和认证所有用户终端设备元信息,并为网盘客户端装置提供文件、文件数据块检索、访问和变更服务;网盘客户端装置,用于网盘客户端存储所访问文件的全部或者部分元数据、全部或者部分文件数据块,与网盘服务器装置进行文件数据同步,并为网盘客户端中应用程序提供文件访问服务;网络装置负责为网盘服务器装置和网盘客户端装置之间的数据通信提供服务;
其中,
网盘服务器装置包括网络服务模块、事件服务模块、终端服务模块、用户服务模块、目录服务模块、文件服务模块、文件数据块服务模块、基础数据块服务模块、全局参数服务模块和存储区;存储区模块负责网盘服务器装置内数据的持久存储,基础数据块服务模块直接与存储区连接从而实现对网盘服务器装置内数据块的管理;事件服务模块、终端服务模块、用户服务模块、目录服务模块、文件服务模块、文件数据块服务模块和全局参数服务模块分别与基础数据块服务模块连接并通过基础数据块服务模块来获得各自元信息和数据块的存储;网络服务模块提供网络通信服务,事件服务模块直接与网络服务模块连接从而获得网络通信服务;终端服务模块、用户服务模块、目录服务模块、文件服务模块和文件数据块服务模块分别与事件服务模块连接并通过事件服务模块为网盘客户端装置提供服务,事件服务模块与基础数据块服务模块连接从而实现事件数据的存储;终端服务模块负责存储、管理和认证所有用户终端设备元信息,终端服务模块与事件服务模块连接从而对外提供终端服务,终端服务模块与基础数据块服务模块连接从而实现元信息的存储;用户服务模块负责存储、管理和认证所有用户元信息,用户服务模块与事件服务模块连接从而对外提供用户服务,用户服务模块与基础数据块服务模块连接从而实现元信息的存储;目录服务模块负责网盘系统中目录信息的管理,目录服务模块与文件服务模块连接而实现对指定目录内的文件服务,目录服务模块与事件服务模块连接从而对外提供目录服务,目录服务模块与基础数据块服务模块连接从而实现元信息的存储;文件服务模块负责网盘系统中文件信息的管理,文件服务模块与目录服务模块连接并向目录服务模块提供文件服务,文件服务模块与文件数据块服务模块连接而实现对指定文件的文件数据块服务,文件服务模块与事件服务模块连接从而对外提供文件服务,文件服务模块与基础数据块服务模块连接从而实现元信息的存储;文件数据块服务模块负责网盘系统中文件的数据块信息的管理,文件数据块服务模块与文件服务模块连接并向文件服务模块提供文件数据块服务,文件数据块服务模块与事件服务模块连接从而对外提供文件数据块服务,文件数据块服务模块与基础数据块服务模块连接从而实现元信息和文件数据块存储;全局参数服务模块负责网盘系统中网盘服务器装置内全局参数的管理,全局参数服务模块与基础数据块服务模块连接从而实现全局参数存储,网盘服务器装置内全局参数包括数据块大小、数据块总数、起始数据块ID、截止数据块ID、空闲数据块池、空闲元数据块池、空闲文件数据块池、用户元信息池、终端元信息池、文件元信息池、文件数据块元信息池和根目录文件ID;
网盘客户端装置包括应用程序、文件系统接口层模块、网络服务模块、事件服务模块、目录服务模块、文件服务模块、文件数据块服务模块、基础数据块服务模块、全局参数服务模块和存储区;应用程序为网盘客户端装置上运行的第三方应用程序,应用程序与文件系统接口层模块连接从而获得文件系统访问服务;文件系统接口层模块分别与应用程序、目录服务模块和文件服务模块连接,文件系统接口层模块通过调用目录服务模块和文件服务模块为上层的应用程序提供网盘系统的文件访问服务;存储区模块负责网盘客户端装置内数据的持久存储,基础数据块服务模块直接与存储区连接从而实现对网盘客户端装置内数据块的管理;事件服务模块、目录服务模块、文件服务模块、文件数据块服务模块和全局参数服务模块分别与基础数据块服务模块连接并通过基础数据块服务模块来获得各自元信息和数据块的存储;网络服务模块提供网络通信服务,事件服务模块直接与网络服务模块连接从而获得网络通信服务;目录服务模块、文件服务模块和文件数据块服务模块分别与事件服务模块连接并通过事件服务模块来访问网盘服务器装置和其它网盘客户端装置,事件服务模块与基础数据块服务模块连接从而实现事件数据的存储;目录服务模块负责网盘系统中网盘客户端装置内目录信息的管理,目录服务模块与文件服务模块连接而实现对指定目录内的文件服务,目录服务模块与事件服务模块连接从而与网盘服务器装置和其它网盘客户端装置进行数据同步,目录服务模块与基础数据块服务模块连接从而实现元信息的存储;文件服务模块负责网盘系统中网盘客户端装置内文件信息的管理,文件服务模块与目录服务模块连接并向目录服务模块提供文件服务,文件服务模块与文件数据块服务模块连接而实现对指定文件的文件数据块服务,文件服务模块与事件服务模块连接从而与网盘服务器装置和其它网盘客户端装置进行数据同步,文件服务模块与基础数据块服务模块连接从而实现元信息的存储;文件数据块服务模块负责网盘系统中网盘客户端装置内文件的数据块信息的管理,文件数据块服务模块与文件服务模块连接并向文件服务模块提供文件数据块服务,文件数据块服务模块与事件服务模块连接从而与网盘服务器装置和其它网盘客户端装置进行数据同步,文件数据块服务模块与基础数据块服务模块连接从而实现元信息和文件数据块存储;全局参数服务模块负责网盘系统中网盘客户端装置内全局参数的管理,全局参数服务模块与基础数据块服务模块连接从而实现全局参数存储,网盘客户端装置内全局参数包括数据块大小、数据块总数、起始数据块ID、截止数据块ID、空闲数据块池、空闲元数据块池、空闲文件数据块池、文件元信息池、文件数据块元信息池、网盘服务器设备元信息、本地终端设备元信息、用户元信息和根目录文件ID,其中网盘服务器设备元信息和本地终端设备元信息的数据结构相同;
网盘服务器装置和网盘客户端装置中关于终端设备的核心数据结构为终端设备元信息,终端设备元信息包括设备ID、设备元信息头、网络地址和网络端口,其中设备ID为该终端设备的唯一标识符,设备元信息头包括信息版本标记、设备名称、设备物理类型、设备网络协议和状态;
网盘服务器装置和网盘客户端装置中关于用户的核心数据结构为用户元信息,用户元信息包括用户ID、用户元信息头和用户根目录文件ID,其中用户ID为该用户的唯一标识符,用户元信息头包括信息版本标记、用户名、用户认证信息、状态;
网盘服务器装置和网盘客户端装置中关于目录和文件的核心数据结构包括文件元信息、目录元信息、普通文件元信息和本地文件数据块元信息;文件元信息是目录和普通文件共同的元信息,文件元信息包括文件ID、副本ID、文件公共元信息和扩展元信息,其中文件ID和副本ID共同决定文件的唯一标识;文件公共元信息包括元信息版本标记、文件类型、权限信息、创建修改时间、主控设备ID和状态,其中文件类型用来区分该文件是否为目录文件,主控设备ID代表该文件当前最新全局版本的文件数据块所在的终端设备;目录元信息包括目录元信息头和目录文件项池,其中目录元信息头包括数据块总数、目录文件项总数、目录文件项摘要和状态,目录文件项池存储该目录下所有目录文件项,目录文件项包括文件ID和文件名;普通文件元信息包括普通文件元信息头和全局文件数据块元信息序列池,其中普通文件元信息头包括数据块总数、文件大小、文件体摘要和状态,全局文件数据块元信息序列池存储该文件所有文件数据块对应的全局文件数据块元信息的有序集合;全局文件数据块元信息包括全局文件数据块ID、本地文件数据块ID、全局版本标记、本地版本标记、状态和网络存储的设备ID的池,其中网络存储的设备ID的池存储该文件数据块的最新数据的终端设备ID;本地文件数据块元信息包括数据块摘要、数据块ID、引用数和状态,其中引用数表明该本地文件数据块属于不同文件的数目,只有当该引用数为零时方回收该本地文件数据块元为空闲文件数据块;
所述的网盘系统中每个文件以数据块为单位存储,文件的所有数据块分散存储在网盘服务器装置和网盘客户端装置中;针对网盘系统中的每一个文件,网盘服务器装置中存储该文件相关的各种元信息,网盘服务器装置无需存储该文件的所有文件数据块的数据;网盘服务器装置中该文件的全局文件数据块元信息序列池包含了该文件的所有本地文件数据块ID号和网络存储的设备ID,其中,本地文件数据块ID号为该文件数据块在网盘服务器装置中的位置信息,网络存储的设备ID为该文件数据块在其它网盘客户端装置的位置信息;针对某个网盘客户端装置,该网盘客户端装置只需存储该网盘客户端装置的上层应用程序所要访问网盘系统中文件的相关各种元信息和该文件中所要访问的部分文件数据块,网盘客户端装置中该文件的全局文件数据块元信息序列池包含了该文件的所有全局文件数据块ID号、所有本地文件数据块ID号和网络存储的设备ID,其中,本地文件数据块ID号为该文件数据块网盘客户端装置中的位置信息,网络存储的设备ID为该文件数据块在其它网盘客户端装置或者网盘服务器装置的位置信息,全局文件数据块ID号为该文件数据块在网盘服务器装置的位置信息;
所述的网盘系统中文件只能有一个全局文件版本,全局文件版本的副本ID为空;网盘系统中文件有零个或者多个文件副本,同一个文件的文件副本各自拥有不同的非空副本ID;全局文件版本和文件副本拥有相同的文件ID,每个网盘客户端装置只能看到网盘系统中该文件的全局文件版本和该终端设备上该文件的文件副本。
2.如权利要求1所述的网盘系统,其特征在于,当网盘客户端装置修改某文件时,若该文件在该网盘客户端装置没有文件副本则该网盘客户端装置首先建立该文件的文件副本,然后针对该文件副本进行修改,对该文件副本修改后该网盘客户端装置能够随时向网盘服务器装置申请成为该文件的全局文件版本;当网盘客户端装置将某文件的本地文件副本的文件元信息提交到网盘服务器装置并且被网盘服务器装置接受为该文件的全局文件版本时,该网盘客户端装置将删除该文件在本地的全局文件版本,并且该网盘客户端装置将该文件的本地文件副本转为在本地的全局文件版本;当网盘客户端装置将某文件的本地文件副本的文件元信息提交到网盘服务器装置并且不被网盘服务器装置接受为该文件的全局文件版本时,该网盘客户端装置将该文件的本地文件副本通过改变文件名字从而成为一个新文件的文件副本,该网盘客户端装置对该新文件的文件副本能够随时向网盘服务器装置申请成为该新文件的全局文件版本。
3.如权利要求1所述的网盘系统,其特征在于,网盘客户端装置和网盘服务器装置之间文件访问和同步服务采用事件订阅机制,事件接收和处理统一由各自的事件服务模块来完成;所有事件采用统一的事件信息结构体,事件信息结构体包括事件ID、事件来源类型、事件业务类型、事件源终端ID、事件源执行体ID、事件目的终端ID、事件时间标记、事件回执通知标记、事件内容体长度、事件内容体摘要、事件头摘要和事件内容体,其中事件ID为事件的唯一标识;事件来源类型包括网盘服务器发送给网盘客户端的事件类型、网盘客户端发送给网盘服务器的事件类型、网盘服务器发送给本地的事件类型和网盘客户端发送给本地的事件类型;事件业务类型包括文件的元信息及文件块的创建、修改、删除、下载和上传的业务,也包括目录元信息的创建、修改、删除、下载和上传的业务,也包括用户注册、注销、更新、认证和查询的业务,也包括终端设备的登记、更新和查询的业务,事件服务模块根据不同的事件业务类型来访问对应业务服务模块来执行事件相关业务。
4.如权利要求1或3所述的网盘系统,其特征在于,所述的网盘客户端装置和网盘服务器装置中事件服务模块的处理流程如下:
第1步、接收事件请求;
第2步、分析事件类型,如果事件为本地执行事件,则执行第5步,否则执行第3步;
第3步、事件不是远程执行事件,则执行第10步,否则执行第4步;
第4步、该事件通过网络发送到指定网络设备,并执行第6步;
第5步、在本地调用相关模块执行该事件;
第6步、是否通知事件源,如果无需通知事件源则执行第10步,否则执行第7步;
第7步、事件源是否为远程,如果事件源是远程则执行9步,否则执行第8步;
第8步、将该事件回执通知给本地事件源执行体,并执行第10步;
第9步、将该事件回执通知通过网络发送到指定网络设备,并执行第10步;
第10步、事件处理完毕返回。
5.如权利要求1所述的网盘系统,其特征在于,用户从网盘客户端装置登录到网盘服务器装置时需要通过网盘服务器装置的认证,当用户及网盘客户端装置通过网盘服务器装置认证后,网盘服务器将用户及网盘客户端装置的登录信息记下来并跟踪用户退出事件,该登录信息记录在“用户登录表”中,用户登录表中包括用户ID、终端ID、网络物理地址、登录时间、退出时间和状态;当网盘系统中网盘服务器装置内某个文件信息被修改,则网盘服务器装置向拥有该文件的所有在线网盘客户端装置发送“文件更新事件”,从而使得相关在线网盘客户端装置能够及时更新该文件元信息和文件数据块。
6.一种基于权利要求1所述的支持多用户多终端同时读写的网盘系统的读文件方法,其特征在于,网盘客户端装置中“应用程序”读取网盘系统中指定文件的指定文件数据到指定内存空间的方法包括具体步骤如下:
第1步、网盘客户端装置中“文件系统接口层”接收来自上层“应用程序”的读取网盘系统中指定文件的指定偏移量位置及长度的文件数据到指定内存空间的请求,并将该读请求转化为读取网盘系统中指定文件的指定第i块文件数据块内容到指定内存空间的读请求;
第2步、网盘客户端装置的“文件服务”模块读取该文件的“文件元信息”,进一步获取该指定第i块文件数据块的“全局文件数据块ID号”和“本地文件数据块ID号”;
第3步、根据第2步中文件数据块的“本地文件数据块ID号”,判断该文件数据块的内容是否在本地网盘客户端装置中存在,若存在则执行第4步,否则执行第5步;
第4步、根据第2步中文件数据块的“本地文件数据块ID号”读取该数据块的“本地文件数据块元信息”,进一步判断该“本地文件数据块”的状态是否有效,若该“本地文件数据块”的状态为有效,则执行第7步,否则执行第5步;
第5步、针对第2步中指定文件的该指定文件数据块的“全局文件数据块ID号”,向本地“事件服务模块”发送“下载文件数据块”事件,并在指定时间内等待该事件完成;
第6步、判断第5步中“下载文件数据块”事件是否完成,如完成则执行第7步,否则执行第9步;
第7步、重新读取该文件的“文件元信息”,并获得该文件数据块的“全局文件数据块ID号”和“本地文件数据块ID号”;
第8步、根据该文件数据块的“本地文件数据块ID号”读取对应的“本地文件数据块元信息”从而获得“本地数据块ID”,读取该本地数据块到指定内存,并设置读取指定文件的指定文件数据块内容到指定内存空间的访问请求成功信息,并进一步执行第10步;
第9步、设置读取指定文件的指定文件数据块内容到指定内存空间的访问请求失败信息,进一步执行第10步;
第10步、读请求操作结束。
7.一种基于权利要求1所述的支持多用户多终端同时读写的网盘系统的写文件方法,其特征在于,网盘客户端装置中“应用程序”将新数据写到网盘系统中指定文件的指定偏移量位置的方法包括具体步骤如下:
第1步、网盘客户端装置中“文件系统接口层”接收来自上层“应用程序”将新数据写到网盘系统中指定文件的指定偏移量位置的请求,并将该写请求转化为将新数据写到网盘系统中指定文件的指定第i块文件数据块的请求;
第2步、网盘客户端装置的“文件服务”模块读取该文件的“文件元信息”,进一步获取该指定第i块文件数据块的“全局文件数据块ID号”和“本地文件数据块ID号”;
第3步、判断第2步中该指定文件数据块是否为新增数据块,如果该指定文件数据块是新增数据块,则执行第9步,否则执行第4步;
第4步、判断第2步中该指定文件数据块是否将被完全写覆盖,如果该指定文件数据块将被完全写覆盖,则执行第9步,否则执行第5步;
第5步、判断第2步中该指定文件数据块是否已在本地,如果该指定文件数据块尚未在本地存储中,则执行第7步,否则执行第6步;
第6步、判断第2步中该指定文件数据块的本地数据块是否有效,如果该指定文件数据块的本地数据块有效,则执行第8步,否则执行第7步;
第7步、向网盘服务器装置发送获取第2步中该指定文件数据块的事件、并等待第2步中该指定文件数据块的数据被下载到本地,如果第2步中该指定文件数据块的数据未能被下载到本地,则执行第12步,否则执行第8步;
第8步、获取本地一个空闲数据块作为新数据块,并将第2步中该指定文件数据块的原数据块内容复制到该新数据块,并进一步执行第10步;
第9步、获取本地一个空闲数据块作为新数据块,并进一步执行第10步;
第10步、将第1步中新数据写入新数据块中,并更新新数据块的元信息,设置写数据块成功;
第11步、向网盘服务器装置发送“文件数据块修改”事件,并进一步执行第13步;
第12步、设置写数据块失败,并进一步执行第13步;
第13步、写请求操作结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610297399.3A CN106021327B (zh) | 2016-05-06 | 2016-05-06 | 一种支持多用户同时读写的网盘系统及其读文件方法、写文件方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610297399.3A CN106021327B (zh) | 2016-05-06 | 2016-05-06 | 一种支持多用户同时读写的网盘系统及其读文件方法、写文件方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106021327A CN106021327A (zh) | 2016-10-12 |
CN106021327B true CN106021327B (zh) | 2019-10-01 |
Family
ID=57081299
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610297399.3A Active CN106021327B (zh) | 2016-05-06 | 2016-05-06 | 一种支持多用户同时读写的网盘系统及其读文件方法、写文件方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106021327B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107357864B (zh) * | 2017-06-30 | 2021-02-19 | 联想(北京)有限公司 | 一种文件处理方法及终端 |
CN109725913A (zh) * | 2017-10-27 | 2019-05-07 | 北京京东尚科信息技术有限公司 | 数据更新的方法和装置 |
CN108021425B (zh) * | 2017-12-28 | 2020-11-03 | 南开大学 | 一种集成多个应用图形窗口的虚拟桌面系统及运行方法 |
CN109803107B (zh) * | 2019-01-09 | 2021-06-22 | 安徽睿极智能科技有限公司 | 多媒体数据的嵌入式文件系统及其快速读写方法 |
CN113961970B (zh) * | 2021-12-23 | 2022-03-15 | 天津联想协同科技有限公司 | 跨网段网盘登录身份验证方法、装置、网盘及存储介质 |
CN115408358B (zh) * | 2022-10-31 | 2023-04-11 | 天津联想协同科技有限公司 | 网盘在线文件的管理方法、装置、网盘及存储介质 |
CN116010364B (zh) * | 2023-03-27 | 2023-08-04 | 天津联想协同科技有限公司 | 网盘文件状态的更新方法、装置、网盘及存储介质 |
CN116610634B (zh) * | 2023-07-19 | 2023-09-26 | 南京中孚信息技术有限公司 | 一种网盘终端的文件同步系统及方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102685148A (zh) * | 2012-05-31 | 2012-09-19 | 清华大学 | 一种云存储环境下的安全网盘系统的实现方法 |
CN103166992A (zh) * | 2011-12-14 | 2013-06-19 | 中国电信股份有限公司 | 应用于云存储的快速文件更新方法及系统 |
CN104378423A (zh) * | 2014-11-13 | 2015-02-25 | 普华基础软件股份有限公司 | 元数据集群分布式存储系统及读取、写入存储数据的方法 |
CN103116618B (zh) * | 2013-01-28 | 2015-09-30 | 南开大学 | 基于客户端持久缓存的远程文件系统镜像方法及系统 |
CN104994177A (zh) * | 2015-08-06 | 2015-10-21 | 上海爱数软件有限公司 | 网盘系统的同步方法、终端设备和网盘系统 |
CN105187551A (zh) * | 2015-09-29 | 2015-12-23 | 成都四象联创科技有限公司 | 基于云平台的分布式计算方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9715507B2 (en) * | 2013-03-28 | 2017-07-25 | Ctera Networks, Ltd. | Techniques for reconciling metadata and data in a cloud storage system without service interruption |
-
2016
- 2016-05-06 CN CN201610297399.3A patent/CN106021327B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103166992A (zh) * | 2011-12-14 | 2013-06-19 | 中国电信股份有限公司 | 应用于云存储的快速文件更新方法及系统 |
CN102685148A (zh) * | 2012-05-31 | 2012-09-19 | 清华大学 | 一种云存储环境下的安全网盘系统的实现方法 |
CN103116618B (zh) * | 2013-01-28 | 2015-09-30 | 南开大学 | 基于客户端持久缓存的远程文件系统镜像方法及系统 |
CN104378423A (zh) * | 2014-11-13 | 2015-02-25 | 普华基础软件股份有限公司 | 元数据集群分布式存储系统及读取、写入存储数据的方法 |
CN104994177A (zh) * | 2015-08-06 | 2015-10-21 | 上海爱数软件有限公司 | 网盘系统的同步方法、终端设备和网盘系统 |
CN105187551A (zh) * | 2015-09-29 | 2015-12-23 | 成都四象联创科技有限公司 | 基于云平台的分布式计算方法 |
Non-Patent Citations (1)
Title |
---|
一种云存储环境下的安全网盘系统;傅颖勋,罗圣美,舒继武;《软件学报》;20140815;第25卷(第8期);第1831-1843页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106021327A (zh) | 2016-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106021327B (zh) | 一种支持多用户同时读写的网盘系统及其读文件方法、写文件方法 | |
US9792294B2 (en) | Using byte-range locks to manage multiple concurrent accesses to a file in a distributed filesystem | |
US9805056B2 (en) | Synchronizing file updates between two cloud controllers of a distributed filesystem | |
US7783737B2 (en) | System and method for managing supply of digital content | |
US10169367B2 (en) | Managing opportunistic locks in a distributed file system | |
US9646022B2 (en) | Distributed change notifications for a distributed filesystem | |
CN104618482B (zh) | 访问云数据的方法、服务器、传统存储设备、系统 | |
JP4799936B2 (ja) | 条件別スナップショット取得方法及びシステム | |
KR101138434B1 (ko) | 실시간 통신 플랫폼에 기반하여 네트워크 하드디스크를실행하는 시스템 및 그 방법 | |
KR100825721B1 (ko) | 객체 기반 스토리지 시스템에서 사용자 파일 관리자 내의시간 기반 캐쉬 일관성 유지 시스템 및 방법 | |
US7653935B2 (en) | File server for translating user identifier | |
US20110225373A1 (en) | Computer system and method of data cache management | |
CN112395264B (zh) | 分布式存储系统中逻辑目标与卷之间映射的处理方法 | |
JP2005535947A (ja) | 異なるタイプのバックエンド・データ・ストアにアクセスするためのシステムおよび方法 | |
WO2018090256A1 (zh) | 一种目录删除方法、装置和存储服务器 | |
JP2004280283A (ja) | 分散ファイルシステム、分散ファイルシステムサーバ及び分散ファイルシステムへのアクセス方法 | |
US8352442B2 (en) | Determination of an updated data source from disparate data sources | |
JP4500072B2 (ja) | ネットワークストレージ装置における認証プログラム | |
CN113094754B (zh) | 大数据平台数据修改系统及修改、响应、缓存、校验方法 | |
CN112286448B (zh) | 对象访问方法、装置、电子设备及机器可读存储介质 | |
CN113377714A (zh) | 基于分布式存储系统的目标器重命名方法及装置 | |
CN110825715B (zh) | 基于Ceph对象存储的多对象数据秒合的实现方法 | |
CN110209343B (zh) | 数据存储方法、装置、服务器及存储介质 | |
CN114116651B (zh) | 一种支持多协议统一管理用户访问文件的系统和方法 | |
CN116821058B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |