CN104081391B - 使用文件克隆的单实例化方法和利用该方法的文件存储系统 - Google Patents
使用文件克隆的单实例化方法和利用该方法的文件存储系统 Download PDFInfo
- Publication number
- CN104081391B CN104081391B CN201280068182.5A CN201280068182A CN104081391B CN 104081391 B CN104081391 B CN 104081391B CN 201280068182 A CN201280068182 A CN 201280068182A CN 104081391 B CN104081391 B CN 104081391B
- Authority
- CN
- China
- Prior art keywords
- file
- catalogue
- data
- size
- clone
- 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
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/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/13—File access structures, e.g. distributed indices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在使用散列值比较的文件去重复中,必须计算所有目标文件的散列值并且必须读取所有文件的实际数据用于散列值计算,从而处理时间长。本发明提供一种包括控制器和存储多个文件的卷的文件存储系统,该卷包括存储第一文件和第二文件的第一目录以及存储创建的第三文件的第二目录,其中控制器向第三文件迁移第二文件的实际数据、建立第二文件的管理信息,从而在读取第二文件时引用第三文件,并且如果第一文件的实际数据和第三文件的实际数据的大小相同并且第一文件的实际数据和第三文件的实际数据的二进制数相同,则建立第一文件的管理信息以在读取第一文件时引用第三文件。
Description
技术领域
本发明涉及一种文件存储系统及其管理方法。
背景技术
NAS(网络附着存储)是适合用于经由网络在多个计算机之间共享文件数据的存储设备。目前,许多文件数据存储装置利用NAS设备。
在高性能主文件服务器中存储的数据量迅速增加。耦合到文件服务器的盘数目及其大小随之增加,并且与购买和维护盘有关的成本也增加。为了减少花费在盘上的成本,与用于减少在主文件服务器中存储的数据量的去重复有关的技术备受关注。可以将去重复技术分类成其中以块为单位执行去重复的块级去重复和其中以文件为单位执行去重复的文件级去重复,其中文件级去重复技术特别地被称为单实例化技术。
单实例化涉及通过统一文件组的数据来减少物理数据容量的技术,其中整个文件数据与一个文件一致。单实例化与块级去重复技术比较仅对系统施加少量负荷,因为对于每个文件执行处理,从而它容易被应用于主文件服务器。在专利文献1中公开了用于实现单实例化的一般方法。一般通过计算文件的散列值、比较散列值并且进一步使具有相同散列值的文件经受二进制比较来确定能够经受单实例化的文件的去重复。
另外,由于具有较大大小的文件应当经受单实例化以实现更大数据空间减少效果,所以专利文献1还公开通过将用于去重复确定的目标文件限于具有特定大小或者更大大小的目标文件来执行用于单实例化的确定的技术。
引用列表
专利文献
PTL1:USP6,477,544的公开文本
发明内容
技术问题
在任何现有技术方法中,经由散列值比较确定是否执行去重复,并且为了经由散列值比较检测文件重复,必须计算所有目标文件的散列值,并且为了执行散列值比较,必须读取文件的所有实际数据。
也就是说,即使非重复文件仍然必须使文件的实际数据被读取用于检测文件重复,从而花费大量时间从海量文件组检测对应文件并且对这些对应文件执行单实例化。另外,散列值计算的过程开销可能变成文件服务器的性能劣化的原因。
对问题的解决方案
本发明人已经确认如下发现,该发现在于关于具有大的文件大小的文件,具有相同文件大小的文件经由二进制比较也具有匹配结果的概率高。如更早描述的那样,具有较大大小的文件实现单实例化的更大效果,因此较大文件往往是针对重复的比较目标,从而本发明人已经推断文件大小比较对于检测重复文件是有效的。因此,为了解决现有技术的问题,本发明先执行文件大小比较以检测文件重复并且执行具有对应文件大小的文件的二进制比较。
具体而言,本发明提供一种文件存储系统,该文件存储系统包括:控制器,用于管理各自具有管理信息和实际数据的多个文件,存储介质,构成用于存储多个文件的卷,其中卷包括第一目录和第二目录,第一目录存储第一文件和第二文件,其中控制器在第二目录中创建第三文件并且向第三文件迁移第二文件的实际数据、建立第二文件的管理信息以在第二文件从计算机接收到读取访问时引用第三文件、比较第一文件的实际数据与第三文件的实际数据的大小,如果大小比较的结果表示数据大小相同,则比较第一文件的实际数据与第三文件的实际数据的二进制数,并且如果二进制数比较的结果表示二进制数相同,则建立第一文件的管理信息以在第一文件从计算机接收到读取访问时引用第三文件,并且删除第一实际数据。
根据本发明的一个方面,在接收到对第一文件的写入请求时,控制器在第一文件中存储更新数据,其中在接收到针对不是更新的数据的第一文件的读取请求时,通过引用第三文件来读取第三文件的实际数据,并且在接收到针对与更新数据有关的第一文件的读取请求时,读取在第一文件中存储的更新数据。
根据本发明的另一方面,在向第三文件迁移第二文件的实际数据时,控制器建立第三文件的管理信息,从而将第二文件的实际数据存储区域指示为存储第三文件的实际数据的存储区域,并且删除指示第二文件的实际数据存储区域的第二文件的管理信息。
根据本发明的另一方面,第二目录是索引目录,提供第三目录,在第三目录中,在第二目录中存储的文件的大小被设置为目录名称,在第三目录中创建第三文件,在第三目录中,第三文件的大小被设置为目录名称,并且为了将第三文件的实际数据的大小与第一文件的实际数据比较,控制器将该大小与第三目录名称中示出的大小比较而不是与第三文件的实际数据的大小比较。
根据本发明的另一方面,在大小比较的结果表示数据大小不同时,控制器向第二目录创建第四目录,其中将第一文件的大小设置为目录名称,在第四目录中创建第四文件,向第四文件迁移第一文件的实际数据,并且建立第一文件的管理信息以在第一文件从计算机接收到读取访问时引用第四文件。
根据本发明的又一方面,在二进制数比较结果表示二进制数不同时,控制器在第三目录中创建第四文件,向第四文件迁移第一文件的实际数据,并且建立第一文件的管理信息以在第一文件从计算机接收到读取访问时引用第四文件。
根据本发明的另一方面,在二进制数比较期间,控制器计算第一文件和第三文件的散列值,改变第三文件的名称以包含第三文件的散列值,并且创建第四文件以具有包括第一文件的散列值的名称。
根据本发明的又一方面,如果大小比较的结果表示数据大小相同,控制器检查在第三目录中存储的文件数目是否超过阈值,并且如果检查结果表示在第三目录中存储的文件数目超过阈值,则比较在第三目录中存储的文件和第一文件的散列值,并且对于作为散列值比较结果、具有与第一文件相同的散列值的文件执行与第一文件的二进制比较。此外,通过比较第一文件的计算的散列值与在第三目录中存储的文件名称中包含的散列值来执行散列值比较。
根据本发明的另一方面,控制器对从在第一目录中存储的多个文件引用第三文件的引用次数计数,在引用第三文件的文件的引用数目变成零时删除第三文件,并且在作为删除第三文件的结果、在第三目录中不再存在文件时删除第三目录。
根据本发明的另一方面,控制器观测在第一文件中存储的更新数据相对于在第三文件中存储的实际数据的比率,并且在观测的比率超过阈值时,从第三文件向第一文件复制除了在第三文件中存储的实际数据的更新数据之外的部分,并且从第一文件的管理信息删除用于引用第三文件的消息。
另外,根据本发明的一个方面,按照从具有最大数据的文件起的顺序执行在第一目录中存储的文件的文件大小比较。此外,第二目录是隐藏目录。
本发明的其他方面将从以下描述中变得清楚或者可以从本实施例中被了解。将通过元素或者各种元素的组合、本说明书的具体描述和本发明的权利要求书来实施和实现本发明的实施例。
本发明的有益效果
本发明能够实现高速单实例化而无需执行所有文件的散列值计算。
附图说明
[图1]图1是图示根据本发明的典型系统(信息处理系统)的物理配置的框图。
[图2]图2是示出根据本发明的信息处理系统的更详细的物理和逻辑配置的视图。
[图3]图3是用于图示根据本发明的实施例的文件克隆和针对索引目录的文件注册的操作的流程图。
[图4]图4是图示根据本发明的文件克隆技术与索引目录之间的关系的视图。
[图5]图5是图示使用根据本发明的文件克隆技术向索引目录注册的操作的视图。
[图6]图6是图示使用根据本发明的文件克隆技术的单实例化操作(1)的视图。
[图7]图7是图示使用根据本发明的文件克隆技术的单实例化操作(2)的视图。
[图8]图8是图示根据本发明的在执行单实例化之后的文件更新操作的视图。
[图9]图9是图示根据本发明的实施例的单实例列表创建处理的流程图。
[图10]图10是图示根据本发明的优选实施例的单实例化处理的流程图。
[图11]图11是图示根据本发明的优选实施例的去重复程序处理(1)的流程图。
[图12]图12是图示根据本发明的优选实施例的去重复程序处理(2)的流程图。
[图13]图13是图示根据本发明的索引目录的配置的概念图。
[图14]图14是示出根据本发明的第二实施例的信息处理系统的物理和逻辑配置的视图。
[图15]图15是图示根据本发明的第二实施例的克隆母文件的删除确定处理的流程图。
[图16]图16是示出根据本发明的第三实施例的信息处理系统的物理和逻辑配置的视图。
[图17]图17是图示根据本发明的第三实施例的拆分处理的流程图。
具体实施方式
现在,将参照附图描述本发明的优选实施例。在附图中,可以用相同标号表示具有相同功能的单元。附图图示根据本发明的原理的实际优选实施例,但是仅图示这些实施例以有助于更好理解本发明,并且它们不应用来以任何方式限制本发明的范围。
此外,可以在通用计算机中操作的软件中、在专用硬件中或者在软件和硬件的组合中实施本发明的优选实施例。在附图中,根据本发明的信息以表格或者列表作为示例被示出,但是它们不限于以表格或者列表的形式提供的信息并且该信息可以具有不依赖于数据结构的形式。
根据本发明的优选实施例,在由NAS机头(NAS head)和NAS存储系统组成的NAS中实现单实例功能。然而,本发明不限于由NAS机头和NAS存储系统组成的配置并且可以被实现于具有在NAS机头上设置的内部盘的服务器等中。本发明不限于使用NFS(网络文件系统)协议并且可以使用其它文件共享协议、诸如CIFS(公共因特网文件系统)、HTTP(超文本传送协议)等。
(1)第一实施例
图1是示出与本发明的第一实施例被应用到的计算机系统有关的、根据本发明的优选实施例的系统的物理配置的概况的视图。NAS设备1000由NAS机头1100和NAS存储系统1150组成。NAS机头1100具有文件共享功能并且经由网络1190与提供用于存储文件数据的卷的NAS存储系统1150耦合。NAS机头1100和NAS存储系统1150一起作为NAS设备工作。
经由网络1190耦合NAS机头1100和NAS存储系统1150。另外,NAS设备1100经由网络1191耦合到访问NAS设备1000的多个NAS客户端1180至1182。网络1190是FC(光纤通道)而1191是LAN(局域网)。当然,网络的类型不限于这样的网络,并且可以利用各种其它网络。虽然未示出,但是NAS客户端1180至1182各自包括CPU和存储器。
图1中所示的NAS存储系统1150包括CPU 1110、存储器1120和高速缓存1130。如图2中所示的各种程序存储于存储器1120中。这些程序例如是NFS服务器程序1121、通知程序1122、策略决定程序1123、单实例程序1124和文件系统1125。各种驱动器软件也存储于存储器1120中。存储于存储器1120中的各种程序由CPU 1110读取和执行以实现各功能,诸如稍后详细描述的单实例功能。在使用程序或者功能作为主题的以下描述中,过程实际上由CPU或者实施程序的各种电路执行。
高速缓存1130存储NAS机头接收的写入数据、从盘驱动1170读取的数据等。NAS存储系统1150包括存储控制器1160和盘驱动1170。存储控制器1160包括CPU 1161、存储器1162和高速缓存1163。
如图1中所示,NAS机头1100和NAS存储系统1150具有用于将NAS机头和NAS存储系统耦合到网络或者其它设备的一个或者多个接口(I/F)。NAS机头1100包括I/F 1140和1141,并且存储控制器1160包括I/F 1164和1165。另外,NAS客户端也包括I/F,但是在附图中未示出它。
图2是示出NAS设备和NAS客户端的逻辑配置的概况的视图。现在,将描述在NAS设备1000的各单元中实施的文件和应用。NAS客户端1180包括应用1210、NFS客户端1211和NAS管理器1212作为在其中操作的程序。NAS管理器1212执行NAS设备1000的设置。
NAS存储系统1150包括卷1220,该卷用于存储经由存储控制器1160的控制而提供的并且由NAS机头1100处理的数据,诸如数据文件和各种管理文件。经由存储控制器1160使用盘1170的存储区域来实现卷1220。
NFS服务器程序1121是用于提供用于共享文件的NFS(网络文件系统)功能的应用程序。文件系统1125是NAS机头1100的文件系统并且在卷1220中存储文件。在本实施例中,文件由存储索引节点(inode)信息的块区域、块指针和实际数据组成。索引节点信息存储文件配置和块指针的映射信息。
文件系统可以例如是用于Linux(注册商标)或者NTFS(Windows NT(注册商标)文件系统)的ext2(第二扩展文件系统)或者ext3(第三扩展文件系统)。存储控制器1160提供块格式的存储功能,诸如FC-SAN(光纤通道存储区域网络)。文件系统1125在存储控制器1160提供的卷1220中存储数据。
通知程序1122与文件系统1125配合并且创建文件列表1231,该文件列表是管理文件。文件列表1231存储在某个时间(例如,先前单实例处理)之后新创建或者更新的文件的文件路径列表。例如,假设在文件列表1231中存储文件A 1241、文件B 1242和文件C 1243的文件路径(未存储文件D 1244和E 1245)。初始地,例如文件系统使用查找命令等来创建文件列表1231,该文件列表存储文件系统中的所有文件的文件路径。
策略决定程序1123包括作为管理文件的单实例策略1232并且与通知程序1122和单实例程序1124配合以创建单实例列表1236,该单实例列表是管理文件。单实例策略1232存储用于从文件列表1231提取文件以创建单实例列表1236的策略。
例如,为了通过单实例化执行仅具有高空间减少效果的文件的单实例化,在规定文件大小应当是1MB或者更大的策略存储于单实例策略1232中时,在文件列表1231中存储的所有文件之中的仅具有1MB或者更大的文件大小的文件的文件路径列表被存储于单实例列表1236中。例如,文件A 1241、文件B 1242和文件C 1243被存储于列表中。
除了文件大小之外,有可能存储用于执行仅具有在阈值以下的更新频率的文件的单实例化的策略或者存储用于仅对具有特定扩展名的文件执行单实例化的策略。
关于在单实例列表1236中存储的文件,单实例程序1124具有用于检测文件的重复并且执行重复文件的单实例化的功能。单实例程序1124包括文件分类程序1233、去重复程序1234、文件克隆程序1235和单实例列表1236。
文件分类程序1233执行文件的分类用于经由二进制比较确定文件的重复。文件分类程序1233通过比较文件大小来执行重复文件的主检测。另外,在检测到文件大小一致的文件时,启动去重复程序1234以执行文件的二进制比较。
为了增加比较文件大小的速度,在卷1220中创建索引目录1250。创建实际大小目录的索引目录1250是隐藏目录并且存储单实例程序1124所利用的信息。通过直接将该目录设计为隐藏,变得有可能防止用户更新(将稍后具体加以描述的)克隆母文件(parentfile)。
然而,索引目录1250不必是隐藏目录。另外,索引目录可以包括其它目录,诸如用于存储文件扩展名信息的扩展名目录。导出目录1240存储一般用户访问的文件,并且在索引目录1250中注册的文件是(将稍后具体加以描述的)克隆子文件(child file)。
文件克隆意味着当存在存储相同内容的多个文件时或者如果复制具有相同内容的文件,则将存储多个文件的相同内容的文件之一设置为克隆母文件并且将存储相同内容的其它多个文件设置为克隆子文件。改变索引节点信息的文件配置和克隆子文件的块指针的映射信息,并且在访问克隆子文件时,引用索引节点信息的文件配置和克隆母文件的块指针的映射信息。然后,删除克隆子文件的实际数据。因此,克隆子文件被存根,并且仅克隆母文件将具有实际数据,从而所需存储容量可以减少。
在出现对克隆子文件的写入访问时,向块指针指向的逻辑块区域指派物理块区域,并且在该物理块区域中存储数据。另外,改变文件配置和在克隆子文件的索引节点信息中的块指针的映射信息和文件配置,并且关于更新的部分的读取处理,引用克隆子文件的块指针,并且读取在块指针指向的区域中存储的数据。关于对物理块区域的访问,引用在该区域中的数据,而关于对其它区域的访问,引用克隆母文件。
接着,将参照图3描述根据本实施例的文件克隆和向索引目录1250注册文件的流程。在S17010中,创建具有注册目标文件的文件大小目录名称的实际大小目录至在索引目录中存储的多个范围大小目录之中的如下范围大小目录,在该范围大小目录中,在导出目录1240中存储的注册目标文件的文件大小被设置为存储目标。
在S17020中,在S17010中创建的实际大小目录中创建以<nohash>.<索引节点编号>作为文件名并且具有与注册目标文件相同大小的空文件。在向索引目录初始注册文件期间,不注册散列值信息,从而可以减少通过计算在单实例列表1236中存储的所有文件的散列值的处理开销并且可以增强处理的速度。文件名可以是被定义用于表示尚未执行散列值计算的任何任意字符串。
在S17030中,改变在S17020中创建的空文件的块指针以便引用注册目标文件的实际数据。在S17040中,改变注册的文件的索引节点信息以引用在S17030中创建的文件的索引节点信息。在S17050中,删除注册目标文件的块指针。
根据本处理,在导出目录1240中创建克隆子文件,该克隆子文件是引用母文件的存根文件,并且在索引目录中创建被引用的克隆母文件。作为结果,可以在索引目录中放置克隆母文件,该索引目录是隐藏目录,根据该隐藏目录可以防止用户更新克隆母文件并且可以减少改变管理信息的负荷。另外,根据本处理,可以从注册目标文件向索引目录创建的文件迁移数据,从而可以减少伴随迁移处理的负荷。
现在参照图2,假设在单实例列表1236中存储文件A1241、文件B1242和文件C1243的文件路径。在实际大小目录1251中将文件A的克隆母文件注册为<nohash.100>文件1252,并且将在导出目录1240中的文件A1241转换成克隆子文件。另外,与文件A1241相似,文件B1242被注册在实际大小目录1253中,在索引目录1250中被注册为克隆母文件1254,并且将在导出目录中的文件B1242转换成克隆子文件。
去重复程序1234执行其中不执行散列值比较的去重复程序处理A和其中执行了散列值比较的去重复程序处理B。在以下描述中,如果无需区分这两个过程,则程序被简称为去重复程序1234。去重复程序1234执行具有相同文件大小的文件的二进制比较。例如,对于文件B1242和文件C1243执行二进制比较。
这时,使用针对二进制比较而读取的数据来执行散列值比较。这考虑如下缺点,该缺点在于当存在具有相同文件大小、但是具有不同内容的大量文件时,通过文件大小比较来检测重复文件需要很多次的二进制比较并且需要太久。为了解决该问题,如果具有相同文件大小、但是具有不同内容的文件数目超过某个阈值,则执行散列值比较作为去重复程序B的处理的一部分。
去重复程序1234使用计算的散列值将文件名<nohash>.<索引节点编号>重命名成<散列值>.<索引节点编号>。作为二进制比较结果,当二进制匹配出现时,文件克隆程序1235将其中文件重复已经被检测到的文件、例如文件C1243转换成克隆子文件。
根据以上过程,对于文件B和C执行单实例化。作为二进制比较结果,在确定二进制不匹配时,向索引目录1250注册文件。由于在二进制比较期间执行散列计算,所以按照文件名<散列值>.<索引节点编号>注册克隆母文件。另外,克隆母文件具有用于管理引用克隆母文件的克隆子文件的数目的引用计数器。稍后将描述克隆母文件的删除处理的细节,但是在删除克隆子文件时,递减克隆母文件的引用计数器,并且在删除所有克隆子文件时,将引用计数器设置成零,从而克隆母文件变成非必需并且将自动删除克隆母文件。
NFS客户端1211包括NFS客户端功能,该NFS客户端功能使应用1210能够经由NFS协议访问在NAS设备1000的数据文件内的数据并且访问NAS机头1100的NFS服务器程序1121。NFS服务器程序1121代表NFS客户端1211访问在耦合到NAS机头1100的NAS存储系统1150的卷1220中存储数据的文件系统1125。
接着将参照图4至图9描述使用文件克隆功能的单实例化的实际流程。图4示出文件B 1302在执行单实例程序1124之前的状态。导出目录1240存储用户访问的文件。文件B1302具有3.2MB的文件大小和索引节点编号240。文件B 1302由索引节点信息1410、块指针1420以及存储实际数据的块区域1431和1432组成。
大小目录1320紧接于索引目录1250之下存在,并且虽然在图4至图9中未示出,但是也可以提供用于存储除了文件大小和散列值之外的信息的目录、诸如用于存储文件扩展名信息的扩展名目录。关于前述的范围大小目录,在图4至图9中仅示出4M目录1335而省略其它范围大小目录。
图5是示出其中单实例程序1124向索引目录1250注册文件B1302的过程的示图。在作为范围大小目录的4M目录1335中,创建以文件B1302的文件大小作为目录名称的3.2M目录1342。随后,在3.2M目录1342中创建以<nohash>.<索引节点编号>作为文件名的空文件。在文件B1302的情况下,<nohash.240>变成文件名。另外,该文件名可以是被定义用于表示尚未执行散列值计算的任何任意字符串。
<nohash.240>文件1352存储索引节点信息1510和块指针1520,并且块指针1520指向文件B1302的块指针1420指向的相同块区域1431和1432。然后,改变文件B1302的索引节点信息1410,并且在出现针对文件B1302的数据访问时,经由<nohash.240>文件1352的索引节点信息1510引用在块区域1431和1432中的数据。由此,可以从文件B1302向<nohash.240>文件1352移动数据而未执行任何复制处理。在该状态中,<nohash.240>文件1352是克隆母文件,文件B 1302是克隆子文件,其中克隆母文件具有实际数据而克隆子文件经由克隆母文件引用实际数据。
图6是示出存储相同内容的文件B 1302和文件C 1303的单实例化处理的示图。转换成克隆子文件的文件B 1302和正常文件C 1303存在于导出目录1240中。文件C 1303具有3.2MB的文件大小和索引节点编号260。文件C 1303由索引节点信息1610、块指针1620以及存储实际数据的块区域1631和1632组成。由于文件B 1302和文件C 1303是相同文件,所以在块区域1431和1631中存储相同数据并且在块区域1432和1632中存储相同数据。
获取文件C 1303的文件大小,该文件大小与<nohash.240>文件1352的文件大小比较。作为结果,发现两个文件具有相同文件大小,因此两个文件经受二进制比较。实际上,执行块区域1431和1432与块区域1631和1632的二进制比较以便确认二进制匹配。另外,在二进制比较期间的盘读取数据用来计算散列值。然后,使用散列值将<nohash.240>文件1352的文件名重命名成<5AF4B.240>。
改变文件C 1303的索引节点信息1610,从而在访问文件C 1303的数据时经由<5AF4B.240>文件1352的索引节点信息1510引用块区域1431和1432。随后,删除文件C 1303的块指针1620的指针目的地的块区域1631和1632的数据。
图7是示出在执行文件B 1302和文件C 1303的单实例化处理之后的状态的附图。将文件C 1303转换成以<5AF4B.240>文件1352作为克隆母文件的克隆子文件(将文件C的索引节点信息1610改变成索引节点信息1710,并且将块指针1620改变成块指针1720)。文件B1302和文件C 1303二者变成克隆子文件,根据其实现单实例化,在该单实例化中,文件B和C二者引用克隆母文件的块区域1431和1432。
图8示出如下情况的处理,在该情况下已经更新了文件B 1302的第二逻辑块区域1832和文件C 1303的第一逻辑块区域。在单实例化处理之后,直至文件B 1302经受文件更新才向文件B 1302的块指针1420指向的逻辑块区域1831和1832指派物理块区域。
当经由文件更新来更新文件B 1302的第二逻辑块区域1832的数据时,向块指针1430指向的逻辑块区域1832指派物理块区域,并且在该物理块区域中存储数据。在文件C1303的文件更新中相似地,当更新第一逻辑块区域1833时,向块指针1730指向的逻辑块区域1833指派物理块区域,并且在该物理块区域中存储数据。这时,重写文件B和文件C的索引节点信息,并且在出现对其中已经指派了物理块的区域的访问时,引用在该区域中存储的数据。
在文件更新之后访问文件B 1302的数据时,由于未向第一逻辑块区域1831指派物理块区域,所以经由克隆母文件的索引节点信息1510引用块区域1431的数据。至于第二逻辑块区域1832,由于物理块区域被指派,所以引用在物理块区域1832中的数据。
在更新文件之后的文件C的数据访问期间,由于向第一逻辑块区域1833指派了物理块区域,所以引用在物理块区域1833中的数据。由于未向第二逻辑块区域1834指派物理块区域,所以经由克隆母文件的索引节点信息1510引用在块区域1432中的数据。
在专利文献1的单实例化方法中,在单实例化之后执行文件更新时,将实施(向物理块区域指派)文件的所有区域,从而单实例化的空间减少效果将变成零。在另一方面,根据本发明,在克隆子文件侧存储在单实例化之后的文件更新数据,从而在单实例化的文件之中继续地共享未经受数据更新的区域,从而关于其中数据尚未更新的数据维持单实例化的空间减少效果。
在快照技术中也分离地存储更新的数据,但是本发明更有利在于管理信息的数量更小。通常,必须在快照技术中获取多代快照,从而每代的所有区域必须存储对应数据区域的管理信息。对照而言,本发明针对更新的区域引用克隆子文件侧而针对非更新的区域引用克隆母文件侧,从而仅克隆子文件侧存储更新的数据作为附加管理信息,并且如果无更新数据,则系统引用克隆母文件侧,从而无需所有区域存储对应数据区域管理信息。
索引目录1250的树形结构具有由注册的文件的文件大小所确定的、文件被存储到的目录,并且存储的文件的文件名由散列值和索引节点编号来确定。如果在中流改变在索引目录1250中存储的文件的文件大小、散列值和索引节点编号,则索引目录1250的维护处理、诸如文件迁移和重命名变成必需。这样的处理的负荷可能降低文件存储的性能。
在本实施例中,在索引目录1250中存储的文件是克隆母文件,并且导出目录1240的所有单实例化的文件是克隆子文件,其中在克隆子文件侧存储更新数据,从而用户不会更新在索引目录1250——该索引目录是隐藏目录——中存储的克隆母文件。因此,即使更新了导出目录1240中的文件仍然不会改变在索引目录1250中存储的文件的散列值和索引节点编号。因此,索引目录1250的维护处理变成非必需,并且可以防止维护处理负荷降低文件存储性能。
图9示出创建单实例列表的流程。本处理由用来创建单实例列表1236的策略决定程序1123执行。本流程涉及在确定单实例化是否有可能之前用于确定是否应当单实例化每个文件的过程。
在S10010中,读取单实例策略文件1232。单实例策略文件1232存储用于创建单实例文件列表的策略。例如,将创建时间和日期、更新时间和日期、访问时间和日期、文件大小、文件扩展名、文件系统名称、目录名称、文件名等设置为策略。这些策略由用户的系统管理员等经由NAS管理器1212或者耦合到NAS管理器的输入设备来建立。例如,在单实例化(或者如图3中所示克隆)文件时,文件访问响应速度可能下降,从而有可能执行设置,从而具有新更新日期的、倾向于具有高文件访问可能性的文件不会经受单实例化。
在S10020中,读取文件列表文件1231。文件列表文件1231由通知程序1122创建。当文件改变发生时,文件系统1125向通知程序1122进行通知,诸如新文件创建、文件更新和文件删除。通知程序1122在上述通知被接收到时向文件列表文件1231添加相关文件的文件路径。
在S10030中,选择在文件列表文件1231中列举的而尚未经受策略决定的一个文件。在S10040中,在S10030中选择的文件经受基于在单实例策略文件1232中规定的策略的决定。如果文件满足策略,则该过程继续至S10050,而如果不满足,则该过程继续至S10060。
在S10050中,向单实例列表文件1236添加已经满足策略的文件的文件路径。向单实例列表文件1236添加的文件是经受关于单实例化是否有可能的确定的文件。在S10060中,在下一文件存在于文件列表文件1231中时,该过程返回到S10030,而在完成在文件列表文件1230中列举的所有文件的策略决定时,结束本处理。
<单实例化处理的流程图>
图10、11和12是图示单实例化处理的流程图。经由单实例程序1124执行本处理。单实例程序1124由文件分类程序1233、去重复程序1234和文件克隆程序1235组成,其中相应程序配合以实现单实例化处理。
文件分类程序1233主要执行在图10中所示的单实例化处理的总控制,并且去重复程序1234执行图11和12中所示的过程。文件克隆程序1235根据图10、11和12执行文件的克隆。
参照图10,在S11010中,文件分类程序1233读取单实例列表1236并且依次处理在单实例列表1236中列举的文件。对处理文件的顺序无限制,但是由于具有更大文件大小的文件具有更大量空间减少,因此例如可以按照从具有最大文件大小的文件起的顺序处理文件。然而,为了从具有最大文件大小的文件起来处理文件,施加了用于检查文件的容量的负荷,从而通过逐渐地减少在单实例策略1232中指定的单实例化目标文件大小,可以实现与重排文件相似的效果。如果在预先设置的给定时间内未完成单实例化处理,则可以中断处理。因此,在完成具有高的空间减少效果的、具有大文件大小的文件的单实例化时,实现了一定水平的空间减少。
在S11020中,获取在S1101中选择的文件的文件大小。例如,使用文件系统1125的STAT系统调用函数来获取文件大小。在S11030中,检查是否正在经由去重复程序处理具有与在S11010中选择的文件相同的文件大小的文件,并且在处理这样的文件时,推迟该文件的处理,并且使该过程返回到S11010以处理下一文件。
这是因为在稍后具体描述的文件大小比较期间,使用索引目录1250,但是去重复程序1234也执行向索引目录注册文件,从而在经由文件分类程序1233和去重复程序1234同时处理具有相同文件大小的文件时,可能在文件大小比较期间出现泄漏。如果不经由去重复程序1234处理具有相同文件大小的文件,则该过程继续至S11040。
由于该控制,文件分类程序1233可以在开始去重复程序1234之后开始下一过程而不等待该程序结束,并且通过同时且并行地执行文件分类程序1233和去重复程序1234使得能够进行高速处理。另外,可以并行地同时开始多个去重复程序1234。
在S11040中,检查是否在索引目录1250中注册具有与在S11010中选择的文件相同的文件大小的文件。索引目录将文件大小存储为实际大小目录名称,并且预先知道目录的全路径,从而向文件系统、诸如opendir系统调用或者stat系统调用发布实际大小目录的返回值可以用来确定是否在索引目录1250中存储具有相同文件大小的文件。作为结果,可以以比创建索引大小列表以及执行二进制搜索更高的速度执行文件大小确定。如果未注册具有相同文件大小的文件,则该过程继续至S11060,而如果注册了这样的文件,则该过程继续至S11050。
在S11050中,确定具有相同文件大小的文件数目是否小于阈值,并且如果该数目小于阈值,则该过程继续至S11051并且开始去重复程序A,而如果数目等于或者大于阈值,则该过程继续至S11052并且开始去重复程序B。例如,阈值可以经由NAS设备1000来设置并且可以使用NAS管理器1212来设置。如果具有相同文件大小的文件数目小、诸如一个或者两个,则可以通过经由轮循(round-robin)系统执行二进制比较而不执行散列值比较而在更短时间段内执行重复检测处理。
在另一方面,如果存在具有相同文件大小的大量文件,则经由轮循系统的二进制比较可能需要太多时间。另外,如果文件大小为大而二进制比较时间长,并且如果散列计算简单,则可以通过从第一文件比较起执行散列值比较来缩短总处理时间。对照而言,如果文件大小为小而二进制比较时间短,并且如果在实际大小目录中的文件数目小、诸如两个,则可以通过仅执行二进制比较而不执行散列值比较、从而可以从在实际大小目录中的第三或者第四文件起执行散列值比较来缩短总处理时间。应当从实际大小目录的顶部起的哪个文件开始与二进制比较组合使用散列值比较以减少总处理时间依赖于比较目标文件大小,从而对于每个范围大小目录有可能改变应当执行从实际大小目录的顶部起的哪个文件的散列值比较。为了解决该问题,当存在具有相同文件大小的大量文件时,开始去重复程序B以附加地执行散列值比较。
指定在S11010中选择的在导出目录1240中的文件和在S11040中发现的在索引目录1250中的文件以开始去重复程序1234。如果在索引目录1250中存在具有相同文件大小的大量文件,则指定所有对应文件。由于在S11030中描述的控制存在,所以该过程继续至S11070而不等待开始的去重复程序1234结束。可以在相同时间开始多个去重复程序1234。在S11060中,关于在S11010中选择的在导出目录1240中的文件,如在图3和图5中描述的那样在索引目录1250中注册文件,并且将文件转换成克隆子文件。
在S11070中,在结束在S11010中选择的在导出目录1240中的文件的单实例化处理之后,从单实例列表1236删除经受单实例化的文件。在S11080中,在文件保留于单实例列表1236中时,该过程返回到S11010,并且处理下一文件。在无剩余文件时,结束单实例化处理。
图11是在图10的S11051中开始的去重复程序A的处理的流程图。在S12010中,在文件分类程序1233指定的文件之间执行二进制比较。在二进制数不对应时,该过程继续至S12020,其中在二进制数对应时,该过程继续至S12030。
在S12020中,如果在索引目录1250中存在具有相同文件大小的多个文件,则文件分类程序1233指定索引目录1250中的多个文件。当存在下一个二进制比较候选时,该过程返回到S12010。在无后续二进制比较候选时,该过程继续至S12040。在S12040中,关于在导出目录1240中的被文件分类程序1233指定的文件,参照图3和图5所描述的在索引目录1250中注册文件,并且将该文件转换成克隆子文件。
在S12030中,关于在导出目录1240中的被文件分类程序1233指定的文件,执行参照图6描述的单实例化。在S12050中,关于散列值计算是否有必要进行确定。至于索引目录1250的文件注册,在被文件分类程序1233指定的索引目录1250的文件中包括<nohash>文件时,必须执行<nohash>文件的散列值计算,并且该过程继续至S12060。如果未包括<nohash>文件,则散列值计算不是必需的,并且将结束去重复程序A的处理。
在S12060中,执行<nohash>文件的散列值计算。如果在二进制比较之后执行散列值计算,则为了执行散列值计算而需要的文件的实际数据的高速缓存命中概率变高,并且可以高速执行处理。也有可能在二进制比较期间读取文件的实际数据时执行散列值计算。在S12070中,在S12060中计算的散列值用来执行向<散列值>.<索引节点编号>的重命名处理,并且结束去重复程序A的处理。
参照图12,将描述在索引目录中的具有相同文件大小的文件数目大于阈值时执行的去重复程序B。在S13030中,将计算文件分类程序1233所指定的导出目录1240的文件的散列值。
在S13020中,关于文件分类程序1233所指定的索引目录1250的文件,如果存在其中散列值尚未被计算的<nohash>文件,则需要散列值计算和重命名处理。如果存在<nohash>文件并且需要重命名处理,则该过程继续至S13030,而如果不是,则该过程继续至S13050。在S13030中,计算需要重命名处理的文件的散列值。在S13040中,文件经受使用在S13030中计算的散列值向<散列值>.<索引节点编号>的重命名处理。
在S13050中,比较在S13030中计算的散列值与被存储为文件名的、由文件分类程序1233指定的在索引目录中的文件的散列值。在散列值不匹配时,该过程继续至S13060,而在散列值对应时,该过程继续至S13080。在S13060中,如果在索引目录1250中存在具有相同文件大小的多个文件并且下一散列值比较候选存在,则该过程返回到S13050。如果无下一散列值比较候选,则该过程继续至S13070。
在S13070中,关于由文件分类程序1233指定的在导出目录1240中的文件,执行如参照图3和图5描述的向索引目录1250的文件注册以及克隆子文件转换。这时,由于在S13030中计算导出目录1240的文件的散列值,所以不按照文件名<nohash>.<索引节点编号>、而是按照文件名<散列值>.<索引节点编号>向索引目录1250注册文件,并且结束去重复程序B的处理。
当在S13080中散列值匹配时,进一步执行二进制比较。在二进制数不匹配时,该过程继续至S13060,而在二进制数匹配时,该过程继续至S13090。在S13090中,关于由文件分类程序1233指定的导出目录1240的文件,执行参照图6描述的单实例化,并且将结束去重复程序B的处理。另外,通过在二进制比较期间执行散列值计算,即使存在具有相同文件大小、但是具有不同内容的大量文件,仍然可以减少经由散列值比较的无意义的二进制比较的数目。
参照图13描述根据本发明的处理的一个示例。作为示例,它示出如何在索引目录1250中注册在索引目录1250的单实例列表1236中存储的文件A 1301、文件B 1302、文件C1303、文件F 1306、文件G 1307、文件H 1308、文件I 1309和文件J 1310(文件D 1304、文件E1305、文件K 1311和文件L 1312不在列表中)。文件A 1301的文件大小是1.1MB,文件B 1302和文件C 1303的文件大小是3.2MB并且其内容相同,文件F 1306、文件G 1307、文件H 1308、文件I 1309和文件J 1310的文件大小是3.42MB并且都相同,其中文件F 1306和文件G 1307的内容是相同数据,文件H 1308、文件I 1309和文件J 1310的内容是相同数据、但是不同于文件F 1306和文件G1307的内容。
文件目录1320存在于索引目录1250之下,并且在该目录中注册文件大小信息和散列值。在本说明书中省略详细描述,但是在使用文件扩展名来执行文件去重复时,创建扩展名目录1321并且在该目录中注册扩展名信息。除了大小目录1320和扩展名目录1321之外,可以创建用于存储可以用于文件去重复的信息的各种目录。
在大小目录1320内创建范围大小目录1331至1336。创建范围大小目录以便通过防止存储的目录和文件被集中于特定目录中来防止文件系统性能降低。例如,在256K目录1331中注册具有小于256KB的文件大小的文件。在512K目录1332中注册具有等于或者大于256KB而小于512KB的文件大小的文件。在1M目录1333中注册具有等于或者大于512KB而小于1MB的文件大小的文件。在2M目录1334中注册具有等于或者大于1MB而小于2MB的文件大小的文件。在4M目录1335中注册具有等于或者大于2MB而小于4MB的文件大小的文件。以相似方式向8M目录1336等注册文件。
可以自由设置范围大小目录的粒度,并且理想地,它们应当被建立为使得目录的数目和在每个范围大小目录中存储的文件的数目均等。也有可能通过分析在文件系统中的受到单实例化的文件并且分析每个文件大小范围的文件分布来建立范围大小目录。
在初始状态中,创建大小目录1320和范围大小目录1331至1336。以下示出关于文件A 1301的过程。首先,单实例程序1124检查是否已经在索引目录1250中注册了具有与文件A 1301相同的文件大小的文件。由于尚未注册与文件A相同的文件大小为1.1M的文件,所以在2M目录1334中创建其中文件大小被设置为目录名称的实际大小目录1341。关于文件A1301,创建1.1M目录1341。然后,在实际大小目录中创建具有文件名<nohash>.<100(文件A的索引节点编号)>的克隆母文件1351,并且将在导出目录1240中存储的文件A 1301转换成克隆子文件。
接着,以下示出关于文件B1302的处理。与文件A 1301相似,由于文件具有未在索引目录中注册的文件大小,所以在作为范围大小目录的4M目录1335中创建3.2M目录1342,该目录是实际大小目录,在该目录中创建具有文件名<nohash>.<240(文件B的节点编号)>的克隆母文件1352,并且将在导出目录1240中存储的文件B1302转换成克隆子文件。
接着,以下将举例说明关于文件C 1303的处理。由于文件B1302和文件C 1303是相同文件,所以应当单实例化这些文件。首先,该过程检查是否已经在索引目录1250中注册相同文件大小,并且在本例中识别到具有相同文件大小的文件的存在,因为已经存在3.2M目录1342。前述检查是用于文件去重复的文件大小比较,其中例如在经由opendir系统调用打开实际大小目录时或者在经由stat系统调用获取实际大小目录信息时,其返回值使系统能够识别到具有相同文件大小的文件已经存在。作为文件大小比较的结果,由于具有相同文件大小的文件已经存在,所以对于在实际大小目录1342中存储的文件1352以及文件C 1303执行二进制比较。
由于文件B1302和文件C 1303是相同文件,所以文件1352和文件C 1303的二进制比较结果对应。作为二进制比较结果,将文件C 1303转换成以文件1352作为克隆母文件的克隆子文件。由此实现文件B 1302和文件C 1303的单实例化。另外,在二进制比较期间执行散列值计算。任何函数可以用作为散列函数,其中除了使用文件的所有数据的正常散列计算之外,文件的开始4KB和结束4KB可以用来使用SHA1(安全散列算法)1散列函数并且使用分别添加的值的前五位作为散列值来计算散列值。通过二进制比较确定最终文件重复,从而需要少量计算成本的散列值计算方法就足够了。使用计算的散列值,将文件名1352从<nohash.240>重命名成<5AF4B.240>。
接着,以下将示出关于文件F1306的过程。与文件A1301相似,由于未在索引目录中注册文件大小,所以在作为范围大小目录的4M目录1335中创建3.42M目录1343,该目录是实际大小目录,在该目录中创建以<nohash>.<263(文件F的索引节点编号)>作为文件名的克隆母文件1353,并且将在导出目录1240中存储的文件F1306转换成克隆子文件。
接着,以下示出关于文件G 1307的处理。由于文件F 1306和文件G 1307是相同文件,所以应当单实例化这些文件。首先,单实例程序1124检查是否已经在索引目录1250中注册了相同文件大小,并且在本例中识别到存在具有相同文件大小的文件,因为已经存在3.42M目录1343。作为文件大小比较结果,由于具有相同文件大小的文件已经存在,所以针对在实际大小目录1343中存储的文件1353以及文件G 1307执行二进制比较。
由于文件F 1306和文件G 1307是相同文件,所以文件1353和文件G 1307的二进制比较结果对应。作为结果,将文件G 1307转换成以文件1353作为克隆母文件的克隆子文件。由此,实现了文件F 1306和文件G 1307的单实例化。另外,在二进制比较期间执行散列值计算。使用计算的散列值,将文件名1352从<nohash.263>重命名成<2B44F.263>。
接着,以下示出关于文件H 1308的过程。文件H 1308具有与文件F 1306和文件G1307相同的文件大小、但是具有不同数据内容,从而不应单实例化该文件。首先,单实例程序1124检查是否已经在索引目录1250中注册相同文件大小,并且由于3.42M目录1343已经存在,所以单实例程序1124识别到具有相同文件大小的文件存在。作为文件大小比较结果,由于具有相同文件大小的文件已经存在,所以在实际大小目录1343中存储的文件1353以及文件H1308经受二进制比较
由于文件F 1306和文件H 1308不是相同文件,所以文件1353和文件H 1308的二进制比较结果不对应。这时,如果在后续处理中发现文件H 1308的相同文件,则应当单实例化该文件,从而在索引目录1250中注册文件H 1308。在二进制比较时执行散列值计算,并且在3.42M目录1343中创建具有文件名<散列值>.<文件H的索引节点编号>(3AB8F.431)的克隆母文件1354,并且随后,将在导出目录1240中存储的文件H 1308转换成克隆子文件。
在二进制比较中,如果文件具有大的文件大小,则不能在存储器中存储整个文件,从而正常地将文件划分成给定的大小并且在存储器中读取该文件,其经受了数据压缩。这时,在数据不一致出现时,可以取消对后续数据的读取。因此,如果散列值计算采用使用数据的前4KB和后4KB的方法,则在数据不一致在二进制比较期间出现时,如果从开始依次执行二进制比较则可以不读入数据的后4KB。因此,通过采用初始地执行第一部分和最后部分的二进制比较的系统,变得有可能提高在散列值计算期间的高速缓存命中率。
接着,以下将描述关于文件I 1309的过程。由于文件H1308和文件I 1309是相同文件,所以它们应当受到单实例化。首先,单实例程序1124检查是否已经在索引目录1250中注册了相同文件大小,并且在该情况下,3.42M目录1343已经存在,因此单实例程序1124识别到具有相同文件大小的文件存在。在该示例中,由于具有相同文件大小的文件已经存在,所以在实际大小目录1343中存储的文件1353和1354以及文件I 1309经受二进制比较。作为文件1353和1354的二进制比较结果,二进制数不对应,从而在索引目录1250中独立注册文件,使得在实际大小目录中存储多个文件时,保障文件的二进制数不同。
由于在索引目录1250中注册的文件1353和1354的文件名中包括散列值,所以它们可以经受散列值比较而不执行散列值计算,但是由于必须计算文件I 1309的散列值,所以先执行文件I 1309和文件1353的二进制比较并且与二进制比较一起执行散列值计算。由于文件I 1309和文件1353的内容数据不同,所以二进制比较结果是二进制不匹配。
随后,比较文件I 1309和文件1354,并且这时由于文件I 1309的散列值已知,所以执行文件I 1309和文件1354的散列值比较。在散列值匹配时,进一步执行二进制比较,而在散列值或者二进制数不匹配时,如果在实际大小目录内存在另一比较目标,则进一步与另一文件比较文件I 1309的散列值。在文件I 1309的情况下,作为与文件1354的散列值比较结果,散列值匹配,并且二进制比较结果是二进制匹配。
因此,将文件I 1309改变成以文件1354作为克隆母文件的克隆子文件。由此,实现了文件H 1308和文件I 1309的单实例化。如果所有实际文件具有散列值或者二进制不匹配,则在实际大小目录中创建具有文件名<散列值>.<索引节点编号>的克隆母文件,并且将在导出目录中存储的文件转换成克隆子文件。
接着,以下将示出关于文件J 1310的处理。由于文件H 1308、文件I 1309和文件J1310是相同文件,所以它们应当受到单实例化。首先,单实例程序1124检查是否已经在索引目录1250中注册相同文件大小,并且由于3.42M目录1343存在,所以单实例程序1124识别到具有相同文件大小的文件存在。作为文件大小比较结果,由于具有相同文件大小的文件已经存在,所以在实际大小目录1343中存储的文件1353和1354以及文件J 1310经受二进制比较。
由于文件J 1310和文件1353的数据内容不同,所以二进制比较结果是二进制不匹配。接着,比较文件J 1310和文件1354,但是这时由于文件J 1310的散列值已知,所以首先使文件J 1310和文件1354经受散列值比较。作为文件J 1310和文件1354的散列值比较结果,散列值对应,并且二进制比较结果是二进制匹配。因此,将文件J 1310转换成以文件1354作为克隆母文件的克隆子文件。因此,文件H 1309、文件I 1309和文件J 1310经受了单实例化。
在以上描述中,执行二进制比较用于与在实际大小目录中的第一文件的比较,并且执行散列值比较用于与第二和后续文件比较,但是也有可能先计算在导出目录中的文件的散列值并且执行在实际大小目录中的所有文件的散列值比较。如果文件大小为大并且二进制比较时间长而散列计算简单,则可以通过从第一文件比较起执行散列值比较来缩短总处理时间。对照而言,如果文件大小为小并且二进制比较时间短,那么如果在实际大小目录中的文件数目例如如2一样小,则可以通过仅执行二进制比较而不执行散列值比较来缩短总处理时间,因此有可能设计系统以从在实际大小目录中的第三或者第四文件起执行散列值比较。应当从在实际大小目录中的哪个文件起与二进制比较一起执行散列值比较以减少总处理时间依赖于比较目标的文件大小,从而对每个范围大小目录可以改变被设置为受到散列值比较的、从实际大小目录的顶部起的文件数目。
根据本发明,通过文件大小比较检测文件重复,并且具有相同文件大小的文件经受二进制比较。在文件大小比较中,仅应当读取文件的元数据,并且无需如在散列值比较中那样读取实际数据,从而处理不具有经由读取处理的任何开销并且可以增强处理的速度。
另外,本发明在具有大的文件大小和如下趋势的文件中尤为有效,在该趋势中,在文件大小相同时,二进制比较结果也相同,但是即使在具有小的文件大小的文件中,仍然可以实现空间减少的效果和处理速度的增加,这二者是单实例化的目的。
另外,在执行二进制比较时执行散列值比较,并且通过向索引目录添加散列值信息,如果存在具有相同文件大小、但是具有不同数据内容的许多文件,则也可以执行散列值比较以最小化无结果的二进制比较。
(2)第二实施例
现在将描述本发明的第二实施例。在以下描述中,将主要描述与第一实施例的不同,并且从描述中省略与第一实施例公共的部分。
将参照本发明的第二实施例描述克隆母文件的自动删除处理。由于在索引目录1250中存储克隆母文件,该索引目录是隐藏目录,所以未向用户公开该文件。因此,除非NAS设备1000删除非必需克隆母文件,否则这些文件将作为废文件保留。因此,NAS设备1000具有用于在克隆母文件变成非必需时自动删除克隆母文件的功能。例如,经由文件系统1125实现该功能。克隆母文件在无引用克隆母文件的克隆子文件存在时变成非必需。因此,在删除克隆子文件时,系统确定是否执行克隆母文件的删除处理。
在图14中图示了如下示例,在该示例中,在用被设置为克隆母文件的文件13030单实例化文件B 13010和文件C 13020时,用户删除文件B 13010和文件C 13020,借此自动删除文件13030。
用户通过使用NFS客户端13050经由NFS服务器程序13060访问文件系统13070。向用户揭示在导出目录1240中的文件,但是在索引目录1250中的文件对用户不可见。从文件B13010和文件C13020引用作为克隆母文件的文件13030,因此将其引用计数器设置成2。首先,用户删除文件B 13010。在删除克隆子文件时,对引用目的地克隆母文件的引用计数器递减(-1)。由此,将作为克隆母文件的文件13030的引用计数器设置成1。仍然从文件C13020引用作为克隆母文件的文件13030,因此不会删除它。
接着,用户删除文件C 13020。再次对作为克隆母文件的文件13030的引用计数器递减(-1)并且将其设置成0。由于不再存在引用作为克隆母文件的文件13030的克隆子文件,所以文件13030变成非必需,因此系统例如经由文件系统13070删除文件13030。
另外,由于其中存储了文件13030的实际大小目录13040变成空并且不再有在索引目录1250中注册的具有文件大小3.2MB的文件,所以也删除实际大小目录13040。另外,关于实际大小目录的删除,实际大小目录在文件分类程序1233中比较文件大小时存在,但是在实际大小目录中的文件数目为零时,有可能执行针对索引目录的文件注册过程而不是实际大小目录的删除处理。
图15示出克隆母文件的删除确定处理的流程图。例如,经由文件系统13070执行本处理。用户删除在导出目录1240中存储的克隆子文件触发文件系统13070执行图15中所示的处理。
在S14010中,删除克隆子文件。在S14020中,递减(-1)删除的克隆子文件所引用的克隆母文件的引用计数器。在S14030中,如果克隆母文件的引用计数器变成零,则该过程继续至S14040,而如果不是,则结束本处理。在S14040中,删除克隆母文件。
在S14050中,如果其中存储了克隆母文件的实际大小目录13040中存储的文件数目变成零,则该过程继续至S14060,而如果不是,则结束本处理。在S14060中,删除实际大小目录并且结束本处理。
在本处理中,在通过删除等不再存在克隆子文件时,将删除非必需的克隆母文件。根据该处理,将没有非必需的克隆母文件,这些克隆母文件具有在卷中保留的数据,因此可以更高效地使用卷的存储容量。另外,由于也删除了实际大小目录,所以将不再在图10的文件大小比较中执行将文件大小与空目录比较的过程,从而增强处理的速度并且减少错误。
(3)第三实施例
现在将描述本发明的第三实施例。在以下描述中,主要描述第三实施例与第一实施例之间的不同,并且从描述中省略与第一实施例公共的部分。
本发明的第三实施例举例说明拆分(split)处理。拆分处理是用于使克隆文件恢复成正常文件的处理,其中根据本发明,在用于使单实例化的文件恢复成正常文件的过程中利用拆分处理。在执行拆分处理时,减少引用克隆母文件的克隆子文件的数目,从而在不再存在引用克隆母文件的克隆子文件时,删除克隆母文件本身。
例如,在更新克隆子文件并且在克隆子文件与克隆母文件之间的不同变得太大而克隆母文件的数据可能变得无用时执行拆分处理以解决该情形或者在将错误文件转化成克隆子文件时或者在对克隆子文件的访问频率增加、从而必须将子文件重新转换成正常文件时的情况下利用拆分处理。
图16图示如下示例,在该示例中,文件B 15010和文件C 15020在其中对文件B15010和文件C 15020单实例化、使文件15030被设置为克隆母文件的状态中,文件B 15010和文件C 15020经受拆分处理。拆分处理例如通过系统管理员指定待拆分的文件并且使用NAS管理器15200向NAS设备1000发布拆分命令来执行。
首先,系统管理员拆分文件B 15010。文件B 15010具有的除了更新数据之外的区域的数据、也就是引用克隆母文件的区域的数据从克隆母文件被复制到克隆子文件,并且文件B 15010被从克隆子文件转换成正常文件。然后,递减(-1)引用目的地克隆母文件的引用计数器。由此,将作为克隆母文件的文件15030的引用计数器设置为1。不删除作为克隆母文件的文件15030,因为它仍然被文件C 15020引用。
接着,系统管理员拆分文件C 15020。文件C 15020具有的除了更新的数据之外的区域的数据、也就是引用克隆母文件的区域的数据从克隆母文件被复制到克隆子文件,并且文件C 15020被从克隆子文件转换成正常文件。然后,作为克隆母文件的文件15030的引用计数器被进一步递减(-1)并且变成零。
由于不再存在引用作为克隆母文件的文件15030的克隆子文件,所以文件15030变成非必需,因此系统例如经由文件系统15070删除文件15030。由于其中存储了文件15030的实际文件目录15040变成空,并且由于在索引目录1250中不再注册具有文件大小3.2MB的文件,所以也删除实际文件目录15040。
图17图示拆分处理的流程图。例如,经由文件系统15070执行本处理。系统管理员使用NAS管理器15200向NAS设备1000发布拆分命令,并且已经接收到该命令的NAS设备1000通知文件系统15070开始拆分处理,文件系统15070据此执行图17中所示的处理。
另外,由于系统管理员难以察觉在克隆子文件与克隆母文件之间的不同已经变得显著,从而文件系统15070可以执行确定。可选地,在发布拆分命令时指定在克隆子文件的更新数据已经达到整个数据的某个百分比时执行拆分处理的阈值。如果尚未执行阈值的可选指定,则从S16010开始基于S16001的确定执行拆分处理。在指定了阈值的选项时,在S16002中,系统检查克隆子文件具有的更新数据容量,并且如果结果尚未超过阈值,则该过程继续至S16010并且执行拆分处理。如果尚未超过阈值,则不执行拆分处理并且结束处理。
另外,拆分命令支持文件指定、目录指定和文件系统指定。在目录指定的情况下,对于在相关目录中的所有文件执行拆分处理,而在文件系统指定的情况下,对于相关文件系统中的所有文件执行拆分处理。
在S16010中,从克隆母文件向克隆子文件复制克隆子文件具有的除了更新数据之外的部分、也就是引用克隆母文件的区域的数据。因此,克隆子文件将具有所有数据。在S16020中,改变和转换克隆子文件的索引节点信息为正常文件。在S16030中,递减(-1)被转换成正常文件的克隆子文件曾引用的克隆母文件的引用计数器。
在S16040中,如果克隆母文件的引用计数器已经变成零,则该过程继续至S16050,而如果不是,则结束本处理。在S16050中,删除克隆母文件。在S16060中,如果在其中已经存储克隆母文件的实际大小目录16040中存储的文件数目变成零,则该过程继续至S16070,而如果不是,则结束本处理。在S16070中,删除实际大小目录并且结束本处理。
作为本实施例的效果,在克隆母文件与克隆子文件之间的不同已经变得显著时拆分文件,从而防止克隆母文件的数据变得无用。已经举例说明本发明的优选实施例中的几个优选实施例,但是这些实施例仅为用于描述本发明的示例并且这些实施例不意味着以任何方式限制本发明的范围。各种其它修改也可能实现本发明。
最后,应当注意在本说明书中描述的过程和技术不以任何方式与任何具体设备有关并且可以经由适当部件的组合来实施。另外,可以根据本说明书使用各种类型的通用设备。
此外,本发明的其它实现方式将基于本发明的说明书和实施例变得为具有本领域普通知识的技术人员所清楚。说明书和这里举例说明的具体示例仅为典型示例,并且可以在具有数据管理功能的计算机化的存储系统中独立地或者以组合的方式采用与所示实施例有关的各种修改的示例和/或部件。
附图标记列表
1000 NAS设备
1100 NAS机头
1122 通知程序
1123 策略决定程序
1124 单实例程序
1125 文件系统
1150 NAS存储系统
1160 存储控制器
1180,1181,1182 NAS客户端
1240 导出目录
1250 索引目录
Claims (14)
1.一种文件存储系统,包括:
控制器,用于管理多个文件,每个所述文件具有管理信息和实际数据;
存储介质,构成用于存储所述多个文件的卷;
其中所述卷包括第一目录和第二目录,所述第二目录是索引目录;
所述第一目录存储第一文件和第二文件;
其中所述控制器:
在所述第二目录中创建第三文件并且向所述第三文件迁移所述第二文件的所述实际数据;
建立所述第二文件的所述管理信息,以在所述第二文件从计算机接收到读取访问时引用所述第三文件;
将所述第一文件的所述实际数据的大小与所述第三文件的所述实际数据比较;
如果所述大小的比较的结果表示所述数据的大小相同,则将所述第一文件的所述实际数据的二进制数与所述第三文件的所述实际数据比较;以及
如果所述二进制数的比较的结果表示所述二进制数相同,则建立所述第一文件的所述管理信息,以在所述第一文件从所述计算机接收到读取访问时引用所述第三文件,并且删除第一实际数据。
2.根据权利要求1所述的文件存储系统,其中在接收到针对所述第一文件的写入请求时,所述控制器:
在所述第一文件中存储更新数据;
在针对不是更新的数据的第一文件的读取请求被接收到时,通过引用所述第三文件来读取所述第三文件的所述实际数据;以及
在针对与所述更新数据有关的所述第一文件的读取请求被接收到时,读取在所述第一文件中存储的所述更新数据。
3.根据权利要求1所述的文件存储系统,其中在向所述第三文件迁移所述第二文件的所述实际数据时,所述控制器:
建立所述第三文件的所述管理信息,从而将所述第二文件的实际数据存储区域指示为存储所述第三文件的所述实际数据的存储区域;以及
删除所述第二文件的指示所述第二文件的所述实际数据存储区域的所述管理信息。
4.根据权利要求1所述的文件存储系统,其中
提供第三目录,在所述第三目录中,在所述第二目录中存储的文件的大小被设置为目录名称;
在所述第三目录中创建所述第三文件,在所述第三目录中,所述第三文件的大小被设置为所述目录名称;以及
为了将所述第三文件的所述实际数据的所述大小与所述第一文件的所述实际数据比较,所述控制器将所述大小与在所述第三目录名称中示出的大小比较,而不是与所述第三文件的所述实际数据的大小比较。
5.根据权利要求4所述的文件存储系统,其中
当大小比较的结果表示所述数据大小不同时,所述控制器:
在所述第二目录中创建第四目录,使所述第一文件的所述大小被设置为所述目录名称;
在所述第四目录中创建第四文件;
向所述第四文件迁移所述第一文件的所述实际数据;并且
建立所述第一文件的所述管理信息,以在所述第一文件从所述计算机接收到读取访问时引用所述第四文件。
6.根据权利要求4所述的文件存储系统,其中
当二进制数比较的结果表示所述二进制数不同时,所述控制器:
在所述第三目录中创建第四文件;
向所述第四文件迁移所述第一文件的所述实际数据;并且
建立所述第一文件的所述管理信息,以在所述第一文件从所述计算机接收到读取访问时引用所述第四文件。
7.根据权利要求6所述的文件存储系统,其中在二进制数比较期间,所述控制器:
计算所述第一文件和所述第三文件的散列值;
改变所述第三文件的名称以包含所述第三文件的所述散列值;以及
创建所述第四文件以具有包括所述第一文件的所述散列值的名称。
8.根据权利要求4所述的文件存储系统,其中在所述大小的比较的结果表示所述数据的大小相同时,所述控制器:
检查在所述第三目录中存储的文件的数目是否超过阈值;
如果所述检查的结果表示在所述第三目录中存储的所述文件的数目超过所述阈值,则比较在所述第三目录中存储的所述文件和所述第一文件的散列值;以及
根据所述散列值的比较结果,对具有与所述第一文件相同的散列值的文件执行与所述第一文件的二进制数比较。
9.根据权利要求8所述的文件存储系统,其中所述散列值比较通过将所述第一文件的计算的所述散列值与在所述第三目录中存储的所述文件名称中包含的所述散列值比较来执行。
10.根据权利要求4所述的文件存储系统,其中所述控制器:
对从在所述第一目录中存储的所述多个文件引用所述第三文件的引用数目计数;
在引用所述第三文件的文件的所述引用数目变成零时,删除所述第三文件;以及
在所述第三文件删除后,当所述第三目录中不再存在文件时,删除所述第三目录。
11.根据权利要求2所述的文件存储系统,其中所述控制器:
观测在所述第一文件中存储的所述更新数据相对于在所述第三文件中存储的所述实际数据的比率;以及
在观测的所述比率超过阈值时,从所述第三文件向所述第一文件复制除了在所述第三文件中存储的所述实际数据的所述更新数据之外的部分,并且从所述第一文件的所述管理信息删除用于引用所述第三文件的消息。
12.根据权利要求1所述的文件存储系统,其中在所述第一目录中存储的所述文件的所述文件大小的比较按照从具有最大数据的所述文件起的顺序来执行。
13.根据权利要求1所述的文件存储系统,其中所述第二目录是隐藏的目录。
14.一种文件存储系统的单实例化方法,所述文件存储系统包括:
控制器,用于管理多个文件,每个所述文件具有管理信息和实际数据;
存储介质,构成用于存储所述多个文件的卷;
其中所述卷包括第一目录和第二目录,所述第二目录是索引目录;
所述第一目录存储第一文件和第二文件;
其中所述控制器:
在所述第二目录中创建第三文件并且向所述第三文件迁移所述第二文件的所述实际数据;
建立所述第二文件的所述管理信息,以在所述第二文件从计算机接收到读取访问时引用所述第三文件;
将所述第一文件的所述实际数据的大小与所述第三文件的所述实际数据比较;
如果所述大小的比较的结果表示所述数据的大小相同,则将所述第一文件的所述实际数据的二进制数与所述第三文件的所述实际数据比较;以及
如果所述二进制数的比较的结果表示所述二进制数相同,则建立所述第一文件的所述管理信息,以在所述第一文件从所述计算机接收到读取访问时引用所述第三文件,并且删除第一实际数据。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2012/000464 WO2013111187A1 (en) | 2012-01-25 | 2012-01-25 | Single instantiation method using file clone and file storage system utilizing the same |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104081391A CN104081391A (zh) | 2014-10-01 |
CN104081391B true CN104081391B (zh) | 2018-06-08 |
Family
ID=48798080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280068182.5A Active CN104081391B (zh) | 2012-01-25 | 2012-01-25 | 使用文件克隆的单实例化方法和利用该方法的文件存储系统 |
Country Status (5)
Country | Link |
---|---|
US (2) | US8862558B2 (zh) |
EP (1) | EP2791831B1 (zh) |
JP (1) | JP5856680B2 (zh) |
CN (1) | CN104081391B (zh) |
WO (1) | WO2013111187A1 (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130086753A (ko) * | 2012-01-26 | 2013-08-05 | 삼성전자주식회사 | 컨텐츠의 중복 여부를 확인할 수 있는 휴대용 단말기의 장치 및 방법 |
JP2013175132A (ja) * | 2012-02-27 | 2013-09-05 | Fuji Xerox Co Ltd | 文書管理サーバ装置、文書管理装置、文書管理システム、及び文書管理プログラム |
US8776236B2 (en) * | 2012-04-11 | 2014-07-08 | Northrop Grumman Systems Corporation | System and method for providing storage device-based advanced persistent threat (APT) protection |
US9262423B2 (en) * | 2012-09-27 | 2016-02-16 | Microsoft Technology Licensing, Llc | Large scale file storage in cloud computing |
JP6033949B2 (ja) * | 2013-02-19 | 2016-11-30 | 株式会社日立製作所 | 情報処理システム |
US9547657B2 (en) | 2014-02-18 | 2017-01-17 | Black Duck Software, Inc. | Methods and systems for efficient comparison of file sets |
US10256977B2 (en) | 2014-02-18 | 2019-04-09 | Synopsys, Inc. | Methods and systems for efficient representation of file sets |
US9569110B2 (en) * | 2014-11-18 | 2017-02-14 | International Business Machines Corporation | Efficient management of cloned data |
CN104461780B (zh) * | 2014-11-28 | 2017-12-15 | 华为技术有限公司 | 一种释放数据块的方法及装置 |
US9575681B1 (en) * | 2016-04-29 | 2017-02-21 | International Business Machines Corporation | Data deduplication with reduced hash computations |
CN106021031B (zh) * | 2016-05-30 | 2018-09-28 | 厦门市美亚柏科信息股份有限公司 | 一种btrfs文件系统的删除数据恢复方法和装置 |
CN106095331B (zh) * | 2016-05-31 | 2020-06-23 | 浙江科澜信息技术有限公司 | 一种固定大文件内部资源的控制方法 |
US11500836B2 (en) * | 2017-06-27 | 2022-11-15 | Salesforce, Inc. | Systems and methods of creation and deletion of tenants within a database |
JP6360956B1 (ja) * | 2017-11-01 | 2018-07-18 | 株式会社Osk | データ取込システム |
CN107861726A (zh) * | 2017-12-15 | 2018-03-30 | 苏州咖博士咖啡系统科技有限公司 | 一种基于NandFlash的文件处理系统的实例化方法 |
US10769117B2 (en) * | 2018-01-18 | 2020-09-08 | International Business Machines Corporation | Effective handling of HSM migrated files and snapshots |
US11461279B2 (en) * | 2018-03-26 | 2022-10-04 | Apple Inc. | Share pools for sharing files via a storage service |
CN108831531A (zh) * | 2018-06-07 | 2018-11-16 | 滨州学院 | 一种基于云计算的自适应医学图像远程处理方法及应用系统 |
CN109783467A (zh) * | 2019-01-12 | 2019-05-21 | 郑州云海信息技术有限公司 | 一种分布式文件系统的嵌套目录文件个数配额设置方法 |
CN110008179B (zh) * | 2019-04-02 | 2023-06-16 | 深圳创维汽车智能有限公司 | 文件存储方法、行车记录仪及可读存储介质 |
US11487625B2 (en) | 2019-10-31 | 2022-11-01 | Rubrik, Inc. | Managing files according to categories |
CN111917556B (zh) * | 2020-07-23 | 2022-02-08 | 平安证券股份有限公司 | 交互文件检测方法、装置、终端及存储介质 |
US20220107916A1 (en) * | 2020-10-01 | 2022-04-07 | Netapp Inc. | Supporting a lookup structure for a file system implementing hierarchical reference counting |
US11916950B1 (en) | 2021-04-12 | 2024-02-27 | Vmware, Inc. | Coordinating a distributed vulnerability network scan |
US11528317B1 (en) | 2021-05-05 | 2022-12-13 | Vmware, Inc. | Proxy-enabled communication across network boundaries by self-replicating applications |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5732265A (en) * | 1995-11-02 | 1998-03-24 | Microsoft Corporation | Storage optimizing encoder and method |
CN1534947A (zh) * | 2003-03-27 | 2004-10-06 | 以对应用程序透明的方式改进消息传递系统的可用性和可伸缩性 | |
CN1873623A (zh) * | 2005-06-03 | 2006-12-06 | 鸿富锦精密工业(深圳)有限公司 | 网络附加存储设备测试系统及方法 |
CN101232514A (zh) * | 2008-01-24 | 2008-07-30 | 创新科存储技术(深圳)有限公司 | 网络附加存储节点的元数据同步方法及网络附加存储节点 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6438320B1 (en) * | 1996-10-16 | 2002-08-20 | Canon Kabushiki Kaisha | File management system for managing data of photographed images |
JP4075203B2 (ja) * | 1999-04-09 | 2008-04-16 | 株式会社日立製作所 | データバックアップシステム |
US6477544B1 (en) | 1999-07-16 | 2002-11-05 | Microsoft Corporation | Single instance store for file systems |
JP4173673B2 (ja) * | 2002-03-20 | 2008-10-29 | 株式会社日立製作所 | ファイルバックアップ方法および記憶装置 |
US20080005164A1 (en) * | 2003-06-24 | 2008-01-03 | Terrence Yee | System and method for website development involving journaling and parent maps replacement |
US7203708B2 (en) | 2003-11-06 | 2007-04-10 | Microsoft Corporation | Optimizing file replication using binary comparisons |
WO2005050381A2 (en) * | 2003-11-13 | 2005-06-02 | Commvault Systems, Inc. | Systems and methods for performing storage operations using network attached storage |
US7536377B1 (en) * | 2003-12-18 | 2009-05-19 | Xilinx, Inc. | Component naming |
CN101814310B (zh) * | 2004-07-22 | 2012-11-28 | 松下电器产业株式会社 | 重放装置和重放方法 |
JP2006092268A (ja) * | 2004-09-24 | 2006-04-06 | Fuji Photo Film Co Ltd | 画像ファイル記録システムおよびその制御方法 |
WO2007086096A1 (ja) | 2006-01-24 | 2007-08-02 | Fujitsu Limited | 情報処理方法、情報処理プログラム及び情報処理装置 |
US7461222B2 (en) * | 2006-02-14 | 2008-12-02 | Hitachi, Ltd. | Method for mirroring data between clustered NAS systems |
JP4806572B2 (ja) * | 2006-02-15 | 2011-11-02 | 株式会社日立製作所 | データミラーリングによって参照負荷を分散するストレージシステムにおけるアクセスの制御 |
JP5124989B2 (ja) * | 2006-05-26 | 2013-01-23 | 日本電気株式会社 | ストレージシステム及びデータ保護方法とプログラム |
US20080016132A1 (en) * | 2006-07-14 | 2008-01-17 | Sun Microsystems, Inc. | Improved data deletion |
US20080065667A1 (en) * | 2006-09-11 | 2008-03-13 | Hopkins Donald F | Transaction oriented resilient file system |
CN101689238B (zh) * | 2007-07-06 | 2012-06-20 | 富士通株式会社 | 文件管理系统、文件管理装置 |
US8055864B2 (en) * | 2007-08-06 | 2011-11-08 | International Business Machines Corporation | Efficient hierarchical storage management of a file system with snapshots |
JP2009230583A (ja) * | 2008-03-24 | 2009-10-08 | Hitachi Software Eng Co Ltd | ファイル共有方法及びシステム、並びに、サーバ装置、クライアント装置、及びプログラム |
JP5018611B2 (ja) * | 2008-04-10 | 2012-09-05 | パナソニック株式会社 | ネットワーク制御機器、ネットワーク制御方法 |
US8296398B2 (en) * | 2008-04-29 | 2012-10-23 | Overland Storage, Inc. | Peer-to-peer redundant file server system and methods |
JP2009282604A (ja) * | 2008-05-20 | 2009-12-03 | Nec Corp | 重複データ排除システム、重複データ排除方法及び重複データ排除プログラム |
US8386443B2 (en) | 2008-10-06 | 2013-02-26 | Dell Products L.P. | Representing and storing an optimized file system using a system of symlinks, hardlinks and file archives |
JP5180865B2 (ja) * | 2009-02-10 | 2013-04-10 | 株式会社日立製作所 | ファイルサーバ、ファイル管理システムおよびファイル管理方法 |
US8443153B1 (en) * | 2010-01-06 | 2013-05-14 | Netapp, Inc. | Dynamic balancing of performance with block sharing in a storage system |
US8396843B2 (en) * | 2010-06-14 | 2013-03-12 | Dell Products L.P. | Active file instant cloning |
US8600949B2 (en) * | 2011-06-21 | 2013-12-03 | Netapp, Inc. | Deduplication in an extent-based architecture |
US8805796B1 (en) * | 2011-06-27 | 2014-08-12 | Emc Corporation | Deduplicating sets of data blocks |
JP5594256B2 (ja) * | 2011-08-17 | 2014-09-24 | 富士通株式会社 | 情報処理方法、情報処理プログラム及び情報処理装置 |
-
2012
- 2012-01-25 US US13/387,614 patent/US8862558B2/en active Active
- 2012-01-25 CN CN201280068182.5A patent/CN104081391B/zh active Active
- 2012-01-25 EP EP12703592.1A patent/EP2791831B1/en active Active
- 2012-01-25 WO PCT/JP2012/000464 patent/WO2013111187A1/en active Application Filing
- 2012-01-25 JP JP2014533722A patent/JP5856680B2/ja not_active Expired - Fee Related
-
2014
- 2014-09-11 US US14/483,226 patent/US9684669B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5732265A (en) * | 1995-11-02 | 1998-03-24 | Microsoft Corporation | Storage optimizing encoder and method |
CN1534947A (zh) * | 2003-03-27 | 2004-10-06 | 以对应用程序透明的方式改进消息传递系统的可用性和可伸缩性 | |
CN1873623A (zh) * | 2005-06-03 | 2006-12-06 | 鸿富锦精密工业(深圳)有限公司 | 网络附加存储设备测试系统及方法 |
CN101232514A (zh) * | 2008-01-24 | 2008-07-30 | 创新科存储技术(深圳)有限公司 | 网络附加存储节点的元数据同步方法及网络附加存储节点 |
Also Published As
Publication number | Publication date |
---|---|
EP2791831B1 (en) | 2020-03-11 |
US9684669B2 (en) | 2017-06-20 |
JP2015503777A (ja) | 2015-02-02 |
EP2791831A1 (en) | 2014-10-22 |
US20140379672A1 (en) | 2014-12-25 |
US20130191350A1 (en) | 2013-07-25 |
WO2013111187A1 (en) | 2013-08-01 |
JP5856680B2 (ja) | 2016-02-10 |
US8862558B2 (en) | 2014-10-14 |
CN104081391A (zh) | 2014-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104081391B (zh) | 使用文件克隆的单实例化方法和利用该方法的文件存储系统 | |
JP6001656B2 (ja) | ファイル/オブジェクトデュアリティをサポートする統合ストレージシステムを提供するためのシステム及び方法 | |
CN103765393B (zh) | 存储系统 | |
US9015123B1 (en) | Methods and systems for identifying changed data in an expandable storage volume | |
US8595237B1 (en) | Method and system for managing metadata in a storage environment | |
US8600998B1 (en) | Method and system for managing metadata in a cluster based storage environment | |
US10769117B2 (en) | Effective handling of HSM migrated files and snapshots | |
US8095678B2 (en) | Data processing | |
CN103597440A (zh) | 用于创建克隆文件的方法以及采用该方法的文件系统 | |
GB2439578A (en) | Virtual file system with links between data streams | |
US11775476B2 (en) | Techniques for snapshotting scalable multitier storage structures | |
US8090925B2 (en) | Storing data streams in memory based on upper and lower stream size thresholds | |
AU2021266178B2 (en) | Custom metadata tag inheritance based on a filesystem directory tree or object storage bucket | |
Cruz et al. | A scalable file based data store for forensic analysis | |
US11762808B2 (en) | Deletion of snapshot of filesystem | |
CN110352410A (zh) | 跟踪索引节点的访问模式以及预提取索引节点 | |
JP2004252957A (ja) | 分散ファイルシステムのファイルレプリケーション方法及び装置 | |
US10521159B2 (en) | Non-disruptive automatic application regrouping | |
US11269837B2 (en) | Data tree checkpoint and restoration system and method | |
US20140344538A1 (en) | Systems, methods, and computer program products for determining block characteristics in a computer data storage system | |
US9646012B1 (en) | Caching temporary data in solid state storage devices |
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 |