CN113342264A - 重复数据删除管理的方法、主装置以及储存伺服器 - Google Patents

重复数据删除管理的方法、主装置以及储存伺服器 Download PDF

Info

Publication number
CN113342264A
CN113342264A CN202110230924.0A CN202110230924A CN113342264A CN 113342264 A CN113342264 A CN 113342264A CN 202110230924 A CN202110230924 A CN 202110230924A CN 113342264 A CN113342264 A CN 113342264A
Authority
CN
China
Prior art keywords
fingerprint
commands
storage
manager
deduplication
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
Application number
CN202110230924.0A
Other languages
English (en)
Inventor
王文珑
邱煜腾
林义峰
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.)
Silicon Motion Inc
Silicon Motion Technology Corp
Original Assignee
Silicon Motion Inc
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 Silicon Motion Inc filed Critical Silicon Motion Inc
Publication of CN113342264A publication Critical patent/CN113342264A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • 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
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

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

Abstract

本发明揭示了一种借助命令相关过滤器来进行重复数据删除管理的方法、主装置以及储存伺服器,该方法可包含:利用在储存伺服器中运行在主装置上的多个程序模块中的至少一程序模块,以控制储存伺服器来将使用者的多组使用者数据写入至储存装置层,以及利用在多个程序模块中的基于指纹的重复数据删除管理模块,以创造多个指纹,并且将该多个指纹储存至指纹储存器,以作为多组使用者数据的各自代表,以最小化有关重复数据删除控制的计算量;以及利用命令相关过滤器来消除非必要命令,以执行单一命令而非该组命令中的全部命令。

Description

重复数据删除管理的方法、主装置以及储存伺服器
技术领域
本发明有关于储存控制,尤指一种借助命令相关过滤器来进行重复数据删除管理的方法和设备,其中该设备的范例可包含但不限于:整个储存伺服器、在储存伺服器中的主装置、在主装置中的处理电路以及在处理电路中运行对应至该方法的一个或多个程序模块的至少一个处理器/处理器核心(例如:中央处理器(Central Processing Unit,CPU)/中央处理器核心)。
背景技术
伺服器可用来储存使用者数据,例如,储存伺服器可用来进行能够为使用者储存数据的远端储存(例如云端伺服器),随着储存伺服器的使用者数量可能增加,以及使用者的数据可能随着时间增加,储存伺服器的储存容量可能容易变得不足,在储存伺服器中加入更多储存装置可能有助于扩展储存伺服器的储存容量,然而,可能会发生一些问题,例如,储存伺服器的整体花费可能会急遽增加,又例如,由于储存伺服器的架构,在储存伺服器中的储存装置的数量可能会有上限,在现有技术中已经提出了一种重复数据删除方法,以尝试降低用完储存伺服器的储存容量的速度,但是储存服务器的整体性能可能会因为相关的计算量而降低,因此,需要一种新颖的架构来增强储存控制,以允许储存伺服器在日常使用中正常且平稳地运行。
发明内容
本发明之一目的在于揭露一种借助命令相关过滤器来进行重复数据删除管理的方法,以及揭露相关设备(例如:储存伺服器、储存伺服器中的主装置等等),以解决上述问题。
本发明之另一目的在于揭露一种借助命令相关过滤器来进行重复数据删除管理的方法,以及揭露相关设备(例如:储存伺服器、储存伺服器中的主装置等等),以在不引入副作用的情况下或藉由不太可能引入副作用的方式来达到最佳性能。
本发明之至少一实施例揭露了一种借助命令相关过滤器来进行重复数据删除管理的方法,其中该方法是应用于储存伺服器,该方法可包含有:利用
在储存伺服器内的主装置上运行的多个程序模块中的至少一个程序模块,以控制储存伺服器将储存伺服器的使用者的多组使用者数据写入至储存伺服器的储存装置层,并且利用在多个程序模块中的基于指纹的重复数据删除管理模块来创造多个指纹,并将该多个指纹储存至储存伺服器的指纹储存器,以作为储存伺服器的多个使用者数据的各自代表,用来最小化有关重复数据删除控制的计算量,以增加储存伺服器的整体效能,其中储存伺服器包含有主装置以及储存装置层,储存装置层包含有耦接于主装置的至少一个储存装置,主装置用来控制储存伺服器的操作,且该至少一个储存装置用来为储存伺服器储存资讯;以及利用基于指纹的重复数据删除管理模块中的命令相关过滤器,以监控在基于指纹的重复数据删除管理模块中多个处理路径之中的一处理路径上的多个命令,至少根据一组命令所分别携带的地址,决定在多个命令中的有关使用者数据变化的该组命令,并且将该组命令转换成单一命令以消除该组命令中的一个或多个非必要的命令,用来执行该单一命令而非执行该组命令中的所有命令,因此更进一步地增加储存伺服器的整体效能。
除了上述方法外,本发明另揭露了一种主装置,该主装置可包含有处理电路,其用来控制主装置以在储存伺服器中进行基于指纹的重复数据删除管理,其中储存伺服器包含有主装置以及储存装置层,储存装置层包含有耦接于主装置的至少一个储存装置,主装置用来控制储存伺服器的操作,且该至少一个储存装置用来为储存伺服器储存资讯,例如,在储存伺服器中的主装置上运行的多个程序模块中的至少一个程序模块控制储存伺服器,以将储存伺服器的使用者的多组使用者数据写入至储存伺服器的储存装置层,且在多个程序模块中的基于指纹的重复数据删除管理模块创造多个指纹,并将该多个指纹储存至储存伺服器的指纹储存器,以作为储存伺服器上多组使用者数据的各自代表,用来最小化有关重复数据删除控制的计算量,以增加储存伺服器的整体性能;以及在基于指纹的重复数据删除管理模块中的命令相关过滤器监控在基于指纹的重复数据删除管理模块中多个处理路径之中的一处理路径上的多个命令,至少根据一组命令所分别携带的地址,决定在多个命令中的有关使用者数据变化的该组命令,并且将该组命令转换成单一命令以消除该组命令中的一个或多个非必要的命令,用来执行该单一命令而非执行该组命令中的所有命令,因此更进一步地增加储存伺服器的整体效能。
除了上述方法外,本发明另揭露了一种储存伺服器,该储存伺服器可包含有主装置以及储存装置层,其中主装置用来控制储存伺服器的操作,例如,主装置可包含有处理电路其用来控制主装置,以在储存伺服器中进行基于指纹的重复数据删除管理,此外,储存装置层可包含有耦接于主装置的至少一个储存装置,且该至少一个储存装置用来为储存伺服器储存资讯,例如,在储存伺服器中的主装置上运行的多个程序模块中的至少一个程序模块控制储存伺服器,以将储存伺服器的使用者的多组使用者数据写入至储存伺服器的储存装置层,且在多个程序模块中的基于指纹的重复数据删除管理模块创造多个指纹,并将该多个指纹储存至储存伺服器的指纹储存器,以作为储存伺服器上多组使用者数据的各自代表,用来最小化有关重复数据删除控制的计算量,以增加储存伺服器的整体性能;以及在基于指纹的重复数据删除管理模块中的命令相关过滤器监控在基于指纹的重复数据删除管理模块中多个处理路径之中的一处理路径上的多个命令,至少根据一组命令所分别携带的地址,决定在多个命令中的有关使用者数据变化的该组命令,并且将该组命令转换成单一命令以消除该组命令中的一个或多个非必要的命令,用来执行该单一命令而非执行该组命令中的所有命令,因此更进一步地增加储存伺服器的整体效能。
本发明方法和相关设备可以增加储存伺服器的整体效能,例如,储存伺服器可以根据该方法的多个控制方案进行操作,尤其,在运行对应该方法的一个或多个程序模块的处理电路的控制下,储存伺服器可以借助命令相关过滤器进行重复数据删除管理,以在不引入副作用的情况下或藉由不太可能引入副作用的方式来达到最佳性能。
附图说明
图1为根据本发明一实施例的储存伺服器的示意图。
图2为根据本发明一实施例的借助命令相关过滤器来进行重复数据删除管理的方法的示意图。
图3为根据本发明一实施例的图2所示方法的基于指纹的重复数据删除控制方案的示意图。
图4为根据本发明一实施例的图2所示方法的指纹查找控制方案的示意图。
图5为根据本发明一实施例的图2所示方法的指纹删除控制方案的示意图。
图6为根据本发明一实施例的图2所示方法的指纹汰除控制方案的示意图。
图7为根据本发明一实施例的图2所示方法的位元组式比较控制方案的示意图。
图8为根据本发明一实施例的图2所示方法的数据保存控制方案的示意图。
图9为根据本发明一实施例的图2所示方法的数据删除控制方案的示意图。
图10为根据本发明一实施例的图2所示方法的存取控制方案的示意图。
图11为根据本发明一实施例的图2所示方法的数据读取控制方案的示意图。
图12为根据本发明另一实施例的图2所示方法的数据读取控制方案的示意图,其中重复数据删除模块具有目标数据。
图13为根据本发明另一实施例的图2所示方法的数据读取控制方案的示意图,其中重复数据删除模块之前具有目标数据,但是由于汰除相对应的指纹,已经将该目标数据移除。
图14为根据本发明一实施例的图2所示方法的过滤与处理控制方案的示意图。
图15为根据本发明一实施例的图2所示方法的更新要求控制方案的示意图。
图16为在存储器内的表上找到指纹的情况下,图15所示的更新要求控制方案的相关处理的一些范例的示意图。
图17为在储存器内的表上找到指纹的情况下,图15所示的更新要求控制方案的相关处理的一些范例的示意图。
图18为在任一个表上都找不到指纹的情况下,图15所示的更新要求控制方案的相关处理的一些范例的示意图。
图19为根据本发明一实施例的从利用命令相关过滤器获取的增强的可扩展性的示意图。
【符号说明】
10:储存伺服器
50:主装置
52:处理电路
52P:程序模块
53:基于指纹的重复数据删除管理模块
54:储存接口电路
56:储存装置
58:网络接口电路
90:多个储存装置
S01,S02A~S08A,S02B~S04B:步骤
PP(1):第一部分处理
PP(2):第二部分处理
100:重复数据删除模块
110:重复数据删除模块应用程序接口
120:重复数据删除管理器
130:指纹引擎
131:过滤器
132:指纹管理器
132D:数据库
133:指纹产生器
134:指纹匹配器
134F:过滤器
135:指纹数据管理器
136:指纹储存器
137:指纹汰除模块
140:数据快取管理器
142:使用者数据匹配器
144:使用者数据管理器
146:使用者数据储存器
S11,S12,S13,S14A,S14B,S15A,S15B:步骤
S21~S24:步骤
S31~S34:步骤
S41~S43:步骤
S51~S58,S59A,S59B:步骤
200:写入缓冲器
300:容体管理器
400:持续存储器
500:快闪阵列
S61~S66:步骤
S71~S76:步骤
S81~S88,S89A,S89B:步骤
具体实施方式
图1为根据本发明一实施例的储存伺服器10的示意图,储存伺服器包含有主装置50,且包含有至少一个储存装置(例如一个或多个储存装置),例如多个储存装置90,多个储存装置90是耦接于主装置50,根据本实施例,主装置50可用来控制储存伺服器10的操作,且多个储存装置90可用来为储存伺服器10储存资讯,如图1所示,主装置50可包含有用来控制主装置50的操作的处理电路52(例如至少一个处理器/处理器核心以及相关电路,例如随机存取存储器(Random Access Memory,RAM)、总线等等)、用来将主装置50耦接至多个储存装置90以及耦接至储存装置或存储器装置(例如一个或多个硬碟(Hard Disk Drive,HDD)以及/或一个或多个固态硬碟(Solid State Drive,SSD))的至少一个储存接口电路54、以及用来将主装置50耦接至至少一个网络(network)的网络接口电路58。该储存装置或该存储器装置可包含有至少一个储存装置(例如一个或多个储存装置),其可以统称为储存装置56,例如,储存装置56可包含有一组储存装置,该组储存装置中的一储存装置可作为主装置50的系统磁碟,且该组储存装置中的其他储存装置可用来为主装置50储存使用者数据,但是本发明不限于此,又例如,储存装置56可包含一储存装置,且该储存装置可作为主装置50的系统磁碟。为了更好地理解,运行在处理电路52上的多个程序模块52P可包含有一层或多层的软件模块(例如作业系统(operating system,OS)、驱动程序(driver)、应用程序等等),但是本发明不限于此。
根据本实施例,运行多个程序模块52P的处理电路52(尤指基于指纹的重复数据删除管理模块53)可用来控制主装置50的操作,例如,控制主装置50以在储存伺服器10中进行基于指纹的重复数据删除管理,且储存接口电路54可符合一个或多个标准(例如串行先进技术附件(Serial Advanced Technology Attachment,Serial ATA或SATA)标准、外部组件互连(Peripheral Component Interconnect,PCI)标准、快速外部组件互连(PeripheralComponent Interconnect Express,PCIe)标准、非挥发性存储器储存装置(Non-VolatileMemory Express,NVMe)标准、非挥发性存储器储存装置外接存取(NVMe-over-Fabrics,NVMeoF)标准、小型电脑系统接口(Small Computer System Interface,SCSI)标准、通用快闪存储器储存(Universal Flash Storage,UFS)标准等各种标准中的一个或多个标准),且可根据一个或多个标准来进行通讯,以允许运行多个程序模块52P的处理电路52藉由储存接口电路54存取储存装置56以及多个储存装置90,此外,网络接口电路58可用来提供有线或无线网络连接,且对应于一个或多个使用者的一个或多个客户端装置可藉由该有线或无线网络连接来存取(例如读取或写入)储存伺服器10(例如其中的储存装置56以及多个储存装置90)中的使用者数据。
在图1所示的架构中,储存伺服器10可被绘示为包含有主装置50以及耦接于主装置50的多个储存装置90,但是本发明不限于此,例如,主装置50可另包含有用来安装主装置50的元件(例如图1所示的处理电路52、储存接口电路54、网络接口电路58等等)的外壳/机壳(例如电脑机壳,其可以由金属及/或一种或多种其他材料所制成)以及多个储存装置90的至少一部份(例如部份或全部),又例如,储存伺服器10可另包含有耦接于主装置50以及多个储存装置90的至少一部分(例如部份或全部)之间的至少一个切换电路(switchcircuit)(例如一个或多个切换电路),用来进行主装置50以及多个储存装置90的至少一部分之间的信号切换(signal switching)。
根据某些实施例,运行多个程序模块52P的处理电路52或是储存接口电路54可以设定多个储存装置90的至少一部分(例如部分或全部),以形成储存池(storage pool)架构,其中该储存池架构的地址系统的相关地址(例如逻辑区块地址(logical blockaddress,LBA))可以是储存池地址(例如储存池逻辑区块地址(storage pool LBA,SLBA)),但本发明不限于此。根据某些实施例,运行多个程序模块52P的处理电路52或是储存接口电路54可以设定多个储存装置90的至少一部分(例如部分或全部),以形成储存伺服器10的容错式磁碟阵列(Redundant Array of Independent Disks,RAID)(例如全快闪阵列(AllFlash Array,AFA))。
图2为根据本发明一实施例的借助命令相关过滤器来进行重复数据删除管理的方法的示意图,该方法可应用于储存伺服器10,且运行多个程序模块52P的处理电路52可根据该方法来控制储存伺服器10,例如,在对应该方法的运行多个程序模块52P的处理电路52(例如基于指纹的重复数据删除管理模块53)的控制下,储存伺服器10可进行平行处理(parallel porcessing),尤指以平行方式来执行第一部分处理PP(1)以及第二部分处理PP(2),其中第一部分处理PP(1)可包含步骤S02A~S07A的操作,以及第二部分处理PP(2)可包含有步骤S02B~S04B的操作,但是本发明不限于此。
在步骤S01中,储存伺服器10可进行初始化,例如,储存伺服器10(例如运行多个程序模块52P的处理电路52)可启用分别与该方法的多个控制方案相对应的各种控制机制,用来控制储存伺服器10以正确且有效地操作。
在步骤S02A中,因应一个或多个写入要求(request),储存伺服器10可利用储存伺服器10中运行在主装置50上的多个程序模块52P之中的至少一个程序模块,以控制储存伺服器10来将储存伺服器10的使用者(例如一个或多个使用者的任一者)的多组使用者数据写入至储存伺服器10的储存装置层(storage device layer),且利用多个程序模块52P中的基于指纹的重复数据删除管理模块53来创造多个指纹,并将该多个指纹(例如通过分别对多组使用者数据进行指纹计算而获得的计算结果)储存至储存伺服器10的指纹储存器,以作为储存伺服器10上多组使用者数据的各自代表,用来最小化有关重复数据删除控制的计算量,以增加储存伺服器10的整体性能,其中储存伺服器10包含有至少一个储存装置(例如多个储存装置90)。例如,该一个或多个写入要求可以从使用者的客户端装置传送,并且可以要求将该多组使用者数据写入至储存伺服器10。
在步骤S03A中,当接收到一存取要求时,储存伺服器10(例如运行多个程序模块52P的处理电路52)可以判断该存取要求是否为写入要求(为简便起见,标示为“写入”),如果是,进入步骤S04A;如果否,则进入S08A。例如,使用者的客户端装置可能已经向储存伺服器10传送存取要求,以要求存取储存伺服器10。
在步骤S04A中,因应该存取要求为写入要求,储存伺服器10可利用基于指纹的重复数据删除管理模块53来创造至少一指纹,并将该至少一指纹储存至指纹储存器,以作为至少一组使用者数据的至少一代表,例如,写入要求可以从使用者的客户端装置传送,并且可以要求将该至少一组使用者数据写入至储存伺服器10。
在步骤S05A中,储存伺服器10(例如运行多个程序模块52P的处理电路52)可判断该至少一组使用者数据(例如写入要求所携带的数据,举例来说,待写入数据)是否与储存在储存伺服器10的储存装置层中的任一现有数据相同,如果是,进入步骤S06A;如果否,则进入步骤S07A。基于指纹的重复数据删除管理模块53可以至少根据该指纹(例如该至少一组使用者数据的该至少一个指纹)是否与指纹储存器中的所有多个现有指纹中的任一现有指纹相匹配,来判断该组使用者数据是否与任一现有数据相同。
例如,在多个现有指纹中的每个指纹的位元数足够的情况下,基于指纹的重复数据删除管理模块53可根据该指纹是否与任一现有指纹相匹配,来判断该组使用者数据是否与任一现有数据相同,其中如果该指纹与任一现有指纹相匹配,基于指纹的重复数据删除管理模块53判断该组使用者数据与任一现有数据相同,否则,基于指纹的重复数据删除管理模块53判断该组使用者数据与储存装置层中的任一现有数据不相同,但是本发明不限于此。此外,在多个现有指纹中的每个指纹的位元数不足够的情况下,基于指纹的重复数据删除管理模块53可以更进一步地在有需要时进行位元组式比较(byte-by-byte-compare,BBBC)操作,例如,当该指纹与任一现有指纹相匹配时,也就是说该组使用者数据有可能在储存装置层被找到,基于指纹的重复数据删除管理模块53可更进一步地进行位元组式比较操作以判断该组使用者数据与任一现有数据相同是否为真,其中如果位元组式比较操作的位元组式比较结果指示该组使用者数据在储存装置层被找到,基于指纹的重复数据删除管理模块53判断该组使用者数据与任一现有数据相同为真,否则,基于指纹的重复数据删除管理模块53判断该组使用者数据与任一现有数据相同为假。又例如,当该指纹与多个现有指纹的任一个现有指纹不匹配时,也就是说该组使用者数据不可能在储存装置层被找到,基于指纹的重复数据删除管理模块53可判断该组使用者数据与任一现有数据相同为假(False)。
在步骤S06A中,因应上述至少一组使用者数据与任一现有数据相同,储存伺服器10可进行重复数据删除,例如,运行于处理电路52上的多个程序模块52P中的容体管理(volume manager,VM)模块可创造该组使用者数据的连结资讯(linking information)(例如指向现有数据的软连结(soft link)以及硬连结(hard link)),并将该连结资讯储存至储存伺服器10的储存装置层,而非将与现有数据相同的该组使用者数据储存至储存装置层,因此,将来接收到该组使用者数据的读取要求(例如读取该组使用者数据的要求)时,储存伺服器10(例如容体管理模块)可根据该组使用者数据的该连结资讯,来从储存装置层获取现有数据,并且回传作为该组使用者数据的现有数据。
在步骤S07A中,因应上述至少一组使用者数据与任一现有数据不相同,储存伺服器10(例如容体管理模块)可将上述至少一组使用者数据写入至储存装置层。
在步骤S08A中,因应该存取要求不是写入要求,储存伺服器10可进行其他处理,例如,当该存取要求是读取要求时,储存伺服器10可因应该读取要求来读取数据。
在步骤S02B中,储存伺服器10可利用基于指纹的重复数据删除管理模块53中的命令相关过滤器,以监控在基于指纹的重复数据删除管理模块53中多个处理路径之中的一处理路径上的多个命令。
在步骤S03B中,基于至少一个预定规则(例如一个或多个预定规则),储存伺服器10可至少根据一组命令所分别携带的地址来使用命令相关过滤器,以在该多个命令中决定出有关使用者数据变化(user-data change)的该组命令,其中该组命令的命令数可大于或等于二。例如,这些地址中的任一地址(例如该组命令的其中一个命令所携带的地址)可以是从使用者的客户端装置发送至储存伺服器10的一逻辑区块地址,因此可被视为一使用者输入逻辑区块地址。为了更好地理解,该至少一个预定规则可包含有:当该组命令所分别携带的地址是相同的地址且该组命令的第一个命令是要求在该相同的地址先删除相对应的一组使用者数据,该组命令中的一个或多个其余命令全部都是非必要,其中当该组命令的命令数等于二时,仅会有一个其余命令(例如该组命令包含有第一个命令以及仅有一个其余命令),否则,当该组命令的命令数大于二时,会有多个其余命令(例如该组命令包含有第一个命令以及多个其余命令);但是本发明不限于此。
在步骤S04B中,储存伺服器10可利用命令相关过滤器来将该组命令转换成单一命令,以消除该组命令中的一个或多个非必要的命令,藉此执行该单一命令,而非执行该组命令中的所有命令,因此更进一步地增加储存伺服器10的整体性能,例如,当该组命令所分别携带的地址是相同的地址且该组命令的第一个命令要求在该相同的地址先删除相对应的该组使用者数据,该组命令中的一个或多个其余命令全部都是非必要,在此情况下,单一命令以及一个或多个非必要的命令可以分别代表第一个命令以及一个或多个其余命令。
为了更好地理解,该方法可以用图2所示的工作流程来说明,但是本发明不限于此,根据某些实施例,一个或多个步骤可于图2所示工作流程中增加、删除或修改。
图3为根据本发明一实施例的图2所示方法的基于指纹(fingerprint,FP)的重复数据删除控制方案的示意图,如图3所示,储存伺服器10可包含有重复数据删除模块100,且重复数据删除模块100可包含有一些软件(software,SW)元件以及一些硬件(hardware,HW)元件,硬件元件可藉由存储器(例如随机存取存储器(RAM)/非挥发性存储器(NVM)等等)来实作,为了更好地理解,图1所示的基于指纹的重复数据删除管理模块53可包含有多个子模块(例如图3所示的多个软件元件),其中在该些软件元件中的过滤器131可作为上述命令相关过滤器的范例,但是本发明不限于此,除了命令相关过滤器(例如过滤器131)外,基于指纹的重复数据删除管理模块53的多个子模块可另包含有重复数据删除模块应用程序接口(application programming interface,API)110、重复数据删除管理器120、指纹管理器132、指纹产生器133、指纹匹配器134、指纹数据管理器135、指纹汰除(fingerprintretirement)模块137、使用者数据匹配器142以及使用者数据管理器144。指纹匹配器134可包含有专用过滤器(例如过滤器134F),该专用过滤器是指纹匹配器134的内部过滤器,并且可以藉由布隆过滤器(Bloom filter)来实作。如图3所示,过滤器131可在指纹管理器132的外部,但是本发明不限于此,例如,过滤器131可被整合至指纹管理器132内。
重复数据删除模块100可包含有指纹引擎130以及数据快取管理器140,指纹引擎130以及数据快取管理器140中的每一者可以藉由软件元件与硬件元件来实作。指纹引擎130包含有一组软件元件(例如指纹管理器132、指纹产生器133、指纹匹配器134、指纹数据管理器135以及指纹汰除模块137)且另包含有至少一个硬件元件(例如指纹储存器136,其可作为在步骤S02A提到的指纹储存器的范例)。数据快取管理器140包含有一组软件元件(例如使用者数据匹配器142以及使用者数据管理器144),且另包含有至少一个硬件元件(例如使用者数据储存器146)。指纹储存器136以及使用者数据储存器146中的每一者可以在基于指纹的重复数据删除管理模块53的控制下,透过储存相关硬件元件的储存区域来实作,例如,储存相关硬件元件可包含有随机存取存储器、非挥发性存储器、硬碟以及固态硬碟中的任一者。此外,重复数据删除模块100可根据指纹管理器132所管理的数据库(database,DB)132D中的多个表(table)来操作,该多个表可包含有一组或多组键值(Key-Value,KV)表,且在一组或多组键值表中的每组键值表可包含有表#1、表#2等等,例如表#1可以是指纹表,其中该指纹表的键(Key)以及值(Value)可分别代表指纹以及逻辑区块地址(例如使用者输入逻辑区块地址);表#2可以是指纹反向(fingerprint reverse)表,其中该指纹反向表的键以及值可分别代表逻辑区块地址(例如使用者输入逻辑区块地址)以及指纹;表#3可以是指纹数据表,其中该指纹数据表的键以及值可分别代表指纹以及随机存取存储器/非挥发性存储器位置(例如随机存取存储器/非挥发性存储器位置的存储器地址);以及表#4可以是使用者数据表,其中该使用者数据表的键以及值可分别代表逻辑区块地址(例如使用者输入逻辑区块地址)以及随机存取存储器/非挥发性存储器位置(例如随机存取存储器/非挥发性存储器位置的存储器地址)。
重复数据删除模块应用程序接口110可以与多个程序模块52P中且位于基于指纹的重复数据删除管理模块53外部的一个或多个其他程序模块(例如容体管理(volumemanager,VM)模块)进行互动,以接收在步骤S02B所述的多个命令的至少一部分(部分或全部)。例如,在该多个命令包含有重复数据删除模块100的一个或多个内部命令的情况下,上述多个命令的至少一部分可以代表该多个命令的一部分;又例如,在该多个命令包含有重复数据删除模块100的外部命令而非重复数据删除模块100的任一个内部命令的情况下,上述多个命令的至少一部分可以代表该多个命令的全部命令。此外,重复数据删除管理器120可以藉由控制重复数据删除模块100的相关操作来进行重复数据删除管理,例如,触发(trigger)指纹引擎130以进行指纹比较并选择性地触发数据快取管理器140以进行位元组式比较操作,以产生比较结果(例如指示该组使用者数据是否与任一个现有数据相同的比较结果)来作为步骤S05A的判断结果,以允许储存伺服器10(例如容体管理模块)判断是否要进行重复数据删除。重复数据删除模块100(例如重复数据删除管理器120,其透过重复数据删除模块应用程序接口110)可以将比较结果回传至容体管理模块,当比较结果指示该组使用者数据与任一个现有数据相同时,容体管理模块可以进行步骤S06A所述的重复数据删除,以节省储存装置层的储存容量;否则,容体管理模块可以如步骤S07A所述而将上述至少一组使用者数据写入至储存装置层。
指纹管理器132可以为重复数据删除管理器120进行指纹管理,例如,因应单一命令而非该组命令中的全部命令来进行指纹管理,以控制指纹产生器133、指纹匹配器134以及指纹数据管理器135来相对应地操作。指纹产生器133可以在该多组使用者数据以及一组或多组后续使用者数据上进行指纹计算,以分别产生相对应的计算结果,例如该多个指纹以及一个或多个后续指纹,用来储存至指纹储存器136及/或进行指纹比较,此外,指纹匹配器134可以进行有关指纹匹配检测(例如检测某组使用者数据的指纹是否与现有指纹相匹配,以判断是否需要在此组使用者数据上进行重复数据删除)的指纹比较,以产生指纹比较结果,并且将该指纹比较结果传送至指纹管理器132,以回传至重复数据删除管理器120。此外,指纹汰除模块137可以管理指纹汰除,以在有需要时移除一个或多个指纹。针对硬件资源(例如硬件元件)的控制,指纹数据管理器135可以为指纹引擎130管理指纹储存器136,尤指在指纹储存器136上进行指纹数据管理,以在需要时写入、读取或删除指纹,以及使用者数据管理器144可以为数据快取管理器140管理使用者数据储存器146,尤指在使用者数据储存器146上进行使用者数据管理,以在需要时写入、读取或删除一组使用者数据。
基于图3所示架构,重复数据删除管理器120可以将上述多个命令的至少一部分传送至命令相关过滤器(例如过滤器131),且命令相关过滤器(例如过滤器131)可以监控该多个命令,例如,收集(例如加入伫列)并过滤该多个命令,以决定该组命令并将该组命令转换成单一命令,以供指纹管理器132处理。此外,重复数据删除管理器120可以利用指纹引擎130来进行步骤S05A的操作的至少一部分(例如部分或全部),以及,根据使用者设定及/或预设(default)设定,选择性地利用数据快取管理器140以进行步骤S05A的操作的一部分。当有需要时,数据快取管理器140可以用来快取(cache)该多组使用者数据的至少一部分(例如部分或全部),并且快取该一组或多组后续使用者数据在使用者数据储存器146中,以进行位元组式比较操作。
为了更好地理解,假设在使用者数据储存器146中的快取使用者数据(例如该多组使用者数据的至少一部分,以及该一组或多组后续使用者数据)可以以4千位元组(kilobyte,KB)为单位而被快取,且指纹储存器136中该多个现有指纹的指纹数据可以以X位元组(byte,B)为单位储存,其代表该多个现有指纹中的每一现有指纹的位元数是等于8X(例如8*X),例如,在该多个现有指纹的每一现有指纹的位元数8X是足够的情况下(例如X=26,其代表8X=(8*26)=208),重复数据删除模块100可以利用指纹引擎130来根据指纹是否与任一个现有指纹相匹配,以判断该组使用者数据是否与任一个现有数据相同,而无需利用数据快取管理器140来进行位元组式比较操作(例如双重确认该判断的正确性),此外,在该多个现有指纹的每个现有指纹的位元数8X是不足够的情况下(例如X=16,其代表8X=(8*16)=128),重复数据删除模块100可以选择性地利用数据快取管理器140来进行位元组式比较操作,以双重确认该判断的正确性。
例如,当从指纹引擎130(例如,指纹管理器132)回传的指纹比较结果指示该指纹与任一个现有指纹相匹配时,也就是说,该组使用者数据有可能在储存装置层被找到,则重复数据删除模块100(例如重复数据删除管理器120)可以触发数据快取管理器140来进行位元组式比较操作,以判断该组使用者数据与任一个现有数据相同是否为真(True)。数据快取管理器140(例如使用者数据匹配器142)可以进行位元组式比较操作以产生比较结果,其中该比较结果可指示该组使用者数据是否在储存装置层被找到,如果位元组式比较操作的比较结果指示该组数据是在储存装置层被找到,数据快取管理器140(例如使用者数据匹配器142)可以判断该组使用者数据与任一个现有数据相同为真,否则,数据快取管理器140(例如使用者数据匹配器142)可以判断该组使用者数据与任一个现有数据相同为假。又例如,当从指纹引擎130(例如,指纹管理器132)回传的指纹比较结果指示该指纹与任一个现有指纹不匹配时,也就是说,该组使用者数据不可能在储存装置层被找到,重复数据删除模块100(例如重复数据删除管理器120)可以判断该组使用者数据与任一个现有数据相同为假,而无需触发数据快取管理器140(例如使用者数据匹配器142)来进行位元组式比较操作。
根据某些实施例,处理电路52可包含有至少一个处理器/处理器核心以及相关电路(例如随机存取存储器、非挥发性存储器等等),但是本发明不限于此,在某些实施例中,非挥发性存储器可以被实作为主装置50中的可拆卸(detachable)非挥发性存储器模块且耦接于处理电路52。
关于重复数据删除模块100的一些实施细节可以描述如下,根据某些实施例,指纹产生器133可以产生区块数据(例如4千位元组的数据)的指纹,并且可被指纹管理器132通过指纹计算函数cal_fingerprint()来呼叫,如下:cal_fingerprint(char*data,int32_tdata_len,callback function,callback arg);
其中上述函数中的“char*data”指向区块数据的内容,“int32_t data_len”代表区块数据的数据长度(例如4K),以及“callback function”和“callback arg”代表回乎函数(callback function)和一个或多个回呼参数(callback argument),此外,在指纹匹配器134中的过滤器134F可以透过布隆过滤器来实作,配备有过滤器134F(例如布隆过滤器)的指纹匹配器134可以在存储器中(例如随机存取存储器/非挥发性存储器)维护某种索引,并提供应用程序接口以供指纹管理器132来查询,如果未命中(miss),指纹匹配器134可以回传未命中;如果命中(hit),则指纹匹配器134可以回传匹配的指纹以及该匹配的指纹的逻辑区块地址。此外,指纹数据管理器135可以管理指纹储存器136的存储器或磁碟空间,用来储存多个指纹以及一个或多个后续指纹,并且在需要时移除一个或多个指纹。指纹数据管理器135可以提供应用程序接口给指纹管理器132,以对指纹进行存取(例如写入、读取、清理(trim)等等)。针对指纹汰除管理,指纹汰除模块137可以提供一种机制以将指纹管理器136中所有指纹之中的最老(oldest)或最冷(coldest)的指纹踢除(例如移除或删除)。此外,指纹管理器132可以管理以及控制指纹产生器133、指纹匹配器134、指纹数据管理器135以及指纹汰除模块137,以提供指纹查询服务,指纹管理器132可以决定应该保留哪个逻辑区块地址的指纹,且指纹管理器132可以维护多个表(例如表#1、表#2等等),其中指纹管理器132的应用程序接口可包含有指纹查询、指纹删除、指纹更新等等。
针对表#1(例如指纹表),指纹管理器132可以根据携带有逻辑区块地址LBAx(例如LBA(x))的一命令来将键值集(例如{键:指纹,值:使用者输入逻辑区块地址LBAx})储存至该表中,当指纹匹配时,指纹管理器132可以从该表中获取另一个逻辑区块地址LBAy(例如LBA(y)),例如,藉由判断哪个逻辑区块地址LBAy具有与逻辑区块地址LBAx相同的指纹。基于逻辑区块地址LBAy,指纹管理器132可以从区域池(local pool)读取数据,并且利用该命令所携带的输入4千位元组数据(例如区块数据,例如4千位元组数据)来做(例如进行)位元组式比较,请注意,在多个现有指纹中的每一个指纹的位元数8X不足够的情况下(例如X=16,也就是说8X=(8*16)=128),一个指纹可以由具有不同4千位元组数据的不同逻辑区块地址所共享,而一设计选项可以被选择以决定共享一个指纹的逻辑区块地址的数量,尤指一个或多个逻辑区块地址是否共享一个指纹。另外,假若在多个现有指纹中的每一个现有指纹的位元数8X足够的情况下(例如X=26,也就是说8X=(8*26)=208),指纹管理器132可以建立逻辑区块地址与指纹之间的一对一映射关系。针对表#2(例如指纹反向表),指纹管理器132可以将键值集(例如{键:逻辑区块地址,值:指纹})储存至该表,以移除并更新指纹。针对表#3(例如指纹数据表),指纹管理器132可以将键值集(例如{键:指纹,值:存储器位置或磁碟位置})储存至该表,用以指示储存新指纹的存储器位置(例如随机存取存储器/非挥发性存储器位置)或磁碟位置,或者用以查询或删除现有指纹。针对表#4(例如使用者数据表),指纹管理器132可以将键值集(例如{键:逻辑区块地址,值:存储器位置或磁碟位置})储存至该表,用以指示储存一组新使用者数据的存储器位置(例如随机存取存储器/非挥发性存储器位置)或磁碟位置,或者用以查询或删除一组现有使用者数据。
图4为根据本发明一实施例的图2所示方法的指纹查找控制方案的示意图。
在步骤S11中,指纹管理器132可以进行指纹查找,例如,藉由呼叫如下的指纹查找函数fp_lookup():
fp_lookup(4KB data,LBA);
其中该函数中的“4KB data”以及“LBA”可分别代表一组使用者数据(例如区块数据)以及一命令所携带的相关逻辑区块地址。
在步骤S12中,指纹产生器133可以根据4千位元组数据来计算指纹。
在步骤S13中,指纹匹配器134可以在指纹储存器136中尝试寻找匹配的指纹,尤指判断在指纹储存器136所有现有指纹中的任一个现有指纹是否与4千位元组数据的指纹相匹配(例如在步骤S12中指纹产生器133所产生的指纹),如果是,为匹配成功案例(例如案例B(1));如果否,则为匹配失败案例(例如案例A(1))。
为了更好地理解,指纹管理器132可以利用数据库132D(例如表#1、表#2等等)来将所有现有指纹中至少一部分的指纹快取(例如暂时地储存)至指纹储存器136,以加速步骤S13的操作,指纹管理器132可以快取该部分的指纹以及该组相对应使用者数据(该部分的指纹所代表的该组使用者数据)的各自逻辑区块地址,以分别作为表#1中多个键值集的键以及值,并且快取该组相对应使用者数据的各自逻辑区块地址以及该部分的指纹,以分别作为表#2中多个相对应键值集的键以及值,并且可以更进一步地储存该部分的指纹以及该部分的指纹的存储器/磁碟位置(例如指纹储存器136中的存储器/磁碟位置),以分别作为表#3中多个相对应键值集的键以及值,以维护数据库132D,但是本发明不限于此。
在步骤S14A中,在匹配失败案例(例如案例A(1))中,指纹管理器132决定是否在数据库132D中保留此一指纹(例如步骤S12提到的指纹),例如,根据最近最少使用(leastrecently used,LRU)方法,以节省数据库132D的储存容量。如果是(例如当该指纹属于热指纹时,需要保留该指纹),指纹管理器132可以控制指纹数据管理器135来保存该指纹,并且通知数据快取管理器140(例如使用者数据管理器144)来保存4位元组数据;如果否(例如当该指纹属于冷指纹时,不需要保留该指纹),指纹管理器132可以向重复数据删除管理器120回复“不匹配”,以指示找不到匹配的指纹,进而允许重复数据删除管理器120通过重复数据删除模块应用程序接口110将对应于“不匹配”的比较结果回传至容体管理模块,其中对应于“不匹配”的比较结果可以指示上述至少一组使用者数据与任一个现有数据都不相同。
在步骤S14B中,在匹配成功案例(例如案例B(1))中,指纹管理器132可以将匹配的逻辑区块地址(例如任一个现有数据的逻辑区块地址)回传至重复数据删除管理器120,以允许重复数据删除管理器120通过重复数据删除模块应用程序接口110将对应于匹配的逻辑区块地址的比较结果回传至容体管理模块,其中对应于匹配的逻辑区块地址的比较结果可以指示上述至少一组使用者数据与任一个现有数据相同。
在步骤S15A中,指纹管理器132可以在需要时添加或更新至少一个表(例如表#1),例如,当判断需要保留指纹时,指纹数据管理器135可以将此一指纹(例如在步骤S12中提到的指纹)储存至指纹储存器136,并且将指纹储存器136中的存储器/磁碟位置回传至指纹管理器132,以将此一指纹(例如在步骤S12中提到的指纹)添加至数据库132D,并相对应地更新至少一个相关表(例如表#3)。
在步骤S15B中,指纹数据管理器135可以在需要时通过指纹管理器132添加或更新至少一个相关表(例如表#3),例如,当判断需要保留指纹时,指纹数据管理器135可以将此一指纹(例如在步骤S12中提到的指纹)储存至指纹储存器136,并且将指纹储存器136中的存储器/磁碟位置回传至指纹管理器132,以将此一指纹(例如在步骤S12中提到的指纹)添加至数据库132D,并相对应地更新至少一个相关表(例如表#3)。
图5为根据本发明一实施例的图2所示方法的指纹删除控制方案的示意图。
在步骤S21中,指纹管理器132可以进行指纹删除,例如,藉由呼叫如下的指纹删除函数fp_delete():
fp_delete(LBA);
其中该函数中的“LBA”可以代表一命令所携带的相关逻辑区块地址。
在步骤S22中,指纹管理器132可以查询表#2并且删除在表#2中相对应于该逻辑区块地址的项目(entry),例如一键值集,其中该键值集的键是等于该逻辑区块地址。
在步骤S23中,指纹管理器132可以删除表#1中相对应的项目,例如一键值集,其中该键值集的值是等于该逻辑区块地址(例如该命令所携带的逻辑区块地址)。
在步骤S24中,指纹管理器132可以控制指纹数据管理器135,以自指纹储存器136移除相对应于该逻辑区块地址(例如该命令所携带的逻辑区块地址)的指纹,以及删除在表#3中相对应的项目(例如储存在该指纹的键值集以及该指纹的存储器/磁碟位置)。
图6为根据本发明一实施例的图2所示方法的指纹汰除控制方案的示意图。
在步骤S31中,指纹汰除模块137可以触发指纹汰除,尤指通知指纹管理器132来移除某指纹的数据(例如指纹数据),例如,藉由呼叫如下的指纹删除函数fp_delete():
fp_delete(LBA);
其中该函数中的“LBA”可以代表相对应于该指纹的相关逻辑区块地址。
在步骤S32中,指纹管理器132可以查询表#2并且删除在表#2中对应于此一逻辑区块地址(例如相对应于该指纹的逻辑区块地址)的项目,例如一键值集,其中该键值集的键是等于此一逻辑区块地址。
在步骤S33中,指纹管理器132可以删除表#1中相对应的项目,例如一键值集,其中该键值集的值是等于此一逻辑区块地址(例如相对应于该指纹的逻辑区块地址)。
在步骤S34中,指纹管理器132可以控制指纹数据管理器135,以自指纹储存器136移除此一指纹,以及删除在表#3中相对应的项目(例如储存此一指纹的键值集以及此一指纹的存储器/磁碟位置)。
图7为根据本发明一实施例的图2所示方法的位元组式比较(byte-by-byte-compare,BBBC)控制方案的示意图。
在步骤S41中,使用者数据匹配器142可以进行位元组式比较操作,例如,藉由呼叫如下的进行位元组式比较函数do_bbbc():
do_bbbc(user input LBAx,user input data,LBAy got from fingerprintengine);
其中该函数中的“user input LBAx”以及“user input data”可以分别代表逻辑区块地址LBAx(例如LBA(x))以及一命令所携带的使用者数据,且该函数中的“LBAy gotfrom fingerprint engine”可以代表当触发位元组式比较时,通过重复数据删除管理器120来从指纹引擎130(例如指纹管理器132)获取的逻辑区块地址LBAy(例如LBA(y))。
在步骤S42中,基于表#4,使用者数据匹配器142可以根据逻辑区块地址LBAy来控制使用者数据管理器144,以从使用者数据储存器146中读取与逻辑区块地址LBAy相关联的4千位元组数据(例如储存在逻辑区块地址LBAy的现有4千位元组数据的快取版本)。
在步骤S43中,使用者数据匹配器142可以进行位元组式比较操作,例如,将此组使用者数据(该命令所携带的该组使用者数据)与逻辑区块地址LBAy相关联的4千位元组数据以位元组式(byte-by-byte)的方式进行比较,以产生位元组式比较的结果,以作为比较结果,其中位元组式比较的结果可以指示此组使用者数据是否和逻辑区块地址LBAy相关联的4千位元组数据完全相同,如果是,为命中案例(例如案例A(2));如果否,则为未命中案例(例如案例B(2))。例如,在命中案例(例如案例A(2))中,使用者数据匹配器142可以向指纹管理器132回复对应于“命中”的位元组式比较的结果,以指示此组使用者数据与逻辑区块地址LBAy相关联的4千位元组数据完全相同;以及在未命中案例(例如案例B(2))中,使用者数据匹配器142可以向指纹管理器132回复对应于“未命中”的位元组式比较的结果,以指示此组使用者数据与逻辑区块地址LBAy相关联的4千位元组数据并未完全相同;但是本发明不限于此,又例如,在命中案例(例如案例A(2))中,使用者数据匹配器142可以将对应于“命中”的位元组式比较的结果回传至重复数据删除管理器120,以指示此组使用者数据与逻辑区块地址LBAy相关联的4千位元组数据完全相同;以及在未命中案例(例如案例B(2))中,使用者数据匹配器可以将对应于“未命中”的位元组式比较的结果回传至重复数据删除管理器120,以指示此组使用者数据与逻辑区块地址LBAy相关联的4千位元组数据并未完全相同。
图8为根据本发明一实施例的图2所示方法的数据保存控制方案的示意图。当决定保存指纹(例如一命令所携带的一组使用者数据的指纹)时,指纹引擎130(例如指纹管理器132)可以通知使用者数据管理器144,例如,藉由呼叫如下的数据保存函数save_data():
save_data(user input LBAx,user input data);
其中该函数中的“user input LBAx”以及“user input data”可以分别代表相关的逻辑区块地址LBAx(例如LBA(x))以及该命令所携带的该组使用者数据,此外,指纹管理器132可以为使用者数据管理器144来相对应地更新表#4。
图9为根据本发明一实施例的图2所示方法的数据删除控制方案的示意图。例如,当使用者决定清理位在一个或多个地址上的数据(例如位在逻辑区块地址LBAx(例如LBA(x))的一组数据)时,重复数据删除管理器120可以藉由呼叫如下的数据删除函数delete_data()来删除在使用者数据储存器146中的该组数据的快取版本:
delete_data(LBAx);
其中指纹管理器132可以为重复数据删除管理器120来相对应地更新表#4,但是本发明不限于此,又例如,当指纹引擎130(例如指纹汰除模块137)判断需要汰除一指纹且该指纹为位在逻辑区块地址LBAy(例如LBA(y))的一组数据的指纹时,指纹引擎130(例如指纹管理器132)可以藉由呼叫如下的删除函数delete_data(),以触发在使用者数据储存器146中该组数据的快取版本的删除:
delete_data(LBAy);
其中指纹管理器132可以相对应地更新表#4。
根据某些实施例,储存伺服器10可具备高可用性(high availability,HA)架构,为了更好地理解,图1所示架构可以被改变(例如更新)以包含有运行各自的程序模块{52P}的多个处理电路{52},且运行各自的程序模块{52P}的多个处理电路{52}可以分别作为高可用性架构中的多个节点(node),例如,在预设情况下,在多个节点中的第一节点以及第二节点可以分别作为现用节点(active node)以及待命节点(standby node),现用节点可以控制储存伺服器10以提供服务给一个或多个使用者,而待命节点可以作为现用节点的备用节点(backup node),当现用节点故障时,待命节点可被触发以成为最新的现用节点,以控制储存伺服器10,用来持续提供服务给一个或多个使用者,此外,至少一个储存接口电路54以及网络接口电路58可相对应地改变,以分别自多个节点提供连结路径给该些电路,且尤其,至少一个储存接口电路54以及网络接口电路58拥有针对连结路径的切换能力,以允许多个节点独立地操作,但是本发明不限于此。
图10为根据本发明一实施例的图2所示方法的存取控制方案的示意图。例如,在图1所示储存伺服器10具备高可用性架构的情况下,运行多个程序模块52P的处理电路52可作为现用节点,而运行多个程序模块52P的处理电路52的另一相同电路(replica)可作为待命节点,但是本发明不限于此,此外,现用节点以及待命节点的任一个节点(例如每一个节点)可以具备重要资讯保护系统(important information protection system),以在任一个节点的至少一个挥发性存储器(例如一或多个随机存取存储器(RAM),像是动态随机存取存储器(DRAM))中保护重要资讯(例如系统资讯、缓冲数据等等),该重要资讯保护系统可包含有至少一个挥发性存储器、备用电源单元(例如电池)以及备用储存器(例如非挥发性存储器、固态硬碟等等),以当需要时在重要资讯上进行备份(backup),其中备用电源单元能够提供备用电源给至少一个挥发性存储器以及备用储存器,例如,当任一个节点的主电源发生电源故障时,重要资讯保护系统可以利用备用电源单元来防止重要资讯的丢失,并且利用备用储存器来储存重要资讯。
因应使用者的写入要求,运行在处理电路52上的多个程序模块52P中的写入缓冲器(write buffer,WB)模块(例如图10所示写入缓冲器200)可以控制一些其他模块(例如软件模块、硬件模块、及/或包含有多个子模块(例如软件模块以及硬件模块)的混合模块),以进行数据写入。在运行在处理电路52上的多个程序模块52P中的持续存储器(persistentmemory,PMem)(例如图10所示持续存储器400)的控制下,现用节点可以通过现用节点以及备用节点之间的至少一个通讯连结路径来将缓冲数据(例如因应写入要求而要被写入至储存伺服器10的储存装置层的数据)传送至待命节点,并且利用待命节点的至少一部分(例如一部分或全部)来作为现用节点的仿真(emulated)持续存储器,其中仿真持续存储器(例如待命节点的至少一部分)可包含有现用节点的重要资讯保护系统。图10所示的容体管理器300可作为上述容体管理模块的范例。
在步骤S51中,因应使用者的写入要求,写入缓冲器200的上层(例如运行在处理电路52上的多个程序模块52P中的使用者接口(user interface,UI)模块)可以将数据写入至储存伺服器10,例如,藉由呼叫如下的写入函数write():
write(V1,volume LBAx,4KB data);
其中“V1”以及“volume LBAx”可以分别代表第一容体的容体识别码(volume ID)(例如自储存池架构获取的多个虚拟容体的其中一个虚拟容体)以及在第一容体中的容体逻辑区块地址LBAx(例如LBA(x)),以及“4KB data”可以代表写入要求所携带的数据中的一组使用者数据(例如区块数据)。
在步骤S52中,持续存储器400可以将4千位元组数据写入至现有节点的重要资讯保护系统的至少一个挥发性存储器,并且将4千位元组数据写入至远端(remote side)(例如待命节点的重要资讯保护系统的至少一个挥发性存储器)。
在步骤S53中,持续存储器400可以向写入缓冲器200发送一确认讯息(acknowledgement,Ack)。
在步骤S54中,写入缓冲器200可以通过上层(例如使用者接口模块)向使用者(例如使用者的客户端装置)发送一确认讯息,以指示写入OK(例如写入完成)。
在步骤S55中,写入缓冲器200可以触发针对重复数据删除的背景执行绪(background thread)来选择4千位元组数据,用以使该4千位元组数据发送至重复数据删除模块100,例如,藉由呼叫如下的具有函数deduplicate_me()的重复数据删除模块应用程序接口110:
deduplicate_me(8B key,4KB data);
其中该函数中的“4KB data”以及“8B key”可以分别代表该组使用者数据(例如区块数据)以及该组使用者数据的8位元组键,例如,该8位元组键可被计算如下:
8B key=((volume ID<<32)||volume LBA);
其中用来计算8位元组键的“volume ID”以及“volume LBA”可以分别代表容体识别码V1以及容体逻辑区块地址LBAx,以及“<<”可以代表C语言中左移的逻辑移位运算符(例如(V1<<32),用以将其计算结果设定为将V1左移32位元的移位结果,其与乘以232的乘积等效),但是本发明不限于此,在此状况下,8位元组键可以视为组合的(combined)虚拟容体逻辑区块地址(virtual volume LBA,VVLBA)(例如容体识别码V1以及容体逻辑区块地址LBAx的组合)。
在步骤S56中,重复数据删除模块100可以将结果(例如比较结果)回复至写入缓冲器200。比较结果可以指示该组使用者数据使否与任一个现有数据完全相同,如果是,为命中案例(例如案例A(3));如果否,则为未命中案例(例如案例B(3)),例如,在未命中案例(例如案例B(3))中,写入缓冲器模块(例如其背景执行绪),像是写入缓冲器200,可以在现用节点中呼叫压缩引擎(compression engine)以及藉由该压缩引擎在4千位元组数据上进行在线压缩(inline compression),以将4千位元组数据的压缩版本写入至储存装置层;以及在命中案例(例如案例A(3))中,重复数据删除模块100可以将另一个8位元组键(例如在多个虚拟容体中第二容体的容体识别码V2以及容体逻辑区块地址LBAy(例如LBA(y))的组合(V2,LBAy))回传至第二容体,以进行随后步骤中的重复数据删除,例如,第二容体可以与第一容体不相同(例如容体识别码V2是不等于容体识别码V1),其中容体逻辑区块地址LBAy与容体逻辑区块地址LBAx不必相同,因为它们分别属于不同的容体,但是本发明不限于此,又例如,第二容体可以与第一容体相同(例如V2=V1),其中容体逻辑区块地址LBAy与容体逻辑区块地址LBAx不相同。
由于写入缓冲器200可以在步骤S55中使用8位元组键(或虚拟容体逻辑区块地址),例如(V1,LBAx),来存取(例如查询)重复数据删除模块100,并且在命中案例中,于步骤S56中自重复数据删除模块100获取另一个8位元组键(或虚拟容体逻辑区块地址),例如(V2,LBAy),在存取(例如查询)重复数据删除模块100之前,写入缓冲器200不需从容体管理器300获取相对应于地址(V1,LBAx)的储存池逻辑区块地址,但是本发明不限于此,在某些实施例中,写入缓冲器200可以先从容体管理器300获取相对应于地址(V1,LBAx)的储存池逻辑区块地址,以及使用该储存池逻辑区块地址来存取(例如查询)重复数据删除模块100。
在步骤S57中,写入缓冲器200可以控制容体管理器300以复制或重定向(redirect)有关地址(V2,LBAy)以及(V1,LBAx)的元数据(metadata),例如,藉由呼叫如下的元数据-重定向函数metadata():
metadata(V2,LBAy,V1,LBAx);
其中该函数中“V2,LBAy”以及“V1,LBAx”可以代表来源位置(source location)以及元数据-重定向处理的目标位置。
在步骤S58中,容体管理器300可以藉由一些子步骤(例如步骤S58A~S58C)来执行元数据-重定向函数metadata()。
在步骤S58A中,容体管理器300可以根据地址(V2,LBAy)来进行容体管理器查找(VM lookup),以获取储存池逻辑区块地址SLBA(1),例如,储存伺服器10(例如容体管理器300)可以建立并更新重映射表(remapping table)(例如储存池逻辑区块地址-虚拟容体逻辑区块地址重映射表),以利用此重映射表的多个项目来纪录多个储存池逻辑区块地址以及多个虚拟容体逻辑区块地址之间的重映射关系,以及容体管理器300可以参考此重映射表以进行容体管理器查找,但是本发明不限于此。
在步骤S58B中,容体管理器300可以将项目(V1,LBAx,SLBA(1))填入另一个映射表(例如重复数据删除重映射表),例如,储存伺服器10(例如容体管理器300)可以建立并更新此重映射表(例如重复数据删除重映射表),以利用此重映射表的多个项目来记录重复使用者数据(例如该组使用者数据)以及现有使用者数据(例如该任一现有数据)之间的重复数据删除关系,且容体管理器300可以利用项目(V1,LBAx,SLBA(1))来记录位在地址(V1,LBAx)的该组使用者数据的虚拟储存版本以及位在储存池逻辑区块地址SLBA(1)的现有使用者数据之间的重复数据删除关系,其中连结资讯(linking information)可以代表该组使用者数据的虚拟储存版本。
在步骤S58C中,容体管理器300可以增加参考计数表(reference count table)的多个项目中有关储存池逻辑区块地址SLBA(1)的项目(SLBA(1),REFCNT)中的参考计数值REFCNT,例如,更新参考计数表的该项目如下:
(SLBA(1),REFCNT(1))→(SLBA(1),REFCNT(2));
其中“REFCNT(1)”以及“REFCNT(2)”可以代表参考计数值REFCNT的先前值以及最新值,并且REFCNT(2)=(REFCNT(1)+1),例如,如果第一次发现在储存池逻辑区块地址SLBA(1)的现有数据与进入数据(incoming data)(例如该组使用者数据)相匹配,则REFCNT(1)=1且REFCNT(2)=2,但是本发明不限于此,在某些实施例中,参考计数值REFCNT可以等于连结至相同储存池逻辑区块地址(例如SLBA(1))的逻辑地址的数量。
在步骤S59A中,容体管理器300可以将一确认讯息(Ack)发送至写入缓冲器模块(例如写入缓冲器200)。
在步骤S59B中,写入缓冲器模块(例如写入缓冲器200)可以控制持续存储器400来自持续存储器400中移除快取数据(例如位在地址(V1,LBAx)的4千位元组数据)。
图11为根据本发明一实施例的图2所示方法的数据读取控制方案的示意图。因应使用者的读取要求,写入缓冲器模块(例如写入缓冲器200)可以控制一些其他模块(例如软件模块、硬件模块、及/或包含有多个子模块(例如软件模块以及硬件模块)的混合模块),以进行数据读取。在运行在处理电路52上的多个程序模块52P中的快闪阵列(Flash Array,FA)模块(例如图11所示的快闪阵列500)的控制下,储存伺服器10可以将储存装置层配置为快闪阵列,且写入缓冲器模块(例如写入缓冲器200)可以通过快闪阵列500来存取储存装置层,例如,在储存装置层中的全部的储存装置都是使用非挥发性存储器装置(例如固态硬碟)来实作的情况下,快闪阵列可为全快闪阵列(All Flash Array,AFA),故储存伺服器10便可以视为全快闪阵列伺服器,但是本发明不限于此。
在步骤S61中,因应使用者的读取要求,上层(例如使用者接口模块)可以自储存伺服器10读取数据,例如,藉由呼叫如下的读取函数read()如下:
read(V1,volume LBAx);
其中“V1”以及“volume LBAx”可以分别代表第一容体(例如自储存池架构获取的多个虚拟容体中的其中一个虚拟容体)的容体识别码以及在第一容体中的容体逻辑区块地址LBAx(例如LBA(x))。
在步骤S62中,写入缓冲器200可以控制容体管理器300以查询在地址(V1,LBAx)上的目标数据(例如待读取的数据)的元数据。
在步骤S63中,容体管理器300可以回传与地址(V1,LBAx)相对应的相关联的储存池逻辑区块地址(例如储存池逻辑区块地址SLBA(1))。
在步骤S64中,写入缓冲器200可以自快闪阵列500读取在储存池逻辑区块地址SLBA(1)的目标数据。
在步骤S65中,快闪阵列500可以将目标数据回传至写入缓冲器200。
在步骤S66中,写入缓冲器200可以通过上层(例如使用者接口模块)来将一确认讯息发送至使用者(例如使用者的客户端装置),以指示读取OK(例如读取完成)。
根据某些实施例,储存伺服器10(例如写入缓冲器200)可以自重复数据删除模块100读取数据。例如,如果储存装置层是藉由比重复数据删除模块100中的任一个使用者数据快取(例如使用者数据储存器146)更快的背景储存器(例如所有的非挥发性储存装置固态硬碟)来实作,由于自该背景储存器读取数据是更好的读取方式,储存伺服器10便可用来自储存装置层读取数据。又例如,如果储存装置层是藉由比重复数据删除模块100中的任一个使用者数据快取(例如使用者数据储存器146)更慢的背景储存器(例如包含有硬碟及/或固态硬碟的序列式小型电脑系统接口(Serial Attached SCSI,SAS)/串行先进技术附件架构)来实作,由于自重复数据删除模块100读取数据是更好的读取方式,储存伺服器10便可用来自重复数据删除模块100读取数据。进一步来说,当储存伺服器10(例如写入缓冲器200)经由数据删除模块应用程序接口110来呼叫重复数据删除模块100(例如,藉由利用函数deduplicate_me()来呼叫重复数据删除模块100),该函数deduplicate_me()可能需要告知呼叫者(例如写入缓冲器200)以下内容:
(1)命中或未命中:不管是命中案例还是未命中案例,重复数据删除模块100可以告知呼叫者,其区域快取(local cache)(例如使用者数据储存器146)中是否有目标数据的一个副本(copy),其中命中或未命中在此不是主要关注点;
(2)目标数据是否在重复数据删除模块100中。
此外,当重复数据删除模块100回传告知其已经将目标数据的一个副本保存至该区域快取(例如使用者数据储存器146)中时,写入缓冲器200可以通知容体管理器300来记录以下的读取相关资讯:
(Volume ID,LBA,SLBA,whether a copy exists in deduplication module);
其中该资讯中“Volume ID”以及“LBA”可以分别代表某个容体(例如自储存池架构获取的多个虚拟容体中的其中一个虚拟容体)的容体识别码以及在该容体中的容体逻辑区块地址,该资讯中“SLBA”可以代表相对应于地址(Volumn ID,LBA)的储存池逻辑区块地址,以及“whether a copy exists in deduplication module”可以代表指示重复数据删除模块100中是否存在副本的存在旗标(existence flag),例如,容体管理器300可以参考储存池逻辑区块地址-虚拟容体逻辑区块地址重映射表来根据地址(Volumn ID,LBA)进行容体管理器查找,以获取该储存池逻辑区块地址。
图12为根据本发明另一实施例的图2所示方法的数据读取控制方案的示意图,其中重复数据删除模块100具有目标数据。
在步骤S71中,因应使用者的读取要求,上层(例如使用者接口模块)可以自储存伺服器10读取数据,例如,藉由呼叫如下的读取函数read():
read(V1,volume LBAx);
其中“V1”以及“volume LBAx”可以分别代表第一容体(例如自储存池架构获取的多个虚拟容体中的其中一个虚拟容体)的容体识别码以及在第一容体中的容体逻辑区块地址LBAx(例如LBA(x))。
在步骤S72中,写入缓冲器200可以控制容体管理器300以查询在地址(V1,LBAx)上的目标数据(例如待读取的数据)的元数据。
在步骤S73中,容体管理器300可以将指示存在(existence)的存在旗标回传至写入缓冲器200,以指示在重复数据删除模块100中存在一个副本,例如,容体管理器300已经记录读取相关资讯(例如(V1,volume LBAx,SLBA(1),whether a copy exists indeduplication module)),且可以自读取相关资讯中获取储存池逻辑区块地址SLBA(1)以及相对应于存在的存在旗标,以回传至写入缓冲器200。
在步骤S74中,写入缓冲器200可以自重复数据删除模块100读取在储存池逻辑区块地址SLBA(1)的目标数据。
在步骤S75中,重复数据删除模块100可以将目标数据回传至写入缓冲器200。
在步骤S76中,写入缓冲器200可以经由上层(例如使用者接口模块)将一确认讯息发送至使用者(例如使用者的客户端装置),以指示读取OK(例如读取完成)。
图13为根据本发明另一实施例的图2所示方法的数据读取控制方案的示意图,其中重复数据删除模块100先前曾将目标数据储存至使用者数据储存器146中,但是现在已将该目标数据移除(例如在触发相对应指纹的汰换之后,重复数据删除模块100理应这样做)。
在步骤S81中,因应使用者的读取要求,上层(例如使用者接口模块)可以自储存伺服器10读取数据,例如,藉由呼叫如下的读取函数read():
read(V1,volume LBAx);
其中“V1”以及“volume LBAx”可以分别代表第一容体(例如自储存池架构获取的多个虚拟容体中的其中一个虚拟容体)的容体识别码以及在第一容体中的容体逻辑区块地址LBAx(例如LBA(x))。
在步骤S82中,写入缓冲器200可以控制容体管理器300以查询在地址(V1,LBAx)上的目标数据(例如待读取的数据)的元数据。
在步骤S83中,容体管理器300可以回传告知在重复数据删除模块100中存在一个副本。
在步骤S84中,写入缓冲器200可以自重复数据删除模块100读取在储存池逻辑区块地址SLBA(1)的目标数据。
在步骤S85中,重复数据删除模块100可以不回传任何数据,例如,回传空数据(null data)来作为目标数据,以指示没有现有数据与目标数据相匹配。
在步骤S86中,写入缓冲器200可以控制重复数据删除模块100来再次查询在地址(V1,LBAx)上的目标数据(例如待读取的数据)的元数据。
在步骤S87中,容体管理器300可以将储存池逻辑区块地址SLBA(1)回传至写入缓冲器200,例如,容体管理器300已记录读取相关资讯(例如(V1,volume LBAx,SLBA(1),whether a copy exists in deduplication module)),且可以自读取相关资讯中获取储存池逻辑区块地址SLBA(1),以回传至写入缓冲器200。
在步骤S88中,写入缓冲器200可以自快闪阵列500中读取在储存池逻辑区块地址SLBA(1)上的目标数据。
在步骤S89A中,快闪阵列500可以将目标数据回传至写入缓冲器200。
在步骤S89B中,写入缓冲器200可以经由上层(例如使用者接口模块)将一确认讯息发送至使用者(例如使用者的客户端装置),以指示读取OK(例如读取完成)。
图14为根据本发明一实施例的图2所示方法的过滤与处理控制方案的示意图。图3所示的指纹引擎130(例如其中的软件元件)可以根据图14所示的过滤与处理控制方案来操作,为了更好地理解,指纹引擎130中的指纹管理器132可以包含有调度器(dispatcher)以及多个重复数据删除表管理器,操作在指纹管理器132的控制下的指纹产生器133可以包含有多个指纹产生器,以及命令相关过滤器(例如过滤器131)可以包含有储存池逻辑区块地址过滤器,但是本发明不限于此。根据某些观点,调度器可以作为完成管理器(completionmanager)。此外,可以在一些元件、处理路径等等的旁边标记类似正弦曲线的符号(可以代表指纹),以指示可以基于指纹来进行相关操作。
在重复数据删除模块100的多个表中的该一组或多组键值表为包含有多组键值表的情况下,多个重复数据删除管理器中的任一个重复数据删除管理器(例如每一个重复数据删除管理器)可以管理在该多组键值表中的一组键值表,例如存储器内(in-memory)的键值表(为简洁起见,图中标示为”存储器内的键值”)。以图14所示最上层的重复数据删除表管理器来作为任一个重复数据删除表管理器的范例,在表#1中的多个键值集的键及值可以分别藉由指纹以及带有指标(pointer)的储存池逻辑区块地址来实作,以分别将指纹映射至带有指标的储存池逻辑区块地址(为了简便起见,标记为“FP→(SLBA,pointer)”),且在表#2中的多个键值集的键及值可以分别藉由储存池逻辑区块地址以及指纹来实作,以分别将储存池逻辑区块地址映射至指纹(为了简便起见,标记为“SLBA→FP”),但是本发明不限于此。此外,在数据库132D中的表可以被扩展,尤指可以从至少一个专用存储器分布到至少一个其他储存器(例如指纹储存器136),且可以被划分为存储器内(in-memory)的表以及储存器内(in-storage)的表,例如,专用存储器可以藉由随机存取存储器来实作,而至少一个其他储存器可以藉由非挥发性存储器、固态硬碟等等来实作,但是本发明不限于此,由于其他储存器的储存容量通常大于专用存储器的储存容量,存储器内的表(例如专用存储器内的表)可以储存一些经常使用的键值对(KV pair),以及储存器内的表(例如其他储存器内的表)可以储存一些不常使用的键值对(例如由于存储器内的表的储存容量不足,而从存储器内的表中逐出或踢除的某些键值对),因此,储存器内的表可以作为数据库132D的扩展数据库,如图14所示,任一个重复数据删除管理器可以在多组存储器内的表中管理一组存储器内的表(例如一组键值表),并且管理相对应于该组存储器内的表的一组储存器内的表,例如在指纹-至-储存池逻辑区块地址(FP-to-SLBA,FP2SLBA)数据库中的FP2SLBA表以及在储存池逻辑区块地址-至-指纹(SLBA-TO-FP,SLBA2FP)数据库中的SLBA2FP表。
基于图14所示架构,指纹引擎130可以接收输入资讯,以及尝试根据该输入资讯来进行指纹-储存池逻辑区块地址查找,以产生查找结果作为输出资讯,以便回传输出资讯,例如,该输入资讯可以表示如下:
(Volume ID,LBA,4KB data,SLBA,REFCNT);
其中以上资讯中“Volume ID”以及“LBA”可以分别代表某个容体(例如自储存池架构获取的多格虚拟容体中的其中一个虚拟容体)的容体识别码以及在该容体中的容体逻辑区块地址,“4KB data”可以代表一命令所携带的一组使用者数据(例如区块数据),“SLBA”可以代表相对应于地址(Volume ID,LBA)的储存值逻辑区块地址,以及“REFCNT”可以代表参考计数值,此外,该输出资讯可以表示如下:
(match,des_SLBA);
其中“match”可以代表相对应于比较结果的旗标(flag),以指示该组使用者数据与任一个现有数据相同为真(例如匹配案例)或假(例如未命中案例),以及“des_SLBA”可以代表目标储存池逻辑区块地址,以指示任一个现有数据的储存位置,如图14所示,指纹引擎130(例如调度器)可以分批处理(batch)或收集由多个指纹产生器产生的一连串指纹(例如(fp0,fp1,…,fpn)),并通过储存池逻辑区块地址过滤器来将该一连串指纹分配至多个重复数据删除管理器,此外,储存池逻辑区块地址过滤器可以根据指纹来进行分配要求,尤指根据预定的映射规则来进行从储存池逻辑区块地址映射至多个重复数据删除表管理器的各自管理器识别码(manager ID)的映射操作(为简便起见,标记为“SLBA→manager ID”),以尝试将一连串指纹的指纹-查找任务平均分配给多个重复数据删除管理器,该多个重复数据删除管理器可以分别进行指纹-查找任务以产生指纹-查找结果,以作为输出资讯,为了简洁起见,在此不再重复详细描述本实施例。
根据某些实施例,储存池逻辑区块地址过滤器可以具备一快取,并利用该快取来记录一储存池逻辑区块地址-管理器项目(其指示储存池逻辑区块地址-管理器关系),以提高处理速度,其中储存池逻辑区块地址-管理器项目可以包含有储存池逻辑区块地址过滤器接收到的储存池逻辑区块地址,且另包含有已经完成处理与该储存池逻辑区块地址相对应的指纹-查找任务的重复数据删除表管理器的管理器识别码,因此,储存池逻辑区块地址过滤器可以收集多个储存池逻辑区块地址-管理器项目(例如在其快取中的该储存池逻辑区块地址-管理器项目),当接收到当前储存池逻辑区块地址时,储存池逻辑区块地址过滤器可以将当前储存池逻辑区块地址与该多个储存池逻辑区块地址-管理器项目中的一个或多个储存池逻辑区块地址-管理器项目的一个或多个储存池逻辑区块地址相比较,以判断在其快取中是否存在任一个匹配的储存池逻辑区块地址,如果是,为快取命中案例,其中在该快取命中案例中,储存池逻辑区块地址过滤器可以自包含有任一个匹配的储存池逻辑区块地址的项目中获取管理器识别码(例如0x4),以作为目标管理器识别码,并且将相对应于当前储存池逻辑区块地址的当前指纹-查找任务(例如与当前储存池逻辑区块地址相关的当前指纹的指纹-查找任务)指派给具有该管理器识别码(例如0x4)的重复数据删除表管理器;如果否,则为快取未命中案例,其中在该快取未命中案例中,储存池逻辑区块地址过滤器可以决定一个与该多个重复数据删除管理器的各自管理器识别码均不相同的预设识别码(例如0xF),以作为目标管理器识别码,用于指示快取未命中案例,并触发对应于该预设识别码的预定处理。因此,该多个重复数据删除表管理器可以根据当前状况为快取命中案例还是快取未命中案例及/或根据哪些指纹属于该多个重复数据删除管理器中的一个管理器来进行后续处理(例如指纹-查找任务等等)。针对预设识别码(例如0xF)指示的快取未命中案例,相对应于预设识别码的预定处理可以藉由不包含储存池逻辑区块地址过滤器的指纹查找架构的处理(例如在另一范例中的原始设计)来实作,且因此可能需要更多输入/输出(input/output,I/O)处理以及可能导致更多的每秒输入/输出量(I/O per second,IOPS),而针对快取命中案例,指纹引擎130可以借助储存池逻辑区块地址过滤器来操作,尤指将多个过滤结果分类为多个预定案例(例如案例1、案例2以及/或某些子案例,例如案例A~案例G),以进行多个预定案例的各自的处理,从而大幅提高处理速度,其中可以减少输入/输出处理以及相关的每秒输入/输出量,例如,多个预定案例的某些预定案例可以与关于存储器内的表以及储存器内的表的指纹匹配/不匹配(例如匹配指纹的存在/不存在)的各种组合有关。
关于图14所示架构的一些实施细节可以描述如下,根据某些实施例,对于每个4千位元组的输入数据,例如,根据预定函式(例如密码杂凑函式(cryptographic hashfunction),像是安全散列演算法(Secure Hash Algorithm 1,SHA-1)),指纹产生器是用来计算指纹值(其可以简称为指纹),指纹可以用作快速识别4千位元组数据的功能,而无需位元组式比较,调度器的职责是非同步地(asynchronously)将一要求调度/排程至任一个重复数据删除表管理器,并作为协调器来从多个重复数据删除表管理器收集多个结果,以将该多个结果依序回传,例如,每一个重复数据删除表管理器可能看起来像一个可以每次处理一个指纹的微型重复数据删除模块,任一个重复数据删除表管理器可以用两个方向来储存指纹以及储存池逻辑区块地址之间的映射关系以供每一个查找操作来使用,因此可以回答在重复数据删除模块100中是否存在输入指纹并针对储存池逻辑区块地址来有效地移除指纹。
根据图15~图18分别所示的实施例,为简便起见,重复数据删除表管理器可称为表管理器或管理器。
图15为根据本发明一实施例的图2所示方法的更新要求控制方案的示意图。第一种优化是减少发送至表管理器的不必要的删除要求,而不需保留相对应的键值对。储存池逻辑区块地址过滤器的采用是为了追踪储存池逻辑区块地址属于哪个表管理器,当过滤器回传0xF时,其意味着该储存池逻辑区块地址之前未使用过,故只需通过与原始设计(例如案例3)相同的流程即可,因为储存池逻辑区块地址过滤器可以作为储存池逻辑区块地址以及表管理器识别码之间的所有映射的快取,所以回传0xF并不代表此储存池逻辑区块地址以前未使用,因此,还是需要将一删除要求发送至每个表管理器。当表管理器识别码(例如范例中的0x4)被回传,但是指纹属于不同的表管理器(不是0x4)时,将一删除要求发送至表管理器0x4以及将(FP,SLBA)的一查找要求发送至目的地的表管理器(例如案例2),另一方面,当指纹以及储存池逻辑区块地址都是属于相同的表管理器时,需要分开讨论多个案例(案例1)。
根据某些实施例,重复数据删除模块100(例如指纹引擎130)可以接收有关当前储存池逻辑区块地址的更新要求,以改变位在当前储存池逻辑区块地址上的使用者数据,但是本发明不限于此。储存池逻辑区块地址过滤器可以获取当前指纹以及当前储存池逻辑区块地址(为方便起见,标记为“(FP,SLBA)”),并且产生在多个过滤结果中的一过滤结果,例如,该过滤结果可被指向至预设识别码(例如0xF)所指示的快取未命中案例,尤其,在案例3中,调度器可以进行以下操作:
(1)将del(SLBA)发送至所有的管理器(例如所有的重复数据删除表管理器),以删除与当前储存池逻辑区块地址相关的指纹;
(2)根据当前指纹以及当前储存池逻辑区块地址来发送lookup(FP,SLBA),以执行指纹查找;
其中原始设计的处理可以被利用,针对案例1以及案例2,符号“∈”以及
Figure BDA0002958013070000351
可以分别代表“属于”以及“不属于”,过滤结果可以被指向至管理器识别码(例如0x4)所指示的快取命中案例,使得当前指纹-查找任务被分配至具有该管理器识别码(例如0x4)的重复数据删除表管理器,为简便起见,在此不再详细重复对该些实施例的类似描述。
图16为在存储器内的表上找到指纹的情况下,图15所示更新要求控制方案的相关处理的一些范例的示意图。例如,案例A以及案例B的各自的处理(例如各自的步骤的各自的操作)可以列出如下:
·案例A(回传匹配)
(1)找到一键值对(FP,SLBA)
Figure BDA0002958013070000361
什么也不做;
·案例B(回传匹配)
(1)找到一键值对(FP,SLBA’);
(2)(FP’,SLBA)必存在于此管理器中;
(2a)自存储器内的表删除(FP’,SLBA);
(2b)如果存在一副本,自储存器内的表删除(FP’,SLBA);
(2c)快取管理等等。
当输入指纹可以在存储器内的表上找到与其匹配的指纹时,将出现两种案例,例如案例A以及案例B,在案例A中,如果来自存储器内的表的匹配键值对的储存池逻辑区块地址有着与输入储存池逻辑区块地址相同的值,指纹引擎130可以什么也不做并提供最佳性能。与没有进一步地比较储存池逻辑区块地址的值的先前设计相反,指纹引擎130可以先盲目地删除相同的键值对然后再次插入,在案例B中,如果在匹配键值中的储存池逻辑区块地址’与输入逻辑区块地址不相同,则需要做更多步骤,第一件事是找出具有输入储存池逻辑区块地址的键值对,由于储存池逻辑区块地址过滤器在一开始时就回报了该储存池逻辑区块地址的目的地(案例1),该储存池逻辑区块地址必存在于该表管理器中,在此之后,指纹引擎130可以尝试仅在存储器内的表上、或仅在储存器内的表上或在存储器内的表上及储存器内的表上删除该键值对(FP’,SLBA),第二件事是将新的键值对(FP,SLBA’)插入至存储器内的表。
图17为在储存器内的表上找到指纹的情况下,图15所示更新要求控制方案的相关处理的一些范例的示意图,例如,案例C以及案例D的各自的处理(例如各自的步骤的各自的操作)可以列出如下:
·案例C(回传匹配)
(1)找到一键值对(FP,SLBA)
Figure BDA0002958013070000371
什么也不做;
(2)将(FP,SLBA)加载至存储器内的表;
(3)如果需要,将一键值对从存储器内的表移出至储存器内的表;
·案例D(回传匹配)
(1)找到一键值对(FP,SLBA’);
(2)(FP’,SLBA)必存在于此管理器中
Figure BDA0002958013070000372
与案例B相同的删除操作;
(3)将(FP,SLBA’)加载至存储器内的表;
(4)如果需要,将一键值对从存储器内的表移出至储存器内的表。
当输入指纹可以在储存器内的表上而不是在存储器内的表上找到匹配的指纹时,也会出现两种案例,例如案例C以及案例D,案例C相似于案例A,当从储存器内的表中找到的储存池逻辑区块地址有着与输入储存池逻辑区块地址相同的值时,键值对(FP,SLBA)需要被更进一步地加载至存储器内的表(不同步骤),由于快取移除(cache eviction),加载新的键值对可能会触发额外的写入。案例D相似于案例B,案例D中也需要案例B中为键值对(FP’,SLBA)的相同删除操作,类似地,加载新的键值对至存储器内的表可能会触发额外的移除快取的操作。
图18为在任一个表上都找不到指纹的情况下,图15所示更新要求控制方案的相关处理的一些范例的示意图,例如,案例E、案例F以及案例G的各自的处理(例如各自的步骤的各自的操作)可以列出如下:
·案例E(回传不匹配)-在存储器内的表上找到(FP’,SLBA)
(1)不需要变更SLBA→pointer;
(2)删除FP’→pointer;
(3)插入FP→pointer;
·案例F(回传不匹配)-在储存器内的表上找到(FP’,SLBA)
(1)从指纹-至-储存池逻辑区块地址数据库中删除FP’→SLBA;
(2)从储存池逻辑区块地址-至-指纹数据库中SLBA→FP’;
(3)将新的键值对(FP,SLBA)插入至存储器内的表;
(4)如果需要,将一键值对从存储器内的表移出至储存器内的表;
·案例G(回传不匹配)-在存储器内的表以及储存器内的表上找到(FP’,SLBA)
(1)删除储存器内的映射(和案例F的步骤1~2相同);
(2)删除FP’→pointer以及插入FP→pointer(和案例E的步骤1~3相同)。
当输入指纹无法在存储器内的表以及储存器内的表上找到相匹配的指纹时,将出现三种案例,例如案例E、案例F以及案例G,在案例E中,有着储存池逻辑区块地址的相同的值的键值对仅在存储器内的表上被找到,指纹引擎130仅需要自存储器内的表中删除从指纹FP’至键值项目的映射,而藉由查找存储器内的表(其储存从一储存池逻辑区块地址至一键值项目的存储器位置的映射),可以找到该键值对。在案例F中,有着储存池逻辑区块地址的相同的值的键值对仅在储存器内的表上被找到,且因为新的键值对仅会被插入至存储器内的表中,指纹引擎130可能必须自储存器内的表中删除两个映射关系(例如指纹-至-储存池逻辑区块地址以及储存池逻辑区块地址-至-指纹),要注意的是,由于快取移除,插入新的键值对(FP,SLBA)可能也会触发额外的写入。在案例G中,有着储存池逻辑区块地址的相同的值的键值对在储存器内的表以及存储器内的表上被找到,指纹引擎130可能需要自储存器内的表中删除键值对(FP’,SLBA)(与案例F中的步骤相同),指纹引擎130可能也需要删除从指纹’至键值项目的映射(与案例E中的步骤相同)。对于所有上述讨论的案例,可以得出结论就是大多数的案例不需要做太多不必要的输入/输出,例如,在案例A中不需要任何输入/输出,故可以大幅提高查找性能。
图19为根据本发明一实施例的利用命令相关过滤器获取增强的可扩展性(enhanced scalability)的示意图(例如相关联的参数可以包含有:要求(request)的个数:108、0%重复数据删除、99%更新、管理器个数:3),其中纵轴代表每秒输入/输出(千)(为了简便起见,标示为“IOPS(K)”),横轴代表指纹产生器数量。关于可扩展性,性能可随着指纹产生器数量(例如CPU数量)来扩展,但是可能会发生饱和,如图19所示,与禁用储存池逻辑区块地址过滤器(例如不具有(without,w/o)储存池逻辑区块地址过滤器)的案例相比,当启用储存池逻辑区块地址时(例如具有(with,w/)储存池逻辑区块地址过滤器),性能可以随着更多个指纹产生器而线性扩展。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

Claims (10)

1.一种借助一命令相关过滤器来进行重复数据删除管理的方法,包含有:
利用在一主装置上的至少一程序模块来将一使用者数据写入至一储存装置层,且利用一基于指纹的重复数据删除管理模块来创造多个指纹并将该多个指纹储存至一指纹储存器,以作为该使用者数据的各自代表,用来最小化有关重复数据删除控制的计算量;以及
利用该基于指纹的重复数据删除管理模块中的该命令相关过滤器来监控一处理路径上的多个命令,根据一组命令所分别携带的地址,决定在该多个命令中有关使用者数据变化的该组命令,并且将该组命令转换成一单一命令以消除该组命令中的一个或多个非必要的命令。
2.如权利要求1所述的方法,其特征在于,另包含有:
执行该单一命令,而非执行该组命令中的所有命令。
3.如权利要求1所述的方法,其特征在于,该基于指纹的重复数据删除管理模块包含有多个子模块;且除了该命令相关过滤器外,该多个子模块另包含有一重复数据删除模块应用程序接口、一重复数据删除管理器、一指纹管理器、一指纹产生器、一指纹匹配器以及一指纹数据管理器,用来与该基于指纹的重复数据删除管理模块外部的一个或多个程序模块进行互动,以分别进行重复数据删除管理、进行指纹管理、产生该多个指纹、进行有关指纹匹配检测的指纹比较以及在该指纹储存器上进行指纹数据管理。
4.如权利要求1所述的方法,其特征在于,该基于指纹的重复数据删除管理模块包含有多个子模块,且除了该命令相关过滤器外,该多个子模块另包含有一重复数据删除模块应用程序接口、一重复数据删除管理器以及一指纹管理器;且该方法另包含有:
利用该重复数据删除模块应用程序接口来与该基于指纹的重复数据删除管理模块外部的一个或多个程序模块进行互动,以接收该多个命令的至少一部分;
利用该重复数据删除管理器来通过该命令相关过滤器向该指纹管理器传送该多个命令的该至少一部分;以及
利用该指纹管理器来因应该单一命令进行处理。
5.如权利要求1所述的方法,其特征在于,该指纹储存器是利用在该基于指纹的重复数据删除管理模块之控制下的一储存相关硬件元件的一储存区域来实作。
6.如权利要求5所述的方法,其特征在于,该储存相关硬件元件包含有一随机存取存储器、一非挥发性存储器、一硬碟以及一固态硬碟中的任一者。
7.如权利要求1所述的方法,其特征在于,该组命令包含有该单一命令以及该一个或多个非必要的命令。
8.一种主装置,包含有:
一处理电路,用来控制该主装置以进行基于指纹的重复数据删除管理,其中:
在该主装置上的至少一程序模块将一使用者数据写入至一储存装置层,且一基于指纹的重复数据删除管理模块创造多个指纹并将该多个指纹储存至一指纹储存器,以作为该使用者数据的各自代表,用来最小化有关重复数据删除控制的计算量;以及
该基于指纹的重复数据删除管理模块中的该命令相关过滤器监控一处理路径上的多个命令,根据一组命令所分别携带的地址,决定在该多个命令中有关使用者数据变化的该组命令,并且将该组命令转换成一单一命令以消除该组命令中的一个或多个非必要的命令。
9.如权利要求8所述的主装置,其特征在于,另包含有:
一机壳,用来安装该主装置的多个元件以及该至少一储存装置,其中该主装置的该多个元件包含有该处理电路。
10.一种储存伺服器,包含有:
一主装置,用来控制该储存伺服器的操作,该主装置包含有:
一处理电路,用来控制该主装置以进行在该储存伺服器中的基于指纹的重复数据删除管理;以及
一储存装置层,该储存装置层包含有耦接于该主装置的至少一储存装置;
其中:
在该主装置上的至少一程序模块将一使用者数据写入至该储存装置层,且一基于指纹的重复数据删除管理模块创造多个指纹并将该多个指纹储存至一指纹储存器,以作为该使用者数据的各自代表,用来最小化有关重复数据删除控制的计算量;以及
该基于指纹的重复数据删除管理模块中的该命令相关过滤器监控一处理路径上的多个命令,根据一组命令所分别携带的地址,决定在该多个命令中有关使用者数据变化的该组命令,并且将该组命令转换成一单一命令以消除该组命令中的一个或多个非必要的命令。
CN202110230924.0A 2020-03-02 2021-03-02 重复数据删除管理的方法、主装置以及储存伺服器 Pending CN113342264A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202062983763P 2020-03-02 2020-03-02
US62/983,763 2020-03-02
US17/140,147 2021-01-04
US17/140,147 US20210271650A1 (en) 2020-03-02 2021-01-04 Method and apparatus for performing deduplication management with aid of command-related filter

Publications (1)

Publication Number Publication Date
CN113342264A true CN113342264A (zh) 2021-09-03

Family

ID=77463937

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110230924.0A Pending CN113342264A (zh) 2020-03-02 2021-03-02 重复数据删除管理的方法、主装置以及储存伺服器

Country Status (3)

Country Link
US (1) US20210271650A1 (zh)
CN (1) CN113342264A (zh)
TW (1) TWI771933B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116893853A (zh) * 2023-09-11 2023-10-17 合肥康芯威存储技术有限公司 一种存储设备及擦除指令的处理方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220214946A1 (en) * 2021-01-04 2022-07-07 EMC IP Holding Company LLC Provider-agnostic management of backup data stored on a cloud-based object storage
US11677736B2 (en) * 2021-03-25 2023-06-13 International Business Machines Corporation Transient identification generation
US11487726B1 (en) * 2021-09-15 2022-11-01 Dell Products, L.P. Dynamic deduplication hash table management
US11977521B2 (en) 2021-10-04 2024-05-07 EMC IP Holding Company LLC Source file copying
US11593218B1 (en) * 2021-10-04 2023-02-28 EMC IP Holding Company LLC Source file copying and error handling
US11593332B1 (en) 2021-10-04 2023-02-28 EMC IP Holding Company LLC Destination file copying and error handling

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102053914A (zh) * 2009-10-30 2011-05-11 慧荣科技股份有限公司 记忆装置以及存储器的数据存取方法
US20130227237A1 (en) * 2012-02-23 2013-08-29 Hitachi Computer Peripherals Co., Ltd. Data management system and data management method
TW201734750A (zh) * 2016-01-15 2017-10-01 飛康國際股份有限公司 包含固態硬碟儲存裝置及類似物的重複資料刪除快取記憶體
US20180074968A1 (en) * 2015-07-30 2018-03-15 Netapp, Inc. Deduplicated host cache flush to remote storage
CN107870740A (zh) * 2016-09-28 2018-04-03 爱思开海力士有限公司 用于控制存储器的设备和方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8463742B1 (en) * 2010-09-17 2013-06-11 Permabit Technology Corp. Managing deduplication of stored data
JP7122325B2 (ja) * 2017-04-28 2022-08-19 アスカバ・インコーポレイテッド 基本データシーブの使用によるデータの無損失削減、ならびに基本データシーブを使用して無損失削減されたデータに対する多次元検索およびコンテンツ連想的な取出しの実行
CN109358987B (zh) * 2018-10-26 2019-09-24 黄淮学院 一种基于两级数据去重的备份集群
CN109992645B (zh) * 2019-03-29 2021-05-14 国家计算机网络与信息安全管理中心 一种基于文本数据的资料管理系统及方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102053914A (zh) * 2009-10-30 2011-05-11 慧荣科技股份有限公司 记忆装置以及存储器的数据存取方法
US20130227237A1 (en) * 2012-02-23 2013-08-29 Hitachi Computer Peripherals Co., Ltd. Data management system and data management method
US20180074968A1 (en) * 2015-07-30 2018-03-15 Netapp, Inc. Deduplicated host cache flush to remote storage
TW201734750A (zh) * 2016-01-15 2017-10-01 飛康國際股份有限公司 包含固態硬碟儲存裝置及類似物的重複資料刪除快取記憶體
CN107870740A (zh) * 2016-09-28 2018-04-03 爱思开海力士有限公司 用于控制存储器的设备和方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116893853A (zh) * 2023-09-11 2023-10-17 合肥康芯威存储技术有限公司 一种存储设备及擦除指令的处理方法
CN116893853B (zh) * 2023-09-11 2023-12-12 合肥康芯威存储技术有限公司 一种存储设备及擦除指令的处理方法

Also Published As

Publication number Publication date
US20210271650A1 (en) 2021-09-02
TWI771933B (zh) 2022-07-21
TW202134892A (zh) 2021-09-16

Similar Documents

Publication Publication Date Title
TWI771933B (zh) 借助命令相關過濾器來進行重複資料刪除管理的方法、主裝置以及儲存伺服器
US10013202B2 (en) Utilizing global digests caching in similarity based data deduplication
US10007672B2 (en) Global digests caching in a data deduplication system
CN108459826B (zh) 一种处理io请求的方法及装置
US9495294B2 (en) Enhancing data processing performance by cache management of fingerprint index
CN108268219B (zh) 一种处理io请求的方法及装置
US20160371186A1 (en) Access-based eviction of blocks from solid state drive cache memory
US5778394A (en) Space reclamation system and method for use in connection with tape logging system
US6202135B1 (en) System and method for reconstructing data associated with protected storage volume stored in multiple modules of back-up mass data storage facility
CN108804031A (zh) 最佳记录查找
US10007610B2 (en) Tuning global digests caching in a data deduplication system
JP2021128699A (ja) 分散ストレージ装置および分散ストレージ装置のデータ管理方法
US9817865B2 (en) Direct lookup for identifying duplicate data in a data deduplication system
US5909700A (en) Back-up data storage facility incorporating filtering to select data items to be backed up
JP6320432B2 (ja) データ重複排除における、類似性探索に基づくダイジェスト検索
US20150019815A1 (en) Utilizing global digests caching in data deduplication of workloads
US8935304B2 (en) Efficient garbage collection in a compressed journal file
CN108319430B (zh) 处理io请求的方法及装置
KR20170085951A (ko) 버저닝 저장 장치 및 방법
CN114253908A (zh) 键值存储系统的数据管理方法及其装置
JP2019506667A (ja) プロセッサ・グリッド内の分散データ重複排除
US6148382A (en) Arrangement for filtering data item updates to reduce the number of updates to a data item to be stored on mass data storage facility
US9703795B2 (en) Reducing fragmentation in compressed journal storage
US20200019539A1 (en) Efficient and light-weight indexing for massive blob/objects
US5809435A (en) Efficient index arrangement and method for identifying valid records stored on logging digital data storage subsystem

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