CN106716375A - 具有每区段校验和的文件*** - Google Patents

具有每区段校验和的文件*** Download PDF

Info

Publication number
CN106716375A
CN106716375A CN201580053127.2A CN201580053127A CN106716375A CN 106716375 A CN106716375 A CN 106716375A CN 201580053127 A CN201580053127 A CN 201580053127A CN 106716375 A CN106716375 A CN 106716375A
Authority
CN
China
Prior art keywords
section
file system
checksum
computer
storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201580053127.2A
Other languages
English (en)
Other versions
CN106716375B (zh
Inventor
C.李
R.达斯
C.拉特
W.蒂普顿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN106716375A publication Critical patent/CN106716375A/zh
Application granted granted Critical
Publication of CN106716375B publication Critical patent/CN106716375B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/122File system administration, e.g. details of archiving or snapshots using management policies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种文件***允许不同的校验和算法独立于文件***对象的其它区段而用于该文件***对象的不同区段。校验和算法可以是文件***对象的区段或区段范围的可选属性,使得文件***对象的一些区段可以使用第一校验和算法,而该文件***对象的其它区段可以使用第二校验和算法。文件***对象的区段也可以不具有相关联的校验和算法。文件***针对文件***对象的每个区段存储指示区段的校验和的数据以及用于该区段的任何校验和算法的指示。

Description

具有每区段校验和的文件***
背景技术
计算机中的文件***一般是管理对存储在一个或多个存储设备上的文件中的数据的访问的操作***的部分。文件***提供一个接口,其它应用通过该接口可以创建和管理文件***对象、将数据写入文件以及从存储在存储设备上的文件读取数据。
大多数文件***配置成提供数据完整性的水平。例如,当数据被写入存储设备时,文件***可以计算和存储所存储的数据的校验和。当从存储设备读取数据时,可以针对读取的数据计算校验和并且将其与所存储的校验和进行比较。存在各种各样的校验和算法,其在效率、计算复杂性和存储开销方面不同。
发明内容
提供本发明内容以便以简化形式介绍在下面在具体实施方式中进一步描述的概念的选择。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,其也不旨在用于限制所要求保护的主题的范围。
文件***允许不同的校验和算法独立于文件***对象的其它区段(extent)地用于​​该文件***对象的不同区段。校验和算法可以是文件***对象的区段或区段范围的可选属性,使得文件***对象的一些区段可以使用第一校验和算法,而该文件***对象的其它区段可以使用第二校验和算法。文件***对象的区段或区段范围也可以不具有相关联的校验和算法。文件***为文件***对象的每个区段存储指示该区段的校验和的数据以及用于该区段的任何校验和算法的指示。这样的数据可以为区段范围而存储,从而将其应用于文件***对象中的每个区段。
可以提供文件***操作以允许应用请求改变用于文件***对象的区段的校验和算法。当数据被写入文件***对象的区段时,基于指示用于该区段的校验和算法来计算校验和,并且存储该校验和。当从用于文件***对象的区段的存储装置读取数据时,基于指示用于该区段的校验和算法计算所读取的数据的那个校验和,并且将该校验和与所存储的校验和进行比较。受每个区段的校验和影响的其它操作包括但不限于,用于创建具有这样的属性的文件***对象以及提供并改变这样的属性的默认设置的操作。
可以为文件***对象的不同部分(诸如为文件内的不同文件流)提供不同的默认设置。文件***对象的这种设置可以被改变成使用校验且从使用校验和改变,并且在不同的校验和算法之间改变。
在下面的描述中,对形成本文的部分的附图进行参考,并且此技术的特定示例实现方式在附图中通过说明的方式示出。应理解,在不脱离本公开的范围的情况下,可以利用其它实施例并且可以进行结构性改变。
附图说明
图1是其中可以实现文件***的示例计算机的框图。
图2是文件***对象的示例类层次的图。
图3是使用每区段校验和的示例区段表的图。
图4是描述改变用于文件***对象的区段的校验和算法的示例实现方式的流程图。
图5是描述将数据写入文件***对象的示例实现方式的流程图。
图6是描述从文件***对象读取数据的示例实现方式的流程图。
图7是描述改变应用于文件***对象的保护的示例实现方式的流程图。
具体实施方式
下面的部分描述了具有文件***的计算机的示例实现方式。
图1图示文件***可利用其实现的示例计算机。计算机可以是各种各样的通用或专用计算硬件配置中的任何一种。可使用的计算机类型的一些示例包括但不限于,个人计算机、游戏控制台、机顶盒、手持或膝上型设备(例如媒体播放器、笔记本计算机、平板计算机、蜂窝电话、个人数据助理、语音记录器)、服务器计算机、多处理器***、基于微处理器的***、可编程消费型电子产品、联网的个人计算机、小型计算机、大型计算机以及包括任何上述类型的计算机或设备的分布式计算环境等等。特定示例计算机是支持访问具有多个虚拟硬盘驱动器的存储阵列上的数据的多个虚拟机的服务器计算机。
参考图1,示例计算机100包括至少一个处理单元102和存储器104。计算机可以具有多个处理单元102。处理单元102可以包括一个或多个处理核(未示出),其彼此独立地操作。诸如图形处理单元1020之类的附加协处理单元也可以存在于计算机中。存储器104可以是易失性的(诸如动态随机存取存储器(DRAM)或其它随机存取存储器设备)、非易失性的(诸如只读存储器、闪速存储器等)或这两者的某种组合。存储器的这种配置在图1中由虚线106图示。计算机100可以包括(可移除和/或不可移除的)附加存储装置,其包括但不限于磁记录或光学记录的盘或带。这样的附加存储装置在图1中由可移除存储装置108和不可移除存储装置110图示。图1中的各种组件一般通过诸如一个或多个总线130之类的互连机构来互连。
计算机存储介质是数据可以存储在其中并且被计算机从可寻址物理存储位置检索的任何介质。计算机存储介质包括易失性和非易失性存储器,以及可移除和不可移除的存储介质。存储器104和106、可移除存储装置108和不可移除存储器110全部都是计算机存储介质的示例。计算机存储介质的一些示例是RAM、ROM、EEPROM、闪速存储器或其它存储器技术,CD-ROM、数字通用盘(DVD)或其它光学或磁光记录存储设备,磁带盒、磁带、磁盘存储或其它磁性存储设备。计算机存储介质可以包括诸如存储阵列之类的多个存储设备的组合,其可以由操作***或文件***管理,以对计算机表现为一个或多个存储卷。计算机存储介质和通信介质是介质的相互排斥的类别。
计算机100还可以包括允许计算机通过通信介质与其它设备通信的(多个)通信连接112。通过在有线或无线物质上传播诸如载波或其它传输机制之类的调制数据信号,通信介质典型在有线或无线物质上传输计算机程序指令、数据结构、程序模块或其它数据。术语“调制数据信号”意指一种信号,该信号使它的特性中的一个或多个以这样的方式设置或改变以便将信息编码到该信号中,从而改变信号的接收设备的配置或状态。通过示例的方式且非限制性地,通信介质包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声学、RF、红外和其他无线介质之类的无线介质。通信连接112是诸如有线网络接口、无线网络接口、射频收发器(例如Wi-Fi、蜂窝、长期演进(LTE)或蓝牙等的收发器)、导航收发器(例如全球定位***(GPS)或全球导航卫星***(GLONASS)等的收发器)之类的设备,它们与通信介质对接以通过通信介质传输数据并从通信介质接收数据,并且可以执行关于该数据的各种功能。
计算机100可以具有(多个)各种输入设备114,诸如键盘、鼠标、笔、相机、触摸输入设备、传感器(例如加速计或陀螺仪)等。还可以包括诸如显示器、扬声器、打印机等之类的(多个)输出设备116。所有这些设备在本领域中是众所周知的,并且不需要在这里详细讨论。输入和输出设备可以是包含图1中的计算机的各种组件的壳体的部分,或者可以是与该壳体可分离的并通过各种连接接口(诸如串行总线、无线通信连接等)连接到计算机。各种输入和输出设备可以实现自然用户接口(NUI),其是使得用户能够以摆脱由诸如鼠标、键盘、遥控器等之类的输入设备施加的人为约束的“自然”方式与设备交互的任何接口技术。
NUI方法的示例包括依赖于语音识别、触摸和触针识别、悬停、屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛跟踪、话音和语音、视觉、触摸、手势和机器智能的那些方法,并且可以包括触敏显示器的使用、话音和语音识别、意图和目标理解、使用深度相机(诸如立体相机***、红外相机***和其它相机***及这些的组合)的运动手势检测、使用加速计或陀螺仪的运动手势检测、面部识别、三维显示、头部、眼睛和视线跟踪、沉浸式增强现实和虚拟现实***,所有这些提供更自然的接口,以及用于使用电场感测电极感测脑活动的技术(诸如脑电图技术和相关方法)。
各种存储装置110、通信连接112、输出设备116和输入设备114可以与计算机的其余部分集成在壳体内,或者可以通过计算机上的输入/输出接口设备连接,在这种情况下,附图标记110、112、114和116可以指示用于连接到设备的接口或设备本身(视情况而定)。
计算机一般包括操作***,其是在计算机上运行的管理应用对计算机的各种资源的访问的计算机程序。可能存在多个应用。各种资源包括存储器、存储装置、输入设备和输出设备,诸如图1所示的显示设备和输入设备。文件***一般被实现为计算机的操作***的部分,但是可以与操作***不同。文件***可以在分布式计算环境中实践,在分布式计算环境中操作由通过通信网络链接的多个计算机执行。在分布式计算环境中,计算机程序可以位于本地和远程计算机存储介质两者中,并且可以由不同计算机的处理单元执行。
操作***、文件***和应用可以使用具有一个或多个计算机程序的一个或多个计算机的一个或多个处理单元实现,所述一个或多个计算机程序由所述一个或多个处理单元处理。计算机程序包括计算机可执行指令和/或计算机解释指令,诸如程序模块,所述指令由计算机中的一个或多个处理单元处理。一般地,这样的指令限定了例程、程序、对象、组件、数据结构等,其在被处理单元处理时命令处理单元对数据执行操作或将处理器或计算机配置成实现各种组件或数据结构。
给定一个或多个计算机和一个或多个存储设备,无论是单个计算机还是一组分布式计算机或是连接到分布式存储装置的一个或多个计算机,文件***在管理存储设备的细节(诸如每个设备内的存储数据其中的实际存储位置)与应用之间提供抽象层。此抽象层允许应用使用对文件和文件内的位置的引用来识别文件和访问文件,而不需要应用具有关于存储设备上的实际存储位置的信息或关于该存储设备的其它细节。
在一些计算机中,管理多个处理单元以运行多个虚拟机,其中每个虚拟机由一个或多个数据文件限定。还可以管理存储设备以提供多个虚拟硬盘驱动器(VHD)。在这样的***中,一些数据文件,特别是限定虚拟机的那些数据文件,可能非常大。数据文件的一些部分,比如例如某些VHD元数据,可能比文件的其它部分更重要。
通过允许文件的不同区段使用不同的校验和算法,如本文所述,可以基于在文件的不同部分中数据的相对重要性更优化地选择校验和算法。这种将校验和算法针对文件的不同区段进行定制可以提供更高效的存储利用率和更好的性能。
现在将更详细地描述允许文件的不同区段使用不同的校验和算法的文件***的实现方式。
在文件***中,对文件的引用被限定为各种文件***对象的组合,诸如存储设备或存储设备的集合的名称、目录的名称和目录的路径、文件流和文件的名称、或其它类型的文件***对象。每个文件***对象一般是表示存储在文件***内的数据的命名结构。
在文件***内,当用于文件的数据被存储时,其一般被分解成存储在存储设备上的存储位置中的小分块(chunk)(通常称为块)。文件***一般为每个文件跟踪存储设备内的存储文件的每个块的存储位置,以及那些块的排序。文件***还可以限定集群,其是一组块,并且一些操作可以限于在集群而不是块组上执行的操作。这里,术语“区段”用于意指文件的任何分区,诸如块或集群。除了跟踪存储文件的每个区段的存储数据的存储位置之外,文件***为每个区段跟踪所计算的校验和以及校验和算法。校验和信息,即所计算的校验和以及校验和算法的指示,可以针对区段的范围或者区段的子区域存储,这取决于实现方式。
现在将描述这样的文件***的示例实现方式。在图2至8的以下描述中,存储的块被用作存储操作的示例粒度(granularity)。应理解,根据所涉及的存储设备、处理单元、操作***和文件***所使用的惯例,下述可以应用于使用文件的任何区段或区段的范围,诸如块、集群或存储的其它子集。
参考作为示例实现方式的图2,文件***一般限定一组不同种类的文件***对象200,诸如目录202、文件204和文件流206。文件204可以包括文件流206的集合,如在208处所指示的。例如,文件可以包括元数据文件流和数据文件流。根目录210是特殊种类的目录202,其提供被管理的卷的顶级目录。由根目录支配的卷可以包括多个存储设备或存储设备的部分,但是仅出于说明的目的,本文的描述将指代单数存储设备。
每个文件***对象还可以具有一个或多个属性,诸如取决于文件***的实现方式的名称和其它属性。第一文件***对象的属性可以包括用于被创建并且取决于第一文件***对象的其它文件***对象的默认设置。例如,目录的属性可以限定在该目录内创建的文件和文件流的默认设置。类似地,文件的属性可以限定包括在该文件内的文件流的默认设置。
文件、文件流或其它类似对象还可以包括区段表252,其针对文件或文件流的每个区段(诸如存储的集群或块或其它子集)列出关于该区段的各种信息,诸如其在存储中的位置以及诸如区段属性之类的其它数据。
可以以若干方式存储区段表。例如,在一些实现方式中,区段表可以是关于块的信息的简单列表或阵列,其将文件所使用的虚拟块标识符映射到用于指代存储设备上的存储位置的逻辑块标识符。作为另一示例,在一些实现方式中,使用虚拟集群号作为密钥且使用逻辑集群号作为值,区段表可以存储在诸如B+树之类的索引树结构中。诸如区段属性之类的其它数据可以针对每个区段存储在这样的数据结构中。
尽管前面描述了具有对象类层次内的文件***对象的文件***,使用其它类型的数据结构表示文件***结构的文件***的其它实现方式也可以被使用,并且本发明不限于上面描述的对象类型或面向对象的实现方式。取决于文件***,术语“文件***对象”旨在意指文件***结构的任何实现方式,诸如根目录、文件等,并且不限于面向对象的实现方式。
一般地,文件***允许应用和用户在存储卷的根目录内创建多个目录和那些目录内的其它文件对象,这创建目录树。存储卷的名称和包含文件***对象的目录的名称的列表被称为路径。计算机程序通过向文件***提供包含期望的文件***对象和文件***对象的名称的路径,经过文件***访问文件***对象。注意,卷可以指代存储设备中、或存储设备的部分中、或多个存储设备中可用的存储位置,这取决于实现方式。
文件***典型地通过诸如函数调用等之类的编程接口,为其它计算机程序提供各种各样的操作,这些操作允许存储被访问。文件***可以包括初始化存储设备(本文中也称为“卷”)以供使用的操作,以及创建、读取、写入或更新或删除文件对象的操作。计算机程序通过指定操作和该操作将在其上执行的文件***对象的路径和名称,在文件***对象上执行操作。
为了允许校验和算法对于文件的不同区段而言是不同的,文件***使用文件***对象的区段表252来存储用于文件的区段的校验和算法的指示(如果有的话)。例如,此指示可以存储为区段表中的区段的属性。可替代地,此指示可以通过区段表间接地访问,例如通过与该区段的存储数据的存储位置的存储子***数据相关联地存储。作为另一示例,可以限定区段的范围,并且可以针对区段的范围存储此信息。
现在将结合图3描述具有每区段校验和信息的区段表212的示例实现方式。
如图3所示,在区段中存储数据的文件***对象(诸如文件或文件流)的区段表300可以实现为阵列、列表或其它索引数据结构。区段表可以基于用于文件***对象中的每个区段的区段标识符302而被编入索引。区段标识符一般在文件内顺序地分配,并且因此指示文件中的数据的顺序。这些区段标识符一般被映射到存储设备上的存储位置304。存储位置304本身可以是由存储子***用来唯一地标识存储子***内的存储的可寻址部分的标识符。
区段表300针对每个区段可以包括校验和指示符306,其是指示哪个校验和算法(如果有的话)用于计算该区段的校验和的值。该值可以是例如文件***进而将其映射到校验和算法的整数值。一个值可以设置成指示没有使用校验和算法(例如0或-1或一些“空”值指示符)。实现文件***的计算机程序可以使用各种各样的技术以使用校验和指示符306来切换到执行对应的校验和算法。一般地,文件***包括计算机程序,其在被计算机执行时可以实现至少两种不同的校验和算法。
存在可以使用的许多种校验和算法。下面是对这样的文件***而言有用的示例校验和算法的非详尽的说明性列表:纵向奇偶性、模块化和、弗莱彻(Fletcher)校验和、阿德勒(Adler)校验和、循环冗余和诸如MD5和SHA变体之类的散列函数。
区段表300还可以针对每个区段包括校验和值308,其是作为计算与关于存储在应用区段的存储位置304处的数据的校验和指示符306对应的校验和算法的结果的值。
区段表300还可以针对每个区段包括该区段的其它属性310。
可替代地,取决于实现方式,各种值304、306、308和310可以存储在由区段标识符编入索引的一个或多个表中。例如,校验和值308可以根据所使用的校验和算法在大小方面变化。通过将校验和值308存储在单独的表中或者甚至存储子***中的不同区段,校验和值的存储的管理可以与区段表的其余部分的存储的管理分开。可替代地,可以分配区段表,使得校验和值字段的大小固定为最大可能的大小。可替代地,校验和值308可以是校验和值存储在何处的指示符。作为另一可替代方案,校验和值和校验和算法可以相对于区段的存储***标识符而存储,并且这样的信息可以相对于存储子***而不是文件***对象来跟踪。因此,文件***可以直接在区段表中或间接地通过区段表标识用于文件***对象的区段的校验和。可替代地,关于用于文件***对象的校验和算法的信息可以关于文件***对象的区段的范围而存储。
给定区段的校验和值和校验和算法通过其可以被存储和确定的区段表,还提供文件***操作,以允许用于针对文件***对象的给定区段或区段范围的校验和算法被改变。对用于文件的区段或区段范围的校验和算法的这种改变可以独立于该文件的其它范围而进行。文件***操作一般由应用调用,但可以由用户在命令行接口中或在用户在其中选择的图形用户接口中输入。还可以写入计算机程序,其操纵文件***对象以改变文件***对象内使用的校验和算法。这样的操作的示例实现方式(其假定操作接收待被改变的文件***对象、区段、区段范围的指示,以及校验和算法的指示)将结合图4描述。可以提供用户接口以向用户传送可用的校验和算法,并且允许用户从针对文件的特定区域的可用校验和算法之中进行选择。
如图4所示,响应于调用操作来改变文件***对象的区段的校验和算法,文件***确保400调用者具有针对文件***对象的写入权限。如果另外输入参数没有错误,则文件***读取402用于待被改变的区段的区段表条目。如果由调用的操作指示的校验和算法已经用于该区段,如在404处所确定的,则该过程结束。从存储装置读取区段的数据(可选地验证当前校验和),并且计算406使用新的校验和算法的校验和。然后存储408新的校验和值和新的校验和算法的指示符。可以通过为区段的给定范围中的每个区段重复400至408的处理而针对区段的范围限定这样的操作。可能的是,针对区段范围改变校验和算法可能导致区段的当前范围被细分为多个范围,其各自具有不同的校验和算法。
给定文件***中的校验和的这种实现方式,可以修改各种各样的其它操作以支持此使用。例如,数据的读取和写入可以取决于用于文件的任何给定区段的校验和算法。再者,可以提供更高水平的文件管理操作,其改变用于文件的不同部分的校验和算法以提供不同水平的保护。在一些实现方式中,并且可以限定指定待用于尚未被分配和存储的文件***对象的区段的校验和算法的操作。当数据最终写入这样的区段时,可以预定义待使用的校验和算法。这组操作不旨在是详尽的,而是仅仅说明可以根据文件***是否支持在文件***对象之间共享所存储的数据不同地实现的操作的种类。可以为单个区段或为区段的范围限定任何这样的操作。区段的范围还可以包括尚未为文件***对象分配的区段。
现在将结合图5描述将数据写入文件***对象。当数据要被写入文件***对象中的区段时,文件***访问500关于区段的数据的区段表。文件***标识502待被用于区段的校验和算法(如果有的话)。如果存在用于此区段的校验和算法,则文件***使用所标识的校验和算法来计算504待被写入的数据的校验和。否则,可以避免校验和计算。文件***将该区段的数据写入506存储装置,并且在适当情况下更新该区段的存储位置。文件***还存储508针对区段计算的校验和值,以及(如果尚未被存储)所使用的校验和算法的指示。如果成功,文件***利用成功写入操作的指​​示做出响应510;否则任何前述步骤的失败可能导致用信号告知错误。
在一些实例中,写入操作将新数据附加到文件。在这种情况下,文件***向用于新区段的区段表添加条目。在添加条目时或之前,文件***可以以若干种方式设置待被使用的校验和算法。校验和算法可以是附加操作的参数。校验和算法可以根据文件的属性或从另一个文件***对象继承的属性而被默认地确定。可以基于文件***对象中直接在前的区段来选择校验和算法。可以基于正向其中写入数据的存储子***中的区段来选择校验和算法。
针对当前文件***对象的分配之外的区段的范围的校验和算法可以在区段的数据实际上被附加到文件***对象之前被指定。例如,可以创建空的文件,但其区段的范围具有指定的校验和算法。文件的结尾可以设置成包括该范围。当使用扩展写入将数据写入文件时,文件逐渐地扩展,并且为存储在区段的指定范围中的数据计算校验和。
在一些实例中,写入操作可涉及读取和修改当前存储的数据。可以在写入操作之前验证当前存储的校验和算法和针对当前存储的数据的校验和值,以确保读取时的当前存储的数据在修改之前是正确的。
在一些实例中,写入操作可以是“写入新的”或“写时复制”操作或类似操作,其导致区段的数据被写入到新的存储位置。如果区段表间接地跟踪校验和值和校验和算法,例如通过使这样值针对卷的每个存储位置存储,,则这样的数据可以针对新的存储位置而更新。
现在将结合图6描述从文件***对象读取数据。读取操作一般涉及访问600关于区段的数据的区段表。文件***标识602用于区段的校验和算法。文件***使用针对区段的存储位置从存储子***读取604数据。然后使用所标识的校验和算法计算606所读取的数据的校验和。比较608计算机校验和与先前存储的校验和。如果校验和匹配,如610处所指示的,则返回612所读取的数据;否则可以用新号告知错误,如在614处所指出的。
使用这样的文件***,文件的不同部分可以使用不同的校验和算法,并且可以使这些校验和算法独立于文件的其它部分而改变。该能力例如在具有大文件的存储***中是特别有利的,在大文件中所存储的数据的不同区域具有不同水平的重要性。具体示例在于具有虚拟硬盘驱动器(VHD)的数据中心,其中文件可以在一个区域中包括重要元数据并且在另一区域中包括不那么重要的其它数据。通过支持允许不同区段使用不同校验和的文件,文件***有利地支持性能与用于这样的文件的保护之间的改进的权衡。例如,可以向存储VHD元数据的文件中的区段分配一个校验和算法,相比于分配给存储其它VHD数据的文件中的其它区段的另一校验和算法,该校验和算法可能花费更长时间来计算或导致更大的校验和值。类似地,可以改变具有校验和算法的一个组合的文件,以使用校验和算法的另一组合。
现在将结合图7描述改变应用于文件***对象的保护的操作的示例实现方式。
在此示例操作中,应用可以对文件***操作进行反复调用,该文件***操作改变应用于指定文件的指定区段的校验和。可替代地,文件***还可以包括接收文件、文件内的不同范围的指示以及待被应用于不同范围内的区段的不同校验和算法的指示的操作。
因此,在图7中,文件***接收702文件、文件内的范围以及待被应用于不同范围内的区段的不同校验和算法的指示。在给定范围的情况下,标识702该范围内的区段。(如为正被处理的文件的当前范围中的区段指定的)新的校验和算法以诸如在图4中描述的方式被应用704到每一个区段。如果该范围的所有区段被处理(如在706处确定的),则文件的下一个范围被处理(如在702处指示的),直到所有范围都被处理(如在708处确定的)。如果成功,应用以对文件成功更改的指示做出响应710。
应理解,可以提供各种各样的其它操作以访问和管理针对文件***对象内的不同区段利用不同校验和算法的文件***对象。前面提供了针对这样的文件***的一组说明性示例实现方式。
通过使区段或区段的范围改变或不使用校验和算法,可能的是,为区段临时动态地改变校验和算法。作为特定示例,为了将数据写入到区段,区段可被设置成使数据在适当位置写入,并且可被设置成不具有校验和。在完成写入后,可以设置校验和算法并且然后计算校验和。更具体地,当针对标记为具有校验和的区段发生写入时,应用可以写入到给定范围,并且文件***写入意向日志记录,其陈述了该范围中的数据正在被覆写。该写入在原始介质区段中进行。然后可以计算和存储校验和值。如果在计算校验和被计算之前发生某些错误,诸如死机、集群故障转移或其它故障,则校验和可以作为文件***恢复的部分来处理。因为意向日志记录了数据在该范围内正被覆写,假设此范围的正确校验和现在是未知的。该范围然后被临时标记为不具有校验和。之后,如果应用或文件***读取或写入此范围,则存储在此范围中的数据然后被推测为是正确的,并且该范围的校验和然后被计算和存储且该范围被标记为具有校验和。
这样的文件***有利地支持使文件具有应用于不同区段的不同校验和,这可以在保护、存储利用和性能之间提供更好的权衡。
因此,在一个方面中,一种具有文件***的计算机包括用于为文件***对象的区段跟踪来自于多个不同的校验和算法之中的、应用于该区段的校验和算法的装置。这样的文件***可以包括用于改变独立于文件***对象的其它区段应用于文件***对象的区段的校验和算法的装置。
在另一方面中,一种具有文件***的计算机包括用于改变独立于文件***对象的其它区段应用于文件***对象的区段的校验和算法的装置,其中应用于该区段的校验和算法选自多个不同的校验和算法。
在另一方面中,一种具有文件***的计算机包括存储装置,其针对文件***对象的不同区段包括来自多个不同的校验和算法之中的、应用于该区段的校验和算法的指示。
在另一方面中,一种由计算机的文件***执行的计算机实现的过程包括:接收来自于多个不同的校验和算法之中的、应用于区段的校验和算法的指示,以及独立于文件***对象的其它区段将该校验和算法应用于区段的存储数据。
在另一方面中,一种制品包括存储介质,其中计算机程序代码存储在该存储介质中,该计算机程序代码在被一个或多个计算机执行时将所述一个或多个计算机配置成接收来自多个不同的校验和算法之中的、应用于区段的校验和算法的指示,并且独立于文件***对象的其它区段将该校验和算法应用于该区段的存储数据。
在任一前述方面中,响应于针对文件***对象的区段的写入操作,文件***标识应用于该区段的校验和算法,使用该校验和算法计算该区段的校验和值,以及存储与该区段相关联的校验和值以及校验和算法的指示。
在任一前述方面中,响应于针对文件***对象的区段的读取操作,文件***标识应用于该区段的校验和算法,使用该校验和算法计算从区段的存储装置读取的数据的校验和值,以及将所计算的校验和值与针对该区段的存储的校验和值进行比较。
在任一前述方面中,响应于改变应用于文件的区段的校验和算法的操作,文件***使用校验和算法计算从区段的存储装置读取的数据的校验和值,并且存储与该区段相关联的校验和值以及校验和算法的指示。
在任一前述方面中,可以为文件***对象的每个区段存储指示应用于该区段的校验和算法的校验和指示符,其中校验和算法从多个校验和算法当中选择。
在任一前述方面中,可以为文件***对象的每个区段存储指示针对该区段的存储数据计算的校验和值的校验和值。
在任一前述方面中,针对区段的校验和指示符可以存储在用于文件***对象的区段表中的区段的条目中。
在任一前述方面中,针对区段的校验和值可以存储在用于文件***对象的区段表中的区段的条目中。
在任一前述方面中,可以通过用于文件***对象的区段表中的区段的条目间接地访问针对区段的校验和指示符。
在任一前述方面中,可以通过用于文件***对象的区段表中的区段的条目间接地访问针对区段的校验和值。
在任一前述方面中,针对文件***对象的区段的校验和指示符与关于该区段的存储数据的存储位置的数据相关联地存储。
在任一前述方面中,针对文件***对象的区段的校验和值与关于该区段的存储数据的存储位置的数据相关联地存储。
在任一前述方面中,针对文件***对象的区段的校验和算法可以在写入操作失败的情况下被移除。在之后对该区段的访问时,校验和算法可以被重新分配到该区段,并且校验和值可以被计算和存储。
任一前述方面可以体现在一个或多个计算机中,作为这样的计算机的任何单独的组件,作为由一个或多个计算机或这样的计算机的任何单独组件执行的过程,或者作为包括计算机存储装置的制品,其中计算机程序指令存储在该计算机存储装置中并且在被一个或多个计算机处理时配置所述一个或多个计算机。
本文描述的任何或全部的上述可替代实施例可以在任何期望的组合中使用,以形成附加混合实施例。可替代地或另外,本文描述的各种组件中的一个或多个组件的功能可以至少部分地由一个或多个硬件逻辑组件执行。举例而言而非限制,可以使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上***的***(SOC)、复杂可编程逻辑设备(CPLD)等。应理解,所附权利要求中限定的主题不一定限于上面描述的具体实现方式。上面描述的具体实施方式仅作为示例公开。

Claims (15)

1.一种配置成管理对一个或多个存储设备上的文件***的多个文件***对象的存储和对所述多个文件***对象的访问的计算机,包括:
配置成存储数据的存储装置,针对文件***对象的多个区段中的每个区段,该数据包括从多个不同的校验和算法之中选择的、应用于所述区段的校验和算法的指示,以及在所述区段应用了校验和算法的情况下针对所述区段的校验和值;以及
包括存储器和过程的处理***,针对文件***的计算机程序代码存储在所述存储器中,所述计算机程序代码在被所述处理***执行时将所述处理***配置成来自到文件***的应用、访问所述文件***对象的请求做出响应,所述处理***进一步配置成,针对待被访问的每个区段,应用指示用于存储装置中的区段的校验和算法。
2.权利要求1的计算机,其中所述文件***响应于对文件***对象的区段的写入操作,标识适用于所述区段的校验和算法,使用所述校验和算法计算所述区段的校验和值,并且存储校验和算法的指示和与所述区段相关联的校验和值。
3.前述权利要求中任意一项的计算机,其中所述文件***响应于针对文件***对象的区段的读取操作,标识应用于所述区段的校验和算法,使用所述校验和算法计算针对所述区段的从存储装置读取的数据的校验和值,并且比较所计算的校验和值与针对区段的存储的校验和值。
4.前述权利要求中任意一项的计算机,其中所述文件***响应于改变应用于文件的区段的校验和算法的操作,文件***使用所述校验和算法计算针对区段的从存储装置读取的数据的校验和值,并且存储所述校验和算法的指示和与所述区段相关联的校验和值。
5.前述权利要求中任意一项的计算机,其中所述校验和算法的指示符是存储在针对所述文件***对象的区段表中的区段的条目中的校验和指示符。
6.权利要求5的计算机,其中针对区段的所述校验和值存储在针对所述文件***对象的区段表中的区段的条目中。
7.前述权利要求中任意一项的计算机,其中所述校验和算法的指示符是针对通过针对文件***对象的区段表中区段的条目间接访问的区段的校验和指示符。
8.根据权利要求7的计算机,其中针对区段的校验和值通过针对文件***对象的区段表中的区段的条目被间接地访问。
9.前述权利要求中任意一项的计算机,其中所述校验和算法的指示符是针对与关于所述区段的存储数据的存储位置的数据相关联地存储的区段的校验和指示符。
10.前述权利要求中任意一项的计算机,其中针对文件***对象的区段的校验和值与关于所述区段的存储数据的存储位置的数据相关联地存储。
11.一种由计算机的文件***执行的计算机实现的过程,包括:
接收来自多个不同的校验和算法之中的、应用于区段的校验和算法的指示,以及
独立于所述文件***对象的其它区段,将所述校验和算法应用于所述区段的存储数据。
12.权利要求11的计算机实现的过程,进一步包括:响应于对文件***对象的区段的写入操作:
标识适用于所述区段的校验和算法,
使用所述校验和算法计算所述区段的校验和值,以及
存储所述校验和算法的指示和与所述区段相关联的校验和值。
13.权利要求11的计算机实现的过程,进一步包括:响应于针对文件***对象的区段的读取操作:
标识应用于所述区段的校验和算法,
使用所述校验和算法计算针对所述区段的从存储装置读取的数据的校验和值,以及
比较所计算的校验和值与针对所述区段的存储的校验和值。
14.权利要求11的计算机实现的过程,进一步包括:响应于改变应用于文件的区段的校验和算法的操作,
使用所述校验和算法计算针对所述区段的从存储装置读取的数据的校验和值,以及
存储所述校验和算法的指示和与所述区段相关联的校验和值。
15.一种包括存储介质的制品,其具有存储在所述存储介质中的计算机程序代码,该计算机程序代码在被一个或多个计算机执行时将所述一个或多个计算机配置成实现权利要求11至14中任意一项的过程。
CN201580053127.2A 2014-09-30 2015-09-29 具有每区段校验和的文件*** Active CN106716375B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/501,922 US10102218B2 (en) 2014-09-30 2014-09-30 File system with per-extent checksums
US14/501922 2014-09-30
PCT/US2015/052761 WO2016053922A1 (en) 2014-09-30 2015-09-29 File system with per-extent checksums

Publications (2)

Publication Number Publication Date
CN106716375A true CN106716375A (zh) 2017-05-24
CN106716375B CN106716375B (zh) 2019-12-03

Family

ID=54325713

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580053127.2A Active CN106716375B (zh) 2014-09-30 2015-09-29 具有每区段校验和的文件***

Country Status (7)

Country Link
US (1) US10102218B2 (zh)
EP (1) EP3201775B1 (zh)
JP (1) JP2017530454A (zh)
CN (1) CN106716375B (zh)
BR (1) BR112017003848A2 (zh)
RU (1) RU2017110458A (zh)
WO (1) WO2016053922A1 (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307177B2 (en) 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US11449394B2 (en) 2010-06-04 2022-09-20 Commvault Systems, Inc. Failover systems and methods for performing backup operations, including heterogeneous indexing and load balancing of backup and indexing resources
US20140181044A1 (en) 2012-12-21 2014-06-26 Commvault Systems, Inc. Systems and methods to identify uncharacterized and unprotected virtual machines
US9286086B2 (en) 2012-12-21 2016-03-15 Commvault Systems, Inc. Archiving virtual machines in a data storage system
US9703584B2 (en) 2013-01-08 2017-07-11 Commvault Systems, Inc. Virtual server agent load balancing
US9183246B2 (en) 2013-01-15 2015-11-10 Microsoft Technology Licensing, Llc File system with per-file selectable integrity
US9939981B2 (en) 2013-09-12 2018-04-10 Commvault Systems, Inc. File manager integration with virtualization in an information management system with an enhanced storage manager, including user control and storage management of virtual machines
US9811427B2 (en) 2014-04-02 2017-11-07 Commvault Systems, Inc. Information management by a media agent in the absence of communications with a storage manager
US20160019317A1 (en) 2014-07-16 2016-01-21 Commvault Systems, Inc. Volume or virtual machine level backup and generating placeholders for virtual machine files
US9983936B2 (en) 2014-11-20 2018-05-29 Commvault Systems, Inc. Virtual machine change block tracking
US10810163B2 (en) * 2016-01-27 2020-10-20 Hitachi, Ltd. Storage management computer, storage management method, and recording medium
US10802740B2 (en) 2016-04-21 2020-10-13 Netapp, Inc. Systems, methods, and computer readable media providing arbitrary sizing of data extents
US10474548B2 (en) 2016-09-30 2019-11-12 Commvault Systems, Inc. Heartbeat monitoring of virtual machines for initiating failover operations in a data storage management system, using ping monitoring of target virtual machines
US10248801B2 (en) * 2016-10-07 2019-04-02 American Express Travel Related Services Company, Inc. Systems and methods for role-based file access control
US10162528B2 (en) 2016-10-25 2018-12-25 Commvault Systems, Inc. Targeted snapshot based on virtual machine location
US10678758B2 (en) 2016-11-21 2020-06-09 Commvault Systems, Inc. Cross-platform virtual machine data and memory backup and replication
US10877851B2 (en) 2017-03-24 2020-12-29 Commvault Systems, Inc. Virtual machine recovery point selection
US10387073B2 (en) 2017-03-29 2019-08-20 Commvault Systems, Inc. External dynamic virtual machine synchronization
US10877928B2 (en) * 2018-03-07 2020-12-29 Commvault Systems, Inc. Using utilities injected into cloud-based virtual machines for speeding up virtual machine backup operations
US11216443B2 (en) * 2018-06-20 2022-01-04 EMC IP Holding Company LLC Processing device configured for data integrity testing utilizing signature-based multi-phase write operations
US11200124B2 (en) 2018-12-06 2021-12-14 Commvault Systems, Inc. Assigning backup resources based on failover of partnered data storage servers in a data storage management system
US10768971B2 (en) 2019-01-30 2020-09-08 Commvault Systems, Inc. Cross-hypervisor live mount of backed up virtual machine data
US10996974B2 (en) 2019-01-30 2021-05-04 Commvault Systems, Inc. Cross-hypervisor live mount of backed up virtual machine data, including management of cache storage for virtual machine data
US11467753B2 (en) 2020-02-14 2022-10-11 Commvault Systems, Inc. On-demand restore of virtual machine data
US11442768B2 (en) 2020-03-12 2022-09-13 Commvault Systems, Inc. Cross-hypervisor live recovery of virtual machines
US11099956B1 (en) 2020-03-26 2021-08-24 Commvault Systems, Inc. Snapshot-based disaster recovery orchestration of virtual machine failover and failback operations
US11216416B2 (en) * 2020-05-11 2022-01-04 Microsoft Technology Licensing, Llc Managing snapshotting of a dataset using an ordered set of B+ trees
US11500669B2 (en) 2020-05-15 2022-11-15 Commvault Systems, Inc. Live recovery of virtual machines in a public cloud computing environment
US11656951B2 (en) 2020-10-28 2023-05-23 Commvault Systems, Inc. Data loss vulnerability detection
CN112579546B (zh) * 2020-12-17 2023-02-03 北京尖晶尖科技有限公司 文件压缩方法、***、存储介质及终端

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001061563A1 (en) * 2000-02-18 2001-08-23 Avamar Technologies, Inc. Hash file system and method for use in a commonality factoring system
CN1525327A (zh) * 2003-02-11 2004-09-01 三星电子株式会社 校验和写入方法与校验和检验设备
US7415653B1 (en) * 2004-04-21 2008-08-19 Sun Microsystems, Inc. Method and apparatus for vectored block-level checksum for file system data integrity
US7451167B2 (en) * 2003-10-24 2008-11-11 Network Appliance, Inc. Verification of file system log data using per-entry checksums
CN103348334A (zh) * 2010-10-11 2013-10-09 Est软件公司 云***以及在云***中的文件压缩及传送方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5752251A (en) 1995-08-07 1998-05-12 Ncr Corporation Method and apparatus for recovering aborted file (or data) transmission
US7401221B2 (en) 2002-09-04 2008-07-15 Microsoft Corporation Advanced stream format (ASF) data stream header object protection
US7392267B2 (en) 2002-12-04 2008-06-24 International Business Machines Corporation Annotation validity using partial checksums
US8977859B2 (en) * 2004-05-04 2015-03-10 Elsevier, Inc. Systems and methods for data compression and decompression
US7818537B2 (en) 2007-07-19 2010-10-19 International Business Machines Corporation Method and system for dynamically determining hash function values for file transfer integrity validation
US9792384B2 (en) 2009-02-26 2017-10-17 Red Hat, Inc. Remote retreival of data files
US9419801B2 (en) 2009-05-12 2016-08-16 Infrascale Inc. System and method for transmitting needed portions of a data file between networked computers
US8386835B2 (en) 2010-05-17 2013-02-26 Oracle International Corporation System and method for end-to-end data integrity in a network file system
US8397101B2 (en) * 2010-06-03 2013-03-12 Seagate Technology Llc Ensuring a most recent version of data is recovered from a memory
US9183246B2 (en) 2013-01-15 2015-11-10 Microsoft Technology Licensing, Llc File system with per-file selectable integrity
US9106257B1 (en) * 2013-06-26 2015-08-11 Amazon Technologies, Inc. Checksumming encapsulated network packets
US9727575B2 (en) 2014-08-29 2017-08-08 Microsoft Technology Licensing, Llc File system with data block sharing

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001061563A1 (en) * 2000-02-18 2001-08-23 Avamar Technologies, Inc. Hash file system and method for use in a commonality factoring system
CN1525327A (zh) * 2003-02-11 2004-09-01 三星电子株式会社 校验和写入方法与校验和检验设备
CN1275158C (zh) * 2003-02-11 2006-09-13 三星电子株式会社 校验和计算和写入方法
US7451167B2 (en) * 2003-10-24 2008-11-11 Network Appliance, Inc. Verification of file system log data using per-entry checksums
US7415653B1 (en) * 2004-04-21 2008-08-19 Sun Microsystems, Inc. Method and apparatus for vectored block-level checksum for file system data integrity
CN103348334A (zh) * 2010-10-11 2013-10-09 Est软件公司 云***以及在云***中的文件压缩及传送方法

Also Published As

Publication number Publication date
US10102218B2 (en) 2018-10-16
EP3201775A1 (en) 2017-08-09
JP2017530454A (ja) 2017-10-12
WO2016053922A1 (en) 2016-04-07
US20160092467A1 (en) 2016-03-31
EP3201775B1 (en) 2018-07-04
RU2017110458A (ru) 2018-10-04
CN106716375B (zh) 2019-12-03
BR112017003848A2 (pt) 2017-12-05

Similar Documents

Publication Publication Date Title
CN106716375B (zh) 具有每区段校验和的文件***
CN108287669B (zh) 数据存储方法、装置及存储介质
CN103377279B (zh) 用于移植数据的***与方法
US8103847B2 (en) Storage virtual containers
CN109542342B (zh) 元数据管理与数据重构方法、设备及存储介质
CN104238963B (zh) 一种数据存储方法、存储装置及存储***
CN103064765B (zh) 数据恢复方法、装置及集群存储***
CN104199750B (zh) 一种linux***的文件恢复方法及装置
CN106575309B (zh) 具有数据块共享的文件***
CN107436733A (zh) 分片管理方法和分片管理装置
US20140181455A1 (en) Category based space allocation for multiple storage devices
CN103955433A (zh) 盖瓦磁记录硬盘、盖瓦磁记录硬盘写数据的方法及装置
CN109358974A (zh) 一种进程间通信的方法及相关装置
CN101221485A (zh) 建立冗余磁盘阵列的方法及控制设备
CN106919494A (zh) 安卓应用日志的实现方法和装置
EP3989052A1 (en) Method of operating storage device and method of operating storage system using the same
CN105589733B (zh) 一种数据处理方法和装置
US8468007B1 (en) Emulating a peripheral mass storage device with a portable device
CN107608609A (zh) 一种事件对象发送方法与装置
CN108733326A (zh) 一种磁盘处理方法及装置
US9594798B2 (en) File system with per-file selectable integrity
US20140258347A1 (en) Grouping files for optimized file operations
CN105573862B (zh) 一种恢复文件***的方法和设备
CN105095352B (zh) 应用于分布式***的数据处理方法及装置
US20190354306A1 (en) Available-space management method for nonvolatile memory, access device which stores data to information storage device with nonvolatile memory, information storage device, and information storage system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant