CN103597440A - 用于创建克隆文件的方法以及采用该方法的文件系统 - Google Patents
用于创建克隆文件的方法以及采用该方法的文件系统 Download PDFInfo
- Publication number
- CN103597440A CN103597440A CN201180071508.5A CN201180071508A CN103597440A CN 103597440 A CN103597440 A CN 103597440A CN 201180071508 A CN201180071508 A CN 201180071508A CN 103597440 A CN103597440 A CN 103597440A
- Authority
- CN
- China
- Prior art keywords
- file
- clone
- data
- differential
- files
- 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.)
- Pending
Links
Images
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/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
- G06F16/183—Provision of network file services by network file servers, e.g. by using NFS, CIFS
-
- 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/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
-
- 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/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- 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/184—Distributed file systems implemented as replicated file system
- G06F16/1844—Management specifically adapted to replicated 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/18—File system types
- G06F16/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在现有技术的文件克隆创建技术中,在创建克隆文件时,创建文件和快照的管理表,从而需要相当大量的用于创建克隆文件的创建时间和存储空间。为了解决现有技术的这一问题,本发明提供了一种系统,其中如果接收到创建文件的克隆的请求,则创建差异文件,同时禁止文件的更新,并且将更新数据写入到差异文件中。另外,在创建差异文件之后,在接收到对差异文件的第一更新请求时,创建管理表。根据本发明,可以快速地创建大量的克隆文件。
Description
技术领域
本发明涉及具有文件克隆功能的文件系统,以及用于增强创建克隆文件的性能的方法。
背景技术
近来,随着虚拟化技术的推进,VM(虚拟机)的使用得到广泛传播,其典型的示例是VDI(虚拟桌面基础架构)。为了快速地使用VM,常见的是复制已经安装了OS(操作系统)环境的虚拟盘文件。
然而,由于虚拟盘文件的大小可能是几个GB(千兆字节),所以物理地复制文件的过程可能需要花费大约数十秒甚至数十分钟。因此,能够虚拟地复制虚拟盘文件以便削减复制过程所需的时间的文件克隆技术引起了注意(专利文献1)。
引用列表
专利文献
PTL1:美国专利号7,409,511
发明内容
技术问题
专利文献1公开了一种创建克隆的技术,其中该克隆是父虚拟卷的可写副本。根据专利文献1公开的技术,创建了父虚拟卷的快照和充当克隆的虚拟卷,并且在不同文件(差异文件)中差异地管理快照的修改数据。差异文件在创建之后不会立即具有数据块,但是数据块的管理表被创建。物理块编号等被存储在数据库管理表的字段中,并且其初始值是“0”。当访问其中数据块管理表的字段是“0”的文件时,参考快照。
根据所公开的文件克隆功能,因为创建了用于管理文件块的文件管理表以及将逻辑块与物理块相关联的管理表,创建克隆文件的性能具有缺点。换言之,现有技术的克隆功能具有以下两个问题。
(a1)必须按顺序创建快照以创建克隆。
(a2)在克隆的更新发生之前,创建管理表,但是如果文件大小为大,则文件管理表的容量必须也大,这样克隆的创建需要较长时间。
因此,在创建几百到几千个克隆文件时,创建克隆文件的性能恶化,并且创建需要非常长的时间。
问题的解决方案
由此,本发明采用了以下两种方法来实现克隆文件的高速创建。
(b1)当接收到用于创建文件的克隆的请求时,禁止文件的更新,创建差异文件,并且将更新数据写入到差异文件中。
(b2)在创建差异文件之后,当接收到差异文件的第一更新请求时,创建管理表。
实际上,本发明提供了一种连接至客户端终端和存储系统的文件服务器,该文件服务器包括:处理器,以及存储管理文件的文件系统程序的存储器;其中在接收到用于创建所述文件的克隆的请求之后,创建第一差异文件,并禁止所述文件的更新;在接收到用于访问所述克隆的请求时,访问所述第一差异文件;其中当所述访问是(1)更新请求时:
(1a)如果经由所述更新请求而指定的所述第一差异文件的文件块没有被指派到所述存储系统的盘块,则向所述文件块指派所述存储系统的盘块,并且将更新数据写入其中;
(1b)如果所述文件块被指派到所述存储系统的盘块,则将更新数据写入其中;
其中当所述访问是(2)读取请求时:
(2a)如果经由所述读取请求而指定的所述第一差异文件的所述文件块中存在数据,则从其中读取所述数据;
(2b)如果所述文件块中没有数据,并且如果与所述文件相对应的所述文件块中存在数据,则从其中读取所述数据,以及
在所述文件的更新请求发生时,创建第二差异文件,并且
向经由所述更新请求而指定的所述第二差异文件的所述文件块指派所述存储系统的盘块,并且将更新数据写入其中。
根据本发明的另一方面,在接收到所述文件的复制文件创建请求时,所述文件系统程序将第二差异文件连同所述第一差异文件一起创建,而不考虑所述文件的更新请求是否发生,并且在接收到对所述文件的访问请求时,访问所述第二差异文件;
其中,当所述访问是(1)更新请求时:
(1a)如果经由所述更新请求而指定的所述第二差异文件的文件块没有被指派到所述存储系统的盘块,则指派所述存储系统的盘块,并且将更新数据写入其中;
(1b)如果所述文件块被指派到盘块,则将更新数据写入其中;
其中当所述访问是(2)读取请求时:
(2a)如果经由所述读取请求而指定的所述第二差异文件的所述文件块中存在数据,则从其中读取所述数据;以及
(2b)如果所述文件块中没有数据,并且如果与所述文件相对应的所述文件块中存在数据,则从其中读取所述数据。
根据本发明的又一方面,在创建所述第一差异文件之后,当接收到对所述第一差异文件的第一更新请求时,所述文件系统程序创建第一数据管理表;以及在所述第一数据管理表中存储包括所述更新数据的文件数据的偏移、所述存储系统的盘块的向经由所述更新请求指定的所述第一差异文件的所述文件块指派的开始块位置以及文件的数据块长度。
本发明的有益效果
如所描述的,当创建克隆文件时不需要创建快照,从而可以快速创建克隆文件。另外,因为在克隆文件的更新发生之后创建管理表,所以不需要在更新之前分配不必要的容量,可以减少容量消耗。
附图说明
图1是示出本发明的结构的示例的框图。
图2是示出客户端结构的示例的框图。
图3是示出文件服务器结构的示例的框图。
图4是示出盘存储结构的示例的框图。
图5是示出管理终端结构的示例的框图。
图6是示出克隆文件的关系的示例的框图。
图7是示出文件管理信息的关系的框图。
图8示出克隆文件数据的关系。
图9是示出克隆文件的创建的示例的流程图。
图10是示出用于读取克隆文件的操作的示例的流程图。
图11是示出用于经由文件系统程序读取文件的操作的示例的流程图。
图12是示出用于向克隆文件写入数据的操作的示例的流程图。
图13是示出用于经由文件系统程序向文件写入数据的操作的示例的流程图。
图14是示出用于改变克隆文件的大小的操作的示例的流程图。
图15是示出用于经由文件系统程序改变克隆文件的大小的操作的示例的流程图。
图16是示出用于删除克隆文件的操作的示例的流程图。
图17是示出用于经由文件系统程序删除克隆文件的操作的示例的流程图。
图18是示出管理GUI的示例的视图。
图19是示出根据本发明的实施方式2的克隆文件的层级结构的视图。
图20是示出根据实施方式2的用于读取克隆文件的操作的示例的流程图。
图21是示出根据实施方式2的用于经由文件系统程序读取克隆文件的操作的示例的流程图。
图22是示出根据实施方式2的用于向克隆文件写入数据的操作的示例的流程图。
图23是示出根据实施方式2的用于经由文件系统程序向克隆文件写入数据的操作的示例的流程图。
图24是示出根据实施方式3的管理GUI的示例的视图。
图25是示出根据实施方式3的用于复制文件的操作的示例的流程图。
具体实施方式
现在,将参考附图来描述本发明的优选实施方式,但是本发明的范围不限于这些实施方式。
<实施方式1>
现在,将参考图1到图18来描述本发明的第一实施方式。首先,将参考图1到图5来描述本发明的配置。图1是示出根据本发明的文件共享系统的配置的示例的框图。客户端1001是使用文件共享系统的终端用户所使用的计算机。将随后描述(参考图2)客户端1001的内部配置和内部过程的操作。
网络交换机1002是能够经由LAN(局域网)连接客户端1001、管理终端1005和文件服务器1003的设备。然而,根据本发明的连接的形式不限于这些,并且LAN可以通过应用无线通信装置等来实现。文件服务器1003是使用客户端1001向终端用户提供文件共享服务的计算机。随后将详细描述其内部配置和内部过程。盘存储1004是用于保留存储在文件服务器1003中的文件数据的盘系统。
文件服务器1003和盘存储1004经由FC(光纤通道)协议连接。诸如iSCSI(互联网小计算机系统接口)的其他协议也可以用于连接文件服务器1003和盘存储1004。本发明不限制文件服务器1003和盘存储1004的形式。管理终端1005是系统管理员用于管理根据本发明的文件共享系统的计算机。将随后详细描述(参考图5)管理终端1005的内部配置和内部过程。
图2是示出根据本发明的客户端1001的内部配置的示例的框图。客户端1001包括CPU2001、存储器2002和网络接口2005,其可以经由内部通信路径相互连接。CPU2001执行存储在存储器2002中的应用程序2003和文件访问程序2004。应用程序2003是由终端用户使用的程序(诸如电子制表程序)。
文件访问程序2004是使得文件服务器1003能够访问向终端用户提供的文件共享服务的程序。当应用程序2003经由LAN访问文件服务器1003中的文件时,文件访问程序2004向文件服务器1003发送文件访问请求。继而,文件访问程序2004从文件服务器1003接收文件访问数据,并且将其发送至应用程序2003。
图3是示出根据本发明的文件服务器1003的内部配置的示例的框图。文件服务器1003包括CPU3001、存储器3002、网络接口3020和存储接口3021,其经由内部通信路径互相连接。CPU3001执行存储在存储器3002中的文件服务器程序3003、文件系统程序3004、文件克隆程序3005和文件克隆管理程序3006。以上提到的程序的组可以存储在盘(未示出)中,并且被任意读取以便执行。
存储器还保留文件元数据3008和存储文件的数据块信息的数据管理表3011。如在图7中进一步详细描述的,为各个文件创建文件元数据3008和数据管理表3011。另外,文件元数据3008和数据管理表3011存储在盘系统1004的盘4005中,以使得其可以在启动文件服务器1003之后被加载。
文件元数据3008包括索引节点3009,该索引节点3009是具有以下各项的文件管理信息:文件大小和访问许可标记、保留克隆文件的属性的标记3010、存储文件被剪切为最小(在删除数据之后)大小的数据大小的最小大小3012和保持对克隆源文件的参考的克隆子差异文件的数目的参考计数器3013。
根据本发明,除了保持文件管理信息之外,索引节点3009还保持指向克隆源文件6011的源指针3020和指向克隆父差异文件6010的父差异指针3021,这在图6中进一步详细描述。源指针3020和父差异指针3021例如存储向各个索引节点唯一地指派的编号的索引节点编号。然而,只要使用存储在3020和3021中的信息可标识索引节点,索引节点编号就不必是不可缺少的。文件克隆功能使用这些数据来实现克隆功能。随后将详细描述这些数据的详细使用。另外,上述数据和表可以存储在盘(未示出)中,并且在必要时任意从中读取,或者可以被存储在盘中并且被使用。
文件服务器程序3003从客户端1001的文件访问程序2004接收文件访问请求。文件服务器程序3003是使用文件系统程序3004来访问盘存储1004中存储的文件的数据的程序。此时,如果要访问的文件是克隆文件,则文件系统程序3004对克隆文件执行过程。文件服务器1003的过程的内容随后将详细描述。
图4是示出根据本发明的盘存储1004的内部配置的框图。盘存储1004包括CPU4001、存储器4002、盘控制器4004和存储接口4006,其经由内部通信路径互相连接。盘控制器4004还与盘4005连接,并且控制盘4005。盘控制器4004具有RAID(便宜盘的冗余阵列)功能,并且通过多个盘4005的冗余来增强盘单元的容错。
CPU4001执行存储在存储器4002中的存储管理程序4003。存储管理程序4003是用于管理盘控制器4004的RAID功能的程序。例如,设置冗余盘单元的配置。根据本发明,盘存储1004还可以是特定种类的存储单元或者不具有冗余功能的存储单元。另外,盘存储1004可以采用光盘或者磁带单元。换言之,本发明不限制存储文件数据的存储设备。
图5是示出根据本发明的管理终端1005的内部配置的一个示例的框图。管理终端1005包括CPU5001、存储器5005和网络接口5004,其经由内部通信路径相互连接。CPU5001执行存储在存储器5005中的管理程序5002和管理接口5003。
管理程序5002是通过管理接口5003根据本发明用于向系统管理员提供用于管理文件共享系统的功能的程序。当系统管理员向管理接口5003录入管理信息时,管理信息被传输到管理程序5002。管理程序5002基于所接收的管理信息来设置文件服务器1003。将随后进行描述管理程序5002和管理接口5003的过程内容的细节。
接下来,将描述克隆文件的结构。图6是示出根据本发明的克隆文件之间的关系的视图。根据本发明的文件克隆功能通过将文件划分为克隆父文件6004和克隆子文件6003来定义克隆文件。克隆父文件6004表示与将被克隆的文件相同的文件。克隆父文件6004包括克隆源文件6011和克隆父差异文件6010。克隆父文件6004充当克隆文件的源文件。也即,当客户端1001访问克隆文件的源文件时,实际上对克隆父文件6004执行访问。
当客户端1001访问克隆父文件6004时,文件系统程序3004访问克隆源文件6011。同时,文件系统程序3004还访问克隆父差异文件6010。如果客户端1001将数据写入到克隆父文件6004中(也即,如果将数据写入到克隆源文件6011中),文件系统程序3004将该数据写入到克隆父差异文件中。
为了实现该过程,在打开克隆源文件6011时,文件系统程序3004将克隆父差异文件6010的索引节点的编号设置为克隆源文件6011的索引节点3009中的父差异指针3021。之后,文件系统程序3004打开克隆父差异文件6010,并且将克隆源文件6011的索引节点编号设置为克隆父差异文件6010的索引节点3009中的源指针3020。
当客户端1001尝试将数据写入到克隆源文件6011中时(也即,当客户端尝试将数据写入到克隆父文件6004中时),文件系统程序3004从父差异指针3021获得克隆父差异文件6010,并且将数据写入到克隆父差异文件6010中。随后将进一步详细地描述这一过程。
如上文所述,根据专利文献1,有必要管理快照,快照需要管理和克隆。另一方面,本发明使得能够实现文件克隆功能,而不向客户端1001公开克隆父差异文件6010,以使得可以削减管理成本。
根据图6的示例,克隆父差异文件6010不具有数据管理表3011。换言之,克隆父差异文件6010不具有数据6001。也即,在创建克隆子文件6003之后,客户端1001没有将数据写入到克隆父文件6004中。如上文所述,在创建克隆文件时,克隆父差异文件6010既没有数据也没有数据管理表3011。因此,可以快速地创建克隆父差异文件。
另一方面,克隆子文件6003包括克隆源文件6011和克隆子差异文件6012。克隆子文件6003充当克隆源文件6011的复制文件。当客户端1001访问克隆子文件6003时,文件系统程序3004访问克隆子差异文件6012。此时,文件系统程序3004还访问克隆源文件6011。
当客户端1001将数据写入到克隆子文件6003中时,文件系统程序3004将数据写入到克隆子差异文件6012中。为了实现该过程,在打开克隆子差异文件6012时,文件系统程序3004将克隆源文件6011的索引节点的编号设置为克隆子差异文件6012的索引节点3009中的源指针3020。
当客户端1001尝试将数据写入到克隆子差异文件6012中时(也即,当客户端尝试将数据写入到克隆子文件6003中时),文件系统程序3004根据源指针3020找到克隆源文件6011。继而,文件系统程序3004写入克隆源文件6011的合并数据,并且将数据写入到克隆子差异文件6012中。这些过程随后将详细描述。
根据图6的示例,当客户端1001将数据写入到克隆子文件6003中时,在文件元数据6012中创建数据管理表3011。数据管理表3011指定盘4005中的克隆子差异文件的数据块6002。另外,克隆源文件6011的文件元数据中的数据管理表3011指定克隆源文件6011的数据块6001。为了示出克隆父文件6004的文件的关系,克隆源文件6011的索引节点3009的父差异指针3021指向克隆父差异文件6010的索引节点3009。
类似地,克隆父差异文件6010的索引节点3009的源指针3020还指定克隆源文件6011的索引节点3009。另一方面,为了示出克隆子文件6003的文件的关系,克隆子差异文件6012的索引节点3009的源指针指向克隆源文件6011的索引节点。另外,克隆父差异文件6010的索引节点3009指示克隆源文件6011的索引节点3009。另一方面,为了示出克隆子文件6003的文件的关系,克隆子差异文件6012的索引节点3009指定克隆源文件6011的索引节点。
各个文件6010、6011和6012的标记3010保留重新发送文件的属性的标记。所设置的标记是GI(黄金映像)标记和CLONE标记。在创建克隆子文件时,文件克隆程序3005将GI标记设置为指示该文件是克隆源文件的克隆源文件6011的标记3010。
另外,程序将CLONE标记设置为克隆子差异文件6012的标记3010以及克隆父差异文件6010的标记3010,其指示文件是克隆差异文件。这些标记用于指定由文件系统程序3004的处理目标文件。在图6的示例的情况下,数据存在于克隆子差异文件中。然而,如果在创建克隆子差异文件之后,没有将数据写入到克隆子文件中去,则既不存在数据也不存在数据管理表3011。因此,可以快速地创建克隆子差异文件。
如上所述,形成了克隆文件之间的关系。随后将详细描述各个文件的操作。另外图6示出了创建一个克隆子文件6003的示例。根据本发明,克隆子文件6003的数目不受限制,所以可以创建不止一个克隆子文件。在以下描述中,创建的克隆子文件6003的数目是1,类似于图6的示例。
图7示出了存储在盘4005中的文件7001、文件元数据3008、数据管理表3011和文件数据7020的关系。文件7001包括文件元数据3008和数据管理表3011。经由逻辑文件块7030为单位来管理文件7001的大小。例如,从文件的开始的前4个千字节(KB)作为块1来管理,并且随后的4个千字节(KB)作为块2来管理。另外,与盘块7010不同,也向逻辑文件块7030中的孔指派文件块编号。
将盘4005划分为特定大小的盘块并且进行管理。在图7所示的示例中,将盘划分为文件7001的4KB单元盘块7010。数据管理表3011是用于管理文件7001中的文件数据7020的表。数据管理表3011的各个记录包括文件偏移7002、开始块位置7003和块长度7004的字段。文件偏移7002表示从文件数据7020的开始的偏移。开始块位置7003存储了存储文件数据7020的盘块6001的引导块编号。块长度7004存储了文件数据7020的块7010的块的长度。
例如,如果文件偏移7002是“0”,开始块位置7003是“1”,并且块长度7004是“5”,则意味着文件7001的从第0字节开始到20KB(=4KB/块×5个块)的数据被存储在从盘4005的块编号1到块编号5中。类似地,如果文件偏移7002是“65536”,开始块位置7003是“7”,并且块长度7004是“6”,则意味着从第65536字节(64KB)到24KB(=4KB/块×6个块)的数据被存储在从块编号7到块编号12的6个块中。
在图7的情况下,文件7001的数据包括文件的数据区域7021和孔7022,如文件数据7020中所示。孔是没有指派盘中的块7010的数据区域。当客户端1001读取文件7001的孔7022的部分时,文件系统程序3004向客户端1001返回“0”,因为不存在相对应的块7010。
当在盘中存储数据时,创建数据管理表3011。类似地,当添加新块时,并且仅当块不连续时,向数据管理表3011添加记录。在图7的情况下,在将附加数据写入到文件中并且块13被新近使用时,第二记录的块长度7004的值从“6”增加到“7”。
另一方面,如果要新近使用块14,有可能添加新记录(第三记录)。如上所述,通过在必要的情况下向数据管理表3011添加新记录,可以减少创建文件时必须同时创建的管理数据,并且可以快速地创建文件。
图8是示出克隆子文件6003或者克隆父文件6004中的数据的关联的示图。通过叠加克隆子差异文件6012和克隆源文件6011来构造克隆子文件6003。克隆子差异文件6012的孔处于这样的状态,其中在已经创建了克隆子文件6003之后,没有将数据写入其中(换言之,不存在差异信息)。
在图8中,向克隆子差异文件6012指派块编号10,并且向文件块1中的克隆源文件6011指派块编号1。现在,当客户端1001读取克隆子文件6003的文件块1时(8003),文件系统程序3004读取克隆子差异文件6012的块编号10中的数据。
另外,克隆子差异文件6012的文件块3与孔7022相对应。然而,块3被指派到克隆源文件6011。现在,当客户端1001读取克隆子文件6003的文件块3时(8004),文件系统程序3004读取克隆源文件6011的块编号3中的数据。
当客户端1001将数据写入到克隆子文件6003中时,数据被写入到克隆子差异文件6012中。在写入数据时(8001),客户端1001将数据写入到克隆子文件6003的文件块5中。在这种情况下,块被指派到克隆子差异文件6012,并且从客户端1001传输的数据被写入到其中。
当客户端1001将数据写入到文件块6中时(8002),数据被写入到盘区域中,因为块编号15被指派到克隆子差异文件6012。
如上所述,当客户端1001访问克隆子文件6003时,文件系统程序3004检查克隆子差异文件6012中是否存在块,并且在块存在时,处理块中的数据。
另一方面,如果克隆子差异文件6012中没有块,则文件系统程序3004检查克隆源文件6011的块。如果克隆源文件6011中存在块,则文件系统程序3004处理块中的数据,并且如果不存在块,则将数据设置为“0”。另外,针对克隆父文件6004执行相同的过程。
图9是示出用于创建克隆文件的操作的示例的流程图。使用客户端1001的终端用户或者文件服务器1003的管理员使用管理终端1005的管理程序5002来创建克隆文件(步骤9001)。管理程序5002通过管理接口5003向文件服务器1003中的文件克隆管理程序3006请求克隆文件的创建(步骤9002)。
文件克隆管理程序3006接收克隆文件创建请求(步骤9003),并且向文件克隆程序3005请求克隆子文件的创建(步骤9004)。
当文件克隆程序3005接收到用于创建克隆子文件的请求时,该程序冻结变成克隆源文件6011的文件。因此,文件克隆程序3004将GI标记设置为该文件的标记3010(步骤9010)。在设置了GI标记时,文件系统程序3004禁止被冻结的文件的任何更新过程(诸如写入过程)。在完成了步骤9010时,所述文件变成克隆源文件6011。
接下来,文件克隆程序3005创建克隆子差异文件6012和克隆父差异文件6010(步骤9006)。继而,文件克隆程序3005将克隆源文件6011的索引节点编号设置为克隆子差异文件6012的索引节点3009的源指针3020(步骤9007)。
根据该过程,映射了克隆子差异文件6012的索引节点3009和克隆源文件6011的索引节点3009。另外,文件克隆程序3005将CLONE标记设置为克隆子差异文件6012的标记3010。
如上所述,可以通过将GI标记设置为变成克隆源文件6011的文件的标记3010而将文件冻结。文件系统程序3004通过确认GI标记来识别相关文件是克隆源文件6011,并且禁止对其进行更新。
另外,在步骤9007中,文件克隆程序3005将CLONE标记设置为克隆父差异文件6010的标记3010。继而,文件克隆程序3005将CLONE标记设置为克隆父差异文件6010的标记3010。继而,文件克隆程序3005将克隆源文件6011的索引节点编号设置为克隆父差异文件6010的索引节点3009的源指针3020。
继而,文件克隆程序3005将克隆父差异文件6010的索引节点编号设置为克隆源文件6011的索引节点3009的父差异指针3021。类似地,文件克隆程序3005增加克隆源文件6011的参考计数器3013。
最后,文件克隆程序3005经由管理接口5003向管理程序5002通知克隆文件的创建的结果(步骤9008)。作为结果,构造了参考图6描述的克隆文件的数据的关系。另外,在创建克隆文件时,有可能向文件克隆程序3005录入同时创建的克隆文件的数目。在这种情况下,文件克隆程序3005将步骤9006执行指定次数。
在本实施方式中假设的VDI环境中,首先,创建虚拟盘文件作为克隆源文件6011,并且向创建的虚拟盘文件安装VM的OS映像。此后,相关于虚拟盘文件来创建克隆子文件6003。
在VDI环境中(在使用VDI技术的情况下),针对使用客户端1001的每个终端用户分别创建克隆子文件6003。也即,如果存在1000个用户,则创建虚拟盘文件的1000个克隆子文件6003。终端用户使用虚拟盘文件的克隆子文件6003作为源,来启动VM。
另一方面,在创建VM之后,因为使用克隆源文件6011作为源将不会启动VM,将不会更新克隆源文件6011。因此,考虑到VDI环境,还有可能采用文件克隆程序3005在图9的步骤9006中不创建克隆父差异文件6010的方法。
换言之,因为不需要文件克隆程序3005来创建克隆父差异文件6010,创建克隆文件的性能可以增强。如果不创建克隆父差异文件6010,则在创建克隆文件之后,将禁止克隆源文件6011的更新。
另一方面,在参考图12和图13所述的将数据写入到克隆父文件6004时,文件克隆程序3005可以创建克隆父差异文件6010,而不在步骤9006中创建克隆父差异文件6010。根据此方法,在创建克隆子文件6003时,不创建克隆父差异文件6010,以使得预期创建克隆文件的性能得到增强。另外,可以向克隆源文件6011写入数据。
根据现有技术,相关于所获取的快照来创建克隆文件。快照是在特定时间点取得的文件系统映像。因此,在获得快照时,文件系统程序必须保存文件系统的管理信息。作为结果,需要花费时间来创建克隆文件。然而,因为根据本发明,在创建克隆文件时不需要获得快照,所以预期创建克隆文件的性能得到增强。
类似地,在现有技术示例中,在执行与克隆子差异文件6012的创建相对应的过程时,创建于克隆子差异文件6012的数据管理表3011相对应的整个表,并且初始化该整个表。因此,由于可以按照几十千兆字节的大小来创建被指派到VDI环境中的VM的虚拟盘文件,所以初始化过程花费较长时间,并且克隆过程被延迟。根据本发明,不需要初始化数据管理表3011,从而使得在不消耗过度盘容量的情况下可以高速执行克隆文件创建过程。
图10是示出克隆文件的读取操作的流程图。在读取克隆子文件6003或者克隆父文件6004时,客户端1001的应用程序2003向文件访问程序2004发送用于读取文件的请求。继而,文件访问程序2004向文件服务器1003的文件服务器程序3003发送文件读取请求(步骤10001)。
在文件服务器程序3003接收到文件读取访问请求之后,文件服务器程序3003向文件系统程序3004发送文件读取访问请求(步骤10002)。已经接收到文件读取访问请求的文件系统程序3004经由标记3010来确定读取目标文件是否是克隆源文件6011(步骤10003)。
如果读取目标文件是克隆源文件6011(步骤10003:是),则文件系统程序3004使用存储在克隆源文件6011的索引节点3009的差异指针3021中的克隆父差异文件6010的索引节点的编号,来获取克隆父差异文件6010的文件元数据3008(步骤10004)。
根据克隆父差异文件6010的文件元数据3008的状态来执行后续步骤11000的文件块读取过程。步骤11000的过程对于克隆子差异文件6012和克隆父差异文件6010二者是相同的。另一方面,如果读取目标文件不是克隆源文件6011(步骤10003:否),则文件系统程序3004执行步骤11000。在步骤11000的过程中,文件系统程序3004实际上读取文件块。随后将进一步详细地描述本过程。
最后,文件系统程序3004向文件服务器程序3003返回读取文件的结果,并且文件服务器程序3003向文件访问程序2004发送该结果。继而,文件访问程序2004将结果通知到应用程序2003(步骤10005)。经由上述过程执行应用程序2003所请求的文件读取过程。
图11是示出用于根据文件系统程序3004来读取文件的操作的流程图。文件系统程序3004确认GI标记或者CLONE标记是否被设置为:图10的步骤10004中获取的克隆父差异文件6010的文件元数据3008的标记3010、或者克隆子差异文件6012的文件元数据3008的标记3010(步骤11002,步骤11003)。
如果没有设置标记(步骤11003:否),因为该文件与文件克隆功能不相关,则将文件作为常规文件进行处理(步骤11004)。另一方面,如果设置了标记中的任何一个(步骤11003:是),则文件系统程序3004将该文件作为克隆文件来处理。
现在,将基于克隆子差异文件来描述操作。将以类似的方式来处理克隆父差异文件。文件系统程序3004确定读取文件位置中是否存在克隆子差异文件6012的数据(步骤11005,步骤11006)。将使用参考图7描述的管理信息。
例如,如果客户端1001请求读取从4KB开始的数据的10个字节,因为文件7001具有盘块,则文件系统程序3004确定数据存在。
另一方面,如果客户端1001请求读取从20KB开始的数据的4个千字节,则因为在文件7001的该区段存在孔7022,文件没有盘块。因此,文件系统程序3004确定“没有数据”。
如果在步骤11006中文件系统程序3004确定数据存在,则文件系统程序3004从克隆子差异文件6012读取数据,并且发送此数据以完成图11的过程。
另一方面,如果在步骤11006中,文件系统程序3004确定没有数据,则文件系统程序3004将最小大小3012和读取位置进行比较(步骤11012)。如果读取位置在最小大小3012的数据的最后位置之后(步骤11012:是),则文件系统程序3004返回“0”(步骤11010)。
在经由克隆源文件6011而已经被削减(在删除数据之后)的克隆子差异文件6012的大小被客户端1001拉长时,该过程是有效的。在执行该过程时,与其中已经被削减了数据的区段相对应的克隆子差异文件6012的数据变为孔。在客户端1001请求读取与孔相对应的区段时,文件系统程序3004必须返回“0”。
然而,文件系统程序3004无法仅基于孔来判断克隆子差异文件6012是否没有数据(克隆子文件6003没有被更新)或者是否已经被削减。因此,存储了已经被削减了的最小大小3012的最小大小。文件系统程序3004可以通过将最小大小3012的数据的最后位置与读取位置进行比较,来确定是否返回“0”或者是否返回克隆源文件6011的数据。
另一方面,如果步骤11012中的确定结果是“否”,则文件系统程序3004基于克隆源文件3011的数据管理表6011来检查克隆源文件6011是否具有数据块(步骤11008、步骤11009)。如果克隆源文件6011没有数据块(步骤11009:否),则该过程前进到步骤1010,其中文件系统程序3004返回“0”,并且结束该过程。
另一方面,如果步骤11009中的确定结果是“是”,则文件系统程序返回克隆源文件6011的数据并且结束该过程。根据该过程,客户端1001可以读取克隆子文件6003或者克隆父文件6004。
基于文件读取操作子例程11000的步骤11012,即使在克隆子文件的大小与克隆源文件的大小不同时,也可以正确地读取数据。如果文件系统程序3004不执行步骤11012,则无法确定是否从开始就没有数据,或者是否已经通过删除盘块而将克隆子差异文件6012的数据改变为“0”。
图12是示出将数据写入到克隆文件中的操作的流程图。当客户端1001的应用程序2003将数据写入到克隆子文件6003或者克隆父文件6004中时,用于将数据写入到文件中的请求被发送给文件访问程序2004。文件访问程序2004向文件服务器1003的文件服务器程序3003发送文件写入访问请求(步骤1201)。
在接收到文件写入访问请求之后,文件服务器程序3003请求文件系统程序3004执行文件写入过程(步骤1202)。
已经接收到文件写入访问请求的文件系统程序3004基于标记3010来确定数据写入目标文件是否是克隆源文件6011(步骤1203)。如果数据写入目标文件是克隆源文件6011(步骤1203:是),则文件系统程序3004基于存储在克隆源文件6011的索引节点3009的父差异指针3021中的克隆父差异文件6010的索引节点编号来获取克隆父差异文件6010的文件元数据3008(步骤1204)。
如果克隆父差异文件6010在对克隆父文件6004发生写入访问时被创建,则在文件系统程序3004执行步骤1204时,向文件克隆程序请求步骤9006的执行。
在以下步骤13000中,基于克隆父差异文件6010的文件元数据3008来执行操作。步骤13000的过程对于克隆子差异文件6012和克隆父差异文件6010二者是相同的。另一方面,如果步骤1203是“否”,则文件系统程序3004将不执行任何过程,并且过程前进到后续步骤13000。文件系统程序3004实际上在步骤13000中将数据写入到文件块中。随后将详细描述本过程。
最后,文件系统程序3004向文件服务器程序3003返回文件写入结果,并且文件服务器程序3003向文件访问程序2004发送该结果。之后,文件访问程序2004向应用程序2003发送该结果(步骤1205)。通过以上过程执行经由应用程序2003请求的文件写入过程。
图13是示出根据文件系统程序3004的对文件的数据写入操作的流程图。文件系统程序3004检查GI标记或者CLONE标记是否被设置为在图12的步骤1204中计算的克隆父差异文件6010的文件元数据3008的标记3010、或者克隆子差异文件6012的文件元数据的标记3010(步骤13002、步骤13003)。
如果标记没有被设置,则因为该文件与文件克隆功能无关,将该文件作为常规文件进行处理(步骤13004)。另一方面,如果标记中的任何一个被设置(步骤13003:是),则文件系统程序3004将该文件作为克隆文件进行处理。现在,将基于克隆子差异文件来描述该操作。克隆父差异文件将以类似的方式进行处理。
文件系统程序3004确定文件写入位置中是否存在克隆子差异文件6012的数据(步骤13005)。针对该步骤将使用图7中描述的管理信息。例如,如果客户端1001请求写入从4KB开始的数据的10个字节,则因为文件7001具有数据块,文件系统程序3004确定“数据存在”。
另一方面,如果客户端1001请求写入从20KB开始的数据的4个千字节,则因为文件7001的该区段中存在孔7022,文件没有盘块。因此,文件系统程序3004确定“没有数据”。如果文件系统程序3004在步骤13005中确定没有数据,则文件系统程序3004向克隆子差异文件6012指派新的盘块(步骤13006)。
如图7所述,如果所指派的块不是从已经指派的块的下一个块开始,则文件系统程序3004对数据管理表3011创建新记录(步骤13020)。
接下来,文件系统程序3004向盘写入在步骤13020中创建的新记录,或者更新已经存在的记录(步骤13021)。
根据步骤13006、步骤13020和步骤13021的过程,在将数据写入到克隆子差异文件6012时,添加了数据管理表3011的记录。因此,在克隆子差异文件6012的创建期间,不需要创建数据管理表3011的记录。因此,可以快速地创建克隆子差异文件6012。
如果克隆源文件6011具有数据,则文件系统程序3004将数据写入到存储器中,并且在将数据写入到所指派的盘块之前,数据被写入数据所重写(步骤13022)。如果克隆源文件6011中不存在数据,则在不变更所指派的块的情况下将写入数据写入。
另一方面,在步骤13005中,如果文件系统程序3004确定数据存在(进行到“是”),则文件系统程序3004确定写入大小是否等于块7010的块大小(根据图7是4KB)(步骤13009)。
如果写入大小等于块7010的大小(步骤13009:“=”),则文件系统程序3004在不对盘块进行任何变更的情况下将写入数据写入。另一方面,当步骤13009中大小不相等时,文件系统程序3004将克隆源文件6011的盘4005上的数据临时读取到存储器3002上(步骤13010)。
文件系统程序3004将数据写入到已经被读取到存储器3002的数据的数据写入位置(步骤13011)。继而,文件系统程序3004将存储器3002中的数据写入到盘4005上(步骤13012)。
为了针对每个盘块处理读取和写入操作,如果写入大小小宇块大小,则文件系统程序3004必须首先将盘中的数据读取到存储器并且在将数据写入到块中之前修改数据。然而,如果写入大小等于盘块大小,则不需要将数据读取到存储器。
另一方面,如果文件系统程序3004在步骤13005中确定没有数据(进行到“否”),则向克隆子差异文件6012指派新的盘块(步骤13006)。继而,文件系统程序3004将数据写入到所指派的盘块中,并且结束该过程(步骤13012)。根据以上过程,客户端1001可以将数据写入到克隆子文件6003或者克隆父文件6004中。
图14是示出用于改变克隆文件的大小的操作的流程图。当客户端1001的应用程序2003希望改变克隆子文件6003或者克隆父文件6004的大小时,应用程序向文件访问程序2004发送文件大小改变请求。文件访问程序2004向文件服务器1003的文件服务器程序3003发送文件大小改变请求(步骤14001)。
在接收到文件大小改变请求之后,文件服务器程序3003向文件系统程序3004发送文件大小改变请求(步骤14002)。已经接收到文件大小改变请求的文件系统程序3004基于标记3010来确定文件大小改变请求的目标文件是否是克隆源文件6011(步骤14003)。
如果文件大小改变请求的目标文件是克隆源文件6011(步骤14003:“是”),则执行步骤14004。在步骤14004中,文件系统程序3004基于存储在克隆源文件6011的索引节点3009的父差异指针3021中的克隆父差异文件6010的索引节点编号来获取克隆父差异文件6010的文件元数据3008。
在下一步骤15000中,基于克隆父差异文件6010的文件元数据3008来执行文件大小改变过程。另外,步骤15000的过程的内容对于克隆子差异文件6012和克隆父差异文件6010是相同的。另一方面,如果步骤14003的确定结果是“否”,则该过程前进到步骤15000,而不需要由文件系统程序3004执行的任何操作。在步骤15000中,文件系统程序3004实际上改变文件大小。随后将详细描述该过程。
之后,文件系统程序3004向文件服务器程序3003通知文件大小的改变的结果。文件服务器程序3003向文件访问程序2004发送文件大小改变的结果。文件访问程序2004向应用程序2003通知文件大小改变的结果(步骤14005)。通过上述过程,可以执行经由应用程序2003而请求的文件大小改变过程。
图15是示出文件系统程序3004的文件大小改变操作的流程图。文件系统程序3004检查GI标记或者CLONE标记是否被设置为图14的步骤14004中获取的克隆父差异文件6010的文件元数据3008的标记3010或者克隆子差异文件6012的文件元数据3008的标记3010(步骤15002、步骤15003)。
如果标记没有被设置(步骤15003:“否”),因为该文件与文件克隆功能不相关,将该文件作为常规文件进行处理(步骤15004)。另一方面,如果标记中的任何一个被设置(步骤15003:“是”),则文件系统程序3004将该文件作为克隆文件来处理。现在,将把该操作描述为用于处理克隆子差异文件的过程。将以类似的方式处理克隆父差异文件。
文件系统程序3004将当前文件大小与经修改的文件大小进行比较(步骤15005)。作为结果,如果经修改的文件大小较大(步骤15005:“否”),则文件系统程序3004将经修改的文件大小设置为克隆子差异文件6012的索引节点3009(步骤15009),并且结束该过程。
另一方面,如果经修改的文件大小较小(步骤15005:是),则文件系统程序3004丢弃不再必要的削减(在删除数据之后)的数据块。换言之,文件系统程序3004重置克隆子差异文件6012的数据管理表3011的数据(步骤15006)。
之后,将克隆子差异文件6012的最小大小3012与经修改的文件大小进行比较。如果经修改的文件大小较小(步骤15007:是),则将经修改的文件大小设置为克隆子差异文件6012的最小大小3012(步骤15008)。文件系统程序3004将经修改的文件大小设置为克隆子差异文件6012的索引节点3009,并且结束该过程(步骤15009)。
另一方面,如果步骤15007的确定结果是“否”(经修改的文件大小较大),则文件系统程序3004将经修改的文件大小设置为克隆子差异文件6012的索引节点3009,并且结束该过程(步骤15009)。通过以上过程,客户端1001可以改变克隆子文件6003或者克隆父文件6004的文件大小。
图16是示出用于删除克隆文件的操作的流程图。当客户端1001的应用程序2003希望删除克隆子文件6003或者克隆父文件6004时,其向文件访问程序2004发送文件删除请求。文件访问程序2004向文件服务器1003的文件服务器程序3003发送文件删除请求(步骤16001)。在已经接收到文件删除请求之后,文件服务器程序3003向文件系统程序3004发送文件删除请求(步骤16002)。
已经接收到文件删除请求的文件系统程序3004基于标记3010来确定该文件是否是克隆源文件6011(步骤16003)。如果该文件是克隆源文件6011(步骤16003:“是”),执行步骤16004。在步骤16004中,文件系统程序3004经由存储在克隆源文件6011的索引节点3009的父差异指针3021中的克隆父差异文件6010的索引节点编号,来获取克隆父差异文件6010的文件元数据3008。
在以下步骤17000中,基于克隆父差异文件6010的文件元数据3008来执行文件删除操作。另外,步骤17000的文件删除操作的内容对于克隆子差异文件6012和克隆父差异文件6010是相同的。
另一方面,如果步骤16003的确定结果是“否”,则该过程前进到下一步骤而无需文件系统程序3004执行任何操作。在步骤17000中,文件系统程序3004实际上删除文件。随后将详细描述该过程。
最后,文件系统程序3004向文件服务器程序3003返回文件删除结果,并且文件服务器程序3003向文件访问程序2004发送该结果。
继而,文件访问程序2004向应用程序2003通知删除结果(步骤16005)。基于以上过程,执行经由应用程序2003而请求的文件删除过程。
图17是示出文件系统程序3004的克隆文件删除操作的流程图。文件系统程序3004检查GI标记或者CLONE标记是否被设置为图16的步骤14004中获取的克隆父差异文件6010的文件元数据3008的标记3010或者克隆子差异文件6012的文件元数据3008的标记3010(步骤17002、步骤17003)。
如果标记没有被设置,则因为该文件与文件克隆功能不相关,将该文件作为常规文件来处理(步骤17004)。另一方面,如果标记中的任何一个被设置(步骤17003:“是”),则文件系统程序3004将该文件作为克隆文件来处理。现在,该过程将被描述为用于删除克隆子差异文件的过程。将以类似的方式进行处理克隆父差异文件。
文件系统程序3004基于被设置为标记3010的标记来确定该文件是否是克隆子差异文件或者克隆源文件。如果GI标记被设置为标记3010(步骤17005:“否”),则文件系统程序3004删除克隆父差异文件6010,并且将克隆源文件6011的名称改变为不可见的文件名称(步骤17010)。
为了将文件改变为不可见文件,例如,文件系统程序3004将克隆源文件6011的文件名称的开始数据改变为“.”或者NULL(空)。通过这一改变,在客户端看来好像文件已经被删除。然而,因为克隆子文件6003使用克隆源文件6011,所以无法删除克隆源文件6011。可以通过使用不可见文件来解决这一问题。
另一方面,如果CLONE标记被设置为标记3010(步骤17005:“是”),则文件系统程序3004删除克隆子差异文件6012。继而,文件系统程序3004减少克隆源文件6011的参考计数3013(步骤17006)。
文件系统程序3004确定参考计数器3013是否是“0”。如果参考计数器3013不是“0”(步骤17007:“否”),则文件系统程序3004结束该删除过程。另一方面,如果参考计数器3013是“0”(步骤17007:“是”),则文件系统程序3004检查克隆源文件6011是否是不可见文件(步骤17008)。
如果克隆源文件6011不是不可见文件(步骤17008:“否”),则文件系统程序3004结束该删除过程。另一方面,如果克隆源文件6011是不可见文件(步骤17008:“是”),则文件系统程序3004删除克隆源文件6011(步骤17009),并且结束文件删除过程。
如上所述,通过使用参考计数器3013和不可见文件,文件系统程序3004可以删除克隆子文件6003或者克隆父文件6004,同时维持图6中所示的克隆文件的文件之间的关系。
图18是管理终端1005的管理程序5002向管理员和终端用户提供的管理GUI(图形用户接口)18001的示例。管理GUI18001具有克隆管理视图18002和克隆创建视图18011。
克隆管理视图18002具有录入框18003和提交按钮,该录入框18003用于录入管理员或者终端用户希望显示的克隆文件的路径,提交按钮用于提交所录入的信息。当管理员或者终端用户向录入框18003录入克隆文件的路径并且按下提交按钮时,文件的克隆关系在克隆树18004上显示。图7中描述的克隆文件的文件关系在克隆树18004上显示。
在克隆树中,显示了如下内容:框18005,示出克隆源文件6011的文件名称;框18008,示出克隆父差异文件的文件名称;以及框18006和18007,示出克隆子差异文件的文件名称。另外,字段18009和18010在框18006和18007的右侧显示,其用于示出指示克隆子差异文件6012中写入的差异比率的差异比率。图18示出了创建两个克隆子文件6012的示例,但是文件的数目可以是1个或者不止3个。
当管理员或者终端用户创建克隆时,管理员或者终端用户向克隆创建视图18011的录入框18012和18013录入要被设置为克隆源文件6011的文件的路径以及要被创建的文件的数目。之后,当管理员或者终端用户按下提交按钮时,执行克隆文件的创建。最后,在框18014上显示执行结果。
根据上述第一实施方式,当文件系统程序创建克隆文件时,应当仅创建文件元数据3008。因此,因为不需要创建和初始化用于管理盘块的数据管理表,可以快速地创建克隆文件。
<实施方式2>
根据第二实施方式,将克隆子文件6003创建为克隆源文件6011。换言之,本实施方式示出了将克隆子文件6003创建为嵌套结构的情况。根据本实施方式,可以在任意定时自由地创建克隆子文件。
图19示出了克隆文件的层级结构的一个示例。图19的克隆源文件6011等效于图6的克隆源文件。克隆子差异文件1 19002指定克隆源文件6011。如先前所述,在已经创建了克隆子差异文件119002之后针对克隆子文件的更新数据存储在克隆子差异文件119002中。
另一方面,针对克隆父文件的更新数据存储在克隆父差异文件119004中。根据本实施方式的克隆源文件6011将指定克隆父差异文件的最后信息存储在文件元数据中。例如,终端用户此时创建针对克隆子文件的克隆子文件。在这种情况下,克隆子差异文件1 19002成为克隆源文件。继而,在创建克隆子差异文件2 19003的同时,创建克隆父差异文件2 19005。
当在已经创建了克隆子文件的克隆之后发生对克隆子文件的数据写入操作时,差异数据存储在克隆子差异文件2 19003中。另一方面,在对克隆父文件发生数据写入操作时,差异数据被存储在克隆父差异文件2 19005中。克隆源文件6011可以基于存储在索引节点3009中的源指针3020和父差异指针3021来指定与作为最后一个克隆父差异文件的克隆父差异文件2 19005的关系。
如上所述,如果克隆子文件采用层级嵌套结构,则克隆父文件也采用嵌套结构。根据此系统,保留对克隆子文件的写入差异数据并且写入克隆父文件的写入差异数据成为可能。
在图19中,仅示出了与克隆子文件相关的一个克隆子文件,但是克隆子文件可以保留两个或者更多个克隆子文件。换言之,克隆子差异文件1 19002在克隆子差异文件2 19003之外还可以具有克隆子差异文件3。本实施方式不限制克隆子差异文件的数目或者类型。
图20是示出根据克隆文件的层级结构的克隆文件的读取操作的流程图。已经参考图10描述了克隆文件的读取操作的基本流程。现在,将描述克隆文件的层级结构的操作流程的特性特征。
由应用程序2003对克隆子文件6003和克隆父文件6004的读取操作类似于图10,从过程10001到过程10003。在过程10003中,如果读取目标文件是克隆源文件(步骤10003:是),则文件系统程序3004获取与读取目标文件相关的最后一个克隆父差异文件的文件元数据3008。
另一方面,文件系统程序3004使用克隆父差异文件的元数据和趘读取操作的目标的克隆源文件的文件元数据来执行过程21000。换言之,在图19的情况下,应用程序2003获取由克隆源文件6011的文件元数据3008指定的克隆父差异文件2 19005(最后一个克隆父差异文件)的文件元数据3008,以便读取克隆父文件。
另一方面,如果读取目标文件不是克隆源文件(步骤10003:否),则文件系统程序3004执行步骤20005和步骤20006,以获取原始(GI)克隆源文件(在下文中称为根克隆源文件)的文件元数据。
如果可以获取根克隆源文件的文件元数据(步骤20006:是),则文件系统程序3004使用读取目标文件的文件元数据和根克隆源文件的文件元数据来执行图21的过程21000。
在图19的情况下,文件系统程序3004获取与包括在克隆子差异文件2 19003中的克隆源文件的信息有关的克隆子差异文件119002的文件元数据。另外,文件系统程序3004从克隆子差异文件1 19002的文件元数据获取克隆源文件6011的文件元数据。继而,文件系统程序3004使用要被读取的目标文件的克隆父差异文件的文件元数据和克隆源文件的文件元数据,来执行图21的过程21000。
如上所述,根据克隆文件的层级结构,文件系统程序3004使用最后一个克隆父差异文件或者最后一个克隆子差异文件的文件元数据来执行读取过程。因此,文件系统程序3004必须遵循采用嵌套结构的克隆子差异文件。
图21示出了采用层级结构的克隆文件的读取文件过程的流程图。与采用层级结构的克隆文件有关,文件读取过程遵循嵌套结构。例如,在图19的示例中,在读取克隆子差异文件2 19003时,文件系统程序3004检查克隆子差异文件2 19003是否具有更新差异数据。当不存在更新差异数据时,文件系统程序3004检查克隆子差异文件1 19002的更新差异数据。
如果没有对根克隆源文件的更新差异数据,则文件系统程序3004向应用程序发送“0”。如果在到达根克隆源文件之前存在更新差异数据,则文件系统程序3004向应用程序发送更新差异数据。
根据图21,在步骤21010中,文件系统程序3004检查最后一个克隆父差异文件或者最后一个克隆子差异文件的标记3010。如果该文件与克隆文件相关(步骤1103:“是”),则文件系统程序3004检查该文件是否具有数据块(步骤11005和步骤11006)。
如果该文件没有数据块(步骤11006:“否”),则文件系统程序3004获取克隆源文件的文件元数据,并且检查克隆源文件是否具有数据块(步骤21001)。
如果该文件具有数据块(步骤21002:“是”),则文件系统程序3004读取数据块,并且向应用程序发送数据块(步骤11007)。另一方面,如果该文件没有数据块(步骤21001:“否”),则文件系统程序3004基于标记3010来确定该文件是否是根克隆源文件(步骤21003)。
如果该文件是根克隆源文件,则文件系统程序3004执行步骤11012和后续步骤的过程。另一方面,如果该文件不是根克隆源文件(步骤21003:“否”),则文件系统程序3004返回步骤21001,并且继续该过程,以遵循嵌套结构。
如上所述,文件系统程序3004遵循克隆文件的层级结构,并且如果存在数据块,则向应用程序2003发送数据,如果不存在数据块,则向应用程序2003返回“0”。
图22是示出根据克隆文件的层级结构向克隆文件写入数据的操作的流程图。已经参考图12描述了向克隆文件写入数据的基本流程。此处,将描述与克隆文件的层级结构有关的操作流程的差异。
当应用程序2003向克隆子文件6003或者克隆父文件6004写入数据时,所执行的过程与图12中的步骤1201至步骤1202等效。在步骤1202中,如果写入目标文件是克隆源文件(步骤1203:“是”),则文件系统程序3004获取与写入目标文件有关的最后一个克隆父差异文件的文件元数据3008。
文件系统程序3004使用克隆父差异文件的文件元数据3008和作为写入目标的克隆源文件的文件元数据3008来执行过程23000。在图19的示例中,应用程序2003获取由克隆源源文件6011的文件元数据3008指定的克隆父差异文件2 19005(最后一个克隆父差异文件)的文件元数据3008。
另一方面,如果写入目标文件不是克隆源文件(步骤1203:“否”),则文件系统程序3004执行步骤22001和步骤22001,以便获取根克隆源文件的文件元数据。
如果可以获取根克隆源文件的文件元数据(步骤22002:是),则文件系统程序3004使用读取目标文件的文件元数据和根克隆源文件的文件元数据,来执行步骤21000。
换言之,根据图19的示例,文件系统程序3004通过遵循存储在克隆子差异文件2 19003中的克隆源文件的信息来获取克隆子差异文件1 19002的文件元数据。另外,文件系统程序3004从克隆子差异文件1 19002的文件元数据获取克隆源文件6011的文件元数据。继而,文件系统程序3004使用克隆父差异文件的文件元数据和作为写入目标的克隆源文件的文件元数据来执行步骤23000。
如上所述,与克隆文件的层级结构有关,文件系统程序3004使用最后一个克隆父差异文件或者最后克隆子差异文件来执行过程。因此,文件系统程序3004必须遵循采用嵌套结构的克隆子差异文件。
图23示出了向采用层级结构的克隆文件的文件写入数据的过程的流程图。在采用层级结构的克隆文件中遵循嵌套结构。例如,在图19的示例中,为了向克隆子差异文件2 19003写入数据,文件系统程序3004检查克隆子差异文件2 19003是否具有更新差异数据。在没有更新差异文件时,文件系统程序3004检查克隆子差异文件119002的更新差异数据。
如果不存在对根克隆源文件的更新差异数据,则文件系统程序3004对没有向其中写入数据的数据块执行数据写入过程。如果在到达根克隆源文件之前,存在更新差异数据,则文件系统程序3004执行数据更新过程。
在图23中,首先,在步骤23010中,文件系统程序3004检查最后一个克隆父差异文件或者最后一个克隆子差异文件的标记3010。如果该文件与克隆文件相关(步骤13003:“是”),则文件系统程序3004检查该文件是否具有数据块(步骤13005)。
如果该文件没有数据块(步骤13005:“否”),则文件系统程序3004获取克隆源文件的文件元数据,并且检查克隆源文件是否是根克隆源文件(步骤23001)。
如果该文件是根克隆源文件(步骤23001:“是”),则文件系统程序3004向最后一个克隆父差异文件或者最后一个克隆子差异文件指派新的数据块,并且执行写入过程(步骤13006和后续步骤)。
另一方面,如果克隆源文件不是根克隆源文件(步骤23001:“否”),则文件系统程序3004获取该文件的克隆源文件的文件元数据,并且检查该文件是否具有数据块(步骤23002和步骤13005)。如果该文件具有数据块(步骤13005:“是”),则文件系统程序3004执行步骤13009和后续步骤的过程。
如上所述,文件系统程序3004遵循克隆文件的层级结构,并且如果该文件具有数据块则更新数据。另一方面,如果该文件没有数据块,则文件系统程序3004指派新的数据块。
根据上述实施方式,克隆文件可以在任意时间被层级地创建。
<实施方式3>
第三实施方式涉及在已经从客户端发布复制过程(整个文件的复制)时,文件克隆功能创建克隆文件而不是复制数据的示例。通过经由文件克隆功能来创建克隆文件可以显著地减少复制过程所需的时间。复制过程例如经由CIFS(公共因特网文件系统)和NFS(网络文件系统)来支持。
图24示出了管理终端1005的管理程序5002向管理员提供的管理GUI 18001的示例。图24(当前实施方式)与图18(第二实施方式)之间的差别在于提供了框24001用于指定复制模式。
在管理员使用管理GUI 18001在复制模式24001的复选框24002中录入勾选时,在经由复制过程来复制文件时,文件系统程序3004创建克隆文件。在复制模式的复选框24001被设置时,管理终端1005的管理程序5002通知文件服务器1003的文件系统程序3004:复制模式已经设置。将参考图25来描述实际过程。
图25是示出文件程序3004如何处理复制过程的流程图。终端用户(客户端)所使用的应用程序2003经由复制过程来复制文件服务器1003中的文件。继而,文件访问程序2004经由复制过程向文件服务器发送复制请求(步骤25001)。
复制过程包括复制源文件名称和复制目的地文件名称,并且文件服务器程序3003基于这些文件名称来执行文件复制过程。已经接收到复制请求的文件服务器程序3003检查复制模式(步骤25002)。
如果复制模式是“0”(意味着复制模式没有被设置)(步骤25003:0),则文件服务器程序3003执行常规复制过程(步骤25006)。
另一方面,如果复制模式是“1”(意味着复制模式被设置)(步骤25003:1),则文件服务器程序3003请求文件克隆程序3005创建克隆子文件(步骤25004)。
文件克隆程序3005创建用于克隆子文件的元数据(步骤9006),将标记设置为克隆源文件,并且增加参考计数器(步骤9007)。步骤9006和步骤9007的过程与图9中描述的过程相同。
最后,在步骤25005中,文件克隆程序3005向文件服务器程序3003通知创建克隆文件的结果。继而,文件服务器程序3003向客户端通知创建结果(步骤25005)。
如上所述,在客户端经由复制过程来请求文件复制过程时,因为文件服务器创建仅包括部分数据的克隆文件从而不需要复制全部数据,可以显著地减少复制过程所需的时间。
行业可应用性
本发明可以应用于信息处理装置(诸如大型计算机、服务器和个人计算机),信息/图像存储装置(诸如存储系统和HDD记录器)以及通信装置(诸如蜂窝电话)。
参考附图列表
Claims (12)
1.一种连接至客户端终端和存储系统的文件服务器,所述文件服务器包括:
处理器;以及
存储器,所述存储器存储用于管理文件的文件系统程序;
其中所述文件系统程序
在接收到用于创建所述文件的克隆的请求之后,创建第一差异文件,并禁止所述文件的更新;并且
在接收到用于访问所述克隆的请求时,访问所述第一差异文件;
其中当所述访问是(1)更新请求时:
(1a)如果经由所述更新请求而指定的所述第一差异文件的文件块没有被指派到所述存储系统的盘块,则向所述文件块指派所述存储系统的盘块,并且将更新数据写入其中;
(1b)如果所述文件块被指派到所述存储系统的盘块,则将更新数据写入其中;
其中当所述访问是(2)读取请求时:
(2a)如果经由所述读取请求而指定的所述第一差异文件的所述文件块中存在数据,则从其中读取所述数据;
(2b)如果所述文件块中没有数据,并且如果与所述文件相对应的所述文件块中存在数据,则从其中读取所述数据,以及在所述文件的更新请求发生时,创建第二差异文件,并且
向经由所述更新请求而指定的所述第二差异文件的所述文件块指派所述存储系统的盘块,并且将更新数据写入其中。
2.根据权利要求1所述的文件服务器,其中在接收到所述文件的复制文件创建请求时,所述文件系统程序将第二差异文件连同所述第一差异文件一起创建,而不考虑所述文件的更新请求是否发生,并且在接收到对所述文件的访问请求时,访问所述第二差异文件;
其中当所述访问是(1)更新请求时:
(1a)如果经由所述更新请求而指定的所述第二差异文件的文件块没有被指派到所述存储系统的盘块,则指派所述存储系统的盘块,并且将更新数据写入其中;
(1b)如果所述文件块被指派了盘块,则将更新数据写入其中;
其中当所述访问是(2)读取请求时:
(2a)如果经由所述读取请求而指定的所述第二差异文件的所述文件块中存在数据,则从其中读取所述数据;并且
(2b)如果所述文件块中没有数据,并且如果与所述文件相对应的所述文件块中存在数据,则从其中读取所述数据。
3.根据权利要求1所述的文件服务器,其中在创建所述第一差异文件之后接收到对所述第一差异文件的第一更新请求时,所述文件系统程序创建第一数据管理表;并且
在所述第一数据管理表中存储包括所述更新数据的文件数据的偏移、所述存储系统的向经由所述更新请求而指定的所述第一差异文件的所述文件块指派的盘块的开始块位置、以及所述文件的数据块长度。
4.根据权利要求1所述的文件服务器,其中在创建所述第二差异文件之后接收到对所述第二差异文件的第一更新请求时,所述文件系统程序创建第二数据管理表;并且
在所述第二数据管理表中存储包括所述更新数据的文件数据的偏移、所述存储系统的向经由所述更新请求而指定的所述第二差异文件的所述文件块指派的盘块的开始块位置、以及所述文件的数据块长度。
5.根据权利要求2所述的文件服务器,其中在创建所述第二差异文件之后接收到对所述第二差异文件的第一更新请求时,所述文件系统程序创建第二数据管理表;并且
在所述第二数据管理表中存储包括所述更新数据的文件数据的偏移、所述存储系统的向经由所述更新请求而指定的所述第二差异文件的所述文件块指派的盘块的开始块位置、以及所述文件的数据块长度。
6.根据权利要求1所述的文件服务器,其中所述第一差异文件具有元数据,并且所述元数据包括指示所述第一差异文件是克隆的信息。
7.根据权利要求2所述的文件服务器,其中所述第一差异文件具有元数据,并且所述元数据包括指示所述第一差异文件是克隆的信息。
8.根据权利要求1所述的文件服务器,其中所述文件系统程序被设计成在每次接收到用于创建所述文件的克隆的请求时创建所述第一差异文件;并且
其中所述文件具有元数据,并且所述元数据包括指示所述文件是克隆的源的信息以及所述第一差异文件的文件数目。
9.根据权利要求1所述的文件服务器,其中所述文件系统程序
(1)在接收到所述文件的删除请求时,删除所述第二差异文件,并且设置所述文件以使得其从所述客户端终端不可见;并且
(2)在接收到所述第一差异文件的删除请求时,删除所述第一差异文件。
10.根据权利要求2所述的文件服务器,其中所述文件系统程序
(1)在接收到所述文件的删除请求时删除所述第二差异文件,并且设置所述文件以使得其从所述客户端终端不可见;并且
(2)在接收到所述第一差异文件的删除请求时,删除所述第一差异文件。
11.一种计算机系统,包括:
文件服务器;
连接至所述文件服务器的管理终端;以及
连接至所述文件服务器的存储系统;
其中所述文件服务器包括:
处理器;以及
存储器,所述存储器存储管理文件的文件系统程序;
其中所述文件系统程序
在接收到用于创建所述文件的克隆的请求时,创建第一差异文件,并禁止所述文件的更新;并且
在接收到访问所述克隆的请求时,访问所述第一差异文件;
其中当所述访问是(1)更新请求时:
(1a)如果经由所述更新请求而指定的所述第一差异文件的文件块没有被指派到所述存储系统的盘块,则向所述文件块指派所述存储系统的盘块,并且将更新数据写入其中;
(1b)如果所述文件块被指派到所述存储系统的盘块,则将更新数据写入其中;
其中当所述访问是(2)读取请求时:
(2a)如果经由所述读取请求而指定的所述第一差异文件的所述文件块中存在数据,则从其中读取所述数据;
(2b)如果所述文件块中没有数据,并且如果与所述文件相对应的所述文件块中存在数据,则从其中读取所述数据,并且在所述文件的更新请求发生时,创建第二差异文件,以及
向经由所述更新请求而指定的所述第二差异文件的所述文件块指派所述存储系统的盘块,并且将更新数据写入其中。
12.根据权利要求11所述的计算机系统,其中所述文件系统程序
在接收到所述文件的复制文件创建请求时,将第二差异文件连同所述第一差异文件一起创建,而不考虑所述文件的更新请求是否发生;并且
在接收到对所述文件的访问请求时,访问所述第二差异文件;
其中当所述访问是(1)更新请求时:
(1a)如果经由所述更新请求而指定的所述第二差异文件的文件块没有被指派到所述存储系统的盘块,则指派所述存储系统的盘块,并且将更新数据写入其中;
(1b)如果所述文件块被指派到盘块,则将更新数据写入其中;
其中当所述访问是(2)读取请求时:
(2a)如果经由所述读取请求而指定的所述第二差异文件的所述文件块中存在数据,则从其中读取所述数据;并且
(2b)如果所述文件块中没有数据,并且如果与所述文件相对应的所述文件块中存在数据,则从其中读取所述数据。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2011/005192 WO2013038447A1 (en) | 2011-09-14 | 2011-09-14 | Method for creating clone file, and file system adopting the same |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103597440A true CN103597440A (zh) | 2014-02-19 |
Family
ID=47830784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180071508.5A Pending CN103597440A (zh) | 2011-09-14 | 2011-09-14 | 用于创建克隆文件的方法以及采用该方法的文件系统 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9092153B2 (zh) |
EP (1) | EP2754027B1 (zh) |
JP (1) | JP5775177B2 (zh) |
CN (1) | CN103597440A (zh) |
WO (1) | WO2013038447A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107273378A (zh) * | 2016-04-07 | 2017-10-20 | 阿里巴巴集团控股有限公司 | 一种文件存储方法及装置 |
CN108710510A (zh) * | 2018-05-07 | 2018-10-26 | 成都市极米科技有限公司 | 一种系统设置存储和克隆的方法及系统 |
CN114175008A (zh) * | 2020-02-07 | 2022-03-11 | 华为技术有限公司 | 快速文件快照和克隆 |
WO2024078029A1 (zh) * | 2022-10-11 | 2024-04-18 | 华为技术有限公司 | 文件系统管理方法、装置和存储介质 |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9495377B2 (en) * | 2012-09-12 | 2016-11-15 | International Business Machines Corporation | Secure deletion operations in a wide area network |
US8924443B2 (en) * | 2012-10-05 | 2014-12-30 | Gary Robin Maze | Document management systems and methods |
US9923762B1 (en) * | 2013-08-13 | 2018-03-20 | Ca, Inc. | Upgrading an engine when a scenario is running |
US9250828B2 (en) * | 2013-10-29 | 2016-02-02 | Skyera, Llc | Writable clone data structure |
US10542049B2 (en) | 2014-05-09 | 2020-01-21 | Nutanix, Inc. | Mechanism for providing external access to a secured networked virtualization environment |
US9619543B1 (en) * | 2014-06-23 | 2017-04-11 | EMC IP Holding Company LLC | Replicating in virtual desktop infrastructure |
US9569110B2 (en) | 2014-11-18 | 2017-02-14 | International Business Machines Corporation | Efficient management of cloned data |
CN104462290B (zh) * | 2014-11-27 | 2017-10-10 | 华为技术有限公司 | 文件系统复制方法及装置 |
CN108733761B (zh) | 2014-12-27 | 2021-12-03 | 华为技术有限公司 | 一种数据处理方法装置及系统 |
JP6281511B2 (ja) * | 2015-03-24 | 2018-02-21 | 日本電気株式会社 | バックアップ制御装置、バックアップ制御方法、及び、プログラム |
US11294657B2 (en) * | 2015-05-15 | 2022-04-05 | Hewlett-Packard Development Company, L.P. | Data copying |
US10809998B2 (en) | 2016-02-12 | 2020-10-20 | Nutanix, Inc. | Virtualized file server splitting and merging |
US11218418B2 (en) | 2016-05-20 | 2022-01-04 | Nutanix, Inc. | Scalable leadership election in a multi-processing computing environment |
US10268384B2 (en) * | 2016-09-16 | 2019-04-23 | International Business Machines Corporation | File transfers between machines without target CPU intervention |
US10728090B2 (en) | 2016-12-02 | 2020-07-28 | Nutanix, Inc. | Configuring network segmentation for a virtualization environment |
US10824455B2 (en) | 2016-12-02 | 2020-11-03 | Nutanix, Inc. | Virtualized server systems and methods including load balancing for virtualized file servers |
US11562034B2 (en) | 2016-12-02 | 2023-01-24 | Nutanix, Inc. | Transparent referrals for distributed file servers |
US11568073B2 (en) | 2016-12-02 | 2023-01-31 | Nutanix, Inc. | Handling permissions for virtualized file servers |
US11294777B2 (en) | 2016-12-05 | 2022-04-05 | Nutanix, Inc. | Disaster recovery for distributed file servers, including metadata fixers |
US11288239B2 (en) | 2016-12-06 | 2022-03-29 | Nutanix, Inc. | Cloning virtualized file servers |
US11281484B2 (en) | 2016-12-06 | 2022-03-22 | Nutanix, Inc. | Virtualized server systems and methods including scaling of file system virtual machines |
WO2018134985A1 (ja) * | 2017-01-20 | 2018-07-26 | 株式会社日立製作所 | ストレージ装置、その制御装置、およびその制御方法 |
US11188422B2 (en) * | 2017-06-02 | 2021-11-30 | Apple Inc. | Techniques for preserving clone relationships between files |
US11086826B2 (en) | 2018-04-30 | 2021-08-10 | Nutanix, Inc. | Virtualized server systems and methods including domain joining techniques |
US11194680B2 (en) | 2018-07-20 | 2021-12-07 | Nutanix, Inc. | Two node clusters recovery on a failure |
US11770447B2 (en) | 2018-10-31 | 2023-09-26 | Nutanix, Inc. | Managing high-availability file servers |
CN118069611A (zh) * | 2020-01-17 | 2024-05-24 | 华为技术有限公司 | 一种文件系统的克隆方法及装置 |
US11768809B2 (en) | 2020-05-08 | 2023-09-26 | Nutanix, Inc. | Managing incremental snapshots for fast leader node bring-up |
US20230066137A1 (en) | 2021-08-19 | 2023-03-02 | Nutanix, Inc. | User interfaces for disaster recovery of distributed file servers |
CN113886139B (zh) * | 2021-09-29 | 2024-08-02 | 济南浪潮数据技术有限公司 | 一种云平台共享文件存储的通用克隆方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6473775B1 (en) * | 2000-02-16 | 2002-10-29 | Microsoft Corporation | System and method for growing differential file on a base volume of a snapshot |
US20040267836A1 (en) * | 2003-06-25 | 2004-12-30 | Philippe Armangau | Replication of snapshot using a file system copy differential |
US7409511B2 (en) * | 2004-04-30 | 2008-08-05 | Network Appliance, Inc. | Cloning technique for efficiently creating a copy of a volume in a storage system |
US20090013009A1 (en) * | 2007-07-02 | 2009-01-08 | Kiyotaka Nakayama | Using differential file representing differences of second version of a file compared to first version of the file |
CN101495970A (zh) * | 2005-06-24 | 2009-07-29 | 信科索尔特公司 | 用于高性能企业数据保护的系统和方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7334095B1 (en) * | 2004-04-30 | 2008-02-19 | Network Appliance, Inc. | Writable clone of read-only volume |
CN102232304B (zh) | 2011-05-04 | 2014-01-08 | 华为终端有限公司 | 一种移动通信终端间进行系统升级的方法、系统及终端 |
-
2011
- 2011-09-14 WO PCT/JP2011/005192 patent/WO2013038447A1/en active Application Filing
- 2011-09-14 EP EP11764349.4A patent/EP2754027B1/en not_active Not-in-force
- 2011-09-14 US US13/259,672 patent/US9092153B2/en not_active Expired - Fee Related
- 2011-09-14 CN CN201180071508.5A patent/CN103597440A/zh active Pending
- 2011-09-14 JP JP2013550681A patent/JP5775177B2/ja not_active Expired - Fee Related
-
2015
- 2015-02-09 US US14/617,198 patent/US9558205B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6473775B1 (en) * | 2000-02-16 | 2002-10-29 | Microsoft Corporation | System and method for growing differential file on a base volume of a snapshot |
US20040267836A1 (en) * | 2003-06-25 | 2004-12-30 | Philippe Armangau | Replication of snapshot using a file system copy differential |
US7409511B2 (en) * | 2004-04-30 | 2008-08-05 | Network Appliance, Inc. | Cloning technique for efficiently creating a copy of a volume in a storage system |
CN101495970A (zh) * | 2005-06-24 | 2009-07-29 | 信科索尔特公司 | 用于高性能企业数据保护的系统和方法 |
US20090013009A1 (en) * | 2007-07-02 | 2009-01-08 | Kiyotaka Nakayama | Using differential file representing differences of second version of a file compared to first version of the file |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107273378A (zh) * | 2016-04-07 | 2017-10-20 | 阿里巴巴集团控股有限公司 | 一种文件存储方法及装置 |
CN108710510A (zh) * | 2018-05-07 | 2018-10-26 | 成都市极米科技有限公司 | 一种系统设置存储和克隆的方法及系统 |
CN114175008A (zh) * | 2020-02-07 | 2022-03-11 | 华为技术有限公司 | 快速文件快照和克隆 |
WO2024078029A1 (zh) * | 2022-10-11 | 2024-04-18 | 华为技术有限公司 | 文件系统管理方法、装置和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20150220563A1 (en) | 2015-08-06 |
US9558205B2 (en) | 2017-01-31 |
JP5775177B2 (ja) | 2015-09-09 |
WO2013038447A1 (en) | 2013-03-21 |
US20130066930A1 (en) | 2013-03-14 |
US9092153B2 (en) | 2015-07-28 |
EP2754027B1 (en) | 2017-08-23 |
EP2754027A1 (en) | 2014-07-16 |
JP2014517363A (ja) | 2014-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103597440A (zh) | 用于创建克隆文件的方法以及采用该方法的文件系统 | |
US11347408B2 (en) | Shared network-available storage that permits concurrent data access | |
JP7053682B2 (ja) | データベーステナントマイグレーションのシステム及び方法 | |
JP7090606B2 (ja) | データベース・システムにおけるテスト・データの形成及び動作 | |
US8600939B2 (en) | Writable snapshots | |
JP4168626B2 (ja) | 記憶装置間のファイル移行方法 | |
JP2019519025A (ja) | 分散システムにおける範囲の分割および移動 | |
US11397749B2 (en) | Asynchronous replication of in-scope table data | |
JP6604115B2 (ja) | ストレージ装置およびストレージ制御プログラム | |
US11960442B2 (en) | Storing a point in time coherently for a distributed storage system | |
US7882086B1 (en) | Method and system for portset data management | |
JP4937863B2 (ja) | 計算機システム、管理計算機及びデータ管理方法 | |
EP4124968A1 (en) | Technique for efficiently indexing data of an archival storage system | |
JP2006527874A (ja) | 1つのターゲット・ボリュームと1つのソース・ボリュームとの間の関連性を管理するための方法、システム、及びプログラム | |
US10732840B2 (en) | Efficient space accounting mechanisms for tracking unshared pages between a snapshot volume and its parent volume | |
US20220197944A1 (en) | File metadata service | |
US11422903B2 (en) | Maintaining and recomputing reference counts in a persistent memory file system | |
US7987335B1 (en) | Techniques for virtualizing data | |
KR102214697B1 (ko) | 데이터베이스 관리 시스템에서 데이터 저장을 위한 공간 관리를 제공하는 컴퓨터 프로그램 | |
US10846011B2 (en) | Moving outdated data from a multi-volume virtual disk to a backup storage device | |
CN109918355A (zh) | 实现基于对象存储服务的nas的虚拟元数据映射系统和方法 | |
US11194760B1 (en) | Fast object snapshot via background processing | |
KR20210013747A (ko) | 데이터베이스 관리 시스템에서 데이터 저장을 위한 공간 관리를 제공하는 컴퓨터 프로그램 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140219 |