CN109416621A - 利用支持共享对象的计算机存储系统来恢复非易失性存储中的空闲空间 - Google Patents

利用支持共享对象的计算机存储系统来恢复非易失性存储中的空闲空间 Download PDF

Info

Publication number
CN109416621A
CN109416621A CN201780040132.9A CN201780040132A CN109416621A CN 109416621 A CN109416621 A CN 109416621A CN 201780040132 A CN201780040132 A CN 201780040132A CN 109416621 A CN109416621 A CN 109416621A
Authority
CN
China
Prior art keywords
entity
instance
computer
file
stored
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
CN201780040132.9A
Other languages
English (en)
Other versions
CN109416621B (zh
Inventor
M·马尔凯维奇
N·博登
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 CN109416621A publication Critical patent/CN109416621A/zh
Application granted granted Critical
Publication of CN109416621B publication Critical patent/CN109416621B/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/17Details of further file system functions
    • G06F16/1727Details of free space management performed by the file system
    • 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/14Details of searching files based on file metadata
    • 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/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations
    • 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/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • G06F16/1752De-duplication implemented within the file system, e.g. based on file segments based on file chunks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

为了识别由实体所共享的对象并且为了识别非易失性存储中的空闲空间,计算机系统使用一种测试元素是否是集合中的成员的概率性数据结构。这样的概率性数据结构是针对在存储系统中共享对象的实体而创建的。针对实体的概率性数据结构表示该实体所使用的对象。当实体被删除时,将该实体所使用的每个对象与其他实体的概率性数据结构进行比较以确定是否存在该对象被其他实体中的一个或多个使用的可能性。如果针对一个对象所确定的可能性高于可接受的阈值,则该对象不被删除。如果针对一个对象所确定的可能性低于设定的阈值,则该对象能够被删除并且对应的存储位置能够被标记为是空闲的。

Description

利用支持共享对象的计算机存储系统来恢复非易失性存储中 的空闲空间
背景技术
在一些计算机存储系统中,存储在非易失性存储设备中的一些数据(在本文被称作“实体”)是其他存储的数据(在本文被称为“对象”)的集合。在这些存储系统中的一些中,两个或更多个实体能够共享一个对象。例如,文字处理文档和演示文档可以都包括同一图片,该图片也可以作为分别的实体被存储。在具有许多实体的系统中,多个实体能够共享对个对象。
通常而言,对存储资源更为高效的使用是将对象仅在存储系统中存储一次。例如,如果多个实体引用相同的对象,则定义那些实体中的每个实体的数据可以包括针对定义该对象的存储的数据的引用。然而,在引用了对象的所有实体都被删除之后,期望识别出对定义先前所共享的对象的数据进行存储的存储位置,以使得那些存储位置能够被标记为空闲的或可用的。
发明内容
提供了该发明内容以用简化的形式引入在以下的具体实施方式中进一步描述的概念的选择。该发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在限制所要求保护的主题的范围。
为了识别由实体所共享的对象并且进而为了识别非易失性存储中的空闲空间,计算机系统使用一种测试元素是否是集合中的成员的概率性数据结构。这样的概率性数据结构是针对在存储系统中共享对象的实体而创建的。针对实体的概率性数据结构表示该实体所使用的对象。当实体被删除时,将该实体所使用的每个对象与其他实体的概率性数据结构进行比较以确定是否存在该对象被其他实体中的一个或多个使用的可能性。如果针对一个对象所确定的可能性高于可接受的阈值,则该对象不被删除。如果针对一个对象所确定的可能性低于设定的阈值,则该对象能够被删除并且对应的存储位置能够被标记为是空闲的。
在以下描述中,对形成其一部分并且通过图示而示出了实现的具体示例的附图进行参考。可以进行其他实现而并不脱离本公开的范围。
附图说明
图1是示例计算机的框图。
图2是在持久性存储中共享对象的实体的说明性示例。
图3是生成概率性数据结构的说明性示例。
图4是针对图2的实体的概率性数据结构的说明性示例。
图5是Bloom过滤器的示例实现的数据流程图。
图6是描述创建实体的示例实现的流程图。
图7是描述删除实体的示例实现的流程图。
具体实施方式
图1示出了能够利用其实现在本文所描述的技术的计算机的示例。这仅仅是计算机的一个示例而不旨在暗示关于这样的计算机的使用或功能的范围的任何限制。
该计算机可以是多种通用或专用计算硬件配置中的任何一个。能够使用的计算机类型的一些示例包括但不限于个人计算机、游戏机、机顶盒、手持或膝上型设备(例如,媒体播放机、笔记本计算机、平板计算机、包括但不限于“智能”电话的蜂窝电话、个人数字助理、录音机)、服务器计算机、多处理器系统、基于微处理器的系统、可编程消费型电子产品、联网的个人计算机、小型计算机、大型计算机,以及包括以上类型的计算机或设备中的任何一种的分布式计算环境,等等。
参考图1,计算机1000包括具有至少一个处理单元1002和存储器1004的处理系统。该计算机可以具有多个处理单元1002以及实现存储器1004的多个设备。处理单元1002包括处理器,其是响应并处理指令以提供计算机的功能的逻辑电路。处理单元可以包括一个或多个处理核心(未示出),它们是同一逻辑电路内能够彼此独立地操作的处理器。通常而言,计算机中的处理单元中的一个处理单元被指定为主处理单元,通常被称为中央处理单元(CPU)。计算机中还可以存在诸如图形处理单元(GPU)之类的另外的协同处理单元。协同处理单元包括执行对中央处理单元进行补充的操作的处理器,所述操作例如但不限于图形操作和信号处理操作。
存储器1004可以包括易失性计算机存储设备(例如,动态随机存取存储器(DRAM)或其他随机存取存储器设备)和非易失性计算机存储设备(例如,只读存储器、闪速存储器等),或者二者的某一组合。非易失性计算机存储设备是其内容在去除电力时并不丢失的计算机存储设备。诸如专用存储器或寄存器之类的其他计算机存储设备也可以存在于一个或多个处理器中。计算机1000可以包括另外的计算机存储设备(可移动或不可移动的),例如但不限于磁性记录或光学记录的碟片或带。这样另外的计算机存储设备在图1中由可移动存储设备1008和不可移动存储设备1010示出。这样的计算机存储设备1008和1010通常是不可移动存储设备。图1中的各种组件通常由诸如一个或多个总线1030之类的互连机制进行互连。
计算机存储设备是数据能够存储在其中并且能够由计算机从可寻址的物理存储位置取回的任何设备。计算机存储设备因此可以是易失性或非易失性存储器,或者是可移动或不可移动存储设备。存储器1004、可移动存储1008、和不可移动存储1010全部都是计算机存储设备的示例。计算机存储设备的一些示例是RAM、ROM、EEPROM、闪速存储器或其他存储器技术、CD-ROM、数字多功能盘(DVD)或者其他光学或磁光学记录的存储设备、盒式磁带、磁带、磁盘存储或其他磁存储设备。计算机存储设备和通信介质是互相排他的介质类别,并且与通过通信介质传播的信号不同。
计算机1000还可以包括允许计算机通过通信介质与其他设备进行通信的(多个)通信连接1012。通信介质通常通过经由物质传播诸如载波或其他传输机制之类的经调制的数据信号来经由有线或无线物质发送计算机程序指令、数据结构、程序模块、或其他数据。术语“调制数据信号”指的是以将信息编码到信号中的方式设置或改变其特征中的一个或多个从而改变该信号的接收设备的配置或状态的信号。作为示例而非限制,通信介质包括诸如广播电信号的金属或其他的导电性线或广播光信号的光纤之类的有线介质,以及诸如允许广播诸如声音、电磁、电、光、红外、射频和其他信号之类的信号的任何非有线通信介质之类的无线介质。通信连接1012是设备,例如有线网络接口、无线网络接口、射频收发机,例如WiFi 1070、蜂窝1074、长期演进(LTE)或蓝牙1072等的收发机、导航收发机,例如全球定位系统(GPS)或全球导航卫星系统(GLONASS)等,或者网络接口设备1076,例如以太网等,或者与通信介质接合以通过通信介质发送数据并且从通信介质接收数据的其他设备。
计算机1000可以具有各种输入设备1014,例如指针设备、键盘、基于触摸的输入设备、手写笔、相机、麦克风,诸如加速计、温度计、光传感器等之类的传感器等。计算机1000可以具有各种输出设备1016,例如显示器、扬声器等。这样的设备是本领域公知的并且无需在此详细讨论。各种输入和输出设备可以实现自然用户接口(NUI),其是使得用户能够以“自然的”方式与设备交互,而不用由诸如鼠标、键盘、远程控制等之类的输入设备施加的人工约束的任何接口技术。
NUI方法的示例包括依赖于语音识别、触摸和触笔识别、在屏幕上及接近屏幕的手势识别、空中手势、头部和眼睛跟踪、语音和话音、视觉、触摸、手势、和机器智能的方法,并且可以包括使用触摸感应的显示器、语音和话音识别、意图和目标理解、使用深度相机(例如,立体相机系统、红外相机系统、以及其他相机系统及这些的组合)的运动手势检测、使用加速计或陀螺仪的运动手势检测、脸部识别、三维显示器、头、眼睛、以及目光跟踪、沉浸式增强现实和虚拟现实系统,其全部提供更自然的接口,以及用于使用电场传感电极(EEG和相关方法)来检测脑部活动的技术。
各种计算机存储设备1008和1010、通信连接1012、输出设备1016和输入设备1014能够与计算机的其余部分一起被集成在外壳之内,或者能够通过计算机上的各种输入/输出接口设备进行连接,在这种情况下,附图标记1008、1010、1012、1014和1016可以根据具体情况而指示到设备的连接的接口或者设备自身。
计算机通常包括操作系统,该操作系统是对在计算机上运行的应用对计算机的各种资源的访问进行管理的计算机程序。可能存在多个应用。各种资源包括存储器、存储、输入设备和输出设备,例如在图1中所示的显示设备和输入设备。为了管理对存储在非易失性计算机存储设备中的数据的访问,计算机通常还包括保存数据文件的文件系统。文件是一种被命名的逻辑结构,其由文件系统定义和实现以将数据的逻辑记录的名称和顺序映射到计算机存储设上的可寻址的物理位置。因此,文件系统向在计算机上运行的应用隐藏了数据的物理位置,以允许应用使用文件的名称以及由文件系统所定义的命令来访问文件中的数据。文件系统提供了基本的文件操作,例如创建文件、打开文件、写入文件、读取文件、和关闭文件。
图2至7的各种模块、工具、或应用与数据结构和流程图以及图1中的计算机上的任何操作系统、文件系统、和应用都能够使用一个或多个计算机的一个或多个处理单元利用由所述一个或多个处理单元所处理的一个或多个计算机程序来实现。计算机程序包括计算机可执行指令和/或计算机解译的指令(例如,程序模块),这是由计算机中的一个或多个处理单元所处理的指令。通常而言,这样的指令定义例程、程序、对象、组件、数据结构等,它们当由处理单元处理时指示或配置计算机以对数据执行操作或者配置计算机实现各种组件、模块、或数据结构。
可替代地或另外地,在本文中所描述的各种组件中的一个或多个的功能可以至少部分由一个或多个硬件逻辑组件来执行。作为示例而非限制,能够使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。
给定如在图1中所示的这样的计算机,被存储在非易失性存储设备中的数据(在本文被称为“实体”)是大型二进制数据对象(在本文被称为“对象”)的集合。两个或更多个实体能够共享一个对象。例如,文字处理文档和演示文档都可以包括同一图片,该图片也可以作为分别的实体而被存储。在具有许多实体的系统中,多个实体共享多个对象。
可以以多种方式来实现通过存储的实体对存储在非易失性存储中的对象的共享。
在一个示例实现中,每个对象作为二进制大型对象(BLOB)而被存储,并且每个实体被定义为这样的二进制大型对象的集合。
在一个示例实现中,文件系统能够将文件定义为逻辑块的集合,所述集合中的每个逻辑块被存储在非易失性存储中的对应的物理存储位置中。文件系统能够定义共享逻辑块的文件。在这样的实现中,文件是实体而逻辑块是能够被共享的对象。
在另一个示例实现中,使用文件系统的存储管理系统能够通过使用文件系统中的文件或者文件的部分作为能够被共享的对象来管理数据的存储。例如,存储管理系统可以将文字处理文档的不同版本存储为文件的组合。文字处理文档的第一版本可以被存储为第一文件。文字处理文档的第二版本可以被存储为第一文件和第二文件的组合,所述第二文件存储表示对第一文件的改变的数据。作为另一个示例,存储管理系统可以允许诸如文字处理文档和演示文档之类的不同的文档都包括另一个文档或文档的部分,例如图片。该图片也可以被存储为分别的实体。在这样的实现中,文件系统中的文件或文件的部分是能够被共享的对象,并且存储管理系统将实体作为文件的组合来管理。在这样的存储管理系统中,文件系统中的实体也可以是包括在另一实体中的对象。
在另一个示例实现中,操作系统或存储子系统从文件系统提取有关数据在计算机存储设备上的存储的信息,以使得文件系统不具有指示数据的逻辑块是否在两个文件间被共享的信息。替代地,存储子系统跟踪有关数据的逻辑块是否被共享的信息。
一般来讲,利用实体数据能够被存储以便表示对所存储的对象的共享的各种方式,通常存在与每个对象相关联的一些数据,以使得能够将对象与存储系统中的其他对象进行区分。能够用来将一个对象与另一个对象进行区分的任何这样的数据可以被称为对象标识符。
在图2中示出了共享对象的实体的说明性示例。在图2中,示出了第一对象200、第二对象202、和第三对象204。还示出了第一实体206和第二实体208。第一实体206包括第一对象200和第二对象202。第二实体208包括第二对象202和第三对象204。因此,第一实体206和第二实体208共享第二对象202。
在图2中能够看到,对存储资源的更加高效的使用通常是仅将对象在存储系统中存储一次。例如,通过使得第一实体206和第二实体208共享第二对象202,则定义第二对象202的数据仅被存储一次。第一实体206和第二实体208各自存储包括对定义第二对象202的所存储数据的引用的数据,而不是存储该数据的副本。这样的系统中所产生的挑战在于:识别不再被使用的对象,以及在实体被删除之后能够被释放的存储位置,而进行这样的确定是以不涉及检查每个对象的方式来进行的。例如,如果第二实体208被删除,则定义第三对象204的数据能够被删除;然而,定义第二对象202的数据不能够被删除,因为它仍然与第一实体206共享。
要解决这样的挑战涉及以高效的方式定义针对自身并不消耗实质性存储但是仍然还能够被处理的实体和对象的数据表示,从而识别出能够被删除的对象。未使用的对象存储在其中的存储位置能够被释放以用于存储其他对象。
如现在将结合图2和3通过说明性示例所描述的,概率性数据结构是针对每个实体而定义的并且表示包括在该实体中的对象。更加特别地,给定对象的标识符,针对实体的概率性数据结构测试对象是否是在该实体中所包括的对象集合的成员。该测试确定对象被包括在实体中的可能性。通过选择不产生对查询的假阴性结果的数据结构,针对对象对实体的数据结构的查询返回这样的指示:对象有可能在该实体的对象集合中或者肯定不在该实体的对象集合中。换句话说,在用对象的标识符进行查询时,针对实体的概率性数据结构输出该对象是包括在该实体中的对象集合的成员的可能性,而不允许假阴性结果。这样的概率性数据结构的示例是Bloom过滤器。
针对每个实体使用这样的概率性数据结构,当实体被删除时,可以将该实体所使用的每个对象与其他实体的概率性数据结构进行比较以确定是否存在该对象被其他实体中的一个或多个使用的可能性。如果针对一个对象所确定的可能性高于可接受的阈值,则该对象不被删除。如果针对一个对象所确定的可能性低于设定的阈值,则该对象能够被删除并且对应的存储位置可以被标记为空闲的。
对于诸如Bloom过滤器之类的针对其不存在假阴性的概率性数据结构而言,该阈值可以被设置为低至零;然而,这样的阈值有可能导致没有几个对象被删除。阈值能够基于假阳性结果的概率来设置,该概率是映射函数Fi的数量I、Bloom过滤器阵列中的元素的数量N、以及在Bloom过滤器阵列中所表示的对象的数量的函数。该阈值能够被设置为对应于足够低的假阳性概率。该阈值可以基于由存储在存储系统中的实体所共享的对象的数量而是自适应的。
图3呈现了Bloom过滤器的说明性示例;图4呈现了图3的Bloom过滤器的说明性示例,其表示图2的实体和对象。Bloom过滤器包括正整数N个元素(例如302)的阵列300(在本文被称为“Bloom过滤器阵列”)。对于Bloom过滤器而言,每个元素是单个比特。最初,所有比特被设置为初始值,例如零(0)。正整数I个函数Fi(Obj_ID)(i=1至I)(例如,306)用于将表示对象(Obj_ID)304的标识符映射至该阵列中的元素302,其中每个函数Fi将对象的标识符(Obj_ID)映射至元素En(i),其中En=1至N(例如,308)表示该阵列的第En个元素。通常而言,函数的数量I远远小于阵列中元素的数量N。
为了针对实体生成Bloom过滤器,将在该实体中所包括的每个对象添加至由该实体的Bloom过滤器阵列所表示的集合。给定对象的对象标识符,每个函数Fi被应用于该对象标识符以将该对象标识符映射至阵列中的元素。由于将多个函数应用于对象标识符而产生的阵列中的元素接着被设置为初始值以外的值,例如,一(1)。
作为示例,现在转到图4,在400处示出了针对第一实体(图2中的206)所生成的示例Bloom过滤器阵列,并且在402处示出了针对第二实体(图2中的208)所生成的示例Bloom过滤器阵列。在该示例中,假设函数的数量I为二(2)且元素的数量N为八(8)。第一对象200的对象标识符210(例如,“A”)被映射至元素1和元素2。第二对象202的对象标识符212(例如,“B”)被映射至元素2和元素4。第三对象204的对象标识符214(例如,“C”)被映射至元素4和元素6。因此,第一实体206的Bloom过滤器阵列400具有元素1、2和4的集合;第二实体208的Bloom过滤器阵列402则具有元素2、4和6的集合。
为了确定对象是否被包括在一实体中,每个函数Fi被应用于对象的对象标识符。应用这些函数的结果的并集是元素的集合。将该元素集合与表示实体中的对象的阵列进行比较。如果针对一个实体的阵列中的任何元素的值针对由于将函数Fi的集合应用于该对象标识符而产生的元素集合中的任何元素为“0”,则此对象不被包括在该实体的对象集合中。否则,那些元素的所有数值都为“1”,则存在该对象可以被包括在该实体中的正的可能性。该可能性取决于映射函数Fi的数量I、Bloom过滤器阵列中的元素的数量N、以及在Bloom过滤器阵列中所表示的对象的数量。
现在转到图5,现在将描述使用这样的概率性数据结构的存储系统的数据流程图。在这样的存储系统中,感兴趣的操作是创建新实体以及删除实体。在随后的示例中,假设实体一旦被创建就不被修改。例如,在其中文档被编辑的系统中,可以创建文档的不同版本,并且不同版本能够共享对象。因此,针对实体所生成的Bloom过滤器阵列在实体被创建之后不被改变。
在图5中,实体创建模块500存储对实体进行定义的数据502,其例如可以响应于用于创建实体的命而被执行,所述命令可以包括对由该实体所使用的对象532的集合的指示。对实体进行定义的数据502包括针对该实体所生成的Bloom过滤器阵列504。Bloom过滤器阵列504是由实体创建模块500所生成,其将在该实体中所包括的对象标识符506的序列提供至Bloom过滤器函数508。Bloom过滤器函数中的每个被应用于对象标识符506以输出标识Bloom过滤器阵列中应当被设置的元素510的数据。Bloom过滤器阵列生成器512针对该实体设置Bloom过滤器阵列514中的合适的元素。在包括在该实体中的所有对象都被处理之后,该Bloom过滤器阵列能够被存储,如在504处所指示的。
针对存储在存储系统中的实体的Bloom过滤器阵列能够独立于实体自身来存储。在一些实现中,Bloom过滤器阵列能够被保存在存储系统的存储器中。在一些实现中,如果所使用的存储的量足够低,则它们能够被存储在结构化存储中以便将访问数据时的输入/输出操作最小化。例如,针对多个实体的Bloom过滤器阵列能够被存储在结构化存储中的B树中。
在图5中,实体删除模块520响应于用于删除实体的指令来操作,所述指令引起对实体进行定义的数据502被删除。除了删除实体,计算机存储系统识别对实体的删除是否引起任何对象不被使用,这允许对应的存储位置被标记为空闲。实体删除模块可以例如通过接收实体的标识符530或者由实体所使用的对象的列表来接收标识由该实体所使用的对象的数据。实体删除模块520将在被删除的实体中所包括的对象标识符521的序列提供至Bloom过滤器函数508。Bloom过滤器函数中的每个被应用于对象标识符521以输出标识Bloom过滤器阵列中与该对象相对应的元素510的数据。Bloom过滤器匹配模块522将如应用于对象标识符506的Bloom过滤器函数508的输出与存储系统中的每个剩余实体的Bloom过滤器阵列504进行比较,以为提供针对每个对象每个实体的匹配结果524。针对对象和实体的匹配结果指示该对象被该实体所使用的可能性。如果针对任何实体所确定的对象的可能性高于可接受的阈值,则该对象不被删除。实体删除模块520能够基于来自Bloom过滤器匹配模块522的匹配结果524来删除对应的对象。
现在转到图6,现在将描述用于创建实体的操作的示例实现的流程图。
响应于用于创建包括多个对象的实体的请求,存储系统访问600在该实体中所包括的对象的列表。获得602列表中的下一个对象的标识符并且确定604Bloom过滤器函数的结果。Bloom过滤器阵列是针对当前的对象而基于Bloom过滤器函数的结果来更新606的。如果该实体中的其他对象仍然有待处理,如在608处所确定的,则该过程对下一对象进行重复,如602处所指示的。接着存储610针对该实体的完整Bloom过滤器阵列。
现在转到图7,现在将描述用于删除实体的操作的示例实现的流程图。
响应于用于删除包括多个对象的实体的请求,存储系统访问700该实体中所包括的对象的列表。获得702列表中的下一个对象的标识符并且确定704Bloom过滤器函数的结果。访问706针对存储系统中下一个实体的Bloom过滤器阵列。如果该对象的Bloom过滤器函数与当前实体的Bloom过滤器阵列的结果的比较大于所选择的阈值,并且该对象因此被确定为有可能被包括在该实体中,如在708处所确定的,则对当前对象的处理可以停止。因为当前对象有可能被包括在实体中,所以其不被删除。该过程能够以任何剩余对象而继续,如在712和702处所指示的。否则,该对象被确定为不被包括在当前实体中,并且如果如在709处所确定的还存在实体,则该处理以下一个实体而继续,如在706处所指示的。如果所有实体都被处理并且对象不被包括在剩余的实体中,则该对象能够被删除,如在710处所指示的。如果所删除实体的其他对象仍然有待处理,如在712处所确定的,则该过程以下一个对象而重复,如在702处所指示的。
尽管在图6和图7中所示出的前述过程是顺序描述的,但在一些实现中,对象标识符的处理能够并行执行,并且与多个实体的比较能够并行执行。
通过针对每个实体使用这样的概率性数据结构,并且将所删除的实体的对象与实体的概率性数据结构进行比较,能够避免对所存储的所有对象的分析。将每个实体被表示为相对小的数据结构减少了计算、输入/输出、和存储器使用。该表示还可以保持存储器驻留并且能够与实体在系统中的寿命相联系,以允许在不在每个决策点处引起输入和输出操作的情况下进行决策。
因此,在一个方面,一种计算机包括非易失性存储设备以及包括处理单元和存储器的处理系统。多个对象被存储在该非易失性存储设备上。多个实体被存储在该非易失性存储设备上。实体包括所存储的多个对象中的一个或多个对象,其中第一实体和第二实体可以共享对象。该处理系统响应于创建包括对象的第一集合的第一实体而生成表示对象的该第一集合在该第一实体中的包含的第一概率性数据结构。该处理系统响应于创建包括对象的第二集合的第二实体而生成表示对象的该第二集合在该第二实体中的包含的第二概率性数据结构。该处理系统响应于删除该第二实体而针对对象的该第二集合中的每个对象应用该第一概率性数据结构以确定该对象是否有可能在对象的该第一集合中。
在另一个方面中,一种计算机实现的过程由在计算机上执行的计算机程序所实行,该计算机包括非易失性存储设备,存储在该非易失性存储设备上的多个对象,以及存储在该非易失性存储设备上的多个实体,其中实体包括所存储的多个对象中的一个或多个对象,其中第一实体和第二实体可以共享对象。响应于创建包括对象的第一集合的第一实体而生成表示对象的该第一集合在该第一实体中的包含的第一概率性数据结构。响应于创建包括对象的第二集合的第二实体而生成表示对象的该第二集合在该第二实体中的包含的第二概率性数据结构。响应于删除该第二实体而针对对象的该第二集合中的每个对象应用该第一概率性数据结构以确定该对象是否有可能在对象的该第一集合中。
在另一个方面中,一种计算机包括非易失性存储设备,该非易失性存储设备存储对象以及作为对象的集合的实体,其中实体能够共享对象。该计算机包括:用于基于在实体中所包括的对象来创建针对该实体的概率性数据结构的装置,针对该实体的概率性数据结构响应于对对象的指示而提供该对象被包括在该实体中的可能性;以及用于响应于对实体的删除而使用其他实体的概率性数据结构来确定包括在该实体中的对象是否能够被删除的装置。
在前述方面的任何一个中,该概率性数据结构可以是Bloom过滤器。
在前述方面的任何一个中,对象和实体取决于存储系统可以是不同的形式的数据。例如,第一实体和第二实体可以是文件系统中的文件。作为另一个示例,多个对象可以是文件系统中的文件的数据块。作为另一个示例,第一实体和第二实体可以是由将对象存储在文件系统的文件中的存储管理系统所保存的实体。
在前述方面的任何一个中,该处理系统可以还被配置为响应于对该对象不被包括在另一个实体中的确定而删除该对象。
在前述方面的任何一个中,当用对象的标识符进行查询时,针对实体的概率性数据结构输出所述对象是在所述实体中包括的一组对象中的成员的可能性,而不允许假阴性结果。
在另一个方面,一种制品包括至少一个计算机存储设备,以及存储在该至少一个计算机存储设备上的计算机程序指令。所述计算机程序指令当由计算机的处理系统执行时,将该计算机配置为如前述方面中的任何一个所阐述的那样和/或执行如前述方面中的任何一个所阐述的过程,所述处理系统包括处理单元和存储设备。
前述方面中的任何一个可以被实施为计算机系统,如这样的计算机系统的任何个体组件,如这样的计算机系统或这样的计算机系统的任何个体组件所执行的过程,或者包括计算机存储的制品,其中,计算机程序指令被存储在该计算机存储中并且当由一个或多个计算机处理时配置所述一个或多个计算机提供这样的计算机系统或者这样的计算机系统的任何个体组件。
应当理解的是,在所附权利要求中所限定的主题不一定限于在上文中所描述的具体实现。以上描述的具体实现仅是作为示例被公开的。

Claims (15)

1.一种计算机,包括:
非易失性存储设备;
存储在所述非易失性存储设备上的多个对象;
存储在所述非易失性存储设备上的多个实体,实体包括所存储的多个对象中的一个或多个对象,其中第一实体和第二实体能够共享对象;
包括处理单元和存储器的处理系统,所述处理系统被配置为:
响应于在所述非易失性存储中创建第一实体并且包括所述对象的第一集合,生成在所述存储器中并且表示所述对象的所述第一集合在所述第一实体中的包含的第一概率性数据结构;
响应于在所述非易失性存储中创建第二实体并且包括所述对象的第二集合,生成在所述存储器中并且表示所述对象的所述第二集合在所述第二实体中的包含的第二概率性数据结构;
响应于从所述非易失性存储中删除所述第二实体,针对所述对象的所述第二集合中的每个对象,应用所述第一概率性数据结构以确定所述对象是否有可能在所述对象的所述第一集合中。
2.根据权利要求1所述的计算机,其中,所述第一概率性数据结构包括Bloom过滤器的阵列。
3.根据先前权利要求中的任一项所述的计算机,其中,所述第一实体和所述第二实体是文件系统中的文件。
4.根据先前权利要求中的任一项所述的计算机,其中,所述多个对象包括所述文件系统中的文件的数据块。
5.根据先前权利要求中的任一项所述的计算机,其中,所述第一实体和所述第二实体是由将对象存储在文件系统的文件中的存储管理系统所保存的实体。
6.根据先前权利要求中的任一项所述的计算机,其中,所述处理系统还被配置为响应于对所述对象不被包括在另一个实体中的确定而删除所述对象。
7.根据先前权利要求中的任一项所述的计算机,其中,当用对象的标识符进行查询时,针对实体的概率性数据结构输出所述对象是在所述实体中包括的一组对象中的成员的可能性,而不允许假阴性结果。
8.一种由在计算机上执行的计算机程序所实行的计算机实现的过程,所述计算机包括处理系统和非易失性存储设备、存储在所述非易失性存储设备上的多个对象、以及存储在所述非易失性存储设备上的多个实体,所述处理系统包括处理单元和存储器,其中,实体包括所存储的多个对象中的一个或多个对象,其中第一实体和第二实体能够共享对象,所述计算机实现的过程包括:
响应于在所述非易失性存储中创建第一实体并且包括所述对象的第一集合,生成在所述存储器中并且表示所述对象的所述第一集合在所述第一实体中的包含的第一概率性数据结构;
响应于在所述非易失性存储中创建第二实体并且包括所述对象的第二集合,生成在所述存储器中并且表示所述对象的所述第二集合在所述第二实体中的包含的第二概率性数据结构;以及
响应于从所述非易失性存储中删除所述第二实体,针对所述对象的所述第二集合中的每个对象,应用所述第一概率性数据结构以确定所述对象是否有可能在所述对象的所述第一集合中。
9.根据权利要求8所述的计算机实现的过程,其中,所述第一概率性数据结构包括Bloom过滤器的阵列。
10.根据权利要求8或9中任一项所述的计算机实现的过程,其中,所述第一实体和所述第二实体是文件系统中的文件。
11.根据权利要求8至10中任一项所述的计算机实现的过程,其中,所述多个对象包括所述文件系统中的文件的数据块。
12.根据权利要求8至11中任一项所述的计算机实现的过程,其中,所述第一实体和所述第二实体是由将对象存储在文件系统的文件中的存储管理系统所保存的实体。
13.根据权利要求8至12中任一项所述的计算机实现的过程,其中,当用对象的标识符进行查询时,针对实体的概率性数据结构输出所述对象是在所述实体中包括的一组对象中的成员的可能性,而不允许假阴性结果。
14.根据权利要求8至13中任一项所述的计算机实现的过程,其中,当用对象的标识符进行查询时,针对实体的概率性数据结构输出所述对象是在所述实体中包括的一组对象中的成员的可能性,而不允许假阴性结果。
15.一种制品,其包括计算机存储设备和存储在所述计算机存储设备上的计算机程序指令,所述计算机程序指令当由计算机的处理系统处理时,配置所述计算机执行根据权利要求8至14中的任一项所述的过程,所述处理系统包括处理单元和存储器。
CN201780040132.9A 2016-06-29 2017-06-22 利用支持共享对象的计算机存储系统来恢复非易失性存储中的空闲空间 Active CN109416621B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/197,689 2016-06-29
US15/197,689 US10019456B2 (en) 2016-06-29 2016-06-29 Recovering free space in nonvolatile storage with a computer storage system supporting shared objects
PCT/US2017/038639 WO2018005211A1 (en) 2016-06-29 2017-06-22 Recovering free space in nonvolatile storage with a computer storage system supporting shared objects

Publications (2)

Publication Number Publication Date
CN109416621A true CN109416621A (zh) 2019-03-01
CN109416621B CN109416621B (zh) 2022-02-11

Family

ID=59295326

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780040132.9A Active CN109416621B (zh) 2016-06-29 2017-06-22 利用支持共享对象的计算机存储系统来恢复非易失性存储中的空闲空间

Country Status (4)

Country Link
US (1) US10019456B2 (zh)
EP (1) EP3479214B1 (zh)
CN (1) CN109416621B (zh)
WO (1) WO2018005211A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10901907B2 (en) * 2017-10-19 2021-01-26 Samsung Electronics Co., Ltd. System and method for identifying hot data and stream in a solid-state drive
US10768835B1 (en) * 2018-06-27 2020-09-08 Amazon Technologies, Inc. Opportunistic storage service
DE102019128253B4 (de) * 2019-10-18 2024-06-06 StreetScooter GmbH Verfahren zum Navigieren eines Flurförderzeugs
US11681740B2 (en) * 2021-03-31 2023-06-20 Microsoft Technology Licensing, Llc Probabilistic indices for accessing authoring streams

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140032841A1 (en) * 2002-05-24 2014-01-30 Oracle International Corporation System and method for object deletion in persistent memory using bitmap windows
CN104035884A (zh) * 2014-06-30 2014-09-10 河南百旺金赋电脑有限公司 一种双环形队列数据存储方法和智能网关
CN104115134A (zh) * 2012-02-16 2014-10-22 苹果公司 复合非易失性存储设备的数据迁移
US8898120B1 (en) * 2011-10-09 2014-11-25 Symantec Corporation Systems and methods for distributed data deduplication
US20150058552A1 (en) * 2013-08-22 2015-02-26 International Business Machines Corporation Log data store that stores data across a plurality of storage devices using non-disjoint layers
CN104503707A (zh) * 2014-12-24 2015-04-08 华为技术有限公司 读取数据的方法以及装置
CN104715001A (zh) * 2013-12-12 2015-06-17 国际商业机器公司 用于对数据处理系统的集群中的共享资源执行写入操作的方法和系统
CN104750432A (zh) * 2015-03-16 2015-07-01 华为技术有限公司 一种数据存储方法及装置
US9367397B1 (en) * 2011-12-20 2016-06-14 Emc Corporation Recovering data lost in data de-duplication system

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5813000A (en) 1994-02-15 1998-09-22 Sun Micro Systems B tree structure and method
US7424498B1 (en) 2003-06-30 2008-09-09 Data Domain, Inc. Probabilistic summary data structure based encoding for garbage collection
US7451168B1 (en) 2003-06-30 2008-11-11 Data Domain, Inc. Incremental garbage collection of data in a secondary storage
EP2350875A1 (en) 2008-09-19 2011-08-03 Oracle International Corporation Storage-side storage request management
US8452731B2 (en) 2008-09-25 2013-05-28 Quest Software, Inc. Remote backup and restore
US8290972B1 (en) 2009-04-29 2012-10-16 Netapp, Inc. System and method for storing and accessing data using a plurality of probabilistic data structures
US20110276744A1 (en) 2010-05-05 2011-11-10 Microsoft Corporation Flash memory cache including for use with persistent key-value store
US8706822B2 (en) 2010-06-23 2014-04-22 Microsoft Corporation Delivering messages from message sources to subscribing recipients
US9110936B2 (en) 2010-12-28 2015-08-18 Microsoft Technology Licensing, Llc Using index partitioning and reconciliation for data deduplication
US9667713B2 (en) 2011-03-21 2017-05-30 Apple Inc. Apparatus and method for managing peer-to-peer connections between different service providers
US8504533B2 (en) * 2011-12-20 2013-08-06 Matthew Dewey De-duplication reference tag reconciliation
US9075834B2 (en) 2012-01-26 2015-07-07 Upthere, Inc. Detecting deviation between replicas using bloom filters
US8965849B1 (en) 2012-08-06 2015-02-24 Amazon Technologies, Inc. Static sorted index replication
US9501483B2 (en) 2012-09-18 2016-11-22 Mapr Technologies, Inc. Table format for map reduce system
US20140244604A1 (en) 2013-02-28 2014-08-28 Microsoft Corporation Predicting data compressibility using data entropy estimation
US8935201B1 (en) 2014-03-18 2015-01-13 Palantir Technologies Inc. Determining and extracting changed data from a data source
US10210195B2 (en) * 2016-02-12 2019-02-19 International Business Machines Corporation Locating data in a set with a single index using multiple property values

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140032841A1 (en) * 2002-05-24 2014-01-30 Oracle International Corporation System and method for object deletion in persistent memory using bitmap windows
US8898120B1 (en) * 2011-10-09 2014-11-25 Symantec Corporation Systems and methods for distributed data deduplication
US9367397B1 (en) * 2011-12-20 2016-06-14 Emc Corporation Recovering data lost in data de-duplication system
CN104115134A (zh) * 2012-02-16 2014-10-22 苹果公司 复合非易失性存储设备的数据迁移
US20150058552A1 (en) * 2013-08-22 2015-02-26 International Business Machines Corporation Log data store that stores data across a plurality of storage devices using non-disjoint layers
CN104715001A (zh) * 2013-12-12 2015-06-17 国际商业机器公司 用于对数据处理系统的集群中的共享资源执行写入操作的方法和系统
CN104035884A (zh) * 2014-06-30 2014-09-10 河南百旺金赋电脑有限公司 一种双环形队列数据存储方法和智能网关
CN104503707A (zh) * 2014-12-24 2015-04-08 华为技术有限公司 读取数据的方法以及装置
CN104750432A (zh) * 2015-03-16 2015-07-01 华为技术有限公司 一种数据存储方法及装置

Also Published As

Publication number Publication date
US10019456B2 (en) 2018-07-10
EP3479214A1 (en) 2019-05-08
WO2018005211A1 (en) 2018-01-04
US20180004769A1 (en) 2018-01-04
EP3479214B1 (en) 2021-09-01
CN109416621B (zh) 2022-02-11

Similar Documents

Publication Publication Date Title
AU2019275615B2 (en) Classifying user behavior as anomalous
US10419429B2 (en) Information providing method and device for sharing user information
CN106716375B (zh) 具有每区段校验和的文件系统
US9910847B2 (en) Language identification
US10348499B2 (en) Techniques for securing and controlling access to data
CN105493077B (zh) 利用占位符的文件管理
CN104823198B (zh) 计算装置的安全识别装置和安全识别方法
CN108292300B (zh) 用于管理对电子文档的协同编辑的自动保存的装置和方法
US10754519B2 (en) Graphical user interface facilitating uploading of electronic documents to shared storage
US9727575B2 (en) File system with data block sharing
CN109416621A (zh) 利用支持共享对象的计算机存储系统来恢复非易失性存储中的空闲空间
US10812568B2 (en) Graphical user interface facilitating uploading of electronic documents to shared storage
CN107454159A (zh) 选择用于云存储的图像或者视频文件
CN112703495A (zh) 利用实体链接和本体数据推断主题
US20170003829A1 (en) Graphical user interface facilitating sharing and collaborative editing of electronic documents
US20200142990A1 (en) Recording lineage in query optimization
WO2021118413A2 (en) Data processing method, comprising secure multilateral computing and data analysis methods
CN108415974A (zh) 留言方法、留言信息获取方法、终端设备及云端系统
US20160357822A1 (en) Using locations to define moments
US20150006578A1 (en) Dynamic search system
Milazzo et al. Modular middleware for gestural data and devices management
WO2021100109A1 (ja) イベント予測方法、イベント予測装置及びプログラム
US20160224258A1 (en) Generating computer programs for use with computers having processors with dedicated memory
CN107436918B (zh) 数据库实现方法、装置和设备
CN108536343A (zh) 控件展示方法、装置、终端及存储介质

Legal Events

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