文件访问隔离方法和装置与流程

文档序号:11156228阅读:1101来源:国知局
文件访问隔离方法和装置与制造工艺

本发明实施例涉及存储技术领域,尤其涉及一种文件访问隔离方法和装置。



背景技术:

以Docker为代表的容器技术快速发展,相对现在数据中心中VM虚拟机部署方案,Docker更轻量,部署更简洁。Docker部署时,最基本的数据存储要求是:在保证容器间共用数据镜像的前提下,各个容器之间的数据读写是相互隔离的,容器间的文件读写不会改变其他容器原有的文件镜像数据。当前主流Docker数据部署方案主要基于OverlayFS+LocalFS来部署,OverlayFS部署时,多个容器间需要共享原始镜像数据,因此必然会有多个OverlayFS部署在同一个LocalFS之上。LocalFS中典型代表有ext2/3/4、XFS等,以ext系统文件系统为例,ext文件系统中最小的一个存储粒度为1个块(block),一个块组(blockgroup)中最多含有8*4096个块,多个块组共同组成文件系统的数据存储。

但是LocalFS自身并不区分文件数据存储的位置,当不同容器间都读写文件时,被改写的文件可能存储在同一block中,若这一block发生故障,则将影响这些容器间的读写。



技术实现要素:

本发明实施例提供一种文件访问隔离方法和装置,用于避免当一块数据块发生故障时影响多个容器间的文件访问。

第一方面,本发明实施例提供一种文件访问隔离方法,包括:获取来自容器的文件写请求,文件写请求用于请求写入待写文件;在文件写请求中增加容器的容器标识;根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中。从而可以通过各个容器的容器标识隔离出各个容 器的文件存储空间(即数据块组),当某一数据块组发生故障时,只会影响到这块数据块对应的容器的文件访问,而不会影响到其它容器的文件访问,有效避免了因为数据存储交织而引起的文件系统故障问题。

根据第一方面,在第一方面的第一种可能的实现方式中,在文件写请求中增加容器的容器标识之前,还包括:为容器分配容器标识。

根据第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中之前,还包括:确定容器标识对应的数据块组的已存储空间小于第一阈值。

根据第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,确定容器标识对应的数据块组的已存储空间小于第一阈值之前,还包括:根据容器的容器标识,为容器分配与容器标识对应的数据块组。

根据第一方面的第二种可能的实现方式,在第一方面的第四种可能的实现方式中,若容器标识对应的当前数据块组的已存储空间大于第二阈值,则根据容器的容器标识,为容器分配与容器标识对应的下一个数据块组;第二阈值大于第一阈值;根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中,包括:根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的下一个数据块组。

根据第一方面的第三种可能的实现方式,在第一方面的第五种可能的实现方式中,根据容器的容器标识,为容器分配与容器标识对应的数据块组之后,还包括:建立容器标识与分配的数据块组的数据块组标识的对应关系;

根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组之前,还包括:根据文件写请求携带的容器标识,确定与容器标识对应的数据块组标识。

根据第一方面的第三种可能的实现方式,在第一方面的第六种可能的实现方式中,根据容器的容器标识,为容器分配与容器标识对应的数据块组之后,还包括:将容器标识存储至数据块组中;

根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组之前,还包括:根据文件写请求携带的容器标识,确定存储有容器标识的数据块组。

根据第一方面或以上第一方面的任意一种可能的实现方式,在第一方面的第七种可能的实现方式中,根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中之前,还包括:为容器分配容器的缓存;

根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中,包括:根据容器标识,将待写文件存储至容器的缓存中,以使容器的缓存将待写文件写入至容器标识对应的数据块组中。

由于不同的容器具有不同的缓存,这样可以隔离每个容器的文件访问请求至不同的缓存,有效隔离容器间的磁盘文件访问事务,避免了容器间磁盘事务耦合的问题。

根据第一方面或以上第一方面的任意一种可能的实现方式,在第一方面的第八种可能的实现方式中,根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中之后,还包括:获取来自容器的文件读请求,文件读请求用于读取待读文件;在文件读请求中增加容器的容器标识;根据携带容器标识的文件读请求,在与容器标识对应的数据块组中读取待读文件。

根据第一方面或以上第一方面的任意一种可能的实现方式,在第一方面的第九种可能的实现方式中,还包括:当确定数据块组中的任一数据块发生故障时,确定数据块组对应的容器的容器标识;根据容器标识,拦截来自容器的文件访问请求,文件访问请求包括文件写请求和/或文件读请求;创建修复容器,并配置修复容器的容器标识为容器的容器标识;启动修复容器中的磁盘修复工具,扫描和修复磁盘中容器标识对应的数据块组。因此,能够识别和修复与指定容器标识对应的数据块组,通过在修复容器内部署磁盘修复工具,有效避免了现有技术中使用磁盘修复工具而可能导致全部容器访问请求挂起的故障。

第二方面,本发明实施例提供一种文件访问隔离装置,包括:获取单元,用于获取来自容器的文件写请求,文件写请求用于请求写入待写文件;增加单元,用于在文件写请求中增加容器的容器标识;处理单元,用于根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中。从而可以通过各个容器的容器标识隔离出各个容器的文件存储空间(即数据块组),当某一数据块组发生故障时,只会影响到这块数据块对应的容器的文 件访问,而不会影响到其它容器的文件访问,有效避免了因为数据存储交织而引起的文件系统故障问题。

根据第二方面,在第二方面的第一种可能的实现方式中,处理单元,还用于在增加单元在文件写请求中增加容器的容器标识之前,为容器分配容器标识。

根据第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,处理单元还用于在根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中之前,确定容器标识对应的数据块组的已存储空间小于第一阈值。

根据第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,处理单元还用于在确定容器标识对应的数据块组的已存储空间小于第一阈值之前,根据容器的容器标识,为容器分配与容器标识对应的数据块组。

根据第二方面的第二种可能的实现方式,在第二方面的第四种可能的实现方式中,若容器标识对应的当前数据块组的已存储空间大于第二阈值,则处理单元还用于根据容器的容器标识,为容器分配与容器标识对应的下一个数据块组;第二阈值大于第一阈值;

处理单元在根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中,具体用于:根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的下一个数据块组。

根据第二方面的第三种可能的实现方式,在第二方面的第五种可能的实现方式中,处理单元还用于在根据容器的容器标识,为容器分配与容器标识对应的数据块组之后,建立容器标识与分配的数据块组的数据块组标识的对应关系;

处理单元还用于在根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组之前,根据文件写请求携带的容器标识,确定与容器标识对应的数据块组标识。

根据第二方面的第三种可能的实现方式,在第二方面的第六种可能的实现方式中,处理单元还用于在根据容器的容器标识,为容器分配与容器标识对应的数据块组之后,将容器标识存储至数据块组中;

处理单元还用于在根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组之前,根据文件写请求携带的容器标识,确定存储有容器标识的数据块组。

根据第二方面或以上第二方面的任意一种可能的实现方式,在第二方面的第七种可能的实现方式中,处理单元还用于在根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中之前,为容器分配容器的缓存;

处理单元在根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中,具体用于:根据容器标识,将待写文件存储至容器的缓存中,以使容器的缓存将待写文件写入至容器标识对应的数据块组中。

由于不同的容器具有不同的缓存,这样可以隔离每个容器的文件访问请求至不同的缓存,有效隔离容器间的磁盘文件访问事务,避免了容器间磁盘事务耦合的问题。

根据第二方面或以上第二方面的任意一种可能的实现方式,在第二方面的第八种可能的实现方式中,获取单元还用于在处理单元根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中之后,获取来自容器的文件读请求,文件读请求用于读取待读文件;

增加单元,还用于在文件读请求中增加容器的容器标识;

处理单元还用于根据携带容器标识的文件读请求,在与容器标识对应的数据块组中读取待读文件。

根据第二方面或以上第二方面的任意一种可能的实现方式,在第二方面的第九种可能的实现方式中,还包括:

修复单元,用于当确定数据块组中的任一数据块发生故障时,确定数据块组对应的容器的容器标识;根据容器标识,拦截来自容器的文件访问请求,文件访问请求包括文件写请求和/或文件读请求;创建修复容器,并配置修复容器的容器标识为容器的容器标识;启动修复容器中的磁盘修复工具,扫描和修复磁盘中容器标识对应的数据块组。因此,能够识别和修复与指定容器标识对应的数据块组,通过在修复容器内部署磁盘修复工具,有效避免了现有技术中使用磁盘修复工具而可能导致全部容器访问请求挂起的故障。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种文件系统的示意图;

图2为本发明实施例一提供的文件访问隔离方法的流程图;

图3为本发明实施例二提供的文件访问隔离方法的流程图;

图4为本发明实施例三提供的文件访问隔离方法的流程图;

图5为本发明实施例一提供的文件访问隔离装置的结构示意图;

图6为本发明实施例二提供的文件访问隔离装置的结构示意图;

图7为本发明实施例三提供的文件访问隔离装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的下述各实施例可以应用于图1所示的文件系统中,图1所示的文件系统为UpperFS+Local FS,UpperFS为上层文件系统,可以包括OverlayFS(简称OvlFS)、AuFS等等,LocalFS为下层文件系统(Lower),LocalFS可以包括EXT文件系统、XFS等等。虽然图1中仅示出两个容器(容器1和容2),但本发明实施例并不限于此。

图2为本发明实施例一提供的文件访问隔离方法的流程图,如图2所示,本实施例的方法可以包括:

S101、获取来自容器的文件写请求。

S102、在文件写请求中增加该容器的容器标识。

S103、根据携带该容器标识的该文件写请求,将待写文件写入至该容器标识对应的数据块组中。

本实施例中,获取来自容器的文件写请求,该文件写请求是由该容器发出的,该文件写请求用于请求写入待写文件,然后在文件写请求中增加该容器的容器标识。本实施例在执行S102之前,为该容器分配该容器的容器标识,该容器标识用于唯一标识该容器,例如可以在创建该容器时,为该容器分配用于标识该容器的容器标识,在创建的所有容器中,每个容器均有区分于其它容器的容器标识。在该文件写请求中增加了该容器的容器标识之后,再根据携带该容器标识的文件写请求,将待写文件写入至该容器标识对应的数据块组中,本实施例中,每个容器均有与其对应的数据块组,即该数据块组专用于来自该容器的文件,每个数据块组对应一个容器标识,因此,来自不同容器的文件存储在不同的数据块组中,所以某一数据块组发生故障时,只会影响到这块数据块对应的容器的文件访问,而不会影响到其它容器的文件访问。

上述的S102可以在如图1所示的上层文件系统中执行,每个文件访问请求(文件写请求或文件读请求)都具有针对的索引(Inode)。每个Inode都带有一个扩展属性表,Inode扩展属性存储的是Inode附加信息,如名称/值对,用于存储系统信息,如访问扩展列表(ACL),或其它程序或服务需要的其它数据,SELinux使用扩展属性存储所有与文件有关的客体的安全上下文,通过新增定义<容器标识,标识值>的扩展属性,修改并区分每个文件访问请求,并将新增定义<容器标识,标识值>的扩展属性添加在文件访问请求中。

S103可以在如图1所示的下层文件系统中执行。

本实施例提供的文件访问隔离方法,通过获取来自容器的文件写请求,在文件写请求中增加该容器的容器标识,根据携带该容器标识的该文件写请求,将待写文件写入至该容器标识对应的数据块组中,从而可以通过各个容器的容器标识隔离出各个容器的文件存储空间(即数据块组),当某一数据块组发生故障时,只会影响到这块数据块对应的容器的文件访问,而不会影响到其它容器的文件访问,有效避免了因为数据存储交织而引起的文件系统故障问题。

本实施例中,在执行S103之前,确定存在该容器标识对应的数据块组,且确定该容器标识对应的数据块组的已存储空间小于第一阈值,表示该数据块组中有空闲的存储空间用于存储该待写文件,然后再执行S103。若确定不 存在该容器标识对应的数据块组,则说明还未为该容器分配该容器标识对应的数据块组;然后根据该容器的容器标识,为该容器分配与该容器标识对应的数据块组,例如从磁盘中为该容器分配与该容器标识对应的数据块组,则此分配的与该容器标识对应的数据块组还未存储文件,其已存储空间小于第一阈值。若确定存在该容器标识对应的数据块组,该数据块组称为当前数据块组,且确定该当前数据块组的已存储空间大于第二阈值,第二阈值大于第一阈值,则说明该当前数据块组中未有足够的空闲存储空间用于存储待写入文件,因此本实施例可以根据该容器的容器标识,为该容器分配与该容器标识对应的下一个数据块组,此时上述的当前数据块组与该容器标识对应,上述的下一个数据块组也与该容器标识对应;相应地,在执行S103时,具体为:根据携带该容器标识的文件写请求,将待写文件写入至分配的与该容器标识对应的该下一个数据块组中。为容器分配数据块组的过程可以在如图1所示的下层文件系统中执行。

可选地,本实施例在根据容器的容器标识,为容器分配与容器标识对应的数据块组之后,在一种可行的实现方式中,本实施例还可以建立该容器标识与分配的该数据块组的数据块组标识的对应关系;这样可以使得在执行S103之前:根据该文件写请求中携带的该容器标识,以及建立的该容器标识与该数据块组标识的对应关系,确定与该容器标识对应的数据块组标识;然后根据文件写请求,将该待写文件写入至该数据块组标识对应的数据块组中。可选地,在上述建立该容器标识与分配的该数据块组的数据块组标识的对应关系之后,存储该容器标识与该数据块组标识的对应关系,例如:可以将该容器标识与该数据块组标识的对应关系存储在内存中,由于该对应关系存储在内存中,因此可以提高该对应关系的查找效率;进一步地,还可以将该容器标识与该数据块组标识的对应关系存储在磁盘中,这样使得若存储在内存中的该对应关系丢失时,可从磁盘中将该对应关系导入至该内存中。

可选地,本实施例在根据容器的容器标识,为容器分配与容器标识对应的数据块组之后,在另一种可行的实现方式中,本实施例还可以将该容器标识存储在分配的该数据块组中,这样可以使得在执行S103之前:根据该文件写请求中携带的该容器标识,查找哪些数据块组中存储有该容器标识,从而确定出存储有该容器标识的数据块组;然后根据文件写请求,将该待写文件 写入至该数据块组标识对应的数据块组中。

本实施例中将容器标识存储在分配的数据块组中的过程可以在如图1所示的下层文件系统中执行,一种实现方式为:每个数据块组均有对应的数据块组描述符(group descriptor),本实施例可以通过在数据块组描述符中新增定义容器标识属性值,实现各个容器对应的数据块组的区分。

可选地,本实施例在执行S103之前还可以为该容器分配该容器的缓存,本实施例中,每个容器均有与其对应的缓存,即该缓存专用于缓存来自该容器的文件,相应地,在执行S103时具体为:根据该容器标识,将该待写文件写入至该容器的缓存中,由该容器的缓存根据该文件写请求,将待写文件写入至容器标识对应的数据块组中。现有技术中,由于下层文件系统只提供一个缓存,多个容器共用同一个缓存,这样造成多个容器间的下盘事务耦合,而本实施例中由于不同的容器具有不同的缓存,这样可以隔离每个容器的文件访问请求至不同的缓存,有效隔离容器间的磁盘文件访问事务,避免了容器间磁盘事务耦合的问题。

图3为本发明实施例二提供的文件访问隔离方法的流程图,如图3所示,本实施例的方法在本发明实施例一提供的文件访问隔离方法的基础上,在执行S103之后还可以包括:

S201、获取来自该容器的文件读请求。

S202、在该文件读请求中增加该容器的容器标识。

S203、根据携带该容器标识的该文件读请求,在与该容器标识对应的数据块组中读取该待读文件。

本实施例中,获取来自容器的文件读请求,该文件读请求是由该容器发出的,该文件读请求用于请求读取待读文件,然后在文件读请求中增加该容器的容器标识。在该文件读请求中增加了该容器的容器标识之后,再根据携带该容器标识的文件读请求,在与该容器标识对应的数据块组中读取待读文件,其中,如何确定与该容器标识对应的数据块组可以参见本发明实施例一提供的文件访问隔离方法中的相关记载,此处不再赘述。由于来自不同容器的文件存储在不同的数据块组中,所以某一数据块组发生故障时,只会影响到这块数据块对应的容器的文件访问,而不会影响到其它容器的文件访问。

本实施例提供的文件访问隔离方法,通过获取来自容器的文件读请求, 在文件读请求中增加该容器的容器标识,根据携带该容器标识的该文件读请求,在与该容器标识对应的数据块组中读取该待读文件,当某一数据块组发生故障时,只会影响到这块数据块对应的容器的文件访问,而不会影响到其它容器的文件访问,有效避免了因为数据存储交织而引起的文件系统故障问题。

图4为本发明实施例三提供的文件访问隔离方法的流程图,如图4所示,本实施例的方法在本发明实施例一或二提供的文件访问隔离方法的基础上,还可以包括:

S301、当确定该数据块组中的任一数据块发生故障时,确定所述数据块组对应的所述容器的容器标识。

本实施例中,当确定本发明实施例一或二中的上述数据块组中的任一数据块发生故障时,确定该数据块组对应的该容器的容器标识;确定与该数据块组对应的容器标识可以为:查找该数据块组的数据块组标识与容器标识的对应关系,从而确定与该数据块组对应的容器标识;或者,查找该数据块组中存储的容器标识,从而确定与该数据块组对应的容器标识。

可选地,本实施例可以在执行S301之后直接执行S302;或者,也可以在执行S301之后确定是否需要修复该数据块组,当确定需要修复该数据块组时执行S302,确定是否需要修复该数据块组的一种实现方式为:向用户提示是否需要修复出故障的数据块组,当获取到用户输入的确认修复的指令时则确定需要修改该数据块组。

S302、根据该容器标识,拦截来自该容器的文件访问请求。

本实施例中,在确定与该数据块组对应的容器标识之后,根据该容器标识,拦截来自该容器标识对应的容器的文件访问请求,该文件访问请求包括文件写请求和/或文件读请求。

S303、创建修复容器,并配置该修复容器的容器标识为该容器的容器标识。

本实施例中,在拦截来自该容器的文件访问请求之后,创建修复容器,并且配置该修复容器的容器标识为上述出故障的数据块组对应的容器的容器标识。可选地,还可以配置该修复容器的cgroup性能带宽约束,可有效约束了修复性能,避免故障修复时的性能干扰问题。

S304、启动该修复容器中的磁盘修复工具,扫描和修复磁盘中该容器标识对应的数据块组。

本实施例中,启动该修复容器中的磁盘修复工具,扫描和修复磁盘中该容器标识对应的数据块组,如何扫描和修复磁盘中该容器标识对应的数据块组与现有技术类似,此处不再赘述。

本实施例在扫描和修复磁盘中该容器标识对应的数据块组完成后,可以停止拦截来自上述容器的文件访问请求,以恢复该容器的文件访问。

现有技术中,某一数据块组中的任一数据块发生故障时,会启动磁盘修复工具进行修复,由于多个容器共用同一数据块,磁盘修复工具在修复其中一个容器的文件时,必然会影响其它容器的访问请求性能,甚至有可能阻塞其它容器的磁盘访问。而本实施例中能够识别和修复与指定容器标识对应的数据块组,通过在修复容器内部署磁盘修复工具,有效避免了现有技术中使用磁盘修复工具而可能导致全部容器访问请求挂起的故障。

图5为本发明实施例一提供的文件访问隔离装置的结构示意图,如图5所示,本实施例的装置可以包括:获取单元11、增加单元12和处理单元13;其中,获取单元11,用于获取来自容器的文件写请求,文件写请求用于请求写入待写文件;增加单元12,用于在文件写请求中增加容器的容器标识;处理单元13,用于根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中。

可选地,处理单元13,还用于在增加单元12在文件写请求中增加容器的容器标识之前,为容器分配容器标识。

可选地,处理单元13还用于在根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中之前,确定容器标识对应的数据块组的已存储空间小于第一阈值。

可选地,处理单元13还用于在确定容器标识对应的数据块组的已存储空间小于第一阈值之前,根据容器的容器标识,为容器分配与容器标识对应的数据块组。

可选地,若容器标识对应的当前数据块组的已存储空间大于第二阈值,则处理单元13还用于根据容器的容器标识,为容器分配与容器标识对应的下一个数据块组;第二阈值大于第一阈值;

处理单元13在根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中,具体用于:根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的下一个数据块组。

可选地,处理单元13还用于在根据容器的容器标识,为容器分配与容器标识对应的数据块组之后,建立容器标识与分配的数据块组的数据块组标识的对应关系;

处理单元13还用于在根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组之前,根据文件写请求携带的容器标识,确定与容器标识对应的数据块组标识。

可选地,处理单元13还用于在根据容器的容器标识,为容器分配与容器标识对应的数据块组之后,将容器标识存储至数据块组中;

处理单元13还用于在根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组之前,根据文件写请求携带的容器标识,确定存储有容器标识的数据块组。

可选地,处理单元13还用于在根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中之前,为容器分配容器的缓存;

处理单元13在根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中,具体用于:根据容器标识,将待写文件存储至容器的缓存中,以使容器的缓存将待写文件写入至容器标识对应的数据块组中。

可选地,获取单元11还用于在处理单元13根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中之后,获取来自容器的文件读请求,文件读请求用于读取待读文件;

增加单元12,还用于在文件读请求中增加容器的容器标识;

处理单元13还用于根据携带容器标识的文件读请求,在与容器标识对应的数据块组中读取待读文件。

本实施例的装置,可以用于执行本发明上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图6为本发明实施例二提供的文件访问隔离装置的结构示意图,如图6所示,本实施例的装置在图5所示装置结构的基础上,进一步地,还可以包括:修复单元14;其中,修复单元14,用于当确定数据块组中的任一数据块 发生故障时,确定数据块组对应的容器的容器标识;根据容器标识,拦截来自容器的文件访问请求,文件访问请求包括文件写请求和/或文件读请求;创建修复容器,并配置修复容器的容器标识为容器的容器标识;启动修复容器中的磁盘修复工具,扫描和修复磁盘中容器标识对应的数据块组。

本实施例的装置,可以用于执行本发明上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

在硬件实现上,以上获取单元11、增加单元12、处理单元13和修复单元14可以以硬件形式内嵌于或独立于文件访问隔离装置的处理器中,也可以以软件形式存储于文件访问隔离装置的存储器中,以便于处理器调用执行以上各个单元对应的操作。

图7为本发明实施例三提供的文件访问隔离装置的结构示意图,如图7所示,本实施例的装置可以包括:存储器21和处理器22;其中,处理器22可以是一个中央处理器(英文:Central Processing Unit,简称:CPU),或者是特定集成电路(英文:Application Specific Integrated Circuit,简称:ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。存储器21用于存储一组程序指令,处理器22用于调用存储器21存储的程序指令执行如下操作:获取来自容器的文件写请求,文件写请求用于请求写入待写文件;在文件写请求中增加容器的容器标识;根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中。

可选地,处理器22,还用于在文件写请求中增加容器的容器标识之前,为容器分配容器标识。

可选地,处理器22还用于在根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中之前,确定容器标识对应的数据块组的已存储空间小于第一阈值。

可选地,处理器22还用于在确定容器标识对应的数据块组的已存储空间小于第一阈值之前,根据容器的容器标识,为容器分配与容器标识对应的数据块组。

可选地,若容器标识对应的当前数据块组的已存储空间大于第二阈值,则处理器22还用于根据容器的容器标识,为容器分配与容器标识对应的下一个数据块组;第二阈值大于第一阈值;

处理器22在根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中,具体用于:根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的下一个数据块组。

可选地,处理器22还用于在根据容器的容器标识,为容器分配与容器标识对应的数据块组之后,建立容器标识与分配的数据块组的数据块组标识的对应关系;

处理器22还用于在根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组之前,根据文件写请求携带的容器标识,确定与容器标识对应的数据块组标识。

可选地,处理器22还用于在根据容器的容器标识,为容器分配与容器标识对应的数据块组之后,将容器标识存储至数据块组中;

处理器22还用于在根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组之前,根据文件写请求携带的容器标识,确定存储有容器标识的数据块组。

可选地,处理器22还用于在根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中之前,为容器分配容器的缓存;

处理器22在根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中,具体用于:根据容器标识,将待写文件存储至容器的缓存中,以使容器的缓存将待写文件写入至容器标识对应的数据块组中。

可选地,处理器22还用于在根据携带容器标识的文件写请求,将待写文件写入至容器标识对应的数据块组中之后,获取来自容器的文件读请求,文件读请求用于读取待读文件;在文件读请求中增加容器的容器标识;根据携带容器标识的文件读请求,在与容器标识对应的数据块组中读取待读文件。

可选地,处理器22还用于当确定数据块组中的任一数据块发生故障时,确定数据块组对应的容器的容器标识;根据容器标识,拦截来自容器的文件访问请求,文件访问请求包括文件写请求和/或文件读请求;创建修复容器,并配置修复容器的容器标识为容器的容器标识;启动修复容器中的磁盘修复工具,扫描和修复磁盘中容器标识对应的数据块组。

本实施例的装置,可以用于执行本发明上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:只读内存(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1