一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

存储装置、存储装置的操作方法和存储服务器的操作方法与流程

2022-06-05 03:17:05 来源:中国专利 TAG:

存储装置、存储装置的操作方法和存储服务器的操作方法
1.相关申请的交叉引用
2.本技术要求于2020年11月30日在韩国知识产权局提交的韩国专利申请no.10-2020-0164583的优先权,该申请的公开以引用方式全文并入本文中。
技术领域
3.本文所述的本公开的实施例涉及一种服务器系统,并且更具体地,涉及一种具备重复数据删除的存储装置、该存储装置的操作方法和存储服务器的操作方法。


背景技术:

4.服务器系统可包括通过网络连接的多个计算服务器并提供各种服务。服务器系统可以包括存储和管理大量数据的存储服务器。用户或对象多次引用存储服务器中的特定数据。每次引用都可能导致在存储服务器内创建和存储重复数据或冗余数据。随着这些引用的数量增加,存储重复数据的次数也会增加。重复数据存储次数的增加导致存储服务器中包括的存储装置的可用存储空间量减小。
5.可执行重复数据删除技术,以消除存储服务器内的重复数据或冗余信息。然而,当前的重复数据删除技术需要高容量存储器,从而增加了制造成本。


技术实现要素:

6.本公开的至少一个实施例提供了一种具有改进的性能、低的成本的支持重复数据删除功能的存储装置,存储装置的操作方法以及存储服务器的操作方法。
7.根据实施例,一种存储装置的操作方法包括:从外部装置接收包括对象标识符和数据的写请求;对数据执行散列操作,以生成散列值;确定表中与散列值关联的条目是否为空;当确定该条目为空时,将数据存储在存储装置的对应于物理地址的区域中,并且更新条目以包括物理地址和参考计数;以及当确定该条目非空时,增大条目中包括的参考计数,而不执行与数据关联的存储操作,并且当所述表中不存在与所述散列值关联的条目时,将错误消息返回至所述外部装置。
8.根据实施例,一种包括多个存储装置和被配置为管理多个存储装置的存储节点的存储服务器的操作方法包括:在存储节点处从外部客户服务器接收包括第一对象标识符和第一数据的第一写请求;在存储节点处对第一数据执行散列操作,以生成第一散列值;在存储节点处从分别分配至多个存储装置的多个散列范围中确定包括第一散列值的第一散列范围;在存储节点处将包括第一对象标识符、第一数据和第一散列值的第二写请求发送至多个存储装置中的对应于第一散列范围的第一存储装置;在所述第一存储装置处对所述第二写请求中包括的所述第一数据执行所述散列操作,以生成第二散列值;当所述第一散列值与所述第二散列值匹配并且第一表中存在与所述第一散列值对应的第一条目时,在所述第一存储装置处增大所述第一条目的第一参考计数,而不执行与所述第一数据关联的存储操作;以及在所述第一存储装置处将完成响应发送至所述存储节点。
9.根据实施例,一种存储装置包括:非易失性存储器;以及存储控制器,其被配置为控制非易失性存储器。存储控制器包括:存储器,其被配置为存储第一表;散列模块,其被配置为对从外部装置接收的第一数据执行散列操作,以生成第一散列值;以及重复数据删除管理器,其被配置为在第一表中搜索对应于第一散列值的第一条目,以基于搜索的搜索结果将第一数据选择性地存储在非易失性存储器中。当在第一表中存在第一条目时,重复数据删除管理器增大第一条目的第一参考计数,而不将第一数据存储在非易失性存储器中。当第一表中不存在第一条目时,重复数据删除管理器将第一数据存储在对应于非易失性存储器的第一物理地址的区域中,并且将包括第一散列值、第一物理地址和第一参考计数的第一条目加至第一表中。
附图说明
10.通过参照附图详细描述本公开的实施例,本公开将变得清楚。
11.图1是示出根据本公开的实施例的服务器系统的框图。
12.图2是示出根据本公开的实施例的图1的存储节点的框图。
13.图3是示出根据本公开的实施例的图1的多个存储装置之一的框图。
14.图4是示出根据本公开的实施例的图1的存储服务器的操作的流程图。
15.图5是用于描述根据本公开的实施例的存储装置管理的散列-物理表的图。
16.图6是示出根据本公开的实施例的图1的服务器系统的操作的流程图。
17.图7和图8是用于描述根据图6的流程图的操作的示图。
18.图9是示出根据本公开的实施例的图1的服务器系统的操作的流程图。
19.图10是用于描述根据图9的流程图的读操作的示图。
20.图11是示出根据本公开的实施例的图1的服务器系统的操作的流程图。
21.图12是用于描述根据图11的流程图的删除操作的示图。
22.图13是示出根据本公开的实施例的图1的存储装置的操作的框图。
23.图14是示出根据本公开的实施例的图1的服务器系统的操作的流程图。
24.图15是用于描述根据图14的流程图的操作的示图。
25.图16是示出根据本公开的实施例的图1的服务器系统的操作的流程图。
26.图17是示出根据本公开的实施例的图1的服务器系统的操作的流程图。
27.图18和图19是示出参照图16和图17描述的数据分割的示例的示图。
28.图20是示出根据本公开的实施例的服务器系统的示图。
29.图21是用于描述图20的服务器系统的每个存储节点处管理的散列范围的示图。
30.图22是示出根据本公开的实施例的图20的服务器系统的操作的流程图。
31.图23是示出根据本公开的实施例的图20的服务器系统的操作的流程图。
32.图24是示出应用了根据本公开的实施例的存储装置的数据中心的框图。
具体实施方式
33.下面,详细和清楚地描述本公开的实施例,以使得本领域普通技术人员可以实施本公开。
34.下面,为了便于描述,将对特定实施例进行区分和描述,但是本发明的范围不限于
此。例如,应该理解,可以将各个实施例组合,或者可以将一个实施例的一部分与另一实施例的一部分组合。
35.图1是示出根据本公开的实施例的服务器系统的框图。参照图1,服务器系统100包括客户服务器101和存储服务器102。服务器系统100可为数据中心或者数据存储中心,其对各种数据执行维护,并为数据提供各种服务。服务器系统100可为用于搜索引擎或者数据库管理的系统,或者可为在各种机构中使用的计算系统。服务器系统100可为提供云服务或预置服务的存储系统。
36.客户服务器101可以指使用关于各种数据的各种服务的用户、用户的终端或者用户的计算系统。客户服务器101可以将数据存储在存储服务器102中,或者可以读取存储在存储服务器102中的数据。
37.根据客户服务器101的请求,存储服务器102可以存储数据或者可以将存储的数据提供至客户服务器101。在实施例中,客户服务器101和存储服务器102通过计算机网络(未示出)彼此通信。例如,计算机网络可为互联网。例如,客户服务器101和存储服务器102可无线地或以有线的方式彼此通信。
38.存储服务器102包括存储节点110和多个存储装置120和130。存储节点110可以被配置为管理存储服务器102中包括的存储装置120和130。在存储节点110的控制下,多个存储装置120和130中的每一个可以存储数据或者可以输出存储在其中的数据。多个存储装置120和130中的每一个可包括诸如固态驱动(ssd)的大容量存储介质,但是本公开不限于此。存储节点110与多个存储装置120和130中的每一个可以通过基于对象的接口彼此通信。例如,不同于基于块的接口,基于对象的接口可以指基于关于对象的信息管理数据的接口。在实施例中,存储节点110可以指存储服务器102中包括的服务器控制器,但是本公开不限于此。
39.存储服务器102可为数据提供重复数据删除功能。例如,可以在客户服务器101上驱动多个对象。在实施例中,对象可以指用于管理存储在存储服务器102中的数据的信息。例如,一个对象可以指一个文件。在实施例中,可以在不同的虚拟机或不同的应用上生成多个对象,并且多个对象可以分别对应于不同的文件或不同的文件组。相反,多个对象的一部分可以对应于相同的文件。
40.在第一对象和第二对象二者均对应于第二文件的实施例中,存储服务器102可以存储对应于第一对象的第一文件和对应于第二对象的第二文件。在以上条件下,在第一文件和第二文件相同的情况下,可以存储两个相同的文件,从而造成存储服务器102的存储空间的浪费。因此,关于对应于相同的文件的多个对象,根据本公开的实施例的存储服务器102可以通过仅存储分别对应于多个对象的相同的文件之一来防止存储空间的浪费。该技术配置被称作“重复数据删除功能”。
41.存储节点110包括对象-散列(hash)表o2h。对象-散列表o2h包括关于对象标识符的信息与散列值之间的映射信息。多个存储装置120和130中的每一个包括散列-物理地址表h2p。散列-物理地址表h2p可包括分配给散列值的物理地址的信息和关于对应于散列值的参考计数的信息。存储服务器102可以基于上述的对象-散列表o2h和散列-物理地址表h2p提供以上重复数据删除功能。将参照下面的附图更完全地描述根据本公开的实施例的重复数据删除功能。
42.图2是示出图1的存储节点的框图。参照图1和图2,存储节点110包括处理器111、存储器112、散列模块113(例如,逻辑电路)、错误处理器114(例如,错误检测和校正电路)、网络接口控制器(nic)115、主机接口(i/f)电路116和对象-散列表o2h。
43.处理器111可以控制存储节点110的整体操作。存储器112可用作存储节点110的缓冲存储器、高速缓冲存储器或工作存储器。
44.散列模块113可以被配置为对数据执行散列操作,以生成散列值和输出对应于数据的散列值。例如,当从客户服务器101接收到针对对应于第一对象的第一数据的写请求时,散列模块113可以对第一数据执行散列操作,以输出第一散列值。可替换地,当从客户服务器101接收到针对对应于第二对象的第二数据的写请求时,散列模块113可以对第二数据执行散列操作,以输出第二散列值。根据本公开的实施例,第一散列值和第二散列值相同可以意味着第一数据和第二数据相同。换句话说,散列模块113的散列操作的参数可设为使得相对于相同的数据生成相同的散列值。
45.错误处理器114可以被配置为处理在存储节点110的操作中出现的各种错误。将参照下面的附图更完全地描述错误处理器114的操作。
46.网络接口控制器115可以提供与客户服务器101的通信。在客户服务器101和存储服务器102通过以太网网络彼此通信的实施例中,网络接口控制器115可以被配置为生成或者处理基于tcp/ip协议的通信请求或通信分组,但是本公开不限于此。例如,网络接口控制器115可以基于各种通信协议来操作。
47.主机接口电路116可以提供与多个存储装置120和130的通信。在实施例中,主机接口电路116可以基于各种接口(诸如,ata(高级技术附件)接口、sata(串行ata)接口、e-sata(外部sata)接口、scsi(小型计算机小型接口)、sas(串行附接scsi)接口、pci(外围组件互连)接口、pcie(pci快速)接口、nvme(nvm快速)接口、ieee 1394接口、usb(通用串行总线)接口、sd(安全数字)卡接口、mmc(多媒体卡)接口、emmc(嵌入式多媒体卡)接口、ufs(通用闪存)接口、eufs(嵌入式通用闪存)接口、cf(紧凑闪存)卡接口和kv(键值)接口)中的至少一个与多个存储装置120和130通信。
48.对象-散列表o2h包括对象标识符与散列值之间的映射信息。例如,如上所述,在对应于第一对象的第一数据的散列值是第一散列值的情况下,对象-散列表o2h包括第一对象的第一对象标识符与第一散列值之间的映射信息。在实施例中,可在存储服务器102的写操作或者擦除操作中更新通过使用对象-散列表o2h管理的信息。对象-散列表o2h可被存储在存储器112或者分离的外部存储器中。例如,如果正写入一个新对象,则可在对象-散列表o2h中生成新条目。例如,如果正删除现有对象,则可从对象-散列表o2h中删除针对现有对象的现有条目。
49.图3是示出图1的多个存储装置之一的框图。为了便于描述,将参照图3描述一个存储装置120,但是本公开不限于此。例如,其它存储装置也可具有与图3所示的结构相似的结构。
50.参照图1和图3,存储装置120包括存储控制器121、非易失性存储器(nvm)122和缓冲存储器123。响应于从存储节点110接收的请求,存储控制器121可以将数据存储在非易失性存储器122中,或者可以输出其中存储的数据。例如,该请求可为读请求或写请求。
51.存储控制器121包括处理器121a、存储器121b、散列模块121c、重复数据删除管理
器121d、闪速转换层(ftl)121e、高级加密标准(aes)引擎121f、ecc引擎121h、主机接口(i/f)电路121i、存储器接口(i/f)电路121j和散列-物理地址表h2p(下文中称作“散列-物理表”)。
52.处理器121a可以控制存储控制器121的整体操作。存储器121b可用作存储控制器121的缓冲存储器、高速缓冲存储器或者工作存储器。在实施例中,散列模块121c被配置为计算数据的散列值。在实施例中,图3的存储控制器121中包括的散列模块121c与图2的存储节点110中包括的散列模块113使用相同的散列函数。也就是说,散列模块113和121c相对于相同数据计算的散列值相同。
53.重复数据删除管理器121d可被配置为对存储在存储装置120中的数据执行重复数据删除。例如,重复数据删除管理器121d基于散列-物理表h2p搜索由不同的对象引用但是具有相同值的数据,并且仅将找到的数据之一存储在非易失性存储器122中。将参照下面的附图更完全地描述重复数据删除管理器121d的操作。
54.闪速转换层121e可以对非易失性存储器122执行各种维护操作。在实施例中,对非易失性存储器122的维护操作可包括损耗均衡操作、垃圾收集操作、坏块管理操作等。
55.在实施例中,根据本公开的实施例的闪速转换层121e在逻辑地址与物理地址之间不执行遗留(legacy)映射操作。
56.例如,可以通过散列-物理表h2p和重复数据删除管理器121d管理存储数据的物理地址。也就是说,重复数据删除管理器121d可以基于作为对数据执行散列操作的结果的散列值而非基于数据的逻辑地址来管理数据的物理地址。在这种情况下,通过闪速转换层121e在逻辑地址与物理地址之间的单独映射可为不必要的。
57.在实施例中,根据本公开的实施例的散列值对应于与逻辑地址不同的信息。例如,逻辑地址可以指示用于在逻辑上管理存储装置120和130的存储空间的位置信息。也就是说,逻辑地址是指示数据的逻辑存储位置的信息。相反,散列值是通过对数据本身执行散列操作获得的值,不是指示数据的逻辑存储位置的值。在具有相同值的第一数据和第二数据二者具有不同的逻辑存储位置的情况下,第一数据的逻辑地址和第二数据的逻辑地址可以不同。相反,即使具有相同值的第一数据和第二数据具有不同的逻辑存储位置,作为对第一数据执行散列操作的结果的散列值和作为对第二数据执行散列操作的结果的散列值也是相同的。也就是说,本公开使用的散列值对应于特征与逻辑地址的特征不同的信息。
58.aes引擎121f可以通过使用对称密钥算法对输入至存储控制器121的数据执行加密操作和解密操作中的至少一个。
59.ecc引擎121h可以对从非易失性存储器122读出的读数据执行错误检测和校正功能。例如,ecc引擎121h可以生成将被存储在非易失性存储器122中的写入数据的奇偶校验位,并且这样生成的奇偶校验位可与写入数据一起被存储在非易失性存储器122中。在从非易失性存储器122读取数据时,ecc引擎121h通过使用与读数据一起从非易失性存储器122读取的奇偶校验位来校正读取数据的错误,并且可以输出错误被校正的读数据。
60.主机接口电路121i可以与存储节点110通信。在实施例中,主机接口电路121i可以基于用于以下接口的协议中的至少一个来实施:ata(高级技术附件)接口、sata(串行ata)接口、e-sata(外部sata)接口、scsi(小型计算机小型接口)接口、sas(串行附接scsi)接口、pci(外围组件互连)接口、pcie(pci快速)接口、nvme(nvm快速)接口、ieee 1394接口、usb
(通用串行总线)接口、sd(安全数字)卡接口、mmc(多媒体卡)接口、emmc(嵌入式多媒体卡)接口、ufs(通用闪速存储)接口、eufs(嵌入式通用闪速存储)接口、cf(紧凑式闪存)卡接口和kv(键值)接口。
61.存储器接口电路121j可提供与多个非易失性存储器122的通信。存储器接口电路121j可以基于用于以下接口的协议中的至少一个来操作:切换接口和开放nand闪存接口(onfi)。
62.缓冲存储器123可被配置为存储存储装置120进行操作所需的各种信息。例如,缓冲存储器123可以存储关于散列-物理表h2p的信息。可替换地,缓冲存储器123可被配置为存储诸如重复数据删除管理器121d和闪速转换层121e的软件组件。存储在缓冲存储器123中的软件组件可被加载到存储器121b上并且可由处理器121a执行。
63.图4是示出根据本公开的实施例的图1的存储服务器的操作的流程图。参照图1和图4,在操作s11中,存储节点110从第一存储装置120接收关于第一装置大小的信息。关于第一装置大小的信息可以指关于第一存储装置120的可用存储空间的信息。在操作s12中,存储节点110从第二存储装置130接收关于第二装置大小的信息。关于第二装置大小的信息可以指关于第二存储装置130的可用存储空间的信息。
64.在操作s13中,存储节点110将散列范围分别分配至第一存储装置120和第二存储装置130。例如,存储节点110可以将具有对应于第一装置大小信息的范围的第一散列范围分配至第一存储装置120,并且可以将具有对应于第二装置大小信息的范围的第二散列范围分配至第二存储装置130。
65.在操作s14中,存储节点110将关于第一散列范围的信息发送至第一存储装置120。在操作s15中,第一存储装置120基于第一散列范围信息生成第一散列-物理表。
66.在操作s16中,存储节点110将关于第二散列范围的信息发送至第二存储装置130。在操作s17中,第二存储装置130基于第二散列范围信息生成第二散列-物理表。
67.在实施例中,第一散列范围和第二散列范围彼此不重叠。也就是说,存储节点110可以管理数据,使得具有第一散列范围中包括的散列值的数据被存储在第一存储装置120中,并且使得具有第二散列范围中包括的散列值的数据被存储在第二存储装置130中。
68.在实施例中,根据本公开的散列值对应于具有与如上所述的逻辑地址的特征不同的特征的信息,因此,将省略额外描述以避免冗余。
69.图5是用于描述通过存储装置管理的散列-物理表的图。下面,为了便于描述,将参照存储节点110与第一存储装置120之间的通信描述本公开的实施例。然而,本公开不限于此。参照图1和图5,散列-物理表h2p包括多个散列值h1至hn与多个物理地址pa1至pan之间的映射信息以及关于对应于多个散列值h1至hn的参考计数rc1至rcn的信息。
70.例如,在第一数据的散列值是第一散列值h1的情况下,第一数据可被存储在对应于第一物理地址pa1的区域中。在这种情况下,第一参考计数rc1可以指示引用对应于第一散列值h1的第一数据的对象的数量。也就是说,第一参考计数rc1是“a”可以意指引用对应于第一散列值h1的第一数据的对象的数量或者存储在第一物理地址pa1的区域中的第一数据为“a”。
71.在实施例中,在未存储对应于散列值的数据的情况下,对应于散列值的散列-物理表h2p的条目可为空。例如,在对应于第三散列值h3的数据还未存储在存储装置120中的情
况下,对应于第三散列值h3的条目可为空。
72.在实施例中,在通过第一存储装置120管理图5所示的散列-物理表h2p的情况下,散列-物理表h2p中包括的多个散列值h1至hn可被包括在通过存储节点110分配的第一散列范围中。
73.图6是示出根据本公开的实施例的图1的服务器系统的操作的流程图。为了便于讨论,将参照服务器系统100的客户服务器101、存储节点110和第一存储装置120描述本公开的实施例。然而,本公开不限于此。在实施例中,将参照图6描述来自特定对象的数据被存储在存储装置中的操作(即,写操作)。
74.参照图1和图6,在操作s101中,客户服务器101将写请求发送至存储服务器102。在实施例中,写请求可为包括对象标识符id、数据长度len和数据dt的写请求put。
75.在操作s102中,存储节点110计算散列值。例如,存储节点110可以通过对从客户服务器101接收的数据dt执行散列操作来计算散列值“h”。在实施例中,可以通过参照图2描述的散列模块113执行存储节点110的散列操作。
76.在操作s103中,存储节点110将写请求传输至第一存储装置120。在实施例中,传输至第一存储装置120的写请求可为包括对象标识符id、数据长度len、数据dt和散列值“h”的写请求puta。
77.在实施例中,即使未示出,存储节点110也可以基于计算的散列值“h”选择写请求要传输至的存储装置。例如,如参照图4的描述,存储节点110可以将散列范围分配至多个存储装置120和130中的每一个。存储节点110可以将写请求传输至对应于其中包括计算的散列值“h”的散列范围的存储装置。例如,在分配至第一存储装置120的第一散列范围中包括散列值“h”的情况下,可以将写请求传输至第一存储装置120;在分配至第二存储装置130的第二散列范围中包括散列值“h”的情况下,可以将写请求转移至第二存储装置130。
78.在操作s104中,第一存储装置120通过对接收到的数据dt执行散列操作来计算散列值“h”。在实施例中,可以通过参照图3描述的散列模块121c执行第一存储装置120的散列操作。
79.在操作s105中,第一存储装置120将计算的散列值“h”与接收到的散列值“h”进行比较。计算的散列值“h”和接收到的散列值“h”不同可以意指在接收到的信息中包括错误。在计算的散列值“h”和接收到的散列值“h”不同的情况下,在操作s106中,第一存储装置120可以将错误信息返回至存储节点110。
80.在操作s107中,存储节点110执行错误处理。在实施例中,在操作s107中的错误处理包括对数据dt再次执行散列操作的操作、将写请求(例如,puta[id,len,dt,h])再次发送至第一存储装置120的操作等。可替换地,错误处理可包括将错误信息返回至客户服务器101的操作。可以以举例的方式通过参照图2描述的错误处理器114来执行以上错误处理,但是本公开不限于此。
[0081]
当计算的散列值“h”和接收到的散列值“h”匹配时,在操作s108中,第一存储装置120确定散列-物理表h2p的对应于接收到的散列值“h”的条目是否为空。
[0082]
散列-物理表h2p的对应于接收到的散列值“h”的条目为空可以意指对应于接收到的散列值“h”的数据dt未存储在第一存储装置120中。在散列-物理表h2p的对应于接收到的散列值“h”的条目为空的情况下,在操作s109中,第一存储装置120分配物理地址pa。例如,
物理地址pa的分配可包括将物理地址分配至散列值。在操作s110中,第一存储装置120将数据dt写入对应于分配的物理地址pa的区域(即,非易失性存储器122的存储区域)中。在操作s111中,第一存储装置120更新散列-物理表h2p。在操作s112中,第一存储装置120增大相关参考计数rc。
[0083]
例如,如上所述,因为对应于接收到的散列值“h”的条目为空意味着对应于接收到的散列值“h”的数据dt未存储在第一存储装置120中,所以数据dt存储在非易失性存储器122中。因此,第一存储装置120可以分配物理地址pa,并且可以将数据dt存储在对应于分配的物理地址pa的区域中。然后,第一存储装置120可以更新散列-物理表h2p,使得对应于接收到的散列值“h”的物理地址被设为分配的物理地址。例如,与接收到的散列值“h”关联的散列-物理表h2p的条目可以被更新为分配的物理地址。然后,因为引用对应于散列值“h”的数据dt的对象的数量为“1”,所以对应于散列值“h”的参考计数rc可以增大“1”。例如,如果条目一开始是空的,则其参考计数rc可以从0增大至1。
[0084]
对应于接收到的散列值“h”的散列-物理表h2p的条目非空可以意指对应于接收到的散列值“h”的数据dt已被存储在第一存储装置120中。在散列-物理表h2p的对应于接收到的散列值“h”的条目非空的情况下,第一存储装置120可以省略操作s109至操作s111。也就是说,因为对应于接收到的散列值“h”的数据dt已经被存储在非易失性存储器122中,所以第一存储装置120可以省略存储数据dt的操作。也就是说,可以执行与数据dt关联的重复数据删除。
[0085]
在散列-物理表h2p的对应于接收到的散列值“h”的条目非空的情况下,执行操作s112。例如,已存储对应于接收到的散列值“h”的数据dt可以意指已存储引用数据dt的附加对象。因此,第一存储装置120可以增大参考计数rc。
[0086]
在操作s113中,第一存储装置120将完成信息发送至存储节点110。完成信息可以向存储节点110指示数据的写入已完成。
[0087]
在操作s114中,存储节点110更新对象-散列表o2h。例如,存储节点110可以基于在操作s101中接收到的对象标识符id与散列值“h”之间的映射信息更新对象-散列表o2h。在实施例中,可以基于对象-散列表o2h确定哪个散列值对应于对象标识符,且该操作可用于读操作中。
[0088]
在操作s115中,存储节点110可以将成功信息发送至客户服务器101。成功信息可以指示是否成功完成写操作。
[0089]
图7和图8是用于描述根据图6的流程图的操作的示图。下面,为了附图简洁和为了便于描述,省略了用于描述根据图6的流程图的写操作不需要的组件。在实施例中,为了附图简洁和为了便于描述,省略了与图6的操作s104和操作s105(即,针对接收到的请求的错误检测)关联的组件。然而,本公开不限于此。
[0090]
参照图1、图6和图7,客户服务器101将第一写请求put1发送至存储节点110。第一写请求put1可为针对对应于第一对象标识符id1的对象引用的第一数据dt1的写请求,并且可包括关于第一对象标识符id1和第一数据dt1的信息。
[0091]
存储节点110的散列模块113通过对这样接收到的第一数据dt执行散列操作来计算第一散列值h1。存储节点110的主机接口电路116将包括第一散列值h1的第一写请求put1a发送至第一存储装置120。第一写请求put1a还可以包括第一数据dt和第一对象标识
符id1。
[0092]
在实施例中,如上所述,存储节点110可以基于第一散列值h1和分别分配至多个存储装置120和130的散列范围来选择对应于包括第一散列值h1的散列范围的存储装置。存储节点110可以将包括第一散列值h1的第一写请求put1a发送至选择的存储装置。
[0093]
第一存储装置120的主机接口电路121i可以接收包括第一散列值h1的第一写请求put1a。第一存储装置120的重复数据删除管理器121d可以搜索用于第一散列值h1的散列-物理表h2p。在图7的实施例中,在散列-物理表h2p中,对应于第一散列值h1的条目可为空。在这种情况下,重复数据删除管理器121d可以分配第一物理地址pa1。在实施例中,可以通过闪速转换层(ftl)121e(参照图3)执行分配物理地址的操作。
[0094]
第一存储装置120的存储器接口电路121j可以将程序命令cmd_p、第一物理地址pa1和第一数据dt1发送至多个非易失性存储器122中的至少一个。第一物理地址pa1可以对应于分配的物理地址。多个非易失性存储器122中的至少一个可以响应于程序命令cmd_p在对应于第一物理地址pa1的区域中存储第一数据dt1。
[0095]
重复数据删除管理器121d可以基于第一散列值h1和第一物理地址pa1更新散列-物理表h2p。例如,如图7所示,重复数据删除管理器121d可以通过向散列-物理表h2p添加包括第一散列值h1和第一物理地址pa1之间的映射信息以及第一参考计数rc1的条目将散列-物理表h2p更新为第一散列-物理表h2p-1。
[0096]
在实施例中,存储节点110可以更新对象-散列表o2h。例如,存储节点110可以将第一对象标识符id1和第一散列值h1之间的映射信息加至对象-散列表o2h。例如,在将包括第一散列值h1的条目加至散列-物理表h2p之后,可以将条目加至包括第一对象标识符id1和第一散列值h1的对象-散列表o2h。
[0097]
参照图1、图6和图8,客户服务器101将第二写请求put2发送至存储节点110。第二写请求put2可为针对对应于第二对象标识符id2的对象引用的第一数据dt1的写请求,并且可包括关于第二对象标识符id2和第一数据dt1的信息。
[0098]
存储节点110的散列模块113通过对这样接收的第一数据dt1执行散列操作来计算第一散列值h1。在实施例中,对应于第一对象标识符id1的第一数据dt1可以与参照图7描述的对应于第一对象标识符id1的第一数据dt1相同。也就是说,分别对应于第一对象标识符id1和第二对象标识符id2的对象可以引用相同数据,即,第一数据dt1。在这种情况下,通过散列模块113计算的散列值与第一散列值h1相同。存储节点110的主机接口电路116将包括第一散列值h1的第二写请求put2a发送至第一存储装置120。
[0099]
第一存储装置120的主机接口电路121i接收包括第一散列值h1的第二写请求put2a。重复数据删除管理器121d基于这样接收的第一散列值h1搜索第一散列-物理表h2p-1。例如,第一散列-物理表h2p-1可包括第一散列值h1和第一物理地址pa1之间的映射关系以及第一参考计数rc1,如参照图7的描述。
[0100]
在这种情况下,重复数据删除管理器121d确定存在对应于第一散列值h1的条目,然后通过更新第一散列-物理表h2p-1来生成第二散列-物理表h2p-2,而不执行存储、编程或写入第一数据dt1的操作。例如,重复数据删除管理器121d可以在第一散列-物理表h2p-1中通过将对应于第一散列值h1的条目的第一参考计数rc1增大“1”来生成第二散列-物理表h2p-2。在图8的实施例中,第一参考计数rc1可以更新至“2”,并且这意味着两个对象(例如,
对应于第一对象标识符id1的对象和第二对象标识符id2的对象)引用与第一散列值h1关联的第一数据dt1。
[0101]
也就是说,如参照图8的描述,第一存储装置120可以执行或者省略以下操作:基于散列-物理表h2p将接收到的数据存储在非易失性存储器122中。
[0102]
在实施例中,存储节点110可以基于第二对象标识符id2与第一散列值h1之间的映射信息更新对象-散列表o2h。
[0103]
如上所述,根据本公开的实施例,存储服务器102可以基于数据dt的散列值管理数据。在这种情况下,即使多个对象引用相同数据,在存储服务器102中也仅存储一个数据。因此,可以提高对非易失性存储器或者存储装置的存储空间的利用。
[0104]
图9是示出图1的服务器系统的操作的流程图。在实施例中,将参照图9描述特定对象从存储装置中读取数据的操作(即,读操作)。参照图1和图9,在操作s201中,客户服务器101将读请求get发送至存储节点110,以执行读操作。在实施例中,读请求get包括关于对象标识符id的信息。
[0105]
在操作s202中,存储节点110在对象-散列表o2h中搜索对应于接收到的对象标识符id的散列值“h”。例如,如上所述,存储节点110的对象-散列表o2h可用于管理对象标识符id与散列值“h”之间的映射信息。存储节点110可以在对象-散列表o2h中搜索对应于接收到的对象标识符id的散列值“h”。
[0106]
在操作s203中,存储节点110将包括找到的散列值“h”的读请求geta发送至第一存储装置120。在实施例中,存储节点110基于找到的散列值“h”选择读请求将被传输至的存储装置,并且该操作类似于参照图6描述的。因此,将省略额外描述以避免冗余。读请求geta还可包括对象标识符id。
[0107]
在操作s204中,第一存储装置120确定散列-物理表h2p中是否存在对应于接收到的散列值“h”的条目。散列-物理表h2p中不存在对应于接收到的散列值“h”的条目可以意指在非易失性存储器122中未存储对应于散列值“h”的数据。在散列-物理表h2p中没有对应于接收到的散列值“h”的条目的情况下,在操作s205中,第一存储装置120可以将错误返回至存储节点110。例如,第一存储装置120可以将错误消息发送至存储节点110。在操作s206中,存储节点110执行错误处理。错误处理可包括再次发送读请求get,或者将错误消息发送至客户。
[0108]
在散列-物理表h2p中存在对应于接收到的散列值“h”的条目的情况下,在操作s207中,第一存储装置120从非易失性存储器122中读取数据dt。例如,第一存储装置120可以在散列-物理表h2p中搜索对应于散列值“h”的物理地址pa。第一存储装置120可以从对应于找到的物理地址pa的区域中读取数据dt。
[0109]
在操作s208中,第一存储装置120对读取数据dt执行散列操作,以计算散列值。在操作s209中,第一存储装置120将计算的散列值与接收到的散列值“h”进行比较。计算的散列值和接收到的散列值“h”不匹配可以意指所请求的数据和读取数据不同。在计算的散列值和接收到的散列值“h”不匹配的情况下,在操作s210中,第一存储装置120可以将错误返回至存储节点110。例如,第一存储装置120可以将错误消息发送至存储节点110。在操作s211中,存储节点110可以执行错误处理。在实施例中,即使未示出,在计算的散列值与接收到的散列值“h”不同的情况下,第一存储装置120可以基于各种读方式针对所请求的数据再
次执行读操作。
[0110]
在计算的散列值和接收到的散列值“h”匹配的情况下,在操作s212中,第一存储装置120将数据dt发送至存储节点110。在操作s213中,存储节点110将数据dt发送至客户服务器101。
[0111]
图10是用于描述根据图9的流程图的读操作的示图。下面,为了附图简洁和为了便于描述,省略了描述根据图9的流程图的读操作不需要的组件。在实施例中,为了附图简洁和为了便于描述,省略了与图9的操作s204、操作s205、操作s209和操作s210(即,错误检测)关联的组件。然而,本公开不限于此。
[0112]
参照图1、图9和图10,客户服务器101将包括第一对象标识符id1的第一读请求get1发送至存储节点110。第一读请求get1可以是用于读取对应于第一对象标识符id1的对象引用的第一数据dt1的请求。
[0113]
存储节点110的散列模块113可以在对象-散列表o2h中搜索对应于这样接收到的第一对象标识符id1的散列值“h”。例如,对象-散列表o2h可包括第一对象标识符id1和第二对象标识符id2被映射至第一散列值h1的信息。在这种情况下,散列模块113基于对象-散列表o2h选择第一散列值h1作为对应于第一对象标识符id1的散列值。存储节点110的主机接口电路116将包括第一散列值h1的第一读请求get1a发送至第一存储装置120。第一读请求get1a还可包括第一对象标识符id1。
[0114]
第一存储装置120的主机接口电路121i接收包括第一散列值h1的第一读请求get1a。重复数据删除管理器121d可以在第二散列-物理表h2p-2中搜索对应于第一散列值h1的第一物理地址pa1。关于第一物理地址pa1的信息可以传输至第一存储装置120的存储器接口电路121j。
[0115]
第一存储装置120的存储器接口电路121j将读命令cmd_r和第一物理地址pa1发送至非易失性存储器122的至少一个相关非易失性存储器。非易失性存储器122的至少一个相关非易失性存储器可以输出存储在第一物理地址pa1的区域中的第一数据dt1。
[0116]
第一存储装置120的存储器接口电路121j可以从非易失性存储器122的至少一个相关非易失性存储器接收第一数据dt1,并且可以通过主机接口电路121i和116将第一数据dt1提供至客户服务器101。
[0117]
图11是示出图1的服务器系统的操作的流程图。在实施例中,将参照图11描述从存储装置删除特定对象的数据的操作(即,删除操作)。
[0118]
参照图1和11,在操作s301中,客户服务器101可以将包括对象标识符id的删除请求del发送至存储节点110。删除请求del可为用于删除对应于对象标识符id的对象引用的数据的请求。
[0119]
在操作s302中,存储节点110在对象-散列表o2h中搜索对应于接收到的对象标识符id的散列值“h”。操作s302与上述的相似,因此,将省略额外描述以避免冗余。在操作s303中,存储节点110将包括找到的散列值“h”的删除请求dela发送至第一存储装置120。删除请求dela还可以包括对象标识符id。
[0120]
在操作s304中,第一存储装置120确定散列-物理表h2p中是否存在对应于接收到的散列值“h”的条目。散列-物理表h2p中没有对应于接收到的散列值“h”的条目可以意指对应于散列值“h”的数据未存储在非易失性存储器122中。在实施例中,在散列-物理表h2p中,
对应于散列值“h”的条目的参考计数为“0”可与不存在对应于散列值“h”的条目具有相同含义。
[0121]
在散列-物理表h2p中没有对应于接收到的散列值“h”的条目的情况下,在操作s305中,第一存储装置120可以将错误返回至存储节点110。在操作s306中,存储节点110可以执行错误处理。例如,错误处理可包括再次发送删除请求del,或者将错误消息发送至客户。
[0122]
在散列-物理表h2p中存在对应于接收到的散列值“h”的条目的情况下,在操作s307中,第一存储装置120在散列-物理表h2p中将对应于散列值“h”的条目的参考计数rc减小给定值(例如,“1”)。在实施例中,如果该减小使参考计数rc减小为0,则第一存储装置120在散列-物理表h2p中搜索对应于散列值“h”的物理地址pa,并且调度非易失性存储器122的与物理地址pa关联的位置以被删除或者将该位置标记为无效。
[0123]
在操作s308中,第一存储装置120可以将关于删除请求dela的完成信息发送至存储节点110。在操作s309中,存储节点110可以将关于删除请求del的完成信息发送至客户服务器101。
[0124]
图12是用于描述根据图11的流程图的删除操作的示图。下面,为了附图简洁和为了便于描述,省略了对于根据图12的流程图的删除操作不需要的组件。在实施例中,将省略在图11的操作s304和操作s305中进行的处理。
[0125]
参照图1、图11和图12,客户服务器101将包括第一对象标识符id1的第一删除请求del1发送至存储节点110。第一删除请求del1可为用于删除对应于第一对象标识符id1的对象引用的第一数据dt1的请求。
[0126]
存储节点110的散列模块113在对象-散列表o2h中搜索对应于接收到的第一对象标识符id1的第一散列值h1。上面描述了这一点,因此,将省略额外描述以避免冗余。存储节点110的主机接口电路116可以将包括第一散列值h1的第一删除请求del1a发送至第一存储装置120。
[0127]
第一存储装置120的主机接口电路121i接收包括第一散列值h1的第一删除请求del1a。重复数据删除管理器121d在第二散列-物理表h2p-2中搜索对应于第一散列值h1的第一参考计数rc1。重复数据删除管理器121d响应于第一删除请求del1a通过减小对应于第一散列值h1的第一参考计数rc1来将第二散列-物理表h2p-2更新为第三散列-物理表h2p-3。例如,重复数据删除管理器121d可以将第一参考计数rc1减小1。
[0128]
在实施例中,在散列-物理表h2p-2中,第一参考计数rc1为“2”意指引用与对应于第一参考计数rc1的第一散列值h1关联的第一数据dt1的对象的数量为“2”。然后,因为第一对象标识符id1的对象引用的第一数据dt1被删除了,所以引用与第一散列值h1关联的第一数据dt1的对象的数量改变为“1”。因此,第一参考计数rc1的值减小为“1”。
[0129]
在实施例中,存储节点110可以更新对象-散列表o2h。例如,如图12所示,可以通过从对应于第一散列值h1的第一对象标识符id1和第二对象标识符id2中释放删除请求所针对的第一对象标识符id1的映射来更新对象-散列表o2h。例如,可以更新对象-散列表o2h,使得包括第一对象标识符id1的条目不再映射至第一散列值h1,或者该条目被删除。
[0130]
图13是示出图1的存储装置的操作的框图。在实施例中,将参照图13描述第一存储装置120的垃圾收集操作。在实施例中,可以通过参照图3描述的闪速转换层ftl来执行图13
中的垃圾收集操作。
[0131]
参照图1、图5和图13,在操作s401中,第一存储装置120选择源块和目的地块。例如,非易失性存储器122中的每一个可包括多个存储器块。第一存储装置120的存储控制器121可以从多个存储器块中选择源块和目的地块。在实施例中,目的地块是自由存储器块。
[0132]
在操作s402中,变量“k”设为“1”。变量“k”用于描述根据本公开的实施例的迭代操作,并且不旨在限制本发明的范围。
[0133]
在操作s403中,第一存储装置120确定第k参考计数rc_k是否为“0”。例如,第k参考计数rc_k可以指示对应于源块的第k物理页的物理地址的参考计数。第一存储装置120可以确定散列-物理表h2p的第k参考计数rc_k是否为“0”。
[0134]
第k参考计数rc_k为“0”可以意指没有对象正在引用存储在与第k参考计数rc_k关联的物理页(即,源块的第k物理页)的数据。在第k参考计数rc_k为“0”的情况下,在操作s404中,第一存储装置120可以确定源块的第k物理页为无效页。
[0135]
第k参考计数rc_k不为“0”可以意指有对象正在引用存储在与第k参考计数rc_k关联的物理页(即,源块的第k物理页)的数据。在第k参考计数rc_k不为“0”的情况下,在操作s405中,第一存储装置120确定源块的第k物理页为有效页。
[0136]
在操作s406中,确定变量“k”是否是最大值。例如,确定是否对源块中包括的所有页完全执行以上有效/无效确定操作。当变量“k”非最大值时,在操作s407中,变量“k”可以增大“1”,然后,第一存储装置120执行操作s403。
[0137]
当变量“k”是最大值时,在操作s408中,第一存储装置120将确定为有效页的物理页从源块迁移至目的地块。在操作s409中,第一存储装置120可以使用源块作为自由块。在实施例中,迁移包括将确定为有效的物理页从源块迁移至目的地块和将有效页从另一个块迁移至目的地块。
[0138]
如上所述,根据本公开的实施例的存储装置可以基于参考计数检查引用数据的对象的数量。因此,可以通过存储装置提供重复数据删除功能。
[0139]
图14是示出图1的服务器系统的操作的流程图。为了便于描述,将省略与上述组件关联的额外描述,以避免冗余。参照图1和14,在操作s501中,客户服务器101将写请求put发送至存储节点110。写请求put可包括对象标识符id、数据长度len、数据dt和标志fg。在实施例中,标志fg指用于启用/禁用第一存储装置120的重复数据删除功能的信息。
[0140]
存储节点110和第一存储装置120可以执行操作s502、操作s503、操作s504、操作s505、操作s506和操作s507。除了使用标志fg之外,操作s502、操作s503、操作s504、操作s505、操作s506和操作s507与图6的操作s102、操作s103、操作s104、操作s105、操作s106和操作s107相似,因此,将省略额外描述以避免冗余。
[0141]
当操作s505的结果指示“匹配”时,在操作s508中,第一存储装置120确定在散列-物理表h2p中是否存在对应于接收到的散列值“h”的条目。当散列-物理表h2p中没有对应于接收到的散列值“h”的条目时,第一存储装置120可以执行操作s510、操作s511、操作s512和操作s513。操作s510、操作s511、操作s512和操作s513类似于图6的操作s109、操作s110、操作s111和操作s112,因此,将省略额外描述以避免冗余。
[0142]
当在散列-物理表h2p中存在对应于接收到的散列值“h”的条目时,在操作s509中,第一存储装置120确定是否设置了标志fg。例如,标志fg可以指用于禁用关于特定对象引用
的数据的重复数据删除功能的信息。也就是说,关于特定写请求,在设置了标志fg的情况下,不管数据dt是否被存储在非易失性存储器122中,对应于特定写请求的数据dt可被存储在非易失性存储器122中(即,重复数据可被存储在其中)。关于特定写请求,在未设置(例如,清除了)标志fg的情况下,如上面参照图6给出的描述,不存储相同的数据,即,不存储重复数据。
[0143]
也就是说,在未设置标志fg的情况下,第一存储装置120执行操作s513而不存储数据dt。相反,在设置了标志fg的情况下,第一存储装置120通过操作s510至操作s512存储数据dt。在这种情况下,数据dt(即,重复数据)可被存储在非易失性存储器122中。在实施例中,标志fg可按照i/o为单位设置。标志fg可以设为确保特定对象引用的数据的可靠性。
[0144]
然后,第一存储装置120、存储节点110、客户服务器101可以执行操作s515、操作s516和操作s517。操作s515、操作s516和操作s517类似于图6的操作s113、操作s114和操作s115,因此,将省略额外描述以避免冗余。
[0145]
图15是用于描述根据图14的流程图的操作的示图。下面,为了附图简洁和为了便于描述,省略了描述根据图14的流程图的写操作不需要的组件。在实施例中,为了附图简洁和为了便于描述,将描述在根据图14的流程图的操作期间禁用重复数据删除功能的配置。
[0146]
参照图1、图14和图15,客户服务器101将第二写请求put2发送至存储节点110。第二写请求put2可包括第二对象标识符id2、第一数据dt1和标志fg。
[0147]
存储节点110的散列模块113通过对第一数据dt执行散列操作来计算第一散列值h1。存储节点110的主机接口电路116将包括第一散列值h1的第二写请求put2a发送至第一存储装置120。第二写请求put2a还可以包括第二对象标识符id2、第一数据dt1和标志fg。
[0148]
第一存储装置120的主机接口电路121i可以接收包括第一散列值h1的第二写请求put2a。第一存储装置120的重复数据删除管理器121d确定在散列-物理表h2p中是否存在对应于第一散列值h1的条目。在图15的实施例中,在散列-物理表h2p中可以存在对应于第一散列值h1的条目。在这种情况下,重复数据删除管理器121d响应于设置的标志fg分配第二物理地址pa2。例如,在图8的实施例中,对于重复数据删除,在散列-物理表h2p中存在对应于特定散列值的条目的情况下,省略了针对数据的写操作。相反,在图15的实施例中,因为通过设置标志fg禁用了重复数据删除功能,所以即使在散列-物理表h2p中存在对应于特定散列值的条目,重复数据删除管理器121d也针对数据执行写操作。
[0149]
第一存储装置120的存储器接口电路121j将程序命令cmd_p、第二物理地址pa2和第一数据dt1发送至非易失性存储器122中的至少一个。非易失性存储器122中的至少一个可以将第一数据dt1存储在对应于第二物理地址pa2的区域中。在这种情况下,第一数据dt1(即,重复数据)可被存储在不同的区域中。
[0150]
重复数据删除管理器121d可以通过将对应于第一散列值h1的条目加至散列-物理表h2p-3生成第四散列-物理表h2p-4。在实施例中,添加的条目的参考计数可以替代关于对象标识符的信息。
[0151]
在实施例中,如以上的描述,存储节点110可以更新对象-散列表o2h,因此,将省略额外描述以避免冗余。
[0152]
如上所述,根据本公开的实施例,可以通过相对于特定对象引用的数据禁用重复数据删除功能来提供用于数据的可靠性的重复数据存储功能。
[0153]
图16是示出图1的服务器系统的操作的流程图。为了便于描述,将省略与上述组件关联的额外描述,以避免冗余。参照图1和16,在操作s601中,客户服务器101将包括对象标识符id、数据长度len和数据dt的写请求put发送至存储节点110。
[0154]
在实施例中,可以不同地改变从客户服务器101接收的并且一个对象引用的数据的长度。在这种情况下,可以使用计算量很大的散列模块来计算相对于各种长度的数据合适的散列值。这种散列模块可能导致性能减弱和面积增加。因此,在处理之前,从客户服务器101接收的数据可以被分割为区段数据,以具有特定参考值ref的大小。
[0155]
例如,在操作s602中,存储节点110确定接收到的数据长度len是否大于参考大小ref。当接收到的数据长度len不大于参考大小ref时,在操作s603中,存储节点110和第一存储装置120针对数据dt执行写操作。在实施例中,在操作s603中的写操作类似于参照图1至图15所述的存储节点110与第一存储装置120之间的写操作。
[0156]
当接收到的数据长度len大于参考大小ref时,在操作s604中,存储节点110通过参考大小ref分割数据dt。例如,数据dt可被分割为两条或更多条数据(例如,dt1a、dt1b、
……
、dt1n),其中每条数据小于或等于参考大小ref。然后,在操作s605a至操作s605n中,存储节点110和第一存储装置120对分割的数据分别执行写操作。在操作s605a至操作s605n中的写操作可以类似于参照图1至图15描述的存储节点110与第一存储装置120之间的写操作。在实施例中,即使在从同一数据分割数据的情况下,分割的数据也可能根据计算的散列值被存储在不同的存储装置中。例如,从第一数据分割的第一区段数据可根据计算的散列值被存储在第一存储装置120或第二存储装置130中。
[0157]
然后,在操作s607中,存储节点110更新对象-散列表o2h。例如,存储节点110可以重新配置各个分割的数据的对象标识符,可以计算各个分割的数据的散列值,并且可以基于重新配置的对象标识符与计算的散列值之间的映射关系更新对象-散列表o2h。例如,如果将散列为第一散列值的数据分割为第一数据和第二数据,则对第一数据执行的散列操作将导致第二散列值与第一散列值不同,并且对第二数据执行的散列操作将导致第三散列值与第一散列值和第二散列值不同。包括特定对象标识符和第一散列值的对象-散列表o2h中的第一条目可被包括特定对象标识符和第二散列值的第二条目和包括特定对象标识符和第三散列值的第三条目替代。在操作s608中,存储节点110可以将完成信息发送至客户服务器101。
[0158]
如上所述,在从客户服务器101接收的数据的大小大于参考大小ref的情况下,客户服务器101可以将数据分割为具有参考大小ref,或者基于参考大小ref分割数据。在这种情况下,用于计算散列值的散列模块的大小和计算量减小,因此,可以提供性能改进的服务器系统。
[0159]
图17是示出图1的服务器系统的操作的流程图。为了便于描述,将省略与上述组件关联的额外描述,以避免冗余。参照图1和17,在操作s701中,客户服务器101将包括对象标识符id的读请求get发送至存储节点110。
[0160]
在操作s702中,存储节点110确定对应于接收到的对象标识符id的数据是否被分割。例如,存储节点110可以基于参照图16描述的写方法分割特定数据,并且可以将分割的数据存储在存储装置中。
[0161]
当确定对应于接收到的对象标识符id的数据未被分割时,在操作s703中,存储节
点110和第一存储装置120执行读操作。读操作可以与参照图1至图15描述的读操作相似,因此,将省略额外描述以避免冗余。
[0162]
当确定对应于接收到的对象标识符id的数据被分割时,在操作s704中,存储节点110基于相对于对象标识符id重新配置的对象标识符搜索散列值。在操作s705a至操作s705n中,存储节点110和第一存储装置120分别对找到的散列值ha至hn执行读操作。在操作s705a至操作s705n中的读操作可以与参照图1至图15描述的读操作相似,因此将省略额外描述以避免冗余。
[0163]
在操作s706中,存储节点110合并通过读操作接收的多个数据。例如,分割的数据的读片段可以组合以生成合并的数据。在操作s707中,存储节点110可以将合并的数据作为对应于对象标识符id的数据dt发送至客户服务器101。
[0164]
图18和19是示出参照图16和17描述的数据分割的示例的示图。参照图18和19,对应于第一对象标识符id1的数据可以具有10kb的大小。在参考大小ref为4kb的情况下,对应于第一对象标识符id1的数据被分割为以4kb的单位,并且将对象标识符id1a、id1b和id1c分别分配至分割的数据(或区段数据)。例如,当数据大小不能被参考大小ref整除时,数据可以分割为完整的4kb单元和小于4kb的剩下的部分。
[0165]
在实施例中,分割数据的方式被确定,使得分割的数据的大小小于参考大小。例如,如图18所示,对应于“id1a”的分割的数据可具有4kb的大小,对应于“id1b”的分割的数据可具有4kb的大小,并且数据对应于“id1c”的分割的数据可具有2kb的大小。
[0166]
相反,分割数据的方式被确定,使得分割的数据的大小等于参考大小。例如,如图19所示,分别对应于“id1a”、“id1b”和“id1c
’”
的分割的数据可具有4kb。在这种情况下,对应于“id1c
’”
的分割的数据的一部分(即,2kb)可为实际数据,其其余部分(即,2kb)可为伪数据或填充数据。例如,对应于第一对象标识符id1的数据的大小可以通过附加伪数据或填充数据使得结果可被参考大小ref整除来增大。
[0167]
如上所述,在数据大小可变的通信环境中,为减轻散列操作的负担,根据本公开的存储节点110可以基于参考大小ref分割和管理数据。
[0168]
图20是示出根据本公开的实施例的服务器系统的示图。图21是用于描述在图20的服务器系统的各个存储节点处管理的散列范围的示图。参照图20,服务器系统200可包括客户服务器201和多个存储服务器202、203和204。客户服务器201和多个存储服务器202、203和204可以通过网络nt彼此通信。
[0169]
多个存储服务器202、203和204可包括多个存储节点211、212和213以及多个存储装置221、222、223、224、225和226。多个存储服务器202、203和204的组件(例如,多个存储节点211、212和213和多个存储装置221、222、223、224、225和226)与上述那些组件相似,因此,将省略额外描述以避免冗余。
[0170]
在实施例中,在图20中,客户服务器的数量、存储服务器的数量、存储节点的数量和存储装置的数量是示例,并且客户服务器的数量、存储服务器的数量、存储节点的数量和存储装置的数量可以不同地改变(例如,可增加/减少)。
[0171]
存储节点211、212和213可被配置为管理对应于不同对象标识符的数据。例如,客户服务器201可以通过第一存储节点211访问对应于第一对象标识符的数据,可以通过第二存储节点212访问对应于第二对象标识符的数据,并且可以通过第三存储节点213访问对应
于第三对象标识符的数据。
[0172]
第一存储服务器202中包括的第一存储节点211可被配置为管理存储装置221和222。第二存储服务器203中包括的第二存储节点212可被配置为管理存储装置223和224。第三存储服务器204中包括的第三存储节点213可被配置为管理存储装置225和226。
[0173]
在实施例中,第一存储节点211可被配置为访问通过与第一存储节点211不同的第二存储节点212和第三存储节点213管理的存储装置223、224、225和226。例如,第一存储节点211可以经网络nt或者任何其它单独的通信接口访问通过第二存储节点212和第三存储节点213管理的存储装置223、224、225和226。类似地,第二存储节点212可以经网络nt或者任何其它单独的通信接口访问通过第一存储节点211和第三存储节点213管理的存储装置221、222、225和226。类似地,第三存储节点213可以经网络nt或者任何其它单独的通信接口访问通过第一存储节点211和第二存储节点212管理的存储装置221、222、223和224。
[0174]
在实施例中,第一存储节点至第三存储节点211、212和213被配置为管理存储装置221至226的散列范围。例如,如图21所示,第一存储节点211管理分别对应于存储装置221和222的散列范围hr_11和hr_12,第二存储节点212管理分别对应于存储装置223和224的散列范围hr_21和hr_22,第三存储节点213管理分别对应于存储装置225和226的散列范围hr_31和hr_32。在实施例中,存储装置221至226的散列范围hr_11、hr_12、hr_21、hr_22、hr_31和hr_32不同。例如,在实施例中,散列范围hr_11、hr_12、hr_21、hr_22、hr_31和hr_32彼此不重叠。
[0175]
根据本公开的实施例,服务器系统200将重复数据删除功能提供至引用相同数据的多个对象。例如,如上所述,假设客户服务器201通过第一存储节点211访问与第一对象标识符关联的数据,通过第二存储节点212访问与第二对象标识符关联的数据,并且通过第三存储节点213访问与第三对象标识符关联的数据。
[0176]
在实施例中,在写操作中,客户服务器201将包括第一对象标识符id1和第一数据dt1的写请求发送至第一存储节点211。第一存储节点211通过对第一数据dt执行散列操作来计算第一散列值h1。第一存储节点211确定第一散列值h1所属的散列范围。第一存储节点211可以将包括第一数据dt1和第一散列值h1的写请求发送至具有第一散列值h1所属的散列范围的存储装置。例如,在第一散列值h1被包括在通过第二存储节点212管理的存储装置223的散列范围hr_21中的情况下,第一存储节点211可以将包括第一数据dt1和第一散列值h1的写请求发送至存储装置223。第一存储节点211可以基于第一对象标识符id1和第一散列值h1更新对象-散列表o2h。
[0177]
在实施例中,在读操作中,客户服务器201将包括第一对象标识符id1的读请求发送至第一存储节点211。第一存储节点211在对象-散列表o2h中搜索对应于第一对象标识符id1的第一散列值h1。如在参照写操作提供的以上描述中,第一存储节点211可以确定第一散列值h1所属的散列范围,并且可以将包括第一散列值h1的读请求发送至具有第一散列值h1所属的散列范围的存储装置。
[0178]
也就是说,客户服务器201可以基于对象标识符分类和管理多个存储节点211至213,并且多个存储节点211至213可以基于数据的散列值管理存储数据的存储装置。如上所述,存储装置可以基于散列值和参考计数提供重复数据删除功能。
[0179]
图22是示出图20的服务器系统的操作的流程图。为了便于描述,将省略与上述组
件关联的额外描述,以避免冗余。参照图20和22,在操作s801中,客户服务器201将包括第一对象标识符id、数据长度len和第一数据dt的写请求put发送至第一存储节点211。例如,客户服务器201可以基于对象标识符选择将被访问的存储服务器或者存储节点。例如,可以从对象标识符中确定散列值,并且与包括散列值的散列范围关联的存储节点可被为选择的存储节点。
[0180]
在操作s802中,第一存储节点211对第一数据dt1执行散列操作,以计算第一散列值h1。在操作s803中,第一存储节点211确定第一散列值h1是否被包括在第一存储节点211自身管理的散列范围中。例如,如参照图21的描述,第一存储节点211管理的散列范围为“hr_11”和“hr_12”。第一存储节点211可以确定第一散列值h1是否被包括在散列范围hr_11和hr_12中。
[0181]
当第一散列值h1被包括在第一存储节点211管理的散列范围中时,在操作s804中,第一存储节点211和存储装置221或222执行写操作。
[0182]
当第一散列值h1未被包括在通过第一存储节点211管理的散列范围hr_11和hr_12中时,在操作s805中,第一存储节点211确定第一散列值h1所属的散列范围。例如,在第一散列值h1被包括在散列范围hr_21或散列范围hr_22中的情况下,第一存储节点211确定第一散列值h1对应于第二存储节点212。在第一散列值h1被包括在散列范围hr_31或散列范围hr_32中的情况下,第一存储节点211可以确定第一散列值h1对应于第三存储节点213。
[0183]
当确定第一散列值h1被包括在第二存储节点212管理的散列范围hr21或hr22中时,在操作s806中,第一存储节点211将写请求put发送至第二存储节点212。在操作s807中,第二存储节点212计算第一散列值h1。在操作s808中,第二存储节点212和存储装置223或224执行写操作。
[0184]
当确定第一散列值h1被包括在第三存储节点213管理的散列范围hr31或hr32中时,在操作s809中,第一存储节点211将写请求put发送至第三存储节点213。在操作s810中,第三存储节点213计算第一散列值h1。在操作s811中,第三存储节点213和存储装置225或226执行写操作。
[0185]
在实施例中,在操作s804中的写操作、在操作s808中的写操作以及在操作s811中的写操作类似于参照图1至图15描述的写操作(即,使用散列值和参考计数提供重复数据删除功能的写操作),因此,将省略额外描述以避免冗余。
[0186]
在完成在s808操作中的写操作之后,在操作s812中,第二存储节点212可以将完成信息发送至第一存储节点211。在完成在操作s811中的写操作之后,在操作s813中,第三存储节点213可以将完成信息发送至第一存储节点211。
[0187]
当已经完成在操作s804中的写操作或已经接收到在操作s812或操作s813中发送的完成信息时,在操作s814中,第一存储节点211可以将完成信息发送至客户服务器201。
[0188]
在操作s815中,第一存储节点211更新对象-散列表o2h。例如,第一存储节点211可以基于第一对象标识符id1与第一散列值h1之间的映射信息更新对象-散列表o2h。在实施例中,然后,在第一存储节点211接收针对第一对象标识符id1的读请求的情况下,第一存储节点211可以在更新的对象-散列表o2h中搜索第一散列值h1,并且可以基于找到的第一散列值h1执行读操作。
[0189]
图23是示出图20的服务器系统的操作的流程图。为了便于描述,将省略与上述组
件关联的额外描述,以避免冗余。参照图20和23,在操作s901中,客户服务器201将包括第一对象标识符id1的读请求get发送至第一存储节点211。
[0190]
在操作s902中,第一存储节点211在对象-散列表o2h中搜索对应于第一对象标识符id1的第一散列值h1。
[0191]
在操作s903中,第一存储节点211确定第一散列值h1是否被包括在第一存储节点211自身管理的散列范围中。操作s903与图22的操作s803相似,因此将省略额外描述以避免冗余。
[0192]
当第一散列值h1被包括在通过第一存储节点211管理的散列范围中时,在操作s904中,第一存储节点211和第一存储装置221或222执行读操作。
[0193]
当第一散列值h1未被包括在通过第一存储节点211管理的散列范围hr_11和hr_12中时,在操作s905中,第一存储节点211确定第一散列值h1所属的散列范围。操作s905类似于图22的操作s805,因此,将省略额外描述以避免冗余。
[0194]
当确定第一散列值h1被包括在第二存储节点212的散列范围hr21或hr22中时,在操作s906中,第一存储节点211将包括第一散列值h1的读请求geta发送至第二存储节点212。在操作s907中,第二存储节点212和存储装置223或224执行读操作。
[0195]
当确定第一散列值h1被包括在第三存储节点213的散列范围hr31或hr32中时,在操作s908中,第一存储节点211将包括第一散列值h1的读请求geta发送至第三存储节点213。在操作s909中,第三存储节点213和存储装置225或226执行读操作。
[0196]
在实施例中,在操作s904中的读操作、在操作s907中的读操作以及在操作s909中的读操作类似于参照图1至图15描述的读操作(即,利用散列值的读操作),因此,将省略额外描述以避免冗余。
[0197]
在完成在操作s907中的读操作之后,在操作s910中,第二存储节点212将读数据(即,第一数据dt1)发送至第一存储节点211。在完成在操作s909中的读操作之后,在操作s911中,第三存储装置213将读数据(即,第一数据dt1)发送至第一存储节点211。
[0198]
当完成在操作s904中的读操作或接收到在操作s910或操作s911中读取的第一数据时,在操作s912中,第一存储节点211将第一数据dt1发送至客户服务器201。
[0199]
虽然已经描述了客户服务器201通过第一存储节点211执行与第一对象标识符id1关联的访问(例如,写/读操作)的实施例,但是本发明的范围不限于此。例如,在客户服务器201通过第二存储节点212执行与第二对象标识符id2关联的访问的情况下,客户服务器201可以将对应于第二对象标识符id2的请求发送至第二存储节点212。第二存储节点212可以基于第二散列值(即,就写操作而言,第二散列值即第二数据的散列值;就读操作而言,第二散列值是与第二对象标识符id2关联的散列值)选择待访问的存储节点或者存储装置。
[0200]
参照图20和图22描述了特定存储节点访问属于另一存储节点的存储装置的实施例,但是本公开不限于此。例如,特定存储节点可以访问属于另一存储节点的存储装置而不用经过其它存储节点。可替换地,特定存储节点可以通过其它存储节点的一部分组件(例如,开关)访问属于另一存储节点的存储装置。
[0201]
如上所述,根据本公开的至少一个实施例,提供了能够基于数据的散列值实施重复数据删除功能的存储装置和存储服务器。在这种情况下,存储节点管理的信息量可以减少,并且存储节点的性能可以提高。
[0202]
图24是示出应用了根据本公开的实施例的存储装置的数据中心的框图。作为维护多种数据并且提供关于数据的各种服务的设施的数据中心2000可被称作“数据存储中心”。数据中心2000可为用于搜索引擎或数据库管理的系统,或者可为各种机构中使用的计算系统。数据中心2000可包括多个应用服务器2100_1至2100_n和多个存储服务器2200_1至2200_m。应用服务器2100_1至2100_n的数量和存储服务器2200_1至2200_m的数量可以不同地改变或修改。
[0203]
下面,为了便于描述,将描述第一存储服务器2200_1的示例。其余存储服务器2200_2至2200_m和多个应用服务器2100_1至2100_n中的每一个可具有与第一存储服务器2200_1的结构相似的结构。
[0204]
第一存储服务器2200_1可包括处理器2210_1、存储器2220_1、开关2230_1、网络接口连接器(nic)2240_1和存储装置2250_1。处理器2210_1可以执行第一存储服务器2200_1的整体操作。存储器2220_1可以在处理器2210_1的控制下存储各种指令或数据。处理器2210_1可被配置为访问存储器2220_1,以执行各种指令或处理数据。在实施例中,存储器2220_1可包括各种存储器装置(诸如ddr sdram(双数据速率同步dram)、hbm(高带宽存储器)、hmc(混合存储器立方)、dimm(双列直插式存储器模块)、optane dimm和nvdimm(非易失性dimm))中的至少一个。
[0205]
在实施例中,第一存储服务器2200_1中包括的处理器2210_1的数量和第一存储服务器2200_1中包括的存储器2220_1的数量可以不同地改变或修改。在实施例中,第一存储服务器2200_1中包括的处理器2210_1和存储器2220_1可以构成处理器-存储器对,并且第一存储服务器2200_1中包括的处理器-存储器对的数量可以不同地改变或修改。在实施例中,第一存储服务器2200_1中包括的处理器2210_1的数量和第一存储服务器2200_1中包括的存储器2220_1的数量可以不同。处理器2210_1可包括单核处理器或者多核处理器。
[0206]
在处理器2210_1的控制下,开关2230_1可以选择性地将处理器2210_1与存储装置2250_1连接,或可以选择性地将nic 2240_1与存储装置2250_1连接。
[0207]
nic 2240_1可以将第一存储服务器2200_1与网络nt连接。nic2240_1可包括网络接口卡、网络适配器等。nic 2240_1可以通过有线接口、无线接口、蓝牙接口或者光学接口与网络nt连接。nic 2240_1可包括内部存储器、dsp、主机总线接口等,并且可以通过主机总线接口与处理器2210_1或开关2230_1连接。主机总线接口可包括各种接口(诸如ata(高级技术附接)接口、sata(串行ata)接口、e-sata(外部sata)接口、scsi(小型计算机小型接口)、sas(串行附接scsi)接口、pci(外围组件互连)接口、pcie(pci快速)接口、nvme(nvm快速)接口、ieee 1394接口、usb(通用串行总线)接口、sd(安全数字)卡接口、mmc(多媒体卡)接口、emmc(嵌入式多媒体卡)接口、ufs(通用闪存)接口、eufs(嵌入式通用闪存)接口和cf(紧凑闪存)卡接口)中的至少一个。在实施例中,nic 2240_1可以与处理器2210_1、开关2230_1和存储装置2250_1中的至少一个集成。
[0208]
在处理器2210_1的控制下,存储装置2250_1可以存储数据或者可以输出存储的数据。存储装置2250_1可包括控制器2251_1、非易失性存储器2252_1、dram 2253_1和接口2254_1。在实施例中,存储装置2250_1还可包括用于安全或隐私的安全元件(se)。
[0209]
控制器2251_1可以控制存储装置2250_1的整体操作。在实施例中,控制器2251_1可为sram。响应于通过接口2254_1接收的信号,控制器2251_1可以将数据存储在非易失性
存储器2252_1中或可以输出存储在非易失性存储器2252_1中的数据。在实施例中,控制器2251_1可被配置为基于切换接口或onfi控制非易失性存储器2252_1。
[0210]
dram 2253_1可被配置为临时存储将被存储在非易失性存储器2252_1中的数据或从非易失性存储器2252_1读取的数据。dram2253_1可被配置为存储控制器2251_1运行所需的各种数据(例如,元数据和映射数据)。接口2254_1可以提供控制器2251_1与处理器2210_1、开关2230_1或者nic 2240_1之间的物理连接。在实施例中,接口可以实施为支持允许存储装置2250_1通过专用线缆的直接连接的das(直接附接存储)方式。在实施例中,接口2254_1可以通过主机接口总线基于上述各种接口中的至少一个来实施。
[0211]
提供第一存储服务器2200_1的以上组件作为示例,并且本公开不限于此。第一存储服务器2200_1的以上组件可以应用于其余存储服务器2200_2至2200_m中的每一个或多个应用服务器2100_1至2100_n中的每一个。在实施例中,可以选择性地省略应用服务器2100_1至2100_n的存储装置2150_1至2150_n。
[0212]
多个应用服务器2100_1至2100_n和多个存储服务器2200_1至2200_m可以经网络nt彼此通信。网络nt可以通过使用光纤通道(fc)、以太网等来实施。在这种情况下,fc可为在高速数据传输中使用的介质,并且可以使用提供高性能/高可用性的光学开关。根据网络nt的访问方式,存储服务器2200_1至2200_m可以设为文件存储、块存储或对象存储。
[0213]
在实施例中,网络nt可为诸如存储区域网络(san)的存储专用网络。例如,san可为使用fc网络并且根据fc协议(fcp)实施的fc-san。可替换地,san可为使用tcp/ip网络并且根据iscsi(或者通过tcp/ip的scsi或互联网scsi)协议实施的ip-san。在实施例中,网络nt可为诸如tcp/ip网络的通用网络。例如,网络nt可根据诸如fcoe(通过以太网的fc)、nas(网络附接存储)或者nvme-of(通过光纤的nvme)的协议来实施。
[0214]
在实施例中,多个应用服务器2100_1至2100_n中的至少一个可被配置为通过网络nt访问其余应用服务器中的至少一个或多个存储服务器2200_1至2200_m中的至少一个。
[0215]
例如,第一应用服务器2100_1可以通过网络nt将用户或客户请求的数据存储在多个存储服务器2200_1至2200_m中的至少一个中。可替换地,第一应用服务器2100_1可以通过网络nt从多个存储服务器2200_1至2200_m中的至少一个获得用户或客户请求的数据。在这种情况下,第一应用服务器2100_1可通过网络服务器、数据库管理系统(dbms)等来实施。
[0216]
也就是说,第一应用服务器2100_1的处理器2110_1可以经网络nt访问另一应用服务器(例如,2100_n)的存储器(例如,2120_n)或者存储装置(例如,2150_n)。可替换地,第一应用服务器2100_1的处理器2110_1可以经网络nt访问第一存储服务器2200_1的存储器2220_1或存储装置2250_1。这样,第一应用服务器2100_1可以对存储在其余应用服务器2100_2至2100_n或多个存储服务器2200_1至2200_m中的数据执行各种操作。例如,第一应用服务器2100_1可以执行或发出用于在其余应用服务器2100_2至2100_n之间或在多个存储服务器2200_1至2200_m之间移动或复制数据的指令。在这种情况下,可通过存储服务器2200_1至2200_m的存储器2220_1至2220_m或直接地将作为移动或复制的目标的数据从存储服务器2200_1至2200_m的存储装置2250_1至2250_m移动至应用服务器2100_1至2100_n的存储器2120_1至2120_n。通过网络nt传输的数据可为数据为安全或隐私而加密的数据。
[0217]
在实施例中,存储服务器2200_1至2200_m可为参照图1至图24描述的存储服务器,存储服务器2200_1至2200_m中包括的存储装置2250_1至2250_m可为参照图1至图24描述的
存储装置。也就是说,图25所示的数据中心2000的存储服务器2200_1至2200_m或存储装置2250_1至2250_m可被配置为支持参照图1至图23描述的写操作、读操作和删除操作。
[0218]
根据本公开,提供了具有改进的性能、降低的成本的支持重复数据删除功能的存储装置、存储装置的操作方法和存储服务器的操作方法。
[0219]
虽然已经参照本公开的实施例描述了本公开,但是本领域普通技术人员应该清楚,在不脱离本公开的精神和范围的情况下,可以对本公开作出各种改变和修改。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献