CN106682186A - 文件访问控制列表管理方法和相关装置和系统 - Google Patents
文件访问控制列表管理方法和相关装置和系统 Download PDFInfo
- Publication number
- CN106682186A CN106682186A CN201611247427.7A CN201611247427A CN106682186A CN 106682186 A CN106682186 A CN 106682186A CN 201611247427 A CN201611247427 A CN 201611247427A CN 106682186 A CN106682186 A CN 106682186A
- Authority
- CN
- China
- Prior art keywords
- acl
- file
- logging
- directory
- indexes
- 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
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
-
- 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/11—File system administration, e.g. details of archiving or snapshots
- G06F16/119—Details of migration of file systems
-
- 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/13—File access structures, e.g. distributed indices
-
- 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/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- 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/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
-
- 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/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
Abstract
本申请实施例公开了文件ACL管理方法和相关装置和系统。一种文件ACL管理方法包括:接收来自文件客户端的第一文件ACL设置请求,第一文件ACL设置请求携带有文件标识,所述第一文件ACL设置请求还携带有所述文件标识所表示的文件的ACL;从所述文件所属父目录的目录级ACL之中查找包含有所述文件的ACL的ACL记录;在从所述目录级ACL中查找到了包含有所述文件的ACL的第一ACL记录的情况之下,建立所述文件对所述第一ACL记录的引用。本申请实施例的技术方案有利于极大的提升文件ACL的去重/访问效率。
Description
技术领域
本申请涉及计算机技术领域,具体主要涉及了文件访问控制列表管理方法和相关装置和系统。
背景技术
目前,用文件系统进行文件管理是非常普遍的,文件系统中的文件通常被存储于磁盘阵列等存储部件。
在一种典型网络架构中,若干个文件客户端通过网络与文件服务器(例如网络附属存储(NAS,Network Attached Storage)服务器连接),文件服务器包括磁盘阵列。文件服务器为文件客户端(例如NAS Client)提供文件系统的数据访问服务。
通常文件系统会把磁盘阵列的存储介质格式化为特定格式,分别存储元数据和内容数据。例如文件的元数据包括文件大小、文件修改时间等属性存储在元数据区。文件的内容数据存储在数据区,通过文件元数据可找到文件内容数据所在位置。
文件的访问控制列表(ACL,Access Control Lists)是文件系统中对文件标准属性读/写/执行(R/W/X)的附加扩展。文件的ACL包含若干项访问控制项(ACE,AccessControl Entry)。每项ACE可包含控制类型(type)、用户标识(user id)和权限(mask)等内容。其中,控制类型包含允许(allowed)和拒绝(denied)等,用户标识表示某一用户或某类用户,mask表示相应用户的访问权限,一般采用掩码方式表示。因此ACL可细粒度的赋予不同用户不同权限,给予用户更好控制文件读写和权限赋予等的能力,因此ACL已经被例如Linux、NTFS、FreeBSD等系统普遍支持。
传统技术中,整个文件系统只维护一张全局ACL(系统级ACL),全局ACL包括了文件系统的所有文件的ACL。因此,当整个文件系统的文件数量较大时,全局ACL所包括的文件ACL的数量也将变得很大,这样就可能严重影响到文件ACL的去重/访问效率。
发明内容
本申请实施例提供文件访问控制列表管理方法和相关装置和系统。
本申请实施例第一方面提供一种文件ACL管理方法,包括:当文件ACL需被设置,文件服务器接收来自文件客户端的第一文件ACL设置请求。所述第一文件ACL设置请求携带有文件标识。第一文件ACL设置请求还携带有所述文件标识所表示的文件的ACL。文件的ACL可称“文件ACL”或者“文件级ACL”。所述文件服务器从所述文件所属父目录的目录级ACL之中查找包含有所述文件的ACL的ACL记录。在从所述目录级ACL中查找到了包含有所述文件的ACL的第一ACL记录的情况之下,所述文件服务器建立所述文件对所述第一ACL记录的引用。在从所述目录级ACL中未查找到包含有所述文件的ACL的任何ACL记录的情况下,所述文件服务器在所述目录级ACL中新建第二ACL记录,建立所述文件对所述第二ACL记录的引用,所述第二ACL记录中包含所述文件的ACL。
可以理解,父目录的目录级ACL中的ACL记录只允许被所述父目录下的文件引用。因此,与之存在引用关系的文件的数量通常相对较少,因此目录粒度的ACL所包含的ACL记录,相比传统的全局ACL所包含的ACL记录相对更少,因此遍历单个目录级ACL所需时间也会大大缩短,这就有利于极大提升业务处理效率和客户体验。
其中,建立文件对ACL记录的引用,也就表示建立文件对ACL记录的引用关系,因此,基于建立的文件对ACL记录的引用,便可获取到文件所引用的ACL记录。
当然,建立文件对ACL记录的引用的具体实现方式可有多种,例如可将ACL记录的相关索引写入文件的元数据,或利用引用关系表来记录文件对ACL记录的引用关系等等。
具体例如,所述第一ACL记录中包含ACL索引,所述建立所述文件对所述第一ACL记录的引用包括:将所述第一ACL记录中包含的ACL索引写入所述文件的元数据中。
具体例如,所述第二ACL记录中包含ACL索引,所述建立所述文件对所述第二ACL记录的引用包括:将所述第二ACL记录中包含的ACL索引写入所述文件的元数据中。其中,所述第一ACL记录中包含的ACL索引不同于所述第二ACL记录中包含的ACL索引。所述父目录的目录级ACL中的不同ACL记录所包含的ACL索引互不不相同。利用ACL索引则可在对应目录级ACL中查找到包含这个ACL索引的ACL记录。
可以理解,上述技术方案中,在接收到来自文件客户端的第一文件ACL设置请求之后,文件服务器从文件所属父目录的目录级ACL之中查找包含所述文件的ACL的ACL记录,在从所述目录级ACL中查找到了包含所述文件的ACL的第一ACL记录的情况之下,文件服务器建立所述文件对第一ACL记录的引用,具体例如将第一ACL记录中包含的ACL索引写入所述文件的元数据中,由于这种情况下不再新建相应ACL记录,这样在一定程度上实现了单目录下的文件ACL去重,当同一目录下的不同文件的ACL相同时,可只在相应父目录的目录级ACL中保留1条相应ACL记录,这些ACL相同的不同文件可通过ACL索引来从目录级ACL中找到这条相应ACL记录,进而实现这些不同文件的相应ACL的引用。可以理解,相比于传统的基于全局ACL进行文件ACL的去重访问机制,由于目录级ACL包含的ACL记录的数量相对会少了很多,因此,本申请一些实施例的这种基于目录级ACL的文件ACL去重访问机制,有利于极大的提升文件ACL的去重/访问效率。
在一些可能的实施方式中,所述方法还可包括:所述文件服务器计算所述文件的ACL的指纹。其中,从所述文件所属父目录的目录级ACL之中查找包含有所述文件的ACL的ACL记录,包括:从所述目录级ACL之中查找包含有所述文件的ACL的指纹的ACL记录,所述目录级ACL中包含所述指纹的ACL记录中包含所述文件的ACL。
ACL指纹的计算可以采用例如MD5算法/SHA1算法等等基于摘要的加密算法,这些加密算法可把数十KB大小的ACL映射为例如8字节或12字节的ACL指纹。实践发现,ACL指纹相对于ACL本身更小,指纹大小通常在十几个字节左右,而ACL本身则可达到数十KB,因此利用ACL指纹来搜索查找有利于降低比较开销。
在一些可能的实施方式中,所述方法还包括:当需对文件进行访问,所述文件服务器接收来自文件客户端的携带有所述文件标识的文件访问请求;所述文件服务器从所述目录级ACL中查找所述文件引用的ACL记录,在从所述目录级ACL中查找到了所述文件引用的第一ACL记录的情况之下,所述文件服务器利用所述第一ACL记录包含的所述文件的ACL对所述访问请求进行访问控制。
可以理解,上述技术方案中,在接收到了来自文件客户端的文件访问请求之后,文件服务器从文件标识所表示的文件的元数据中读取ACL索引,从目录级ACL中查找被所述文件引用的ACL记录,在从目录级ACL中查找到了被所述文件引用的第一ACL记录的情况下,文件服务器利用第一ACL记录包含的文件的ACL对文件访问请求进行访问控制。相比于传统的基于全局ACL来访问引用文件ACL的机制,由于目录级ACL包含的ACL记录的数量相对少很多,因此这种基于目录级ACL来访问引用文件ACL的机制,有利于极大的提升文件ACL的引用访问效率。
在一些可能的实施方式之中,所述方法还可以包括:当需要获取文件的文件ACL,所述文件服务器可接收来自文件客户端的携带所述文件标识的文件ACL获取请求。所述文件服务器从所述目录级ACL之中查找所述文件引用的ACL记录。并且,在从所述目录级ACL之中查找到了所述文件引用的第一ACL记录的情况之下,所述文件服务器向所述文件客户端发送用于响应所述文件ACL获取请求的文件ACL获取响应。所述文件ACL获取响应携带有所述第一ACL记录中包含的所述文件的ACL。
可以理解,上述技术方案中,接收到来自文件客户端的文件ACL获取请求之后,文件服务器从相应父目录的目录级ACL中查找被所述文件引用的ACL记录,在从这个目录级ACL中查找到了被所述文件引用的第一ACL记录的情况下,文件服务器向所述文件客户端发送携带有所述第一ACL记录中包含的文件ACL的文件ACL获取响应。相比于传统的基于全局ACL来获取文件ACL的机制,由于目录级ACL包含的ACL记录的数量相对很少,因此这种基于目录级ACL来获取文件ACL的机制,有利于极大的提升文件ACL的获取效率。
在一些可能的实施方式之中,所述方法还可包括:当文件ACL需被更新设置,所述文件服务器接收来自文件客户端的第二文件ACL设置请求。所述第二文件ACL设置请求携带有所述文件标识。所述第二ACL设置请求还携带有所述文件的更新ACL。所述文件服务器从所述目录级ACL之中查找包含所述文件的更新ACL的ACL记录。
在从所述目录级ACL中查找到了包含所述文件的更新ACL的第三ACL记录的情况之下,所述文件服务器将所述文件当前对其他ACL记录的引用替换为所述文件对所述第三ACL记录的引用。具体例如,所述文件服务器可利用所述第三ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引,进而实现将所述文件当前对其他ACL记录的引用替换为所述文件对所述第三ACL记录的引用。
在从所述目录级ACL中未查找到包含所述文件的更新ACL的任何ACL记录的情况之下,在所述目录级ACL中新建第四ACL记录,其中,所述第四ACL记录中包含有所述文件的更新ACL,将所述文件当前对其他ACL记录的引用,替换为所述文件对所述第四ACL记录的引用。具体例如,所述文件服务器可利用所述第四ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引,进而实现将所述文件当前对其他ACL记录的引用替换为所述文件对所述第四ACL记录的引用。
在一些可能的实施方式之中,所述方法还可以包括:当文件的硬链接需被创建,所述文件服务器接收来自文件客户端的携带所述文件标识的硬链接创建请求。所述文件服务器从所述目录级ACL之中查找所述ACL所引用的ACL记录;在从所述目录级ACL之中查找到了包含有读取到的所述ACL索引的第一ACL记录的情况下,所述文件服务器将所述第一ACL记录中包含的所述文件的ACL写入所述文件的元数据中,并解除所述文件对所述第一ACL记录的引用(例如可通过删除所述文件的元数据中已有的所述第一ACL记录包含的ACL索引,来解除所述文件对所述第一ACL记录的引用),创建所述文件的硬链接。
可以理解,上述技术方案中,接收到了来自文件客户端的硬链接创建请求之后,文件服务器从文件所属父目录的目录级ACL中查找被所述文件引用的的ACL记录,在从这个目录级ACL中查找到了被所述文件引用的第一ACL记录的情况下,文件服务器将所述第一ACL记录中包含的所述文件的ACL写入所述文件的元数据中,并解除所述文件对所述第一ACL记录的引用。相比于传统的基于全局ACL来获取文件ACL的机制,由于目录级ACL所包含的ACL记录的数量相对很少,因此,这种基于目录级ACL来获取相关文件ACL的机制,有利于极大的提升文件ACL的获取效率,进而极大的提升硬链接创建的效率。
在一些可能实施方式中,从所述目录级ACL中查找所述文件引用的ACL记录例如可包括:从所述文件的元数据中读取ACL索引,从所述目录级ACL中查找包含所述ACL索引的ACL记录。其中,所述目录级ACL中包含所述ACL索引的ACL记录为所述文件引用的ACL记录。
在一些可能的实施方式之中,所述方法还可以包括:当文件需要进行目录迁移,所述文件服务器可接收来自文件客户端的携带有目标父目录的目录标识和所述文件标识的文件迁移请求,所述文件服务器在将所述文件从所述父目录迁移到目标父目录之后,从所述文件的元数据中读取ACL索引。所述文件服务器从所述目录级ACL之中查找包含所述ACL索引的ACL记录。
在从所述目录级ACL之中查找到了包含所述ACL索引的所述第一ACL记录的情况之下,所述文件服务器从查找到的所述第一ACL记录中读取ACL指纹;从所述目标父目录的目录级ACL中查找包含读取到的所述ACL指纹的ACL记录。
在从所述目标父目录的目录级ACL中查找到了包含读取到的所述ACL指纹的第五ACL记录的情况下,所述文件服务器利用所述第五ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
在从所述目标父目录的目录级ACL之中未查找到包含有读取到的所述ACL指纹的任何ACL记录的情况之下,所述文件服务器在所述目标父目录的目录级ACL中新建第六ACL记录,其中,所述第六ACL记录中包含有所述第一ACL记录中包含的所述文件的ACL,所述第六ACL记录中还包含有ACL索引,利用所述第六ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
可以理解,上述技术方案中,在接收到了来自文件客户端的文件迁移请求之后,文件服务器将文件从其当前所属父目录迁移到目标父目录,在从源目录的目录级ACL中读取到相应ACL指纹后,从目标父目录的目录级ACL中查找包含读取到的ACL指纹的ACL记录,在从所述目标父目录的目录级ACL中查找到了包含读取到的所述ACL指纹的第五ACL记录的情况下,所述文件服务器利用所述第五ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引,由于这种情况下不再在目标父目录的目录级ACL新建相应ACL记录,这样在一定程度上实现了单目录下的文件ACL去重,当同一目录下的不同文件的ACL相同时,可只在相应父目录的目录级ACL中保留一条相应ACL记录,这些ACL相同的不同文件可通过ACL索引来从目录级ACL中找到这条相应ACL记录,进而可实现这些不同文件的相应ACL的引用。相比于传统的基于全局ACL的去重访问机制,由于目录级ACL包含的ACL记录的数量相对会少了很多,因此这种基于目录级的文件ACL去重机制,有利于极大的提升文件ACL的去重效率。
在一些可能的实施方式之中,所述方法还可以包括:当文件需要进行目录迁移,所述文件服务器接收来自文件客户端的携带有目标父目录的目录标识和所述文件标识的文件迁移请求,所述文件服务器在将所述文件从所述父目录迁移到目标父目录之后,从所述文件的元数据中读取ACL索引;所述文件服务器从所述目录级ACL之中查找包含所述ACL索引的ACL记录。
在从所述目录级ACL中查找到的包含所述ACL索引的所述第一ACL记录的情况下,所述文件服务器从查找到的所述第一ACL记录中读取所述文件的ACL;从所述目标父目录的目录级ACL中查找包含所述文件的ACL的ACL记录。
在从所述目标父目录的目录级ACL中查找到了包含所述文件的ACL的第五ACL记录的情况下,所述文件服务器利用所述第五ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
在从所述目标父目录的目录级ACL之中未查找到包含所述文件的ACL的任何ACL记录的情况之下,所述文件服务器在所述目标父目录的目录级ACL中新建第六ACL记录,所述第六ACL记录中包含有所述第一ACL记录中包含的所述文件的ACL,所述第六ACL记录中还包含有ACL索引,所述文件服务器利用所述第六ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
在一些可能的实施方式之中,所述方法还包括:在所述目录级ACL的清理触发条件满足的情况下,所述文件服务器从所述目录级ACL中查找未被所述父目录下的任意文件引用的ACL记录,在从所述目录级ACL中查找了未被所述父目录下的任意文件引用的X条ACL记录的情况下,所述文件服务器将所述X条ACL记录从所述目录级ACL中释放。
例如所述清理触发条件可包括如下条件中的至少1个:目录级ACL的ACL记录的数量达到数量阈值、接收到了目录级ACL清理指令、目录级ACL的清理定时器到达。
由于引入了目录级ACL中的无效ACL记录的释放机制,这样有利于提升目录级ACL中有效ACL记录的占比,进而有利于提升目录级ACL中的文件ACL的访问效率。
本申请实施例第二方面提供一种文件服务器,可包括:通信单元、查找单元和处理单元。
通信单元,用于接收来自文件客户端的第一文件ACL设置请求,所述第一文件ACL设置请求携带有文件标识,所述第一文件ACL设置请求还携带有所述文件标识所表示的文件的ACL。
查找单元,用于从所述文件所属父目录的目录级ACL之中查找包含有所述文件的ACL的ACL记录。
处理单元,用于在所述查找单元从所述目录级ACL之中查找到了包含有所述文件的ACL的第一ACL记录的情况之下,建立所述文件对所述第一ACL记录的引用;在所述查找单元从所述目录级ACL之中未查找到包含有所述文件的ACL的任何ACL记录的情况之下,在所述目录级ACL之中新建第二ACL记录。其中,所述第二ACL记录中包含所述文件的ACL,建立所述文件对所述第二ACL记录的引用。
在一些可能实施方式中,所述第一ACL记录中包含ACL索引,所述处理单元建立所述文件对所述第一ACL记录的引用可包括:将所述第一ACL记录中包含的ACL索引写入所述文件的元数据中。
在一些可能实施方式中,所述第二ACL记录中包含ACL索引,所述处理单元建立所述文件对所述第二ACL记录的引用包括:将所述第二ACL记录中包含的ACL索引写入所述文件的元数据中。其中,所述第一ACL记录中包含的ACL索引不同于所述第二ACL记录中包含的ACL索引。
在一些可能实施方式中,所述文件服务器还包括:计算单元,用于计算所述文件的ACL的指纹。所述查找单元从所述文件所属父目录的目录级ACL之中查找包含有所述文件的ACL的ACL记录,可包括:从所述目录级ACL之中查找包含有所述文件的ACL的指纹的ACL记录,所述目录级ACL中包含所述指纹的ACL记录中包含所述文件的ACL。
在一些可能实施方式之中,所述通信单元还可用于,接收来自文件客户端的携带有所述文件标识的文件访问请求。所述查找单元还可用于从所述目录级ACL中查找所述文件引用的ACL记录。其中,所述处理单元还可用于在所述查找单元从所述目录级ACL中查找到了所述文件引用的第一ACL记录的情况之下,利用所述第一ACL记录包含的所述文件的ACL对所述访问请求进行访问控制。
在一些可能的实施方式之中,所述通信单元还可用于,接收来自文件客户端的携带所述文件标识的硬链接创建请求。所述查找单元还可用于从所述目录级ACL中查找所述文件引用的ACL记录。其中,所述处理单元还可用于在所述查找单元从所述目录级ACL中查找到了所述文件引用的第一ACL记录的情况之下,将所述第一ACL记录中包含的所述文件的ACL写入所述文件的元数据中,并解除所述文件对所述第一ACL记录的引用(例如可通过删除所述文件的元数据中已有的所述第一ACL记录包含的ACL索引,来解除所述文件对所述第一ACL记录的引用),创建所述文件的硬链接。
在一些可能实施方式中,所述查找单元从所述目录级ACL中查找所述文件引用的ACL记录例如可包括:从所述文件的元数据中读取ACL索引,从所述目录级ACL中查找包含所述ACL索引的ACL记录。其中,所述目录级ACL中包含所述ACL索引的ACL记录为所述文件引用的ACL记录。
在一些可能实施方式之中,所述通信单元还用于,接收来自文件客户端的第二文件ACL设置请求。其中,所述第二文件ACL设置请求携带有所述文件标识。所述第二ACL设置请求还携带有所述文件的更新ACL。
所述查找单元还用于,从所述目录级ACL之中查找包含所述文件的更新ACL的ACL记录。
所述处理单元还可用于,在所述查找单元从所述目录级ACL中查找到了包含所述文件的更新ACL的第三ACL记录的情况之下,将所述文件当前对其他ACL记录的引用,替换为所述文件对所述第三ACL记录的引用。
所述处理单元还可用于,在所述查找单元从所述目录级ACL之中未查找到包含所述文件的更新ACL的任何ACL记录的情况之下,在所述目录级ACL中新建第四ACL记录。其中,所述第四ACL记录中包含有所述文件的更新ACL,将所述文件当前对其他ACL记录的引用,替换为所述文件对所述第四ACL记录的引用。
在一些可能实施方式之中,所述通信单元还可用于,接收来自文件客户端的携带有目标父目录的目录标识和所述文件标识的文件迁移请求。所述处理单元还可用于将所述文件从所述父目录迁移到所述目标父目录。
所述查找单元还可用于,从所述文件的元数据中读取ACL索引;从所述目录级ACL之中查找包含所述ACL索引的ACL记录;从所述目录级ACL之中查找到包含所述ACL索引的所述第一ACL记录的情况下,从查找到的所述第一ACL记录中读取ACL指纹;从所述目标父目录的目录级ACL中查找包含读取到的所述ACL指纹的ACL记录。
所述处理单元还可用于在所述查找单元从所述目标父目录的目录级ACL中查找到了包含读取到的所述ACL指纹的第五ACL记录的情况之下,利用所述第五ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
所述处理单元还可用于在所述查找单元从所述目标父目录的目录级ACL之中未查找到包含有读取到的所述ACL指纹的任何ACL记录的情况之下,在所述目标父目录的目录级ACL中新建第六ACL记录,其中,所述第六ACL记录中包含有所述第一ACL记录中包含的所述文件的ACL,所述第六ACL记录中还包含有ACL索引,利用所述第六ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
在一些可能实施方式中,所述通信单元可还用于,接收来自文件客户端的携带有目标父目录的目录标识和所述文件标识的文件迁移请求。所述处理单元还可用于将所述文件从所述父目录迁移到所述目标父目录。
所述查找单元还可用于,从所述文件的元数据中读取ACL索引;从所述目录级ACL之中查找包含所述ACL索引的ACL记录;在从所述目录级ACL中查找到的包含所述ACL索引的所述第一ACL记录的情况下,从查找到的所述第一ACL记录中读取所述文件的ACL;从所述目标父目录的目录级ACL中查找包含所述文件的ACL的ACL记录。
所述处理单元还可用于,在所述查找单元从所述目标父目录的目录级ACL中查找到了包含所述文件的ACL的第五ACL记录的情况之下,利用所述第五ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
所述处理单元还用于,在所述查找单元从所述目标父目录的目录级ACL之中未查找到包含所述文件的ACL的任何ACL记录的情况之下,在所述目标父目录的目录级ACL中新建第六ACL记录,所述第六ACL记录中包含有所述第一ACL记录中包含的所述文件的ACL,所述第六ACL记录中还包含有ACL索引,利用所述第六ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
在一些可能实施方式中,所述所述文件服务器还包括:清理单元,用于在所述目录级ACL的清理触发条件满足的情况下,从所述目录级ACL中查找未被所述父目录下的任意文件引用的ACL记录,在从所述目录级ACL中查找了未被所述父目录下的任意文件引用的X条ACL记录的情况下,将所述X条ACL记录从所述目录级ACL中释放。
本申请实施例的第三方面提供一种文件服务器,可以包括:相互耦合的处理器、通信接口和存储部件。所述存储部件用于存储指令和数据,所述处理器用于执行所述指令。所述通信接口用于在所述处理器的控制下与其他设备进行通信。其中,所述处理器用于执行本发明实施例提供的任意一种方法的部分或全部步骤。
举例来说,所述处理器可用于:
通过通信接口接收来自文件客户端的第一文件ACL设置请求,所述第一文件ACL设置请求携带有文件标识,所述第一文件ACL设置请求还携带有所述文件标识所表示的文件的ACL;
从所述文件所属父目录的目录级ACL之中查找包含有所述文件的ACL的ACL记录;
在从所述目录级ACL中查找到了包含有所述文件的ACL的第一ACL记录的情况之下,建立所述文件对所述第一ACL记录的引用;在从所述目录级ACL中未查找到包含有所述文件的ACL的任何ACL记录的情况下,在所述目录级ACL中新建第二ACL记录,其中,所述第二ACL记录中包含所述文件的ACL,建立所述文件对所述第二ACL记录的引用。
在一些可能实施方式中,所述第一ACL记录中包含ACL索引,所述建立所述文件对所述第一ACL记录的引用包括:将所述第一ACL记录中包含的ACL索引写入所述文件的元数据中。
其中,所述第二ACL记录中包含ACL索引,所述建立所述文件对所述第二ACL记录的引用包括:将所述第二ACL记录中包含的ACL索引写入所述文件的元数据中,其中,所述第一ACL记录中包含的ACL索引不同于所述第二ACL记录中包含的ACL索引。
在一些可能实施方式中,所述处理器还可用于:
通过通信接口接收来自文件客户端的携带有所述文件标识的文件访问请求;从所述文件的元数据中读取ACL索引;从所述目录级ACL中查找包含所述ACL索引的ACL记录;在从所述目录级ACL中查找到了包含所述ACL索引的第一ACL记录的情况下,利用所述第一ACL记录包含的所述文件的ACL对所述访问请求进行访问控制。
在一些可能实施方式中,所述处理器还可用于:通过通信接口接收来自文件客户端的第二文件ACL设置请求,所述第二文件ACL设置请求携带有所述文件标识,所述第二ACL设置请求还携带有所述文件的更新ACL;从所述目录级ACL之中查找包含所述文件的更新ACL的ACL记录。
在从所述目录级ACL中查找到了包含所述文件的更新ACL的第三ACL记录的情况之下,将所述文件当前对其他ACL记录的引用,替换为所述文件对所述第三ACL记录的引用。
在从所述目录级ACL中未查找到包含所述文件的更新ACL的任何ACL记录的情况之下,在所述目录级ACL中新建第四ACL记录,其中,所述第四ACL记录中包含有所述文件的更新ACL,将所述文件当前对其他ACL记录的引用,替换为所述文件对所述第四ACL记录的引用。
本申请实施例的第四方面提供一种通信系统,包括:通信连接的文件客户端和文件服务器,其中,所述文件服务器为本发明实施例提供的任意一种文件服务器。
此外,本申请实施例第五方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储了程序代码。所述程序代码包括用于执行第一方面或第二方面的方法的部分或全部步骤的指令。
附图说明
图1-A为本申请实施例举例的一种网络架构的示意图;
图1-B为本申请实施例举例的一种文件ACL的组织形式的示意图;
图1-C为本申请实施例举例的一种目录级ACL的组织形式的示意图;
图1-D为本申请实施例举例的另一种目录级ACL的组织形式的示意图;
图1-E为本申请实施例举例的一种文件引用所属父目录的目录级ACL之中ACL记录的形式的示意图;
图1-F为本申请实施例举例的另一种文件引用所属父目录的目录级ACL之中ACL记录的形式的示意图;
图2为本申请实施例提供的一种文件ACL管理方法的流程示意图;
图3为本申请实施例提供的一种文件访问方法的流程示意图;
图4为本申请实施例提供的一种文件ACL获取方法的流程示意图;
图5为本申请实施例提供的另一种文件ACL管理方法的流程示意图;
图6为本申请实施例提供的一种文件硬链接创建方法的流程示意图;
图7为本申请实施例提供的一种文件迁移管理方法的流程示意图;
图8为本申请实施例提供的另一种文件迁移管理方法的流程示意图;
图9为本申请实施例提供的另一种文件ACL管理方法的流程示意图;
图10为本申请实施例提供的一种文件服务器的示意图;
图11为本申请实施例提供的另一种文件服务器的示意图;
图12为本申请实施例提供的一种通信系统的示意图。
具体实施方式
本申请说明书、权利要求书和附图中出现的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,术语“第一”、“第二”和“第三”等是用于区别不同的对象,而并非用于描述特定的顺序。
下面首先提供一种网络架构,参见图1-A,图1-A为本申请实施例举例的一种网络架构的示意图,若干个文件客户端(如NAS Client)可通过网络与文件服务器(如NASServer)连接。文件服务器可包括磁盘阵列等。文件服务器为客户端(如NAS Client)提供文件系统的数据访问服务。
可以理解的是,本申请的实施例的文件客户端的产品形态例如可以为平板电脑、笔记本电脑、移动互联网设备、掌上电脑、台式电脑、手机或者其他产品形态的文件客户端。
本申请各实施例的技术方案例如可基于图1-A所示网络架构或其变形架构来具体实施。
参见图1-B,图1-B举例示出了一种文件的ACL的组织形式,文件的ACL包括若干项ACE,其中,每项ACE可以包含控制类型(type)、权限(mask)和用户标识(user id)等内容。其中,控制类型包含允许(allowed)或拒绝(denied)等等。用户标识(user id)表示某一用户或某类用户。权限(mask)表示相应用户的访问权限,一般可采用掩码方式表示。
文件的元数据可包括文件的标准属性数据和扩展属性数据。文件的标准属性数据可描述文件大小和文件修改时间等标准属性,文件的扩展属性数据可包括文件的ACL等。
目录的元数据可包括目录的标准属性数据和扩展属性数据,目录的标准属性数据可描述目录大小和目录修改时间等标准属性,目录的扩展属性数据可包括目录的目录级ACL等。
下面再对目录级ACL的组织形式进行举例。
参见图1-C,图1-C本申请实施例举例示出的一种目录的目录级ACL的组织形式,目录级ACL可包括若干条ACL记录,其中,每条ACL记录包含ACL索引(Index)和文件ACL。具体的,每条ACL记录可包含用于记录ACL索引的字段(例如可称“索引字段”),还包含用于记录文件ACL的字段(例如可称“ACL_Xattr字段”)。可以理解,同一个目录级ACL中的不同ACL记录包含的ACL索引互不相同,因此,通过不同的ACL索引可以索引到不同的ACL记录。
参见图1-D,图1-D本申请实施例举例示出的另一种目录的目录级ACL的组织形式,目录级ACL可包括若干条ACL记录,其中,每条ACL记录包含ACL索引(Index)、文件ACL和文件ACL的指纹。具体的,每条ACL记录包含用于记录ACL索引的字段(可称“索引字段”),还包含用于记录文件ACL的字段(可称“ACL_Xattr字段”),还包含用于记录文件ACL的指纹的字段(可称“指纹字段”)。
可以理解,父目录的目录级ACL中的ACL记录由于只允许被相应目录下的文件引用,因此,与之存在引用关系的文件的数量通常相对较少,因此目录粒度的ACL所包含的ACL记录,比传统的全局ACL所包含的ACL记录相对更少,因此遍历单个目录级ACL所需时间也会大大缩短,这就有利于极大提升业务处理效率和客户体验。
其中,所谓“ACL记录被文件引用”,表示ACL记录包含的ACL索引被写入文件的元数据中。当某个父目录的目录级ACL中的某条ACL记录包含的ACL索引,被写入到所述父目录下的至少1个文件的元数据中,那么就表示这条ACL记录被所述至少1个文件引用。当父目录的目录级ACL中的某条ACL记录包含的ACL索引,未被写入到所述父目录下的任意1个文件的元数据中,那就表示这条ACL记录未被所述父目录下的任意1个文件引用,以此类推。
下面通过相关流程来对本申请实施例的一些方案进行具体描述。
参见图2,图2为本申请实施例提供的一种文件ACL管理方法的流程示意图。其中,如图2举例所示,本申请实施例提供的一种文件ACL管理方法可包括:
201、例如当需要对文件设置ACL,文件客户端向文件服务器发送第一文件ACL设置请求。
所述第一文件ACL设置请求携带用户标识(user id)和文件标识。用户标识表示某一用户或某类用户。文件标识用于表示某一文件。所述文件第一文件ACL设置请求还携带所述文件标识所表示的文件的ACL等等。
202、所述文件服务器接收来自所述文件客户端的所述第一文件ACL设置请求。所述文件服务器从所述文件所属父目录的目录级ACL之中查找包含所述文件的ACL的ACL记录。
举例来说,在所述文件所属父目录的目录级ACL所包括的若干条ACL记录中,与所述文件的ACL匹配的ACL记录包含所述文件的ACL,与所述文件的ACL不匹配的ACL记录中不包含所述文件的ACL。
进一步的,在所述目录级ACL包括的ACL记录中还包含ACL指纹的情况下,那么,可先计算所述文件的ACL的指纹(FP,FingerPrint)。从所述文件所属父目录的目录级ACL之中查找包含所述文件的ACL的ACL记录可以包括:从所述目录级ACL之中查找包含有所述文件的ACL的指纹的ACL记录。其中,所述目录级ACL之中包含所述指纹的ACL记录中包含所述文件的ACL。而所述目录级ACL中不包含所述指纹的ACL记录中不包含所述文件的ACL。
ACL指纹的计算可以采用例如MD5算法/SHA1算法等等基于摘要的加密算法,这些加密算法可把数十KB大小的ACL映射为例如8字节或12字节的ACL指纹。实践发现,ACL指纹相对于ACL本身更小,指纹大小通常在十几个字节左右,而ACL本身则可达到数十KB,因此利用ACL指纹来搜索查找有利于降低比较开销。
203、在从所述目录级ACL中查找到了包含所述文件的ACL的第一ACL记录的情况之下,文件服务器建立所述文件对第一ACL记录的引用。所述文件服务器例如可通过将所述第一ACL记录中包含的ACL索引写入所述文件的元数据中,来建立所述文件对第一ACL记录的引用。
204、在从所述目录级ACL之中未查找到包含所述文件的ACL的任何ACL记录的情况下,所述文件服务器在所述目录级ACL之中新建第二ACL记录。其中,所述第二ACL记录中包含ACL索引和所述文件的ACL。所述文件服务器建立所述文件对第二ACL记录的引用。所述文件服务器例如可通过将所述第二ACL记录中包含的ACL索引写入到所述文件的元数据中,来建立所述文件对第二ACL记录的引用。
205、文件服务器向所述文件客户端发送用于响应所述第一文件ACL设置请求的第一文件ACL设置响应。
相应的,所述文件客户端接收所述文件服务器发送的用于响应所述第一文件ACL设置请求的第一文件ACL设置响应。
可以理解,上述技术方案中,在接收到来自文件客户端的第一文件ACL设置请求之后,文件服务器从文件所属父目录的目录级ACL之中查找包含所述文件的ACL的ACL记录,在从所述目录级ACL中查找到了包含所述文件的ACL的第一ACL记录的情况之下,文件服务器将所述第一ACL记录中包含的ACL索引写入所述文件的元数据中,由于这种情况下不再新建相应的ACL记录,这样在一定程度上实现了单目录下的文件ACL去重,当同一目录下的不同文件的ACL相同时,可只在相应父目录的目录级ACL中保留一条相应ACL记录,这些ACL相同的不同文件可通过ACL索引来从目录级ACL中找到这条相应ACL记录,进而实现这些不同文件的相应ACL的引用。相比于传统的基于全局ACL的去重访问机制,由于目录级ACL包含的ACL记录的数量相对会少了很多,因此本申请实施例的这种基于目录级的文件ACL去重访问机制,有利于极大的提升文件ACL的去重/访问效率。
进一步的,在极端情况下,若同一父目录下每个文件的ACL都不相同(即无法进行文件ACL的去重),或者,若同一父目录下的绝大部分文件的ACL都不相同(即很难进行文件ACL的去重),这种情况下,文件的ACL都记录在父目录的ACL表中也可能造成父目录的目录级ACL较大。这种情况下可设置目录级ACL的最大ACL记录数阈值,当目录级ACL的ACL记录数量超过该阈值后,各个文件可设置独立的ACL,即可以不再按照上述举例的流程进行文件ACL去重。
此外,当某文件被删除时,这个文件的文件元数据也被删除,因此文件元数据中包含的ACL_Index也就被删除了,而这时候可以暂时不修改相应父目录的目录级ACL。而当父目录被删除时,也就意味着这个父目录所包含的所有文件和子目录也都被删除,因此这个父目录的目录级ACL表也就可被同时或稍后释放了。
参见图3,图3为本申请的一个实施例提供的一种文件访问方法的流程示意图。可以理解,图3所示的文件访问方法的相关步骤可在图2所示文件ACL管理方法的相关步骤之后执行。
其中,如图3举例所示,本申请的一个实施例提供的一种文件访问方法可包括:
301、当需要对文件进行访问时,文件客户端向文件服务器发送文件访问请求。
所述文件访问请求携带文件标识(这个文件标识所表示的文件为请求访问的文件)和用户标识。所述文件访问请求具体可为文件读请求、文件写请求或文件执行请求等。
302、文件服务器接收来自文件客户端的所述文件访问请求。所述文件服务器从所述文件标识所表示的文件的元数据中读取ACL索引(ACL索引可用于索引ACL记录)。
303、所述文件服务器从所述目录级ACL中查找包含所述ACL索引的ACL记录。
304、在从所述目录级ACL中查找到了包含所述ACL索引的第一ACL记录的情况下,所述文件服务器利用所述第一ACL记录包含的所述文件的ACL对所述文件访问请求进行访问控制。
具体的,当所述文件的ACL指示所述用户标识所表示的用户无权访问所述文件(例如用户无权读所述文件、用户无权写所述文件和/或用户无权执行所述文件),所述文件服务器可拒绝执行文件访问请求。又例如,当所述文件的ACL指示所述用户标识所表示的用户有权访问所述文件(例如用户有权读所述文件、用户有权写所述文件和/或用户有权执行所述文件),所述文件服务器则可执行所述文件访问请求。
此外,在从所述目录级ACL中未查找到了包含所述ACL索引的任何ACL记录的情况下,所述文件服务器例如可按照默认方式执行或者拒绝执行所述文件访问请求。
305、所述文件服务器向所述文件客户端发送用于响应所述文件访问请求的文件访问响应。其中,所述文件访问响应可指示出所述文件访问请求的执行结果。
相应的,所述文件客户端接收所述文件服务器发送的用于响应所述文件访问请求的文件访问响应。
可以理解,上述技术方案中,在接收到了来自文件客户端的文件访问请求之后,文件服务器从文件标识所表示的文件的元数据中读取ACL索引,从目录级ACL中查找包含所述ACL索引的ACL记录,在从目录级ACL中查找到了包含ACL索引的第一ACL记录的情况下,文件服务器利用第一ACL记录包含的文件的ACL对文件访问请求进行访问控制。相比于传统的基于全局ACL来访问引用文件ACL的机制,由于目录级ACL包含的ACL记录的数量相对少很多,因此本申请实施例的这种基于目录级ACL来访问引用文件ACL的机制,有利于极大的提升文件ACL的引用访问效率。
参见图4,图4为本申请的一个实施例提供的一种文件ACL获取方法的流程示意图。可以理解,图4所示的文件ACL获取方法的相关步骤可在图2所示文件ACL管理方法的相关步骤之后执行。
其中,如图4举例所示,本申请的一个实施例提供的一种文件ACL获取方法可包括:
401、当需要获取文件的文件ACL时,文件客户端向文件服务器发送文件ACL获取请求。所述文件ACL获取请求例如可携带文件标识和用户标识等等参数。
402、所述文件服务器接收来自文件客户端的文件ACL获取请求。所述文件服务器从所述文件标识所表示的文件的元数据之中读取ACL索引(ACL索引可用于索引目录级ACL中的ACL记录)。
403、所述文件服务器从所述文件所属父目录的目录级ACL之中查找包含有所述ACL索引的ACL记录。
404、在从所述目录级ACL之中查找了到包含有所述ACL索引的第一ACL记录的情况之下,所述文件服务器向所述文件客户端发送用于响应所述文件ACL获取请求的文件ACL获取响应。
其中,所述文件ACL获取响应携带有所述第一ACL记录中包含的所述文件的ACL。
此外,在从所述目录级ACL中未查找到了包含所述ACL索引的任何ACL记录的情况下,或者在从文件的元数据之中未读取ACL索引也未读取到ACL的情况下,所述文件服务器向所述文件客户端发送用于响应所述文件ACL获取请求的文件ACL获取响应,在此情况下,这个文件ACL获取响应可指示出文件ACL获取失败。
相应的,所述文件客户端接收所述文件服务器发送的用于响应文件ACL获取请求的文件ACL获取响应。
可以理解,上述技术方案中,接收到来自文件客户端的文件ACL获取请求之后,文件服务器从这个文件ACL获取请求携带的文件标识所表示的文件的元数据中读取ACL索引,从相应目录级ACL中查找包含所述ACL索引的ACL记录,在从这个目录级ACL中查找到了包含ACL索引的第一ACL记录的情况下,文件服务器向所述文件客户端发送携带有所述第一ACL记录中包含的文件ACL的文件ACL获取响应。相比于传统的基于全局ACL来获取文件ACL的机制,由于目录级ACL包含的ACL记录的数量相对很少,因此本申请实施例的这种基于目录级ACL来获取文件ACL的机制,有利于极大的提升文件ACL的获取效率。
参见图5,图5为本申请另一实施例提供的一种文件ACL管理方法的流程示意图。可以理解,图5所示的文件ACL管理方法的相关步骤可在图2所示文件ACL管理方法的相关步骤之后执行。
其中,如图5举例所示,本申请另一实施例提供的一种文件ACL管理方法可包括:
501、当需要更新文件的文件ACL时,文件客户端向文件服务器发送第二文件ACL设置请求。其中,所述第二文件ACL设置请求携带用户标识和文件标识。所述文件第二文件ACL设置请求还携带所述文件标识所表示的文件的更新ACL等等。
502、所述文件服务器接收来自所述文件客户端的所述第二文件ACL设置请求。所述文件服务器从所述文件所属父目录的目录级ACL之中查找包含所述文件的更新ACL的ACL记录。
503、在从所述目录级ACL中查找到了包含所述文件的更新ACL的第三ACL记录的情况之下,所述文件服务器利用所述第三ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
504、在从所述目录级ACL中未查找到包含所述文件的更新ACL的任何ACL记录的情况下,所述文件服务器在所述目录级ACL之中新建第四ACL记录。所述第四ACL记录中包含ACL索引和所述文件的更新ACL,所述文件服务器利用所述第四ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
505、文件服务器向所述文件客户端发送用于响应所述第二文件ACL设置请求的第二文件ACL设置响应。
相应的,所述文件客户端接收所述文件服务器发送的用于响应所述第二文件ACL设置请求的第二文件ACL设置响应。
可以理解,上述技术方案中,在接收到来自文件客户端的第二文件ACL设置请求之后,文件服务器从文件所属父目录的目录级ACL之中查找包含所述文件的更新ACL的ACL记录,在从所述目录级ACL中查找到了包含所述文件的更新ACL的第三ACL记录的情况之下,文件服务器将所述第三ACL记录中包含的ACL索引写入所述文件的元数据中,由于这种情况下不再新建相应的ACL记录,这样在一定程度上实现了单目录下的文件ACL去重,当同一目录下的不同文件的ACL相同时,可只在相应父目录的目录级ACL中保留一条相应ACL记录,这些ACL相同的不同文件可通过ACL索引来从目录级ACL中找到这条相应ACL记录,进而可以实现这些不同文件的相应ACL的引用。相比于传统的基于全局ACL的去重访问机制,由于目录级ACL包含的ACL记录的数量相对会少了很多,因此本申请实施例的这种基于目录级的文件ACL去重机制,有利于极大的提升文件ACL的去重效率。
参见图6,图6为本申请一实施例提供的一种文件硬链接创建方法的流程示意图。可以理解,图6所示的文件硬链接创建方法的相关步骤可在图2所示文件ACL管理方法的相关步骤之后执行。
其中,如图6举例所示,本申请一实施例提供的一种文件硬链接创建方法可包括:
601、当需要为某文件创建硬链接时,文件客户端向文件服务器发送硬链接创建请求。所述硬链接创建请求携带用户标识和文件标识。所述文件标识所表示的文件为需要创建硬链接的文件。
602、文件服务器接收来自文件客户端的所述硬链接创建请求。所述文件服务器从所述文件标识所表示的文件的元数据中读取ACL索引(ACL索引可用于索引目录级ACL中的ACL记录)。
603、所述文件服务器从所述文件所属父目录的目录级ACL之中查找包含有读取到的所述ACL索引的ACL记录。
604、在从所述目录级ACL之中查找到了包含有读取到的所述ACL索引的第一ACL记录的情况下,所述文件服务器将所述第一ACL记录中包含的所述文件的ACL写入所述文件的元数据中,删除所述文件的元数据中已有的ACL索引。
605、所述文件服务器创建所述文件的硬链接。
606、所述文件服务器向文件客户端发送用于响应所述硬链接创建请求的硬链接创建响应。
相应的,所述文件客户端接收所述文件服务器发送的用于响应所述硬链接创建请求的硬链接创建响应。
可以理解,上述技术方案中,接收到了来自文件客户端的硬链接创建请求之后,文件服务器从这个硬链接创建请求携带的文件标识所表示的文件的元数据中读取ACL索引,从相应的目录级ACL中查找包含所述ACL索引的ACL记录,在从这个目录级ACL中查找到了包含ACL索引的第一ACL记录的情况下,文件服务器将所述第一ACL记录中包含的所述文件的ACL写入所述文件的元数据中,删除所述文件的元数据中已有的ACL索引。相比于传统的基于全局ACL来获取文件ACL的机制,由于目录级ACL包含的ACL记录的数量相对很少,因此,本申请实施例的这种基于目录级ACL来获取文件ACL的机制,有利于极大的提升文件ACL的获取效率,进而极大的提升硬链接创建的效率。
参见图7,图7为本申请一实施例提供的一种文件迁移管理方法的流程示意图。可以理解,图7所示的文件迁移管理方法的相关步骤可在图2所示文件ACL管理方法的相关步骤之后执行。
其中,如图7举例所示,本申请一实施例提供的一种文件迁移管理方法可包括:
701、当需要对文件的进行目录迁移时,文件客户端向文件服务器发送文件迁移请求,其中,所述文件迁移请求携带有目标父目录的目录标识和所述文件标识。
其中,目标父目录为所述文件将要迁往的父目录。而所述文件当前所属的父目录可称源父目录。
702、所述文件服务器接收来自文件客户端的携带有目标父目录的目录标识和所述文件标识的文件迁移请求,将所述文件标识所表示的文件从其当前所属父目录迁移到目标父目录。
703、在将所述文件从其当前所属父目录迁移到目标父目录之后,所述文件服务器从所述文件的元数据中读取ACL索引。所述文件服务器从源父目录的目录级ACL之中查找包含所述ACL索引的ACL记录。
704、在从所述目录级ACL之中查找到包含所述ACL索引的所述第一ACL记录的情况下,所述文件服务器从查找到的所述第一ACL记录中读取ACL指纹。
705、所述文件服务器从所述目标父目录的目录级ACL中查找包含读取到的所述ACL指纹的ACL记录。
706、在从所述目标父目录的目录级ACL中查找到了包含读取到的所述ACL指纹的第五ACL记录的情况下,所述文件服务器利用所述第五ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
707、在从所述目标父目录的目录级ACL之中未查找到包含有读取到的所述ACL指纹的任何ACL记录的情况之下,所述文件服务器在所述目标父目录的目录级ACL中新建第六ACL记录。其中,所述第六ACL记录中包含有所述第一ACL记录中包含的所述文件的ACL,所述第六ACL记录中还包含有ACL索引。
708、所述文件服务器利用所述第六ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
709、文件服务器向文件客户端发送用于相应所述文件迁移请求的所述文件响应。相应的,文件客户端可接收文件服务器发送的用于相应所述文件迁移请求的所述文件响应。
参加图1-E,图1-E为本申请实施例举例的一种文件引用所属父目录的目录级ACL中ACL记录的形式的示意图。图1-E举例所示,文件f1、f2和f3归属于相同父目录Dir1,文件f4、f5、f6和f7归属于相同父目录Dir2,父目录Dir1和父目录Dir1归属于父目录Dir3。其中,文件f1和f2引用父目录Dir1的目录级ACL中的相同ACL记录(ACL索引为1001),例如文件f1和f2的元数据中都被写入了ACL索引1001。文件f3引用父目录Dir1的目录级ACL中的ACL记录1003,例如文件f3的元数据中被写入了ACL索引1003。文件f4和f5引用父目录Dir2的目录级ACL中的相同ACL记录,例如文件f4和f5的元数据中都被写入了ACL索引1001。其中,文件f6引用父目录Dir2的目录级ACL中的ACL记录1002,例如文件f6的元数据中被写入了ACL索引1002。文件f7引用父目录Dir2的目录级ACL中的ACL记录1003,例如文件f7的元数据中都包含ACL索引1003。
假设图1-E举例示出的是图1-E迁移前的情况,假设之后,文件f6从父目录Dir2迁移到了父目录Dir1,那么相关文件对ACL记录的引用关系可能从图1-E举例情况变化为如图1-F所示。具体的,由此前的文件f6引用目录Dir2的目录级ACL中的ACL记录1002,变化为文件f6引用目录Dir1的目录级ACL中的ACL记录1004。其他文件迁移场景可以以此类推。
可以理解,上述技术方案中,在接收到了来自文件客户端的文件迁移请求之后,文件服务器将文件从其当前所属父目录迁移到目标父目录,在从源目录的目录级ACL中读取到相应ACL指纹后,从目标父目录的目录级ACL中查找包含读取到的ACL指纹的ACL记录,在从所述目标父目录的目录级ACL中查找到了包含读取到的所述ACL指纹的第五ACL记录的情况下,所述文件服务器利用所述第五ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引,由于这种情况下不再在目标父目录的目录级ACL新建相应ACL记录,这样在一定程度上实现了单目录下的文件ACL去重,当同一目录下的不同文件的ACL相同时,可只在相应父目录的目录级ACL中保留一条相应ACL记录,这些ACL相同的不同文件可通过ACL索引来从目录级ACL中找到这条相应ACL记录,进而可实现这些不同文件的相应ACL的引用。相比于传统的基于全局ACL的去重访问机制,由于目录级ACL包含的ACL记录的数量相对会少了很多,因此本申请实施例的这种基于目录级的文件ACL去重机制,有利于极大的提升文件ACL的去重效率。
参见图8,图8为本申请另一实施例提供的一种文件迁移管理方法的流程示意图。可以理解,图8所示的文件迁移管理方法的相关步骤可在图2所示文件ACL管理方法的相关步骤之后执行。
其中,如图8举例所示,本申请另一实施例提供的一种文件迁移管理方法可包括:
801、当需要对文件的进行目录迁移时,文件客户端向文件服务器发送文件迁移请求,其中,所述文件迁移请求携带有目标父目录的目录标识和所述文件标识。
802、所述文件服务器接收来自文件客户端的携带有目标父目录的目录标识和所述文件标识的文件迁移请求,将所述文件标识所表示的文件从其当前所属父目录迁移到目标父目录。
803、在将所述文件从其当前所属父目录迁移到目标父目录之后,所述文件服务器从所述文件的元数据中读取ACL索引。所述文件服务器从源父目录的目录级ACL之中查找包含所述ACL索引的ACL记录。
804、在从所述目录级ACL之中查找到包含所述ACL索引的所述第一ACL记录的情况下,所述文件服务器从查找到的所述第一ACL记录中读取文件的ACL。
805、所述文件服务器从所述目标父目录的目录级ACL中查找包含所述文件的ACL的ACL记录。
806、在从所述目标父目录的目录级ACL中查找到了包含所述文件的ACL的第五ACL记录的情况下,所述文件服务器利用所述第五ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
807、在从所述目标父目录的目录级ACL之中未查找到包含所述文件的ACL的任何ACL记录的情况之下,所述文件服务器在所述目标父目录的目录级ACL中新建第六ACL记录。其中,所述第六ACL记录中包含有所述第一ACL记录中包含的所述文件的文件ACL,所述第六ACL记录中还包含有ACL索引。
808、所述文件服务器利用所述第六ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
809、文件服务器向文件客户端发送用于相应所述文件迁移请求的所述文件响应。相应的,文件客户端可接收文件服务器发送的用于相应所述文件迁移请求的所述文件响应。
此外,如果被移动的对象是目录,仍按照传统流程进行目录移动,被移动目录的目录级ACL可不作改变。
可以理解,上述技术方案中,在接收到了来自文件客户端的文件迁移请求之后,文件服务器将文件从其当前所属父目录迁移到目标父目录,在从源目录的目录级ACL中读取到相应文件ACL后,从目标父目录的目录级ACL中查找包含读取到的文件ACL的ACL记录,在从目标父目录的目录级ACL中查找到了包含读取到的所述ACL指纹的第五ACL记录的情况下,所述文件服务器利用所述第五ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引,由于这种情况下不再在目标父目录的目录级ACL新建相应ACL记录,这样在一定程度上实现了单目录下的文件ACL去重,当同一目录下的不同文件的ACL相同时,可只在相应父目录的目录级ACL中保留一条相应ACL记录,这些ACL相同的不同文件可通过ACL索引来从目录级ACL中找到这条相应ACL记录,进而可实现这些不同文件的相应ACL的引用。相比于传统的基于全局ACL的去重访问机制,由于目录级ACL包含的ACL记录的数量相对会少了很多,因此本申请实施例的这种基于目录级的文件ACL去重机制,有利于极大的提升文件ACL的去重效率。
参见图9,图9为本申请一实施例提供的一种文件ACL管理方法的流程示意图。可以理解,图9所示的文件迁移管理方法的相关步骤可在图2所示文件ACL管理方法的相关步骤之前或之后执行。
其中,如图9举例所示,本申请一实施例提供的一种文件ACL管理方法可包括:
901、例如在某个文件的父目录的目录级ACL的清理触发条件满足的情况之下,文件服务器从所述目录级ACL中查找未被所述父目录下的任意文件引用的ACL记录。
所述清理触发条件例如可包括如下条件中的至少1个:目录级ACL的ACL记录的数量达到数量阈值(数量阈值例如可为100、121、150、80、200或其他值)、接收到了目录级ACL清理指令(例如接收到了来自客户端的目录级ACL清理指令)、目录级ACL的清理定时器(清理定时器的定时时长例如可为1分钟、100分钟、200分钟或其他时长)到达。当然清理触发条件并不限于上述举例。
902、所述文件服务器将被所述父目录下的文件引用的ACL记录进行有效标记。具体可以是,在所述目录级ACL中添加有效标记或将有效ACL记录的ACL索引写入到一个链表中。可以理解,通过遍历,未被所述父目录下的任何文件引用的ACL记录可被发现。
903、在从所述目录级ACL中查找到了未被所述父目录下的任意文件引用的X条ACL记录的情况下,所述文件服务器将所述X条ACL记录从所述目录级ACL中释放。
在具体实现中,例如文件系统可提供用户态工具,所述用户态工具可指定目录、指定子树等,表示要清理相应目录的目录级ACL。用户可周期性的或主动运行所述用户态工具对指定目录或子树进行无效ACL记录清理。或者作为一种替代方案,可在文件系统中创建无效ACL后台清理线程。当目录的目录级ACL中ACL记录的数量超过已设置阈值时,可把所述目录提交给ACL后台清理线程,并触发无效ACL后台清理线程运行。无效ACL后台清理线程对所述目录所包含的文件进行遍历,清理不再被文件引用的ACL记录。
可以理解,上述技术方案中,在某个文件的父目录的目录级ACL的清理触发条件满足的情况之下,文件服务器从所述目录级ACL中查找未被所述父目录下的任意文件引用的ACL记录,在从所述目录级ACL中查找到了未被所述父目录下的任意文件引用的X条ACL记录的情况下,文件服务器将所述X条ACL记录从所述目录级ACL中释放。由于引入了目录级ACL中的无效ACL记录的释放机制,这样有利于提升目录级ACL中有效ACL记录的占比,进而有利于提升目录级ACL中的文件ACL的访问效率。
下面还提供用于实施上述方案的相关装置。
参见图10,本申请实施例还提供一种文件服务器1000,可包括:通信单元1010、查找单元1020和处理单元1030。
通信单元1010,用于接收来自文件客户端的第一文件ACL设置请求,所述第一文件ACL设置请求携带有文件标识,所述第一文件ACL设置请求还携带有所述文件标识所表示的文件的ACL。
查找单元1020,用于从所述文件所属父目录的目录级ACL之中查找包含有所述文件的ACL的ACL记录。
处理单元1030,用于在所述查找单元从所述目录级ACL之中查找到了包含有所述文件的ACL的第一ACL记录的情况之下,建立所述文件对所述第一ACL记录的引用;在所述查找单元从所述目录级ACL之中未查找到包含有所述文件的ACL的任何ACL记录的情况之下,在所述目录级ACL之中新建第二ACL记录。其中,所述第二ACL记录中包含所述文件的ACL,建立所述文件对所述第二ACL记录的引用。
在一些可能实施方式中,所述第一ACL记录中包含ACL索引,所述处理单元建立所述文件对所述第一ACL记录的引用可包括:将所述第一ACL记录中包含的ACL索引写入所述文件的元数据中。
在一些可能实施方式中,所述第二ACL记录中包含ACL索引,所述处理单元建立所述文件对所述第二ACL记录的引用包括:将所述第二ACL记录中包含的ACL索引写入所述文件的元数据中。其中,所述第一ACL记录中包含的ACL索引不同于所述第二ACL记录中包含的ACL索引。
在一些可能的实施方式之中,所述文件服务器1000还可以包括:计算单元1040,用于计算所述文件的ACL的指纹。
所述查找单元1020具体用于,还可用于从所述目录级ACL中查找所述文件引用的ACL记录。
在一些可能的实施方式之中,所述通信单元1010还可用于,接收来自文件客户端的携带有所述文件标识的文件访问请求。
所述查找单元1020还可用于从所述目录级ACL中查找所述文件引用的ACL记录。
所述处理单元1030还用于,在所述查找单元从所述目录级ACL中查找到了所述文件引用的第一ACL记录的情况之下,利用所述第一ACL记录包含的所述文件的ACL对所述访问请求进行访问控制。
在一些可能的实施方式之中,所述通信单元1010还可用于接收来自文件客户端的携带所述文件标识的文件ACL获取请求。
查找单元1020还用于还可用于从所述目录级ACL中查找所述文件引用的ACL记录。
所述通信单元1010还用于,在所述查找单元从所述目录级ACL中查找到了所述文件引用的第一ACL记录的情况之下,向所述文件客户端发送用于响应所述文件ACL获取请求的文件ACL获取响应,其中,所述文件ACL获取响应携带有所述第一ACL记录中包含的所述文件的ACL。
在一些可能实施方式中,所述查找单元从所述目录级ACL中查找所述文件引用的ACL记录例如可包括:从所述文件的元数据中读取ACL索引,从所述目录级ACL中查找包含所述ACL索引的ACL记录。其中,所述目录级ACL中包含所述ACL索引的ACL记录为所述文件引用的ACL记录。
在一些可能的实施方式之中,所述通信单元1010还可用于,接收来自文件客户端的第二文件ACL设置请求,其中,所述第二文件ACL设置请求携带有所述文件标识,所述第二ACL设置请求还携带有所述文件的更新ACL。
所述查找单元1020还用于,从所述目录级ACL之中查找包含所述文件的更新ACL的ACL记录。
所述处理单元还用于,在所述查找单元从所述目录级ACL中查找到了包含所述文件的更新ACL的第三ACL记录的情况之下,利用所述第三ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
在所述查找单元从所述目录级ACL中未查找到包含所述文件的更新ACL的任何ACL记录的情况下,在所述目录级ACL中新建第四ACL记录,所述第四ACL记录中包含ACL索引和所述文件的更新ACL,利用所述第四ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
在一些可能的实施方式之中,所述通信单元1010还可用于接收来自文件客户端的携带所述文件标识的硬链接创建请求。
所述查找单元1020还用于从所述目录级ACL中查找所述文件引用的ACL记录。
所述处理单元1030还用于,在所述查找单元从所述目录级ACL中查找到了所述文件引用的第一ACL记录的情况之下,将所述第一ACL记录中包含的所述文件的ACL写入所述文件的元数据中,删除所述文件的元数据中已有的ACL索引;创建所述文件的硬链接。
在一些可能的实施方式之中,所述通信单元1010还可用于接收来自文件客户端的携带有目标父目录的目录标识和所述文件标识的文件迁移请求。
其中,所述处理单元1030还用于将所述文件从所述父目录迁移到所述目标父目录。
所述查找单元1020还用于,从所述文件的元数据中读取ACL索引;从所述目录级ACL之中查找包含所述ACL索引的ACL记录;从所述目录级ACL之中查找到包含所述ACL索引的所述第一ACL记录的情况下,从查找到的所述第一ACL记录中读取ACL指纹;从所述目标父目录的目录级ACL中查找包含读取到的所述ACL指纹的ACL记录。
其中,所述处理单元1030还用于,在所述查找单元1020从所述目标父目录的目录级ACL中查找到了包含读取到的所述ACL指纹的第五ACL记录的情况之下,利用所述第五ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引;在查找单元1020从所述目标父目录的目录级ACL之中未查找到包含有读取到的所述ACL指纹的任何ACL记录的情况之下,在所述目标父目录的目录级ACL中新建第六ACL记录,其中,所述第六ACL记录中包含有所述第一ACL记录中包含的所述文件的ACL,所述第六ACL记录中还包含有ACL索引,利用所述第六ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
在一些可能的实施方式之中,所述通信单元1010还可用于,接收来自文件客户端的携带有目标父目录的目录标识和所述文件标识的文件迁移请求。
其中,所述处理单元1030还用于将所述文件从所述父目录迁移到所述目标父目录。
所述查找单元1020还用于,从所述文件的元数据中读取ACL索引;从所述目录级ACL之中查找包含所述ACL索引的ACL记录;在从所述目录级ACL中查找到的包含所述ACL索引的所述第一ACL记录的情况下,从查找到的所述第一ACL记录中读取所述文件的ACL;从所述目标父目录的目录级ACL中查找包含所述文件的ACL的ACL记录。
所述处理单元1030还用于,在所述查找单元1020从所述目标父目录的目录级ACL中查找到了包含所述文件的ACL的第五ACL记录的情况下,利用所述第五ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引;
其中,所述处理单元1030还用于,在所述查找单元1020从所述目标父目录的目录级ACL之中未查找到包含所述文件的ACL的任何ACL记录的情况之下,在所述目标父目录的目录级ACL中新建第六ACL记录,所述第六ACL记录中包含有所述第一ACL记录中包含的所述文件的ACL,所述第六ACL记录中还包含有ACL索引,利用所述第六ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
在一些可能的实施方式之中,
所述文件服务器还包括:清理单元1050,用于在所述目录级ACL的清理触发条件满足的情况下,从所述目录级ACL中查找未被所述父目录下的任意文件引用的ACL记录,在从所述目录级ACL中查找了未被所述父目录下的任意文件引用的X条ACL记录的情况下,将所述X条ACL记录从所述目录级ACL中释放。
在一些可能的实施方式之中,所述清理触发条件例如可包括如下条件中的至少1个:目录级ACL的ACL记录的数量达到数量阈值、接收到了目录级ACL清理指令、目录级ACL的清理定时器到达。
参见图11,本本申请实施例还提供一种文件服务器1100,可包括:存储部件1110、通信接口1120及与所述存储部件1110和通信接口1120耦合的处理器1130。所述存储部件1110用于存储指令,所述处理器1120用于执行所述指令,其中,所述通信接口1120用于在所述处理器1130的控制下与其他设备进行通信。当所述处理器1130在执行所述指令时可根据所述指令执行本申请上述实施例中的任意一种方法中由文件服务器执行的步骤。
处理器1130还可称中央处理单元(CPU,Central Processing Unit)。存储部件1110可以包括只读存储器和随机存取存储器,并向处理器1130提供指令和数据等。存储部件1110的一部分还可包括非易失性随机存取存储器。具体的应用中文件服务器1100的各组件例如通过总线系统耦合在一起。总线系统除了可包括数据总线之外,还可包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统1140。上述本发明实施例揭示的方法可应用于处理器1130中,或由处理器1130实现。处理器1130可能是一种集成电路芯片,具有信号的处理能力。
在实现过程中,上述方法的各步骤可通过处理器1130中的硬件的集成逻辑电路或者软件形式的指令完成。上述处理器1130可以是通用处理器、数字信号处理器、专用集成电路、现成可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。处理器1130可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等等本领域成熟的存储介质之中。该存储介质位于存储部件1110,例如处理器1130可读取存储部件1110中的信息,结合其硬件完成上述方法的步骤。
举例来说,文件服务器1100可执行上述图2~图9所示实施例中文件服务器对应的方法步骤。
举例来说,所述处理器1130可用于:
通过通信接口1120接收来自文件客户端的第一文件ACL设置请求,所述第一文件ACL设置请求携带有文件标识,所述第一文件ACL设置请求还携带有所述文件标识所表示的文件的ACL。
从所述文件所属父目录的目录级ACL之中查找包含有所述文件的ACL的ACL记录。
在从所述目录级ACL中查找到了包含有所述文件的ACL的第一ACL记录的情况之下,建立所述文件对所述第一ACL记录的引用;在从所述目录级ACL中未查找到包含有所述文件的ACL的任何ACL记录的情况下,在所述目录级ACL中新建第二ACL记录,其中,所述第二ACL记录中包含所述文件的ACL,建立所述文件对所述第二ACL记录的引用。
在一些可能实施方式中,所述第一ACL记录中包含ACL索引,所述处理器1130建立所述文件对所述第一ACL记录的引用包括:将所述第一ACL记录中包含的ACL索引写入所述文件的元数据中。
其中,所述第二ACL记录中包含ACL索引,所述处理器1130建立所述文件对所述第二ACL记录的引用包括:将所述第二ACL记录中包含的ACL索引写入所述文件的元数据中,其中,所述第一ACL记录中包含的ACL索引不同于所述第二ACL记录中包含的ACL索引。
在一些可能实施方式中,所述处理器1130还可用于:
通过通信接口1120接收来自文件客户端的携带有所述文件标识的文件访问请求;从所述文件的元数据中读取ACL索引;从所述目录级ACL中查找包含所述ACL索引的ACL记录;在从所述目录级ACL中查找到了包含所述ACL索引的第一ACL记录的情况下,利用所述第一ACL记录包含的所述文件的ACL对所述访问请求进行访问控制。
在一些可能实施方式中,所述处理器1130还可用于:
通过通信接口1120接收来自文件客户端的第二文件ACL设置请求,所述第二文件ACL设置请求携带有所述文件标识,所述第二ACL设置请求还携带有所述文件的更新ACL;从所述目录级ACL之中查找包含所述文件的更新ACL的ACL记录。
在从所述目录级ACL中查找到了包含所述文件的更新ACL的第三ACL记录的情况之下,将所述文件当前对其他ACL记录的引用,替换为所述文件对所述第三ACL记录的引用。
在从所述目录级ACL中未查找到包含所述文件的更新ACL的任何ACL记录的情况之下,在所述目录级ACL中新建第四ACL记录,其中,所述第四ACL记录中包含有所述文件的更新ACL,将所述文件当前对其他ACL记录的引用,替换为所述文件对所述第四ACL记录的引用。
在一些可能实施方式中,所述处理器1130还可用于:
通过通信接口1120接收来自文件客户端的携带有目标父目录的目录标识和所述文件标识的文件迁移请求,在将所述文件从所述父目录迁移到目标父目录之后,从所述文件的元数据中读取ACL索引;从所述目录级ACL之中查找包含所述ACL索引的ACL记录。
在从所述目录级ACL之中查找到包含所述ACL索引的所述第一ACL记录的情况下,从查找到的所述第一ACL记录中读取ACL指纹;从所述目标父目录的目录级ACL中查找包含读取到的所述ACL指纹的ACL记录。
在从所述目标父目录的目录级ACL中查找到了包含读取到的所述ACL指纹的第五ACL记录的情况下,利用所述第五ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
在从所述目标父目录的目录级ACL之中未查找到包含有读取到的所述ACL指纹的任何ACL记录的情况之下,在所述目标父目录的目录级ACL中新建第六ACL记录,其中,所述第六ACL记录中包含有所述第一ACL记录中包含的所述文件的ACL,所述第六ACL记录中还包含有ACL索引,利用所述第六ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
参见图12,本发明实施例提供一种通信系统,包括:通信连接的文件客户端1210和文件服务器1220,其中,所述文件服务器1220可为本申请上述实施例提供的任意一种文件服务器。文件客户端1210可为本申请上述实施例提供的任意一种文件服务器。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
此外,本申请实施例还一种计算机可读存储介质,所述计算机可读存储介质存储了用于会话消息处理的程序代码。所述程序代码包括用于执行本申请任意一种方法的部分或全部步骤的指令。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可结合或者可以集成到另一个系统,或一些特征可以忽略或不执行。另一点,所显示或讨论的相互之间的间接耦合或者直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例的方案的目的。
另外,在本申请各实施例中的各功能单元可集成在一个处理单元中,也可以是各单元单独物理存在,也可两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,或者也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (16)
1.一种文件访问控制列表ACL管理方法,其特征在于,包括:
接收来自文件客户端的第一文件ACL设置请求,其中,所述第一文件ACL设置请求携带有文件标识,所述第一文件ACL设置请求还携带有所述文件标识所表示的文件的ACL;
从所述文件所属父目录的目录级ACL之中查找包含有所述文件的ACL的ACL记录;
在从所述目录级ACL中查找到了包含有所述文件的ACL的第一ACL记录的情况之下,建立所述文件对所述第一ACL记录的引用;在从所述目录级ACL中未查找到包含有所述文件的ACL的任何ACL记录的情况下,在所述目录级ACL中新建第二ACL记录,其中,所述第二ACL记录中包含所述文件的ACL,建立所述文件对所述第二ACL记录的引用。
2.根据权利要求1所述方法,其特征在于,所述第一ACL记录中包含ACL索引,所述建立所述文件对所述第一ACL记录的引用包括:将所述第一ACL记录中包含的ACL索引写入所述文件的元数据中;
其中,所述第二ACL记录中包含ACL索引,所述建立所述文件对所述第二ACL记录的引用包括:将所述第二ACL记录中包含的ACL索引写入所述文件的元数据中,其中,所述第一ACL记录中包含的ACL索引不同于所述第二ACL记录中包含的ACL索引。
3.根据权利要求2所述的方法,其特征在于,
所述方法还包括:接收来自文件客户端的携带有所述文件标识的文件访问请求;从所述文件的元数据中读取ACL索引;从所述目录级ACL中查找包含所述ACL索引的ACL记录;在从所述目录级ACL中查找到了包含所述ACL索引的第一ACL记录的情况下,利用所述第一ACL记录包含的所述文件的ACL对所述访问请求进行访问控制。
4.根据权利要求1或2所述方法,其特征在于,
所述方法还包括:接收来自文件客户端的第二文件ACL设置请求,所述第二文件ACL设置请求携带有所述文件标识,所述第二ACL设置请求还携带有所述文件的更新ACL;从所述目录级ACL之中查找包含所述文件的更新ACL的ACL记录;
在从所述目录级ACL中查找到了包含所述文件的更新ACL的第三ACL记录的情况之下,将所述文件当前对其他ACL记录的引用,替换为所述文件对所述第三ACL记录的引用;
在从所述目录级ACL中未查找到包含所述文件的更新ACL的任何ACL记录的情况之下,在所述目录级ACL中新建第四ACL记录,其中,所述第四ACL记录中包含有所述文件的更新ACL,将所述文件当前对其他ACL记录的引用,替换为所述文件对所述第四ACL记录的引用。
5.根据权利要求2所述方法,其特征在于,
所述方法还包括:接收来自文件客户端的携带有目标父目录的目录标识和所述文件标识的文件迁移请求,在将所述文件从所述父目录迁移到目标父目录之后,从所述文件的元数据中读取ACL索引;从所述目录级ACL之中查找包含所述ACL索引的ACL记录;
在从所述目录级ACL之中查找到包含所述ACL索引的所述第一ACL记录的情况下,从查找到的所述第一ACL记录中读取ACL指纹;从所述目标父目录的目录级ACL中查找包含读取到的所述ACL指纹的ACL记录;
在从所述目标父目录的目录级ACL中查找到了包含读取到的所述ACL指纹的第五ACL记录的情况下,利用所述第五ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引;
在从所述目标父目录的目录级ACL之中未查找到包含有读取到的所述ACL指纹的任何ACL记录的情况之下,在所述目标父目录的目录级ACL中新建第六ACL记录,其中,所述第六ACL记录中包含有所述第一ACL记录中包含的所述文件的ACL,所述第六ACL记录中还包含有ACL索引,利用所述第六ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
6.根据权利要求2所述方法,其特征在于,
所述方法还包括:接收来自文件客户端的携带有目标父目录的目录标识和所述文件标识的文件迁移请求,在将所述文件从所述父目录迁移到目标父目录之后,从所述文件的元数据中读取ACL索引;从所述目录级ACL之中查找包含所述ACL索引的ACL记录;
在从所述目录级ACL中查找到的包含所述ACL索引的所述第一ACL记录的情况下,从查找到的所述第一ACL记录中读取所述文件的ACL;从所述目标父目录的目录级ACL中查找包含所述文件的ACL的ACL记录;
在从所述目标父目录的目录级ACL中查找到了包含所述文件的ACL的第五ACL记录的情况下,利用所述第五ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引;
在从所述目标父目录的目录级ACL之中未查找到包含所述文件的ACL的任何ACL记录的情况之下,在所述目标父目录的目录级ACL中新建第六ACL记录,其中,所述第六ACL记录中包含有所述第一ACL记录中包含的所述文件的ACL,所述第六ACL记录中还包含有ACL索引,利用所述第六ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
7.根据权利要求1至6任一项所述的方法,其特征在于,
所述方法还包括:计算所述文件的ACL的指纹;
其中,从所述文件所属父目录的目录级ACL之中查找包含有所述文件的ACL的ACL记录包括:从所述目录级ACL之中查找包含有所述文件的ACL的指纹的ACL记录,其中,所述目录级ACL中包含所述指纹的ACL记录中包含所述文件的ACL。
8.一种文件服务器,其特征在于,包括:
通信单元,用于接收来自文件客户端的第一文件ACL设置请求,所述第一文件ACL设置请求携带有文件标识,所述第一文件ACL设置请求还携带有所述文件标识所表示的文件的ACL;
查找单元,用于从所述文件所属父目录的目录级ACL之中查找包含有所述文件的ACL的ACL记录;
处理单元,用于在所述查找单元从所述目录级ACL之中查找到了包含有所述文件的ACL的第一ACL记录的情况之下,建立所述文件对所述第一ACL记录的引用;在所述查找单元从所述目录级ACL之中未查找到包含有所述文件的ACL的任何ACL记录的情况之下,在所述目录级ACL之中新建第二ACL记录,其中,所述第二ACL记录中包含所述文件的ACL,建立所述文件对所述第二ACL记录的引用。
9.根据权利要求8所述文件服务器,其特征在于,
所述第一ACL记录中包含ACL索引,所述处理单元建立所述文件对所述第一ACL记录的引用包括:将所述第一ACL记录中包含的ACL索引写入所述文件的元数据中;
其中,所述第二ACL记录中包含ACL索引,所述处理单元建立所述文件对所述第二ACL记录的引用包括:将所述第二ACL记录中包含的ACL索引写入所述文件的元数据中,其中,所述第一ACL记录中包含的ACL索引不同于所述第二ACL记录中包含的ACL索引。
10.根据权利要求9所述文件服务器,其特征在于,
所述通信单元还用于,接收来自文件客户端的携带有所述文件标识的文件访问请求;
所述查找单元还用于从所述文件的元数据中读取ACL索引;从所述目录级ACL中查找包含所述ACL索引的ACL记录;
所述处理单元还用于,在所述查找单元从所述目录级ACL中查找到了包含所述ACL索引的第一ACL记录的情况下,利用所述第一ACL记录包含的所述文件的ACL对所述访问请求进行访问控制。
11.根据权利要求8或9所述文件服务器,其特征在于,所述通信单元还用于,接收来自文件客户端的第二文件ACL设置请求,其中,所述第二文件ACL设置请求携带有所述文件标识,所述第二ACL设置请求还携带有所述文件的更新ACL;
所述查找单元还用于,从所述目录级ACL之中查找包含所述文件的更新ACL的ACL记录;
所述处理单元还用于,在所述查找单元从所述目录级ACL中查找到了包含所述文件的更新ACL的第三ACL记录的情况之下,将所述文件当前对其他ACL记录的引用,替换为所述文件对所述第三ACL记录的引用;在所述查找单元从所述目录级ACL中未查找到包含所述文件的更新ACL的任何ACL记录的情况之下,在所述目录级ACL中新建第四ACL记录,其中,所述第四ACL记录中包含有所述文件的更新ACL,将所述文件当前对其他ACL记录的引用,替换为所述文件对所述第四ACL记录的引用。
12.根据权利要求9所述文件服务器,其特征在于,
所述通信单元还用于,接收来自文件客户端的携带有目标父目录的目录标识和所述文件标识的文件迁移请求;
所述处理单元还用于将所述文件从所述父目录迁移到所述目标父目录;
所述查找单元还用于,从所述文件的元数据中读取ACL索引;从所述目录级ACL之中查找包含所述ACL索引的ACL记录;从所述目录级ACL之中查找到包含所述ACL索引的所述第一ACL记录的情况下,从查找到的所述第一ACL记录中读取ACL指纹;从所述目标父目录的目录级ACL中查找包含读取到的所述ACL指纹的ACL记录;
所述处理单元还用于,在所述查找单元从所述目标父目录的目录级ACL中查找到了包含读取到的所述ACL指纹的第五ACL记录的情况之下,利用所述第五ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引;在所述查找单元从所述目标父目录的目录级ACL之中未查找到包含有读取到的所述ACL指纹的任何ACL记录的情况之下,在所述目标父目录的目录级ACL中新建第六ACL记录,其中,所述第六ACL记录中包含有所述第一ACL记录中包含的所述文件的ACL,所述第六ACL记录中还包含有ACL索引,利用所述第六ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
13.根据权利要求9所述文件服务器,其特征在于,
所述通信单元还用于,接收来自文件客户端的携带有目标父目录的目录标识和所述文件标识的文件迁移请求,
所述处理单元还用于将所述文件从所述父目录迁移到所述目标父目录;
所述查找单元还用于,从所述文件的元数据中读取ACL索引;从所述目录级ACL之中查找包含所述ACL索引的ACL记录;在从所述目录级ACL中查找到的包含所述ACL索引的所述第一ACL记录的情况下,从查找到的所述第一ACL记录中读取所述文件的ACL;从所述目标父目录的目录级ACL中查找包含所述文件的ACL的ACL记录;
所述处理单元还用于,在所述查找单元从所述目标父目录的目录级ACL中查找到了包含所述文件的ACL的第五ACL记录的情况下,利用所述第五ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引;
所述处理单元还用于,在所述查找单元从所述目标父目录的目录级ACL之中未查找到包含所述文件的ACL的任何ACL记录的情况之下,在所述目标父目录的目录级ACL中新建第六ACL记录,所述第六ACL记录中包含有所述第一ACL记录中包含的所述文件的ACL,所述第六ACL记录中还包含有ACL索引,利用所述第六ACL记录中包含的ACL索引替换掉所述文件的元数据中已有的ACL索引。
14.根据权利要求8至13任意一项所述的文件服务器,其特征在于,
所述文件服务器还包括:
计算单元,用于计算所述文件的ACL的指纹;
所述查找单元从所述文件所属父目录的目录级ACL之中查找包含有所述文件的ACL的ACL记录包括:从所述目录级ACL之中查找包含有所述文件的ACL的指纹的ACL记录,所述目录级ACL中包含所述指纹的ACL记录中包含所述文件的ACL。
15.一种文件服务器,其特征在于,包括:
相互耦合的处理器、通信接口和存储部件;其中,所述处理器用于执行权利要求1至7任一项所述方法。
16.一种通信系统,其特征在于,包括:
通信连接的文件客户端和文件服务器,其中,所述文件服务器为如权利要求8~15任一项所述的文件服务器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611247427.7A CN106682186B (zh) | 2016-12-29 | 2016-12-29 | 文件访问控制列表管理方法和相关装置和系统 |
PCT/CN2017/118146 WO2018121454A1 (zh) | 2016-12-29 | 2017-12-23 | 文件访问控制列表管理方法和相关装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611247427.7A CN106682186B (zh) | 2016-12-29 | 2016-12-29 | 文件访问控制列表管理方法和相关装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106682186A true CN106682186A (zh) | 2017-05-17 |
CN106682186B CN106682186B (zh) | 2020-06-16 |
Family
ID=58873079
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611247427.7A Active CN106682186B (zh) | 2016-12-29 | 2016-12-29 | 文件访问控制列表管理方法和相关装置和系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106682186B (zh) |
WO (1) | WO2018121454A1 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107403105A (zh) * | 2017-06-30 | 2017-11-28 | 华为技术有限公司 | 一种文件系统的权限设置方法及装置 |
CN107688753A (zh) * | 2017-09-01 | 2018-02-13 | 郑州云海信息技术有限公司 | 一种acl权限控制的方法与装置 |
WO2018121454A1 (zh) * | 2016-12-29 | 2018-07-05 | 华为技术有限公司 | 文件访问控制列表管理方法和相关装置和系统 |
CN108989300A (zh) * | 2018-07-03 | 2018-12-11 | 郑州云海信息技术有限公司 | 一种存储环境ip权限控制方法与系统 |
CN109062967A (zh) * | 2018-06-28 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种分布式存储acl快速响应权限查询的方法 |
CN110413215A (zh) * | 2018-04-28 | 2019-11-05 | 伊姆西Ip控股有限责任公司 | 用于获取访问权限的方法、设备和计算机程序产品 |
CN110795596A (zh) * | 2019-11-07 | 2020-02-14 | 北京首钢自动化信息技术有限公司 | 一种客户端的信息反馈方法及装置 |
CN110837647A (zh) * | 2018-08-16 | 2020-02-25 | 迈普通信技术股份有限公司 | 管理访问控制列表的方法及装置 |
CN114244781A (zh) * | 2021-12-20 | 2022-03-25 | 苏州盛科通信股份有限公司 | 一种基于dpdk的报文去重处理方法和装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113468112B (zh) * | 2021-09-02 | 2021-12-07 | 武汉华工安鼎信息技术有限责任公司 | 文件管理方法、装置、存储介质及计算机设备 |
CN114362991B (zh) * | 2021-11-22 | 2024-04-16 | 北京威努特技术有限公司 | 一种acl访问控制列表规则过滤去重的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6438549B1 (en) * | 1998-12-03 | 2002-08-20 | International Business Machines Corporation | Method for storing sparse hierarchical data in a relational database |
CN102129539A (zh) * | 2011-03-11 | 2011-07-20 | 清华大学 | 基于访问控制列表的数据资源权限管理方法 |
CN103064957A (zh) * | 2012-12-28 | 2013-04-24 | 华为技术有限公司 | 实现acl的方法及客户端 |
CN103744961A (zh) * | 2014-01-06 | 2014-04-23 | 清华大学 | 用可重构的文件系统目录树提高非易失性存储寿命的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101674334B (zh) * | 2009-09-30 | 2012-05-23 | 华中科技大学 | 一种网络存储设备的访问控制方法 |
CN106682186B (zh) * | 2016-12-29 | 2020-06-16 | 华为技术有限公司 | 文件访问控制列表管理方法和相关装置和系统 |
-
2016
- 2016-12-29 CN CN201611247427.7A patent/CN106682186B/zh active Active
-
2017
- 2017-12-23 WO PCT/CN2017/118146 patent/WO2018121454A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6438549B1 (en) * | 1998-12-03 | 2002-08-20 | International Business Machines Corporation | Method for storing sparse hierarchical data in a relational database |
CN102129539A (zh) * | 2011-03-11 | 2011-07-20 | 清华大学 | 基于访问控制列表的数据资源权限管理方法 |
CN103064957A (zh) * | 2012-12-28 | 2013-04-24 | 华为技术有限公司 | 实现acl的方法及客户端 |
CN103744961A (zh) * | 2014-01-06 | 2014-04-23 | 清华大学 | 用可重构的文件系统目录树提高非易失性存储寿命的方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018121454A1 (zh) * | 2016-12-29 | 2018-07-05 | 华为技术有限公司 | 文件访问控制列表管理方法和相关装置和系统 |
CN107403105B (zh) * | 2017-06-30 | 2020-09-04 | 华为技术有限公司 | 一种文件系统的权限设置方法及装置 |
US11526476B2 (en) | 2017-06-30 | 2022-12-13 | Huawei Technologies Co., Ltd. | File system permission setting method and apparatus |
CN107403105A (zh) * | 2017-06-30 | 2017-11-28 | 华为技术有限公司 | 一种文件系统的权限设置方法及装置 |
CN107688753A (zh) * | 2017-09-01 | 2018-02-13 | 郑州云海信息技术有限公司 | 一种acl权限控制的方法与装置 |
CN110413215B (zh) * | 2018-04-28 | 2023-11-07 | 伊姆西Ip控股有限责任公司 | 用于获取访问权限的方法、设备和计算机程序产品 |
CN110413215A (zh) * | 2018-04-28 | 2019-11-05 | 伊姆西Ip控股有限责任公司 | 用于获取访问权限的方法、设备和计算机程序产品 |
CN109062967A (zh) * | 2018-06-28 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种分布式存储acl快速响应权限查询的方法 |
CN108989300B (zh) * | 2018-07-03 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种存储环境ip权限控制方法与系统 |
CN108989300A (zh) * | 2018-07-03 | 2018-12-11 | 郑州云海信息技术有限公司 | 一种存储环境ip权限控制方法与系统 |
CN110837647A (zh) * | 2018-08-16 | 2020-02-25 | 迈普通信技术股份有限公司 | 管理访问控制列表的方法及装置 |
CN110795596A (zh) * | 2019-11-07 | 2020-02-14 | 北京首钢自动化信息技术有限公司 | 一种客户端的信息反馈方法及装置 |
CN114244781A (zh) * | 2021-12-20 | 2022-03-25 | 苏州盛科通信股份有限公司 | 一种基于dpdk的报文去重处理方法和装置 |
CN114244781B (zh) * | 2021-12-20 | 2023-12-22 | 苏州盛科通信股份有限公司 | 一种基于dpdk的报文去重处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2018121454A1 (zh) | 2018-07-05 |
CN106682186B (zh) | 2020-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106682186A (zh) | 文件访问控制列表管理方法和相关装置和系统 | |
CN103064639B (zh) | 数据存储方法及装置 | |
US10761758B2 (en) | Data aware deduplication object storage (DADOS) | |
JP4416821B2 (ja) | ネットワーク上でクライアントからアクセス可能なファイルセットの名前空間を維持する分散ファイル・システム | |
CN105637491B (zh) | 一种文件迁移方法、装置和存储设备 | |
CN101233517B (zh) | 把包括工作文件的集合保持在存储池中的方法和系统 | |
JP5798248B2 (ja) | 規模変更可能なデータ記憶サービスを実装するためのシステムおよび方法 | |
US7899793B2 (en) | Management of quality of services in storage systems | |
US20170208052A1 (en) | Hybrid cloud file system and cloud based storage system having such file system therein | |
WO2011108021A1 (en) | File level hierarchical storage management system, method, and apparatus | |
CN103473251A (zh) | 在使用处理器件的计算环境中提供使用选择性元组版本化的文件系统快照的方法和系统 | |
US20170185645A1 (en) | Database caching in a database system | |
CN107533507A (zh) | 根据日志结构管理存储装置中的数据 | |
US20120005307A1 (en) | Storage virtualization | |
JP2017504924A (ja) | ファイルシステムのコンテンツベースの編成 | |
CN109558084B (zh) | 一种数据处理方法以及相关设备 | |
CN106575307A (zh) | 具有用于个人搜索的方法的多用户搜索系统 | |
CN105593804A (zh) | 用于文件系统虚拟化的方法和设备、用于文件系统虚拟化的数据存储系统、以及用于数据存储系统的文件服务器 | |
CN104714755A (zh) | 一种快照管理方法及装置 | |
CN107515879B (zh) | 用于文档检索的方法和电子设备 | |
EP3814930B1 (en) | System and method for bulk removal of records in a database | |
JP2011065546A (ja) | ファイル検索システム及びプログラム | |
CN112740198A (zh) | 用于在数据库中提早移除墓碑记录的系统和方法 | |
CN110888837B (zh) | 对象存储小文件归并方法及装置 | |
CN106484820A (zh) | 一种重命名方法、访问方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |