CN116893877A - 主机装置的操作方法及存储装置的操作方法 - Google Patents
主机装置的操作方法及存储装置的操作方法 Download PDFInfo
- Publication number
- CN116893877A CN116893877A CN202310349475.0A CN202310349475A CN116893877A CN 116893877 A CN116893877 A CN 116893877A CN 202310349475 A CN202310349475 A CN 202310349475A CN 116893877 A CN116893877 A CN 116893877A
- Authority
- CN
- China
- Prior art keywords
- dirty
- information
- data
- bitmap
- host device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000013508 migration Methods 0.000 claims abstract description 125
- 230000005012 migration Effects 0.000 claims abstract description 125
- 238000013507 mapping Methods 0.000 claims abstract description 47
- 230000004044 response Effects 0.000 claims description 25
- 238000011017 operating method Methods 0.000 abstract description 4
- 230000015654 memory Effects 0.000 description 65
- 238000010586 diagram Methods 0.000 description 24
- 238000012546 transfer Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 101000711846 Homo sapiens Transcription factor SOX-9 Proteins 0.000 description 4
- 101100232371 Hordeum vulgare IAT3 gene Proteins 0.000 description 4
- 101150031117 MGR1 gene Proteins 0.000 description 4
- 101150091713 MGR2 gene Proteins 0.000 description 4
- 101100130286 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) MGR3 gene Proteins 0.000 description 4
- 102100034204 Transcription factor SOX-9 Human genes 0.000 description 4
- 230000007423 decrease Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 208000033606 susceptibility to 4 migraine without aura Diseases 0.000 description 4
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了主机装置的操作方法及存储装置的操作方法。被配置为控制存储装置的主机装置的操作方法包括:从所述存储装置接收初始映射信息;基于所述初始映射信息执行初始迁移,使得存在于所述存储装置的第一区域中的源数据迁移到第二区域;从所述存储装置接收关于所述源数据的第一脏数据的第一脏信息;基于所述第一脏信息对所述第一脏数据执行第一迁移;从所述存储装置接收关于所述源数据的第二脏数据的第二脏信息;以及基于所述第二脏信息对所述第二脏数据执行第二迁移,并且所述第一脏信息的大小不同于所述第二脏信息的大小。
Description
相关申请的交叉引用
本申请要求在韩国知识产权局于2022年4月7日提交的韩国专利申请No.10-2022-0043456的优先权以及于2022年6月16日提交的韩国专利申请No.10-2022-0073186的优先权,所述韩国专利申请的公开内容通过引用整体并于本文。
技术领域
在本文描述的本发明构思的一些示例实施例涉及计算机系统,更具体地涉及主机装置的操作方法和存储装置的操作方法。
背景技术
计算机系统被配置为通过使用存储在存储装置中的数据来执行各种计算或驱动各种程序。在计算机系统中,为了高效的数据管理,存储在存储装置中的数据可以被复制,或者可以迁移到存储装置的任何其他区域或任何其他存储装置。作为示例,在计算机系统上驱动的虚拟机的迁移用于将物理服务器的虚拟机复制到任何其他物理服务器,以用于服务器整合和系统恢复的目的。
通常,在虚拟机的迁移期间,因为不应当由于虚拟机的操作而改变(或修改)数据,所以可以在暂停虚拟机的操作的状态下执行迁移。相比之下,近来的实时迁移支持在不暂停虚拟机的情况下的虚拟机的迁移。在这种情况下,在迁移期间,需要使由于虚拟机的操作而改变的数据(例如,脏数据)为最新。
发明内容
本发明构思的一些示例实施例提供一种具有改进性能的主机装置的操作方法以及一种存储装置的操作方法。
根据一些示例实施例,一种被配置为控制存储装置的主机装置的操作方法包括:从所述存储装置接收初始映射信息;基于所述初始映射信息执行初始迁移,使得存在于所述存储装置的第一区域中的源数据迁移到第二区域;从所述存储装置接收关于所述源数据的第一脏数据的第一脏信息;基于所述第一脏信息对所述第一脏数据执行第一迁移;从所述存储装置接收关于所述源数据的第二脏数据的第二脏信息;以及基于所述第二脏信息对所述第二脏数据执行第二迁移,并且所述第一脏信息的大小不同于所述第二脏信息的大小。
根据一些示例实施例,一种被配置为在主机装置的控制下进行操作的存储装置的操作方法包括:向所述主机装置发送关于源数据的初始映射信息;在所述主机装置的控制下执行初始迁移,使得所述源数据从第一区域迁移到第二区域;在发送所述初始映射信息以及执行所述初始迁移时,通过使用第一位图来管理关于从所述源数据生成的第一脏数据的信息;基于所述第一位图生成第一脏信息,并且向所述主机装置发送所述第一脏信息;在所述主机装置的控制下对所述第一脏数据执行第一迁移;在生成所述第一脏信息、发送所述第一脏信息以及执行所述第一迁移时,通过使用第二位图来管理关于从所述源数据生成的第二脏数据的信息;基于所述第二位图生成第二脏信息,并且向所述主机装置发送所述第二脏信息;以及,在所述主机装置的控制下对所述第二脏数据执行第二迁移,并且所述第一脏信息的大小不同于所述第二脏信息的大小。
根据一些示例实施例,一种被配置为控制存储装置的主机装置的操作方法包括:从所述存储装置接收初始映射信息;基于所述初始映射信息执行初始迁移,使得存在于所述存储装置的第一区域中的源数据迁移到第二区域;基于与所述源数据的第一脏数据相关联的第一位图对所述源数据的第一脏数据执行第一迁移;将所述第一脏数据的数量与参考值进行比较;以及依据所述比较的结果,基于与所述源数据的第二脏数据相关联的第二位图和基于所述第二位图的第二脏信息中的一者执行第二迁移。所述第一位图的大小等于所述第二位图的大小,并且所述第二脏信息的大小小于所述第一位图的大小和所述第二位图的大小中的每个。
附图说明
通过参考附图详细地描述本发明构思的一些示例实施例,本发明构思的以上以及其他目的和特征将变得清楚。
图1是示出根据本发明构思的一些示例实施例的存储系统的框图。
图2是示出图1的存储系统的软件层的图。
图3是用于描述图1的存储系统的迁移(或实时迁移)的流程图。
图4是用于描述依据图3的流程图的迭代操作从存储装置向主机装置提供的位图的图。
图5是示出图1的存储系统的操作的流程图。
图6是示出图5的操作S232的流程图,即,发送和接收具有可变粒度的脏数据的操作的流程图。
图7是用于描述根据图6的流程的操作的图。
图8是用于描述图1的脏管理器的操作的概念图。
图9是用于描述根据本发明构思的一些示例实施例的存储系统的操作的定时图。
图10示出用于描述根据本发明构思的一些示例实施例的存储系统的操作的图。
图11是示出图1的存储系统的操作方法的流程图。
图12是示出根据本发明构思的一些示例实施例的交换脏信息的操作的流程图。
图13是用于描述根据图12的流程图的操作中的脏地址的图。
图14是示出根据本发明构思的一些示例实施例的交换脏信息的操作的流程图。
图15A至图15C是示出存储系统的各种拓扑的框图。
图16是示出根据本发明构思的一些示例实施例的主机装置-存储系统的框图。
图17是示出根据本发明构思的一些示例实施例的应用了存储器件的数据中心的图。
具体实施方式
在下面,将以使得本领域普通技术人员容易地实现本发明构思的程度来详细地且清楚地描述本发明构思的一些示例实施例。
图1是示出根据本发明构思的一些示例实施例的存储系统的框图。参考图1,存储系统100可以包括主机装置110和/或存储装置120。在一些示例实施例中,存储系统100可以是诸如计算机、笔记本、服务器、工作站、便携式通信终端、个人数字助理(PDA)、便携式多媒体播放器(PMP)、智能电话和/或可穿戴装置等的计算系统。
主机装置110可以将数据存储在存储装置120中,或者可以读取存储在存储装置120中的数据。例如,主机装置110可以向存储装置120发送写入命令和写入数据以用于将数据存储在存储装置120中的目的。或者,为了读取存储在存储装置120中的数据,主机装置110可以向存储装置120发送读取命令并且可以从存储装置120接收数据。在一些示例实施例中,主机装置110和存储装置120可以基于给定接口相互通信。在一些示例实施例中,给定接口可以支持诸如以下的各种接口中的至少一者:通用串行总线(USB)接口、小型计算机系统接口(SCSI)、快速外围组件互联(PCI)(PCIe)接口、先进技术附件(ATA)接口、并行ATA(PATA)接口、串行ATA(SATA)接口、串行连接SCSI(SAS)接口、通用闪存(UFS)接口、快速非易失性存储器(NVMe)接口和/或计算快速链路(CXL)接口。
存储装置120可以在主机装置110的控制下进行操作。例如,存储装置120可以包括存储控制器121和/或非易失性存储器件122。存储控制器121可以响应于从主机装置110接收到的写入命令,将从主机装置110接收到的写入数据存储在非易失性存储器件122中。存储控制器121可以响应于从主机装置110接收到的读取命令,向主机装置110发送从非易失性存储器件122读取的数据。
在一些示例实施例中,主机装置110可以执行实时迁移。实时迁移可以指:在不停止驱动在主机装置110上驱动的第一虚拟机的情况下,将与第一虚拟机相关联的数据移动到第二虚拟机的操作。
例如,主机装置110可以被配置为驱动多个虚拟机。多个虚拟机可以彼此独立地在主机装置110上被驱动,并且与多个虚拟机中的每个虚拟机或者一个或更多个虚拟机相关联的数据可以被存储在存储装置120中。在该情况下,主机装置110可以执行迁移,使得与多个虚拟机中的第一虚拟机(例如,源虚拟机)相关联的数据被移动到第二虚拟机(例如,目标虚拟机)。在该情况下,主机装置110可以在不停止驱动第一虚拟机的情况下执行上述迁移。
在一些示例实施例中,当第一虚拟机(例如,源虚拟机)的操作不停止时,在执行迁移时由第一虚拟机管理的数据可能改变(例如,可以生成脏数据)。在该情况下,主机装置110可以基于关于脏数据的信息迭代地执行上述迁移,直到脏数据的数量小于或等于阈值TH。当脏数据的数量小于或等于阈值TH时,主机装置110可以停止第一虚拟机的操作,并且可以执行迁移,使得最终的脏数据被移动到第二虚拟机。主机装置110可以通过以上处理完成迁移。
在一些示例实施例中,主机装置110可以包括迁移管理器111。可以以被配置为管理上述实时迁移操作的硬件、软件或其组合的形式,来实现迁移管理器111。将参考以下附图更全面地描述迁移管理器111的操作。
在一些示例实施例中,存储控制器121可以包括脏管理器121a。脏管理器121a可以被配置为管理在实时迁移期间生成的关于脏数据的信息。将参考以下附图更全面地描述脏管理器121a的操作。
在一些示例实施例中,为了在实时迁移中检查脏数据,主机装置110可以从存储装置120请求关于脏数据的信息。在一些示例实施例中,在主机装置110和存储装置120之间交换的关于脏数据的信息可以具有可变粒度。在这种情况下,与关于脏数据的信息具有固定粒度的情况相比较,交换关于脏数据的信息所必需或充分的时间或延时可以减少。因此,可以改进存储系统100的性能。
图2是示出图1的存储系统的软件层的图。参考图2,存储系统100可以包括主机装置110和/或存储装置120。
操作系统OS、虚拟机监视器(hypervisor)HP、第一虚拟机VM1和/或第二虚拟机VM2可以在主机装置110上被驱动。操作系统OS可以是系统软件,其被配置为控制包括在主机装置110中的各种硬件和/或资源,以驱动各种程序和/或支持各种服务。虚拟机监视器HP可以是被配置为驱动在主机装置110中被驱动的第一虚拟机VM1和/或第二虚拟机VM2的逻辑平台。
第一虚拟机VM1和/或第二虚拟机VM2中的每一者或者一个或更多个可以在主机装置110中被驱动。在一些示例实施例中,与第一虚拟机VM1相关联的数据可以被存储在存储装置120的第一命名空间NS1中,和/或与第二虚拟机VM2相关联的数据可以被存储在存储装置120的第二命名空间NS2中。命名空间可以指存储装置120的逻辑上或物理上分类的存储区域。也就是说,由第一虚拟机VM1管理的数据可以在逻辑上或物理上与由第二虚拟机VM2管理的数据相区分。
主机装置110的虚拟机监视器HP可以将由第一虚拟机VM1管理的数据复制到与第二虚拟机VM2相对应的第二命名空间NS2。在这种情况下,如参考图1所描述的,虚拟机监视器HP可以在不停止驱动第一虚拟机VM1的情况下执行迁移。因为第一虚拟机VM1在迁移期间仍被驱动,所以在由第一虚拟机VM1管理的数据中可能生成脏数据。虚拟机监视器HP可以基于关于脏数据的信息迭代地执行迁移操作,使得存储在第一命名空间NS1中的数据中的脏数据被移动(或复制)到第二命名空间NS2。仅将上述迁移操作(即,实时迁移操作)作为示例来提供,并且本发明构思不限于此。
在一些示例实施例中,在迭代地执行迁移操作时,虚拟机监视器HP可以从存储装置120接收用于确定脏数据的信息(例如,关于脏数据的信息)。在该情况下,关于脏数据的信息可以具有可变粒度。将参考以下附图对此进行详细地描述。
在一些示例实施例中,图2的虚拟机监视器HP可以包括参考图1描述的迁移管理器111。或者,虚拟机监视器HP可以被配置为执行迁移管理器111的操作。
在一些示例实施例中,可以执行虚拟机的迁移,使得数据在同一存储装置中从源迁移到目标、从源存储装置迁移到目标存储装置、从源主机装置的存储装置迁移到目标主机装置的存储装置、和/或从源系统环境迁移到目标系统环境。
图3是用于描述图1的存储系统的迁移(例如,实时迁移)的流程图。为了描述的方便起见,假定存储系统100执行迁移使得由第一虚拟机VM1(例如,源虚拟机)管理的数据被复制到第二虚拟机VM2(例如,目标虚拟机)。也就是说,与第一虚拟机VM1相对应的第一命名空间NS1(例如,源命名空间和/或源存储空间)中存储的数据的至少一部分迁移到与第二虚拟机VM2相对应的第二命名空间NS2(例如,目标命名空间和/或目标存储空间)。然而,本发明构思不限于此。源虚拟机、目标虚拟机、源命名空间、源存储空间、目标命名空间和/或目标存储空间可以依据实现的方式而不同地变化。或者,依据实现的方式,除由源虚拟机管理的数据之外,驱动源虚拟机所必需或充分的所有或者一个或更多个数据或者程序代码也可以迁移到目标命名空间或任何其他主机装置。
参考图1至图3,在操作S100中,主机装置110可以向存储装置120发送跟踪开始请求。跟踪开始请求可以指:用于在执行迁移时跟踪通过第一虚拟机VM1的操作所生成的脏数据的请求。在一些示例实施例中,响应于从主机装置110接收到的跟踪开始请求,存储装置120可以以位图的形式来管理通过第一虚拟机VM1的操作所生成的脏数据。
在操作S110中,主机装置110可以从存储装置120读取初始映射信息MP_0。例如,主机装置110可以向存储装置120发送用于从存储装置120读取初始映射信息MP_0的命令或查询请求。存储装置120可以响应于从主机装置110接收到的命令或查询请求向主机装置110发送初始映射信息MP_0。在一些示例实施例中,初始映射信息MP_0可以指示关于由作为源虚拟机的第一虚拟机VM1管理的整个数据(例如,作为迁移目标的数据)的映射信息。也就是说,主机装置110可以基于初始映射信息MP_0确定作为从第一命名空间NS1迁移到第二命名空间NS2的目标的数据(在下文被称为“源数据”)。
在操作S120中,在主机装置110的控制下,存储在存储装置120的第一命名空间NS1中的初始源数据DT_0可以迁移到第二命名空间NS2。例如,主机装置110向存储装置120发送用于读取存储在第一命名空间NS1中的初始源数据DT_0的读取命令。存储装置120响应于读取命令向主机装置110发送存储在第一命名空间NS1中的初始源数据DT_0。主机装置110向存储装置120发送初始源数据DT_0以及用于将初始源数据DT_0存储在第二命名空间NS2中的写入命令。存储装置120响应于写入命令将初始源数据DT_0存储在第二命名空间NS2中。
在一些示例实施例中,在源数据存在于与源数据将被存储到的目标命名空间或目标存储空间相同的存储装置中的情况下,或者在源数据在源命名空间(例如,存储空间)和/或目标命名空间(例如,存储空间)之间被直接地传送的情况下,源数据可以在存储装置120内迁移(例如,可以被交换)而不经过主机装置110。
通过操作S120中的上述操作,在主机装置110的控制下,初始源数据DT_0可以从第一命名空间NS1迁移到第二命名空间NS2。在这种情况下,在执行操作S120时,因为第一虚拟机VM1正被驱动,所以可以从初始源数据DT_0生成脏数据。也就是说,在操作S120中,因为未被应用脏数据的初始源数据DT_0迁移到第二命名空间NS2,所以存储在第二命名空间NS2中的源数据可能不是最新的。
在操作S130中,主机装置110和/或存储装置120可以迭代地执行脏数据迁移到第二命名空间NS2的操作。例如,操作S130可以包括操作S131至操作S138。
在操作S131中,将变量“i”设置为“1”。在一些示例实施例中,变量“i”用于描述应用脏数据的迭代操作,并且并不意图具有特定技术含义。
在操作S132中,主机装置110可以从存储装置120接收第i位图BM_i。例如,主机装置110可以向存储装置120发送用于读取第i位图BM_i的命令或查询请求。存储装置120可以响应于该命令或查询请求而向主机装置110发送第i位图BM_i。在实施例中,第i位图BM_i可以包括关于在源数据的先前迁移期间通过第一虚拟机VM1的操作引起的脏数据的信息。
在一些示例实施例中,在源数据的大小是1TB并且源数据与位图之间的映射单位是8KB的情况下,位图的大小可以是128G比特(例如,16GB)。也就是说,位图的单位比特可以表示脏数据是否存在于给定大小的源数据中。主机装置110可以基于第i位图BM_i确定源数据的脏数据(例如,数据的最新版本)。
在操作S133中,在主机装置110的控制下,第i源数据(例如,脏数据)可以从第一命名空间NS1迁移到第二命名空间NS2。除了并非整个源数据而是基于第i位图BM_i确定的脏数据进行迁移之外,操作S133类似于操作S120,因此将省略另外的描述以避免冗余。
在操作S134中,主机装置110可以基于第i位图BM_i确定脏数据(DRT)的数量是否小于阈值TH。例如,主机装置110可以对第i位图BM_i中包括的多个位中的、指示脏数据的位进行计数。当指示脏数据的位的数量大于阈值TH时,主机装置110确定脏数据的数量大于阈值TH。在这种情况下,在操作S135中,变量“i”增加“1”。主机装置110和存储装置120可以迭代地执行操作S131至操作S134,即,操作S130。
在一些示例实施例中,在执行上述迭代操作时,存储装置120通过使用位图BM_i管理关于从源数据生成的脏数据的信息。例如,在从第一位图BM_1被传送的时间点到源数据(例如,第一脏数据)的迁移完成的时间点的时间段期间,存储装置120通过使用第二位图BM_2管理关于从源数据生成的第二脏数据的信息。之后,在从第二位图BM_2被传送的时间点到第二源数据(例如,第二脏数据)的迁移完成的时间点的时间段期间,存储装置120通过使用第三位图BM_3管理关于从源数据生成的第三脏数据的信息。
在一些示例实施例中,如上所述,随着迭代地执行操作S130,在每个或者一个或更多个迭代操作中确定的脏数据的数量可以减少。例如,在第一迭代操作中,第一位图BM_1可以包括关于在初始源数据DT_0的迁移期间生成的第一脏数据的信息。在第二迭代操作中,第二位图BM_2可以包括关于在第一迭代操作中第一脏数据的迁移期间生成的第二脏数据的信息。在该情况下,第一脏数据的大小小于初始源数据DT_0的大小。也就是说,在第一迭代操作中执行迁移所必需或充分的时间短于初始源数据DT_0的迁移所必需或充分的时间。也就是说,因为在与第一脏数据相比较相对短的时间期间生成第二脏数据,所以第二脏数据的大小可以小于第一脏数据的大小。
根据以上描述,随着迭代地执行脏数据的迁移,在每个或者一个或更多个迭代操作中生成的脏数据的大小可以减少;在执行迭代操作多达给定次数之后,脏数据的数量可以小于阈值TH。在这种情况下,在操作S136中,主机装置110可以向存储装置120发送暂停请求。在一些示例实施例中,存储装置120可以响应于暂停请求而暂停或阻止对第一命名空间NS1的访问。也就是说,在暂停请求之后,第一虚拟机VM1的操作/驱动可以暂停。
在操作S137中,主机装置110可以从存储装置120接收第(i+1)位图BM_i+1。在实施例中,第(i+1)位图BM_i+1可以包括关于从向主机装置110传送先前位图(例如,BM_i)的时间点到向存储装置120传送暂停请求的时间点生成的脏数据的信息。其余操作类似于操作S132中的那些操作,因此将省略另外的描述以避免冗余。
在操作S138中,在主机装置110的控制下,第(i+1)源数据(例如,最后的脏数据)可以从第一命名空间NS1迁移到第二命名空间NS2。除了并非整个源数据而是基于第(i+1)位图BM_i+1确定的脏数据进行迁移之外,操作S138类似于操作S120,因此将省略另外的描述以避免冗余。
在操作S140中,主机装置110和/或存储装置120完成迁移。在一些示例实施例中,在迁移操作完成之后,主机装置110可以通过第二虚拟机VM2访问移动(例如,复制)到第二命名空间NS2的最新的源数据。或者,主机装置110可以从第二命名空间NS2访问最新的源数据。
图4是用于描述依据图3的流程图的迭代操作从存储装置向主机装置提供的位图的图。参考图1至图4,在第0时间t0,主机装置110和/或存储装置120可以开始迁移。例如,在从t0至t1的时间段期间,主机装置110和/或存储装置120可以执行操作S100、操作S120和/或操作S130。在一些示例实施例中,在从t0至t1的时间段期间,存储装置120可以通过使用第一位图BM_1管理关于由第一虚拟机VM1生成的脏数据的信息。
在第一时间t1,主机装置110和/或存储装置120可以开始第一迭代操作。例如,在从t1至t2的时间段期间,主机装置110和/或存储装置120可以执行操作S130(在该情况下,i=1)。在该情况下,主机装置110可以从存储装置120接收第一位图BM_1。主机装置110可以基于第一位图BM_1对脏数据执行迁移。在一些示例实施例中,在从t1至t2的时间段期间,存储装置120可以通过使用第二位图BM_2管理关于由第一虚拟机VM1生成的脏数据的信息。
在第二时间t2,主机装置110和/或存储装置120可以开始第二迭代操作。例如,在从t2至t3的时间段期间,主机装置110和/或存储装置120可以执行操作S130(在该情况下,i=2)。在该情况下,主机装置110可以从存储装置120接收第二位图BM_2。主机装置110可以基于第二位图BM_2对脏数据执行迁移。在一些示例实施例中,在从t2至t3的时间段期间,存储装置120可以通过使用第三位图BM_3管理关于由第一虚拟机VM1生成的脏数据的信息。
在第三时间t3,主机装置110和/或存储装置120可以开始第三迭代操作。例如,在从t3至t4的时间段期间,主机装置110和/或存储装置120可以执行操作S130(在该情况下,i=3)。在该情况下,主机装置110可以从存储装置120接收第三位图BM_3。主机装置110可以基于第三位图BM_3对脏数据执行迁移。在一些示例实施例中,在从t3至t4的时间段期间,存储装置120可以通过使用第四位图BM_4管理关于由第一虚拟机VM1生成的脏数据的信息。
在第四时间t4,主机装置110和/或存储装置120可以开始第四迭代操作。在一些示例实施例中,第四迭代操作可以包括图3的操作S136、操作S137和/或操作S138。
如上所述,主机装置110和/或存储装置120可以执行迭代操作以用于在源数据迁移中保持最新的脏数据的目的。在这种情况下,如图4所示的,脏数据的量(例如,数量)可以随着迭代操作被执行而减少。
在一些示例实施例中,如上所述,主机装置110可以基于从存储装置120提供的位图确定脏数据。在该情况下,每次迭代操作时,存储装置120向主机装置110发送整个位图(例如,整个大小的位图),而与脏数据的数量无关。也就是说,在迭代操作中,位图的传送会引起操作延迟。
在本发明构思的一些示例实施例中,可以通过使用具有可变大小的脏信息而不使用具有固定映射单位的位图管理和发送关于脏数据的信息,减少由于位图传送引起的延迟时间。以下,将对根据本发明构思的实施例的存储系统的操作方法进行详细地描述。
图5是示出图1的存储系统的操作的流程图。为了描述的方便,将省略与如上所述的组件相关联的另外的描述以避免冗余。参考图1、图2和图5,主机装置110和/或存储装置120可以执行操作S200、操作S210和/或操作S220。操作S200、操作S210和/或操作S220类似于图3的操作S100、操作S110和/或操作S120,因此将省略另外的描述以避免冗余。
之后,主机装置110和/或存储装置120可以执行操作S230。操作S230可以包括操作S231至操作S238。除操作S232和/或操作S237之外,操作S230类似于图3的操作S130,因此将省略另外的描述以避免冗余。
在一些示例实施例中,在操作S232中,主机装置110可以从存储装置120接收具有可变粒度的第i脏信息DINF_i。相比之下,在图3的操作S132中,主机装置110从存储装置120接收第i位图BM_i。
在图3的操作S132中,第i位图BM_i具有关于源数据的固定映射单位,并且从存储装置120向主机装置110传送整个第i位图BM_i。相比之下,在图5的操作S232中,具有可变粒度的第i脏信息DINF_i具有关于源数据可变的映射单位。在该情况下,第i脏信息DINF_i在大小上小于第i位图BM_i,因此接收脏信息所必需或充分的延时可以减少。在一些示例实施例中,第i脏信息DINF_i可以是基于第i位图BM_i生成的;如在以上描述中,在执行上述迭代操作时,存储装置120通过使用位图BM_i管理关于从源数据生成的脏数据的信息。例如,在从传送第一位图BM_1的时间点到源数据(例如,第一脏数据)的迁移完成的时间点的时间段期间,存储装置120通过使用第二位图BM_2管理关于从源数据生成的第二脏数据的信息。之后,在从传送第二位图BM_2的时间点到第二源数据(例如,第二脏数据)的迁移完成的时间点的时间段期间,存储装置120通过使用第三位图BM_3管理关于从源数据生成的第三脏数据的信息。在一些示例实施例中,存储装置120可以管理用于响应于针对脏信息的查询请求来生成下一脏信息的位图。将参考图6和图7对操作S232进行详细地描述。
除了第(i+1)脏信息DINF_i+1被接收之外,操作S237类似于操作S232,因此将省略另外的描述以避免冗余。
如上所述,在迁移和/或实时迁移中,可以通过使用具有可变粒度的脏信息传送用于确定脏数据的信息,因此执行迁移所花费的总时间可以缩短。
图6是示出图5的操作S232的流程图,即,发送和接收具有可变粒度的脏数据的操作的流程图。参考图1、图2、图5和图6,操作S232可以包括操作S232-1至操作S232-10。
以下,使用术语G[m]。G[m]可以意指:与脏信息DINF中包括的多个位中的每个位或者一个或更多个位相对应的、或者映射到脏信息DINF中包括的多个位中的每个位或者一个或更多个位的源数据或位图的大小。也就是说,在映射单位为G[m]的脏信息DINF中包括的1位可以指示关于m字节的源数据(m是正整数)的脏信息(例如,其是否为脏数据)。或者,单位为G[m]的脏信息DINF中包括的1位可以对应于位图BM包括中的位当中的m个位。以下,为了描述的方便起见,假定G[m]意指与脏信息DINF中的1位相对应的位图中的位的数量。也就是说,在G[8]的情况下,位图BM中的8位可以对应于脏信息DINF中的1位;在G[1]的情况下,位图BM中的1位可以对应于脏信息DINF中的1位。
在操作S232-1中,主机装置110可以向存储装置120发送针对单位为G[m]的第i子脏信息DINF_i_G[m]的查询请求。在实施例中,m是正整数。
在操作S232-2中,存储装置120可以响应于从主机装置110接收到的查询请求来生成单位为G[m]的第i子脏信息DINF_i_G[m]。例如,为了描述的方便,假定由存储装置120管理的位图BM_i由64位组成。在这种情况下,当从主机装置110接收到的查询请求是针对单位为G[8]的第i子脏信息DINF_i_G[m]的请求时,存储装置120可以基于64位的第i位图BM_i生成8位的第i子脏信息DINF_i_G[8]。在这种情况下,8位的第i子脏信息DINF_i_G[8]中的1位可以对应于第i位图BM_i中的8位。将参考图7对此进行详细描述。
在操作S232-3中,存储装置120可以向主机装置110发送单位为G[m]的第i子脏信息DINF_i_G[m]。
在操作S232-4中,主机装置110可以基于第i子脏信息DINF_i_G[m]确定索引信息IND#。例如,假定第i子脏信息DINF_i_G[8]为[01000011],并且位值“1”指示“脏”。在该情况下,主机装置110可以确定与位值“1”相对应的索引信息IND#。
在操作S232-5中,主机装置110可以向存储装置120发送用于请求单位为G[m-k]的第i子脏信息DINF_i_G[m-k]的查询请求。在一些示例实施例中,在操作S232-5中传送的查询请求可以包括操作S232-4中确定的索引信息。
在操作S232-6中,存储装置120可以生成单位为G[m-k]的第i子脏信息DINF_i_G[m-k]。在实施例中,除了单位(例如,G[m-k]和/或G[m])不同之外,操作S232-6类似于操作S232-2,因此将省略另外的描述以避免冗余。在一些示例实施例中,单位为G[m-k]的第i子脏信息DINF_i_G[m-k]的大小可以大于单位为G[m]的第i子脏信息DINF_i_G[m]的大小。
在操作S232-7中,存储装置120可以向主机装置110发送单位为G[m-k]的第i子脏信息DINF_i_G[m-k]的至少一部分。在示例中,存储装置120可以向主机装置110发送与单位为G[m-k]的第i子脏信息DINF_i_G[m-k]的索引信息IND#(在操作S232-5中接收的)相对应的信息。
在操作S232-8中,主机装置110确定值(m-k)(例如,子脏信息的映射单位)是否最小(例如,低于阈值)。当值(m-k)(例如,子脏信息的映射单位)不是最小(例如,不低于阈值)时,在操作S232-9中,主机装置110可以基于单位为G[m-k]的第i子脏信息DINF_i_G[m-k]确定索引信息IND#。之后,“k”的值增大。之后,主机装置110和/或存储装置120迭代地执行操作S232-5至操作S232-8。
当值(m-k)(例如,子脏信息的映射单位)最小(例如,低于阈值)时,在操作S232-10中,主机装置110可以基于如此接收的多个子脏信息来确定脏数据。之后,主机装置110可以对脏数据执行迁移(图5的操作S233)。
在一些示例实施例中,可以依据各种方式控制“k”的值。例如,可以依据给定大小或顺序确定“k”的值。在该情况下,子脏信息的单位可以依次减小。或者,可以依据所确定的索引信息来确定“k”的值。
例如,当在操作S232-9中确定的索引信息的数量小于或等于特定值时,“k”的值可以依次或以给定次序增大。相比之下,当在操作S232-9中确定的索引信息的数量大于特定值时,“k”的值可以相对较大得增大,或可以增大使得(m-k)被设置为“1”。索引信息的数量大于特定值表示具有可变粒度的子脏信息的大小相对大。这样,通过较大地增大“k”的值,可以立即接收单位为G[1]的子脏信息;在该情况下,与依次增大“k”的值的情况相比较,整个子脏信息的大小可以减小。
如上所述,根据本发明构思的一些示例实施例,主机装置110可以通过使用具有可变粒度的子脏信息而非具有完整大小的位图BM,来接收关于脏数据的信息,因此脏数据的信息的大小可以减小。在这种情况下,发送和接收关于脏数据的信息所必需或充分的时间或延时可以减少。
图7是用于详细地描述根据图6的流程图的操作(例如,发送和接收具有可变粒度的脏数据的操作)的图。为了描述的方便,将描述如下示例实施例:当参考图4所描述的第三迭代操作开始时主机装置110从存储装置120接收子脏信息。此外,为了描述的方便,假定第三位图BM_3具有8×8数据结构(例如,由总共64位组成)。
为了描述的方便,使用术语“RaCb位”。RaCb位指示位于第a行和第b列的位。RaCb位被标记可以指示与该RaCb位相对应的源数据为脏数据。为了描述的方便,使用术语脏信息DINF_G[k]的“rXcY”位。脏信息DINF_G[k]的“rXcY”位指示与DINF_G[k]相关联的信息或者矩阵或向量中的位于第X行和第Y列的位。脏信息DINF_G[k]的rXcY位被标记可以指示与脏信息DINF_G[k]的rXcY位对应的源数据是脏数据。
参考图1、图2、图5、图6和图7,在第三迭代操作开始的时间t3,第三位图BM_3可以具有图7中所示出的结构。例如,在第三位图BM_3中,R2C2位、R2C3位、R7C7位和/或R8C6位可以被标记。也就是说,在参考图4所描述的第三迭代操作中,与R2C2位、R2C3位、R7C7位和/或R8C6位相对应的或者映射到R2C2位、R2C3位、R7C7位和/或R8C6位的源数据可以从第一命名空间NS1迁移到第二命名空间NS2。
在参考图3和图4所描述的示例实施例中,在第三迭代操作开始时的第三时间t3,可以向主机装置110传送第三位图BM_3(例如,64位数据)。相比之下,在参考图5至图7所描述的示例实施例中,在第三迭代操作开始时的第三时间t3,可以向主机装置110传送具有可变粒度的子脏信息(例如,DINF_3_G[8]、DINF_3_G[4]和/或DINF_3_G[1])。在该情况下,向主机装置110传送的信息或数据的大小减小。
例如,主机装置110可以向存储装置120发送用于接收DINF_3_G[8]的查询请求。存储装置120可以响应于查询请求生成DINF_3_G[8],并且可以向主机装置110发送DINF_3_G[8]。在该情况下,存储装置120可以基于第三位图BM_3生成由8位组成的DINF_3_G[8]。DINF_3_G[8]中的每个位或者一个或更多个位可以对应于第三位图BM_3中的8位。
详细地,DINF_3_G[8]中的r1c1位对应于第三位图BM_3的第一行R1中的8位;DINF_3_G[8]中的r2c1位对应于第三位图BM_3的第二行R2中的8位;DINF_3_G[8]中的r3c1位对应于第三位图BM_3的第三行R3中的8位;DINF_3_G[8]中的r4c1位对应于第三位图BM_3的第四行R4;DINF_3_G[8]中的r5c1位对应于第三位图BM_3的第五行R5中的8位;DINF_3_G[8]中的r6c1位对应于第三位图BM_3的第六行R6中的8位;DINF_3_G[8]中的r7c1位对应于第三位图BM_3的第七行R7中的8位;和/或DINF_3_G[8]中的r8c1位对应于第三位图BM_3的第八行R8中的8位。在这种情况下,在第三位图BM_3中,因为R2C2位、R2C3位、R7C7位和/或R8C6位被标记,所以DINF_3_G[8]中的第二位、第七位和/或第八位可以被标记以指示脏数据。
主机装置110可以基于DINF_3_G[8]的8位信息来确定索引信息。例如,主机装置110可以确定DINF_3_G[8]中的8位当中的被标记指示脏数据的位的索引信息。在图7的实施例中,基于DINF_3_G[8]中的8位的索引信息可以是分别与DINF_3_G[8]中的第二位、第七位和/或第八位相对应的IND2_G[8]、IND7_G[8]和/或IND8_G[8]。
主机装置110可以向存储装置120发送用于从存储装置120接收单位小于G[8]的DINF_3_G[4]的查询请求。存储装置120可以响应于查询请求,基于第三位图BM_3来生成由16位组成的DINF_3_G[4]。DINF_3_G[4]中的每个位或者一个或更多个位可以对应于第三位图BM_3中的4位。
详细地,DINF_3_G[4]中的r1c1位对应于位于第三位图BM_3的第一行R1和第一列C1至第四列C4的4位;DINF_3_G[4]中的r2c1位对应于位于第三位图BM_3的第二行R2和第一列C1至第四列C4的4位;DINF_3_G[4]中的r3c1位对应于位于第三位图BM_3的第三行R3和第一列C1至第四列C4的4位;DINF_3_G[4]中的r4c1位对应于位于第三位图BM_3的第四行R4和第一列C1至第四列C4的4位;DINF_3_G[4]中的r5c1位对应于位于第三位图BM_3的第五行R5和第一列C1至第四列C4的4位;DINF_3_G[4]中的r6c1位对应于位于第三位图BM_3的第六行R6和第一列C1至第四列C4的4位;DINF_3_G[4]中的r7c1位对应于位于第三位图BM_3的第七行R7和第一列C1至第四列C4的4位;和/或DINF_3_G[4]中的r8c1位对应于位于第三位图BM_3的第八行R8和第一列C1至第四列C4的4位。DINF_3_G[4]中的r1c2位对应于位于第三位图BM_3的第一行R1和第五列C5至第八列C8的4位;DINF_3_G[4]中的r2c2位对应于位于第三位图BM_3的第二行R2和第五列C5至第八列C8的4位;DINF_3_G[4]中的r3c2位对应于位于第三位图BM_3的第三行R3和第五列C5至第八列C8的4位;DINF_3_G[4]中的r4c2位对应于位于第三位图BM_3的第四行R4和第五列C5至第八列C8的4位;DINF_3_G[4]中的r5c2位对应于位于第三位图BM_3的第五行R5和/或第五列C5至第八列C8的4位;DINF_3_G[4]中的r6c2位对应于位于第三位图BM_3的第六行R6和第五列C5至第八列C8的4位;DINF_3_G[4]中的r7c2位对应于位于第三位图BM_3的第七行R7和第五列C5至第八列C8的4位;和/或DINF_3_G[4]中的r8c2位对应于位于第三位图BM_3的第八行R8和第五列C5至第八列C8的4位。在这种情况下,在第三位图BM_3中,因为R2C2位、R2C3位、R7C7位和/或R8C6位被标记,所以DINF_3_G[4]中的r2c1位、r7c2位和/或r8c2位可以被标记指示脏数据。
代替向主机装置110发送整个子脏信息DINF_3_G[4],存储装置120可以基于从主机装置110接收到的索引信息向主机装置110发送DINF_3_G[4]的一部分。例如,如上所述,主机装置110可以基于DINF_3_G[8]中的8位信息来确定索引信息IND2_G[8]、IND7_G[8]和/或IND8_G[8]。主机装置110向存储装置120发送所确定的索引信息以及用于接收DINF_3_G[4]的查询请求。
在该情况下,存储装置120可以仅发送如此生成的DINF_3_G[4]当中的与接收到的索引信息IND2_G[8]、IND7_G[8]和/或IND8_G[8]相对应的信息或数据。
在一些示例实施例中,子脏信息当中的与索引信息相对应的信息或数据可以指示位图的位当中的对应于与索引信息相关联的位的信息或数据。例如,与IND2_G[8]相关联的位对应于位于第三位图BM_3的第二行R2的位。在这种情况下,DINF_3_G[4]的位当中的与位于第二行R2的位相对应的位可以是r2c1位和/或r2c2位。同样地,与IND7_G[8]相关联的位对应于位于第三位图BM_3的第七行R7的位;在该情况下,DINF_3_G[4]的位当中的与位于第七行R7的位相对应的位可以是r7c1位和/或r7c2位。与IND8_G[8]相关联的位对应于位于第三位图BM_3的第八行R8的位;在该情况下,DINF_3_G[4]中的位当中的与位于第八行R8的位相对应的位可以是r8c1位和/或r8c2位。
这样,存储装置120可以基于接收到的索引信息IND2_G[8]、IND7_G[8]和/或IND8_G[8]仅向主机装置110发送DINF_3_G[4]的位中的一些(例如,r2c1位、r2c2位、r7c1位、r7c2位、r8c1位、和/或r8c2位)。
之后,主机装置110可以基于DINF_3_G[4]中的一些位(例如,r2c1位、r2c2位、r7c1位、r7c2位、r8c1位和/或r8c2位)再次确定索引信息。例如,如上所述,主机装置110可以确定接收到的位当中的被标记指示脏数据的位的索引信息。在图7的示例实施例中,主机装置110可以基于DINF_3_G[4]中的一些位(例如,r2c1位、r2c2位、r7c1位、r7c2位、r8c1位和/或r8c2位)来确定索引信息IND21_G[4]、IND72_G[4]和/或IND82_G[4]。
然后,主机装置110可以向存储装置120发送用于从存储装置120接收单位小于G[4]的DINF_3_G[1]的查询请求。在这种情况下,因为子脏信息的单位是“1”(例如,G[1]),存储装置120可以响应于查询请求向主机装置110发送第三位图BM_3的一部分作为子脏信息。
例如,如上所述,主机装置110可以基于DINF_3_G[4]中的一些位来确定索引信息IND21_G[4]、IND72_G[4]和/或IND82_G[4]。主机装置110向存储装置120发送所确定的索引信息以及用于接收DINF_3_G[1]的查询请求。
在该情况下,存储装置120可以向主机装置110发送第三位图BM_3的位当中的与接收到的索引信息IND21_G[4]、IND72_G[4]和/或IND82_G[4]相对应的位。详细地,与IND21_G[4]相关联的位对应于位于第三位图BM_3的第二行R2和第一列C1至第四列C4的位。与IND72_G[4]相关联的位对应于位于第三位图BM_3的第七行R7和第五列C5至第八列C8的位。与IND82_G[4]相关联的位对应于位于第三位图BM_3的第八行R8和第五列C5至第八列C8的位。存储装置120向主机装置110发送分别与索引信息IND21_G[4]、IND72_G[4]和IND82_G[4]相对应的位。主机装置110可以基于接收到的脏信息DINF_3_G[8]、DINF_3_G[4]和/或DINF_3_G[1],确定与第三位图BM_3中的R2C2位、R2C3位、R7C7位和/或R8C6位相对应的源数据是脏数据。
在一些示例实施例中,如上所述,可以通过发送具有可变粒度的子脏信息来减小为了获得关于脏数据的信息所交换的数据的大小,而不是向主机装置110传送整个位图。例如,如参考图7所描述的,第三位图BM_3可以具有64位,即,8×8结构。相比之下,在传送具有可变粒度的子脏信息的情况下,向主机装置110传送总共36位,即,DINF_3_G[8]中的8位、DINF_3_G[4]中的6位和/或DINF_3_G[1]中的12位。也就是说,根据本发明构思的一些示例实施例,与发送整个位图的情况相比较,传送具有可变粒度的子脏信息可以减小要被发送的数据的大小。因此,迁移所必需或充分的总时间或延时可以减少。
图8是用于描述图1的脏管理器的操作的概念图。参考图1和图8,脏管理器121a可以被配置为在存储系统100的实时迁移期间管理或标记与源数据相关联的脏数据。例如,在存储系统100的实时迁移期间,当从源数据生成脏数据时,脏管理器121a可以被配置为标记位图BM的位当中的与脏数据相对应的位。在一些示例实施例中,每当迭代操作开始时,可以重置位图BM。或者,位图BM可以被实现为多个,并且当迭代操作开始时,多个位图BM可以被交换或被重置。
脏管理器121a可以被配置为响应于从主机装置110接收到的查询请求来生成子脏信息。例如,脏管理器121a可以包括多个与(AND)运算器。多个与运算器可以对位图BM中的多个位执行与运算。多个与运算器的输出可以用作子脏信息。
详细地,位图BM中的所有位或者一个或更多个位被输入到第一AND级S[1]。第一AND级的输入为单位为G[1]的子脏信息DINF_G[1]。第一AND级的输出被用作单位为G[4]的子脏信息DINF_G[4]。第一AND级的输出被输入到第二AND级S[2]。第二AND级的输出被用作单位为G[8]的子脏信息DINF_G[8]。同样地,第二AND级的输出被输入到第三AND级S[3],并且第三AND级的输出被作单位为G[16]的子脏信息DINF_G[16]。
在一些示例实施例中,可以依据主机装置110的查询请求来选择多个与运算器的输出。此外,可以依据从主机装置110接收到的索引信息选择性地向主机装置110传送多个与运算器的输出。这能够通过上述配置和操作来实现,因此将省略另外的描述以避免冗余。在一些示例实施例中,作为示例提供上述配置,并且子脏信息的单位或生成子脏信息的方式可以依据实现的各种方式被不同地变化或修改。
图9是用于描述根据本发明构思的一些示例实施例的存储系统的操作的定时图。为了清楚地描述根据本发明构思的一些示例实施例的优点,将对参考图3和图4所描述的操作与参考图5至图8所描述的操作进行比较。
参考图1、图3、图5和图9,图9的第一定时图TD1示出参考图3和图4所描述的操作的示例,并且图9的第二定时图TD2示出参考图5至图8所描述的操作的示例。
首先,如第一定时图TD1中所示,在t0,存储系统100可以开始实时迁移。在从t0至t1的时间段期间,主机装置110可以从存储装置120接收初始映射信息MP_0。之后,在从t1至t2的时间段期间,存储系统100可以执行迁移,使得存在于第一命名空间NS1中的源数据迁移到第二命名空间NS2。
在从t2至ta3的时间段中,主机装置110可以从存储装置120接收关于脏数据的信息。在这种情况下,如参考图3和图4所描述的,在将具有固定粒度的位图作为关于脏数据的信息提供的情况下,位图的传送可以是在ta3完成。
之后,在从ta3至ta4的时间段期间,可以执行针对脏数据的第一迭代操作MGR1。在一些示例实施例中,第一迭代操作MGR1中的作为迁移目标的脏数据可以是在从t0至t2的时间段期间生成的脏数据。
之后,在从ta4至ta5的时间段期间,可以执行位图传送。之后,在从ta5至ta6的时间段期间,可以执行针对脏数据的第二迭代操作MGR2。在一些示例实施例中,第二迭代操作MGR2中的作为迁移目标的脏数据可以是在从t2至ta4的时间段期间生成的脏数据。
之后,在从ta6至ta7的时间段期间,可以执行位图传送。之后,在从ta7至ta8的时间段期间,可以执行针对脏数据的第三迭代操作MGR3。在一些示例实施例中,第三迭代操作MGR3中的作为迁移目标的脏数据可以是在从ta4至ta6的时间段期间生成的脏数据。
之后,在从ta8至ta9的时间段期间,可以执行位图传送。之后,在从ta9至ta10的时间段期间,可以执行针对脏数据的第四迭代操作MGR4。在一些示例实施例中,第四迭代操作MGR4中的作为迁移目标的脏数据可以是在从ta6至ta8的时间段期间生成的脏数据。
接下来,如第二定时图TD2中所示,在t0,存储系统100可以开始实时迁移。在从t0至t1的时间段期间,主机装置110可以从存储装置120接收初始映射信息MP_0。之后,在从t1至t2的时间段期间,存储系统100可以执行迁移,使得存在于第一命名空间NS1中的源数据迁移到第二命名空间NS2。
之后,在从t2至tb3的时间段期间,存储系统100可以执行与具有可变粒度的子脏信息相关联的传送。例如,在从t2至tb3的时间段期间,基于参考图5至图8所描述的方法,主机装置110可以从存储装置120接收具有可变粒度的子脏信息。
在一些示例实施例中,传送具有可变粒度的子脏信息的时间段(即,从t2至tb3的时间段)可以短于传送整个位图的时间段(即,从t2至ta3的时间段)。在上面描述了如何缩短传送信息所用的时间,因此将省略另外的描述以避免冗余。
之后,在从tb3至tb4的时间段期间,可以执行针对脏数据的第一迭代操作MGR1。在一些示例实施例中,第一迭代操作MGR1中的作为迁移目标的脏数据可以是在从t0至t2的时间段期间生成的脏数据。
之后,在从tb4至tb5的时间段期间,可以从存储装置120向主机装置110传送具有可变粒度的子脏信息。之后,在从tb5至tb6的时间段期间,可以执行第二迭代操作MGR2’。在一些示例实施例中,第二迭代操作MGR2’中的作为迁移目标的脏数据可以是在从t2至tb4的时间段期间生成的脏数据。
之后,在从tb6至tb7的时间段期间,可以从存储装置120向主机装置110传送具有可变粒度的子脏信息。之后,在从tb7至tb8的时间段期间,可以执行第三迭代操作MGR3’。在一些示例实施例中,第三迭代操作MGR3’中的作为迁移目标的脏数据可以是在从tb4至tb6的时间段期间生成的脏数据。
之后,在从tb8至tb9的时间段期间,可以从存储装置120向主机装置110传送具有可变粒度的子脏信息。之后,在从tb9至tb10的时间段期间,可以执行第四迭代操作MGR4’。在一些示例实施例中,第四迭代操作MGR4’中的作为迁移目标的脏数据可以是在从tb6至tb8的时间段期间生成的脏数据。
如上所述,根据本发明构思的一些示例实施例,例如,参考第二定时TD2,总迁移时间或延时可以缩短。例如,如上所述,随着迭代操作被迭代地执行,脏数据的数量减少。在这种情况下,在第一定时图TD1中,位图传送时段是均匀的,而与脏数据的数量无关。相比之下,在第二定时图TD2中,随着脏数据的数量减少(例如,随着迭代操作被迭代地执行),子脏信息传送时段缩短。此外,随着子脏信息传送时段缩短,其间能够生成脏数据的时间可以缩短;在这种情况下,执行迭代操作所用的时间也可以缩短。因此,可以改进存储系统100的性能。例如,根据一些示例实施,可以在主机装置和存储装置之间发送更少数据时实现实时迁移。因此,可以在实时迁移期间改进主机装置的处理性能。
图10示出用于描述根据本发明构思的实施例的存储系统的操作的图。将参考图10对参考图3和/或图4所描述的操作与参考图5至图8所描述的操作进行比较。
在图10的图形中,水平轴表示脏数据的数量,并且垂直轴表示读取关于脏数据的信息所必需或充分的延时。在图10的图形中,第0线L0对应于参考图3和图4所描述的操作,并且第一线L1对应于参考图5至图8所描述的操作。
从图10的第0线L0可理解,因为整个位图被用作关于脏数据的信息,所以延时是均匀的,而与脏数据的数量无关。相比之下,从图10的第一线L1可理解,因为具有可变粒度的子脏数据被用作关于脏数据的信息,所以随着脏数据的数量增加,子脏数据的大小也增加。因此,因为用于读取具有可变粒度的子脏信息的事务的数量增加(例如,因为查询请求的数量和根据查询请求的子脏信息传送的次数增加),所以延时可以增加。
也就是说,当脏数据的数量小于参考值REF时,根据第一线L1的操作方法可以更有效;当脏数据的数量大于参考值REF时,根据第0线L0的操作方法可以更有效。
图11是示出图1的存储系统的操作方法的流程图。参考图1、图10和图11,在操作S300中,主机装置110可以向存储装置120发送跟踪开始请求。操作S300类似于图3的操作S100和图5的操作S200,因此将省略另外的描述以避免冗余。
在操作S305中,主机装置110和/或存储装置120可以基于初始映射信息MP_0来执行迁移。操作S305类似于图3的操作S110和操作S120,因此将省略另外的描述以避免冗余。
在操作S310中,主机装置110和/或存储装置120可以基于具有固定粒度的位图来执行迁移。例如,主机装置110和/或存储装置120可以基于参考图3和图4所描述的操作方法来执行迁移。在一些示例实施例中,操作S310可以指示参考图3和图4所描述的一个迭代操作。
在操作S320中,主机装置110可以确定脏数据的数量是否小于参考值REF。例如,如参考图10所描述的,当脏数据的数量大于或等于参考值REF时,不使用具有可变粒度的子脏信息而使用具有固定粒度的位图的操作方法可以更有效。也就是说,当脏数据的数量大于或等于参考值REF时,主机装置110和/或存储装置120可以迭代地执行操作S310。
当脏数据的数量小于参考值REF时,不使用具有固定粒度的位图而使用具有可变粒度的子脏信息的操作方法可以更有效。在这种情况下,在操作S330中,主机装置110和/或存储装置120可以通过使用具有可变粒度的子脏信息DINF执行迁移。在一些示例实施例中,操作S330可以指示参考图5至图9所描述的一个迭代操作。
之后,在操作S340中,主机装置110可以确定脏数据的数量是否小于阈值TH。当脏数据的数量大于或等于阈值TH时,主机装置110和/或存储装置120迭代地执行操作S330。
当脏数据的数量小于阈值TH时,在操作S350中,主机装置110和/或存储装置120可以暂停与第一命名空间NS1相关联的操作(例如,可以暂停与第一虚拟机VM1相关联的操作),并且可以基于具有可变粒度的子脏信息来执行迁移。之后,在操作S360中,可以完成迁移。
图12是示出根据本发明构思的一些示例实施例的交换子脏信息的操作的流程图。在一些示例实施例中,根据图12的流程图的操作可以代替图5的S232。
参考图1和图12,在操作S410中,主机装置110可以向存储装置120发送用于接收脏地址DRT_ADDR的查询请求。在一些示例实施例中,脏地址DRT_ADDR可以指:指示位图中的被标记指示脏数据的位的位置的信息,即,指示位图地址的信息。
在操作S420中,存储装置120可以基于位图BM生成脏地址DRT_ADDR。将参考图13对脏地址DRT_ADDR的配置进行详细地描述。
在操作S430中,存储装置120可以向主机装置110发送脏地址DRT_ADDR。
在操作S440中,主机装置110可以基于脏地址DRT_ADDR确定脏数据。之后,主机装置110可以对脏数据执行迁移。
图13是用于描述根据图12的流程图的操作中的脏地址DRT_ADDR的图。为了描述的方便起见,将参考第三位图BM_3来描述脏地址DRT_ADDR。
如图13中所示,第三位图BM_3可以由8×8(即,64位)组成。在这种情况下,第三位图BM_3中的每个位或者一个或更多个位可以表示或指定6位地址。
在该情况下,与被标记指示脏数据的位相对应的R2C2位、R2C3位、R7C7位和/或R8C6位可以分别由ADDR22、ADDR23、ADDR77和/或ADDR86表示,并且ADDR22、ADDR23、ADDR77和/或ADDR86中的每个或者一个或更多个可以通过6位来表示。在该情况下,从存储装置120向主机装置110传送的位的数量是24(=6×4)。也就是说,与传送整个64位的位图BM_3相比,传送指示位图BM中的脏位的位置的脏地址DRT_ADDR可以更高效。
图14是示出根据本发明构思的一些示例实施例的交换脏信息的操作的流程图。在一些示例实施例中,根据图14的流程图的操作可以代替图5的操作S232。
参考图1和图14,在操作S510中,主机装置110可以向存储装置120发送用于接收压缩位图BM_com的查询请求。
在操作S520中,存储装置120可以对位图BM进行压缩以生成压缩位图BM_com。
在操作S530中,存储装置120可以向主机装置110发送压缩位图BM_com。
在操作S540中,主机装置110可以对压缩位图BM_com进行解压缩。
在操作S550中,主机装置110可以基于解压缩后的位图来确定脏数据。
如上所述,存储装置120可以对位图进行压缩并且可以向主机装置110提供压缩后的位图。在这种情况下,如上所述,随着用于迁移的迭代操作被执行,脏数据的数量可以减少。也就是说,位图的位当中的被标记为脏位的位的数量可以减少。也就是说,位图的位当中的具有“1”的位的数量可以是稀疏的。在位图为稀疏时,压缩的效率可以提高。也就是说,随着用于迁移的迭代操作被执行,从存储装置120向主机装置110提供的压缩位图BM_com的大小可以减小;因此,存储系统的整个延时可以减小。
图15A至图15C是示出存储系统的各种拓扑的框图。以下,术语“物理功能PF”用于描述示例实施例的本发明构思。物理功能PF可以指与多个主机装置1110和/或1120中的每个或者一个或更多个相对应的NVMe控制器。NVMe控制器可以以软件、硬件或其组合的形式实现。或者,物理功能PF可以指示被配置为支持SR-IOV功能的快速PCI功能。SR-IOV可以指示使得一个物理功能支持一个或更多个相关的虚拟化功能的功能。也就是说,在下文,可以理解,物理功能PF对应于多个主机装置1110和/或1120中的至少一者,并且被配置为处理多个主机装置1110和/或1120中的对应的主机装置的命令或者由对应的主机装置管理的提交队列的命令。
为了描述的方便,在下文,假定主机装置1100包括第一主机装置1110和/或第二主机装置1120,但是本发明构思不限于此。在一些示例实施例中,第一主机装置1110和/或第二主机装置1120可以是在物理上彼此区分的硬件装置。或者,第一主机装置1110和/或第二主机装置1120可以是实现在同一计算系统或服务器系统中的虚拟机VM1和/或VM2。
参考图15A至图15C,存储系统1000a、1000b和/或1000c可以包括主机装置1100和/或存储装置1200a、1200b和/或1200c。第一主机装置1110和/或第二主机装置1120中的每个或者一个或更多个可以分别发出用于处理对应的操作的命令CMD1和/或CMD2。例如,第一主机装置1110可以发出第一命令CMD1,和/或如此发出的第一命令CMD1可以被存储在第一提交队列SQ1中。第二主机装置1120可以发出第二命令CMD2,和/或如此发出的第二命令CMD2可以被存储在第二提交队列SQ2中。
示出了第一主机装置1110和/或第二主机装置1120中的每个或者一个或更多个管理一个提交队列的一些示例实施例,但是本发明构思不限于此。例如,第一主机装置1110和/或第二主机装置1120中的每个或者一个或更多个可以管理多个提交队列。或者,第一主机装置1110和/或第二主机装置1120中的每个或者一个或更多个还可以管理完成队列,该完成队列被配置为接收与多个提交队列相关联的完成。
或者,第一主机装置1110和/或第二主机装置1120中的每个或者一个或更多个可以发出管理命令,并且还可以管理被配置为接收与管理命令相关联的完成的管理队列和/或管理完成队列。在一些示例实施例中,提交队列、完成队列、管理队列、管理完成队列等可以被包括在存储装置的控制器存储器缓冲器(CMB)中。或者,提交队列、完成队列、管理队列、管理完成队列等可以被包括在对应的主机装置的主机装置存储器缓冲器(HMB)中。
存储装置1200a、1200b和/或1200c可以与第一主机装置1110和/或第二主机装置1120进行通信。在一些示例实施例中,存储装置1200a、1200b和/或1200c可以通过属于基于快速PCI接口的物理层的接口(例如,快速PCI上的NVMe)与第一主机装置1110和/或第二主机装置1120进行通信。或者,存储装置1200a、1200b和/或1200c可以通过基于网络的接口(例如,NVMe-oF(Fabrics上的NVMe))(诸如光纤信道或远程直接随机存取存储器(RDMA))与第一主机装置1110和/或第二主机装置1120进行通信。以下,为了清楚地描述本发明构思的一些示例实施例,假定存储控制器1210a、1210b和/或1210c通过快速PCI上的NVMe接口与第一主机装置1110和/或第二主机装置1120进行通信。
存储装置1200a、1200b和/或1200c可以通过各种类型的物理层与第一主机装置1110和/或第二主机装置1120进行通信。第一物理功能PF1和/或第二物理功能PF2可以分别对应于第一主机装置1110和/或第二主机装置1120。例如,第一物理功能PF1可以指示被配置为与第一主机装置1110进行通信并处理来自第一主机装置1110的第一命令CMD1的第一NVMe控制器。第二物理功能PF2可以指示被配置为与第二主机装置1120进行通信并处理来自第二主机装置1120的第二命令CMD2的第二NVMe控制器。
第一物理功能PF1和/或第二物理功能PF2中的每个或者一个或更多个可以基于来自对应的主机装置的命令执行针对非易失性存储器件1220的操作。在一些示例实施例中,可以通过使用逻辑上划分的命名空间NS或者物理上或逻辑上划分的非易失性存储器(NVM)集来管理非易失性存储器件1220。第一物理功能PF1和/或第二物理功能PF2中的每个或者一个或更多个可以执行与关于对应的命名空间NS1或NS2或者对应的NVM集的命令相对应的操作。
在一些示例实施例中,如图15A中所示,包括在存储控制器1210a中的第一物理功能PF1和/或第二物理功能PF2可以通过一个物理端口PT与第一主机装置1110和/或第二主机装置1120进行通信。物理端口PT可以是被配置为支持快速PCI接口的物理层。在一些示例实施例中,第一物理功能PF1和/或第二物理功能PF2中的每个或者一个或更多个可以指相关的虚拟功能,或可以支持相关的虚拟功能。
或者,如图15B中所示,包括在存储控制器1210b中的第一物理功能PF1和/或第二物理功能PF2可以通过多个物理端口PT1和/或PT2与第一主机装置1110和/或第二主机装置1120进行通信。第一物理端口PT1和/或第二物理端口PT2中的每个或者一个或更多个可以是被配置为支持快速PCI接口的单独物理层。第一物理功能PF1可以通过第一物理端口PT1与第一主机装置1110进行通信,并且第二物理功能PF2可以通过第二物理端口PT2与第二主机装置1120进行通信。
在一些示例实施例中,如图15C中所示,第一主机装置1110和/或第二主机装置1120可以与包括在存储控制器1210c中的一个物理功能PF1进行通信。也就是说,第一主机装置1110和/或第二主机装置1120可以通过一个物理功能PF1分别访问第一命名空间NS1和/或第二命名空间NS2。
作为示例提供参考图15A至图15C所描述的配置,并且本发明构思不限于此。如上所述,物理功能PF可以指示与多个主机装置中的每个或者一个或更多个相对应的NVMe控制器,并且多个物理功能PF可以被配置为通过一个物理端口或单独的物理端口与对应的主机装置进行通信。
在一些示例实施例中,可以通过参考图15A至图15C所描述的拓扑执行根据本发明构思的一些示例实施例的迁移操作。例如,由第一主机装置1110管理的第一数据可以存储在第一命名空间NS1中。在该情况下,根据本发明构思的一些示例实施例,第一数据可以通过实时迁移(具体地,具有可变粒度的脏信息的传送)从第一命名空间NS1迁移到第二命名空间NS2。
图16是根据一些示例实施例的主机存储系统的框图。
主机存储系统2000可以包括主机2100和/或存储装置200。另外,存储装置2200可以包括存储控制器2210和/或NVM 220。根据一些示例实施例,主机2100可以包括主机控制器2110和/或主机存储器120。主机存储器2120可以用作缓冲存储器,其被配置为临时存储要向存储装置2200发送的数据或从存储装置200接收到的数据。
存储装置2200可以包括存储介质,其被配置为响应于来自主机2100的请求而存储数据。作为示例,存储装置2200可以包括SSD、嵌入式存储器和/或可装卸的外部存储器中的至少一个。当存储装置2200是SSD时,存储装置2200可以是符合NVMe标准的装置。当存储装置2200是嵌入式存储器或外部存储器时,存储装置2200可以是符合UFS标准或eMMC标准的装置。主机2100和/或存储装置2200中的每一个或者一个或更多个可以根据采用的标准协议生成包(packet)并发送该包。
当存储装置2200的NVM 2220包括闪存时,所述闪存可以包括2DNAND存储阵列或3D(或垂直)NAND(VNAND)存储阵列。作为另一示例,存储装置2200可以包括各种其他种类的NVM。例如,存储装置2200可以包括磁性RAM(MRAM)、自旋转移扭矩MRAM、导电桥式RAM(CBRAM)、铁电RAM(FRAM)、PRAM、RRAM和/或各种其他类型的存储器。
根据一些示例实施例,主机控制器2110和/或主机存储器2120可以被实现为单独的半导体芯片。或者,在一些示例实施例中,主机控制器2110和/或主机存储器2120可以集成在同一半导体芯片中。作为示例,主机控制器2110可以是包括在应用处理器(AP)中的多个模块中的任何一个。AP可以实现为片上系统(SoC)。此外,主机存储器2120可以是AP中包括的嵌入式存储器或AP外部的NVM或存储器模块。
主机控制器2110可以管理将主机存储器2120的缓冲区域的数据(例如,写入数据)存储在NVM 2220中的操作或将NVM 2220的数据(例如,读取数据)存储在缓冲区域中的操作。
存储控制器2210可以包括主机接口2211、存储器接口2212和/或CPU 2213。另外,存储控制器2210还可以包括闪存转换层(FTL)2214、包管理器2215、缓冲存储器2216、纠错码(ECC)引擎2217和/或高级加密标准(AES)引擎2218。存储控制器2210可以进一步包括其中装载有FTL 2214的工作存储器(未示出)。CPU 2213可以执行FTL 2214来控制NVM 2220上的数据写入和读取操作。
主机接口2211可以向主机2100发送包和从主机100接收包。从主机2100向主机接口2211发送的包可以包括命令或要被写入NVM 2220的数据。从主机接口2211向主机2100发送的包可以包括对命令的响应或从NVM 2220读取的数据。存储器接口2212可以向NVM 2220发送将要被写入NVM 2220的数据,或接收从NVM 2220读取的数据。存储器接口2212可以被配置为符合诸如切换(Toggle)或开放NAND闪存接口(ONFI)的标准协议。
FTL 2214可以执行各种功能,诸如地址映射操作、磨损均衡操作和/或垃圾收集操作。地址映射操作可以是将从主机2100接收的逻辑地址转换为用于在NVM 2220中实际存储数据的物理地址的操作。磨损均衡操作可以是通过允许均匀地使用NVM 2220的块来减少或防止特定块的过度退化的技术。作为示例,磨损均衡操作可以通过使用平衡物理块的擦除计数的固件技术来实现。垃圾收集操作可以是通过在将现有块的有效数据复制到新块之后擦除现有块来确保NVM 2220中的可用容量的技术。
包管理器2215可以根据同意主机2100的接口的协议来生成包,或者从自主机2100接收到的包中解析各种类型的信息。另外,缓冲存储器2216可以临时存储要写入NVM 2220的数据和/或要从NVM 2220读取的数据。尽管缓冲存储器2216可以是包括在存储控制器2210中的组件,但缓冲存储器2216可以位于存储控制器2210外部。
ECC引擎2217可以对从NVM 2220读取的读取数据执行错误检测和校正操作。更具体地,ECC引擎2217可以生成用于要写入到NVM 2220的写入数据的奇偶校验位,并且所生成的奇偶校验位可以与写入数据一起存储在NVM 2220中。在从NVM 2220读取数据期间,ECC引擎2217可以通过使用读取数据以及从NVM 2220读取的奇偶校验位,来校正读取数据中的错误,并输出错误校正后的读取数据。
AES引擎2218可以通过使用对称密钥算法,对输入到存储控制器2210的数据执行加密操作和/或解密操作中的至少一者。
在一些示例实施例中,存储控制器2210还可以包括脏管理器2219。脏管理器2219可以基于参考图1至图14所描述的方法来管理关于脏数据的信息(例如,位图和/或脏信息),并且可以依据主机装置2100的请求,向主机装置2100提供关于脏数据的信息。主机装置2100可以基于关于脏数据的信息执行各种操作(例如,实时迁移操作)。
图17是根据一些示例实施例的应用了存储器件的数据中心3000的图。
参照图17,数据中心3000可以是收集各种类型的数据项并提供服务的设施,并且被称为数据存储中心。数据中心3000可以是用于操作搜索引擎和/或数据库的系统,并且可以是公司(诸如,银行)和/或政府机构所使用的计算系统。数据中心3000可以包括应用服务器3100至3100n和/或存储服务器3200至3200m。根据一些示例实施例,可以不同地选择应用服务器3100至3100n的数量和/或存储服务器3200至3200m的数量。应用服务器3100至3100n的数量可以不同于存储服务器3200至3200m的数量。
应用服务器3100和/或存储服务器3200可以包括处理器3110和/或3210以及/或者存储器3120和/或3220中的至少一者。现在将以存储服务器3200为例进行描述。处理器3210可以控制存储服务器3200的全部或者一个或更多个操作,访问存储器3220,并且执行加载在存储器3220中的指令和/或数据。存储器3220可以是双倍数据率同步DRAM(DDR SDRAM)、高带宽存储器(HBM)、混合存储立方体(HMC)、双列直插式存储器模块块(DIMM)、傲腾DIMM(Optane DIMM)和/或非易失性DIMM(NVMDIMM)。在一些实施例中,存储服务器3200中包括的处理器3210和/或存储器3220的数量可以被不同地选择。在一些示例实施例中,处理器3210和/或存储器3220可以提供处理器-存储器对。在一些示例实施例中,处理器3210的数量可以不同于存储器3220的数量。处理器3210可以包括单核处理器和/或多核处理器。对于存储服务器3200的以上描述可以类似地应用于应用服务器3100。在一些实施例中,应用服务器3100可以不包括存储装置3150。存储服务器3200可以包括至少一个存储装置3250。根据一些示例实施例,存储服务器3200中包括的存储装置3250的数量可以被不同地选择。
应用服务器3100至3100n可以通过网络3300与存储服务器3200至3200m进行通信。网络3300可以通过使用光纤信道(FC)或以太网来实现。在该情况下,FC可以是用于相对高速的数据传输的介质并且使用具有高性能和高可用性的光学开关。根据网络3300的访问方法,可以将存储服务器3200至3200m设置为文件存储、块存储和/或对象存储。
在一些示例实施例中,网络3300可以是专用于存储的网络,诸如存储区域网络(SAN)。例如,SAN可以是FC-SAN,其使用FC网络并且根据FC协议(FCP)实现。作为另一个示例,SAN可以是因特网协议(IP)-SAN,其使用传输控制协议(TCP)/IP网络,并且根据TCP/IP上的SCSI或因特网SCSI(iSCSI)协议来实现。在一些示例实施例中,网络3300可以是通用网络,诸如TCP/IP网络。例如,可以根据诸如以太网上的FC(FCoE)、网络附接存储(NAS)和/或架构上的NVMe(NVMe-oF)的协议来实现网络3300。
在下文中,将主要描述应用服务器3100和存储服务器3200。应用服务器3100的描述可以应用于另一应用服务器3100n,并且存储服务器3200的描述可以应用于另一存储服务器3200m。
应用服务器3100可以通过网络3300将用户或客户端请求存储的数据存储在存储服务器3200至3200m中的一者中。此外,应用服务器3100可以通过网络3300从存储服务器3200至3200m中的一者获得由用户或客户端请求读取的数据。例如,应用服务器3100可以被实现为网络服务器和/或数据库管理系统(DBMS)。
应用服务器3100可以通过网络3300访问包括在另一应用服务器3100n中的存储器3120n和/或存储装置3150n。或者,应用服务器3100可以通过网络3300访问包括在存储服务器3200至3200m中的存储器3220至3220m或存储装置3250至3250m。因此,应用服务器3100可以对存储在应用服务器3100至3100n和/或存储服务器3200至3200m中的数据执行各种操作。例如,应用服务器3100可以执行用于在应用服务器3100至3100n和/或存储服务器3200至3200m之间移动或复制数据的指令。在这种情况下,可以将数据从存储服务器3200至3200m的存储装置3250至3250m通过存储服务器3200至3200m的存储器3220至3220m或直接移动到应用服务器3100至3100n的存储器3120至3120n。通过网络3300移动的数据可以是为了安全或隐私而加密的数据。
现在将以存储服务器3200为例进行描述。接口3254可以提供处理器3210和控制器3251之间的物理连接以及网络接口卡(NIC)3240和控制器3251之间的物理连接。例如,可以使用直接附接存储(DAS)方案来实现接口3254,其中,存储装置3250直接与专用电缆连接。例如,接口3254可以通过使用各种接口方案来实现,诸如,ATA、SATA、e-SATA、SCSI、SAS、PCI、PCIe、NVMe、IEEE 1394、USB接口、SD卡接口、MMC接口、eMMC接口、UFS接口、eUFS接口和/或CF卡接口。
存储服务器3200可以进一步包括开关3230和/或NIC(网络互连)3240。开关3230可以经由处理器3210的控制来选择性地将处理器3210连接到存储装置3250,或者选择性地将NIC 3240连接到存储装置3250。
在一些示例实施例中,NIC 3240可以包括网络接口卡和/或网络适配器。NIC 3240可以通过有线接口、无线接口、蓝牙接口和/或光接口连接到网络3300。NIC 3240可以包括内部存储器、数字信号处理器(DSP)和主机总线接口,并且通过主机总线接口连接到处理器3210和/或开关3230。主机总线接口可以被实现为接口3254的上述示例之一。在一些示例实施例中,NIC 3240可以与处理器3210、开关3230和/或存储装置3250中的至少一者集成。
在存储服务器3200至3200m或应用服务器3100至3100n中,处理器可以向存储装置3150至3150n和/或3250至3250m或者存储器3120至3120n和/或3220至3220m发送命令,并且编程或读取数据。在这种情况下,数据可以是通过ECC引擎校正了错误的数据。数据可以是对其执行数据总线反转(DBI)操作和/或数据掩蔽(DM)操作的数据,并且可以包括循环冗余码(CRC)信息。数据可以是为了安全或隐私而加密的数据。
存储装置3150至3150n和/或3250至3250m可以响应于从处理器接收到的读取命令向NAND闪存器件3252至3252m发送控制信号和/或命令/地址信号。因此,当从NAND闪存器件3252至3252m读取数据时,可以输入读取使能(RE)信号作为数据输出控制信号,因此,可以将数据输出至DQ总线。可以使用RE信号生成数据选通信号DQS。依据写入使能(WE)信号的上升沿或下降沿,命令和地址信号可以锁存在页缓冲器中。
控制器3251可以控制存储装置3250的所有操作或一个或更多个操作。在一些示例实施例中,控制器3251可以包括SRAM。控制器3251可以响应于写入命令向NAND闪存器件3252写入数据,或者响应于读取命令从NAND闪存器件3252读取数据。例如,可以从存储服务器3200的处理器3210、另一存储服务器3200m的处理器3210m和/或应用服务器3100和/或3100n的处理器3110和/或3110n提供写入命令和/或读取命令。DRAM 3253可以临时存储(或缓冲)要写入到NAND闪存器件3252的数据、或从NAND闪存器件3252读取的数据。此外,DRAM3253可以存储元数据。这里,元数据可以是用户数据或由控制器3251生成的用于管理NAND闪存器件3252的数据。存储装置3250可以包括用于安全性或隐私性的安全元件(SE)。
在一些示例实施例中,基于参考图1至图14所描述的方法(例如,使用具有可变粒度的脏信息的方法),存储在特定存储服务器(例如,3200)中的数据可以迁移到同一存储服务器(例如,3200)或任何其他存储服务器(例如,3200m)。
如上所述,根据本发明构思的一些示例实施例,存储系统100迭代地执行对脏数据的迁移以用于在实时迁移中保持最新的脏数据的目的。在该情况下,主机装置110从存储装置120接收位图并基于接收到的位图确定脏数据。然而,由于整个位图在每次迭代操作被传送到主机装置110,因此延时增加。相比之下,根据本发明构思的一些示例实施例,随着迭代操作被执行,脏数据的数量减少;在该情况下,并非发送整个位图,而是通过使用位图为稀疏的特性从存储装置向主机装置提供具有可变粒度的脏数据。因而,传送脏信息所用的时间可以缩短。这可以意味着存储系统的总性能被改进。例如,根据一些示例实施,可以在主机装置和存储装置之间发送更少数据时,实现实时迁移。因此,可以在实时迁移期间改进主机装置的处理性能。
基于存储系统100的实时迁移在上面描述了本发明构思的一些示例实施例,但是本发明构思不限于此。例如,除实时迁移之外,当主机装置110检查与存储装置120的特定区域相关联的脏数据时,如参考图5至图10所描述的,可以通过具有可变粒度的脏信息来检查脏数据。
以上公开的一个或更多个元件可以包括诸如以下各项的一个或更多个处理电路系统,或者被实现在诸如以下各项的一个或更多个处理电路系统中:包括逻辑电路的硬件;诸如执行软件的处理器的硬件/软件组合;或它们的组合。例如,处理电路系统更具体地可以包括,但不限于,中央处理单元(CPU)、算术逻辑单元(ALU)、数字信号处理器、微计算机、现场可编程门阵列(FPGA)、片上系统(SoC)、可编程逻辑单元、微处理器、专用集成电路(ASIC)等。
根据本发明构思,提供了具有改进性能的主机装置的操作方法以及存储装置的操作方法。
尽管已经参考本发明构思的一些示例实施例描述了本发明构思,但对于本领域普通技术人员将清楚的是,在不背离如在所附权利要求中阐述的本发明构思的精神和范围的情况下,可以对其进行各种改变和修改。
Claims (20)
1.一种主机装置的操作方法,所述主机装置被配置为控制存储装置,所述方法包括:
从所述存储装置接收初始映射信息;
基于所述初始映射信息执行初始迁移,使得存在于所述存储装置的第一区域中的源数据迁移到第二区域;
从所述存储装置接收关于所述源数据的第一脏数据的第一脏信息;
基于所述第一脏信息对所述第一脏数据执行第一迁移;
从所述存储装置接收关于所述源数据的第二脏数据的第二脏信息;以及
基于所述第二脏信息对所述第二脏数据执行第二迁移,
其中,所述第一脏信息的大小不同于所述第二脏信息的大小。
2.根据权利要求1所述的方法,其中,所述第一脏数据是在所述初始迁移期间由所述主机装置的操作生成的。
3.根据权利要求1所述的方法,其中,所述第二脏数据是在所述第一迁移期间由所述主机装置的操作生成的。
4.根据权利要求1所述的方法,其中,从所述存储装置接收所述第二脏信息的时间短于从所述存储装置接收所述第一脏信息的时间。
5.根据权利要求1所述的方法,其中,执行所述第二迁移的时间短于执行所述第一迁移的时间。
6.根据权利要求1所述的方法,其中,所述的接收第一脏信息包括从所述存储装置接收第一子脏信息;
基于所述第一子脏信息生成第一索引信息;以及
从所述存储装置接收第二子脏信息,
其中,所述第一脏信息包括所述第一子脏信息和所述第二子脏信息。
7.根据权利要求6所述的方法,其中,所述第二子脏信息是基于所述第一索引信息被生成的。
8.根据权利要求6所述的方法,其中,所述第一子脏信息具有第一映射单位,并且所述第二子脏信息具有与所述第一映射单位不同的第二映射单位,并且
其中,所述第一映射单位指示与所述第一子脏信息的每个位相对应的所述源数据的第一大小,并且所述第二映射单位指示与所述第二子脏信息的每个位相对应的所述源数据的第二大小。
9.根据权利要求8所述的方法,其中,所述第一大小大于所述第二大小。
10.根据权利要求8所述的方法,其中,所述的接收第一脏信息还包括:
基于所述第一索引信息确定所述第二映射单位。
11.根据权利要求10所述的方法,
其中,响应于所述第一索引信息大于参考值,所述第二映射单位被设置为最小值;以及
响应于所述第一索引信息小于或等于所述参考值,所述第二映射单位被设置为给定值。
12.根据权利要求1所述的方法,所述方法还包括:
响应于所述第二脏数据的数量小于阈值,
暂停对所述第一区域的访问;
从所述存储装置接收关于所述源数据的第三脏数据的第三脏信息;以及
基于所述第三脏信息对所述第三脏数据执行第三迁移。
13.根据权利要求12所述的方法,所述方法还包括:
响应于所述第三迁移被完成,针对所述源数据访问所述第二区域。
14.根据权利要求1所述的方法,所述方法还包括:
驱动第一虚拟机和第二虚拟机,
其中,所述第一虚拟机被配置为访问所述第一区域,并且所述第二虚拟机被配置为访问所述第二区域。
15.根据权利要求1所述的方法,所述方法还包括:
经由快速非易失性存储接口与所述存储装置进行通信。
16.一种存储装置的操作方法,所述存储装置被配置为在主机装置的控制下进行操作,所述方法包括:
向所述主机装置发送关于源数据的初始映射信息;
在所述主机装置的控制下执行初始迁移,使得所述源数据从第一区域迁移到第二区域;
在发送所述初始映射信息以及执行所述初始迁移时,通过使用第一位图来管理关于从所述源数据生成的第一脏数据的信息;
基于所述第一位图生成第一脏信息,并且向所述主机装置发送所述第一脏信息;
在所述主机装置的控制下对所述第一脏数据执行第一迁移;
在生成所述第一脏信息、发送所述第一脏信息以及执行所述第一迁移时,通过使用第二位图来管理关于从所述源数据生成的第二脏数据的信息;
基于所述第二位图生成第二脏信息,并且向所述主机装置发送所述第二脏信息;以及
在所述主机装置的控制下对所述第二脏数据执行第二迁移,
其中,所述第一脏信息的大小不同于所述第二脏信息的大小。
17.根据权利要求16所述的方法,其中,所述的生成第一脏信息包括:
从所述主机装置接收包括关于第一映射单位的信息的第一查询请求;
响应于所述第一查询请求基于所述第一位图生成第一子脏信息,所述第一子脏信息的每个位具有所述第一映射单位;
向所述主机装置发送所述第一子脏信息;
从所述主机装置接收包括关于第二映射单位的信息和第一索引信息的第二查询请求;
响应于所述第二查询请求基于所述第一位图生成第二子脏信息,所述第二子脏信息的每个位具有所述第二映射单位;以及
向所述主机装置发送所述第二子脏信息的与所述第一索引信息相对应的位,
其中,所述第一映射单位指示与所述源数据的位当中的属于所述第一子脏信息的每一个位相对应的第一大小,
其中,所述第二映射单位指示与所述源数据的位当中的属于所述第二子脏信息的每一个位相对应的第二大小,并且
其中,所述第一大小大于所述第二大小。
18.根据权利要求16所述的方法,所述方法还包括:
通过压缩所述第一位图获得所述第一脏信息,以及
通过压缩所述第二位图获得所述第二脏信息。
19.根据权利要求16所述的方法,其中,所述第一脏信息包括指示所述第一位图的位的位置的第一位图地址,所述第一位图地址针对所述第一脏数据被选择性地标记,并且
其中,所述第二脏信息包括指示所述第二位图的位的位置的第二位图地址,所述第二位图地址针对所述第二脏数据被选择性地标记。
20.一种主机装置的操作方法,所述主机装置被配置为控制存储装置,所述方法包括:
从所述存储装置接收初始映射信息;
基于所述初始映射信息执行初始迁移,使得存在于所述存储装置的第一区域中的源数据迁移到第二区域;
基于与所述源数据的第一脏数据相关联的第一位图,对所述源数据的所述第一脏数据执行第一迁移;
将所述第一脏数据的数量与参考值进行比较;以及
依据所述比较的结果,基于与所述源数据的第二脏数据相关联的第二位图和基于所述第二位图的第二脏信息中的一者执行第二迁移,
其中,所述第一位图的大小等于所述第二位图的大小,并且
其中,所述第二脏信息的大小小于所述第一位图的大小和所述第二位图的大小中的每一者。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2022-0043456 | 2022-04-07 | ||
KR1020220073186A KR20230144434A (ko) | 2022-04-07 | 2022-06-16 | 호스트 장치의 동작 방법 및 스토리지 장치의 동작 방법 |
KR10-2022-0073186 | 2022-06-16 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116893877A true CN116893877A (zh) | 2023-10-17 |
Family
ID=88311281
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310349475.0A Pending CN116893877A (zh) | 2022-04-07 | 2023-03-31 | 主机装置的操作方法及存储装置的操作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116893877A (zh) |
-
2023
- 2023-03-31 CN CN202310349475.0A patent/CN116893877A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10740018B2 (en) | Data migration method and apparatus applied to computer system, and computer system | |
US11914531B2 (en) | Host controller interface using multiple circular queue, and operating method thereof | |
US11288183B2 (en) | Operating method of memory system and host recovering data with write error | |
US11947419B2 (en) | Storage device with data deduplication, operation method of storage device, and operation method of storage server | |
US20240086113A1 (en) | Synchronous write method and device, storage system and electronic device | |
US20240037027A1 (en) | Method and device for storing data | |
US20230153006A1 (en) | Data processing method and data processing device | |
US11662949B2 (en) | Storage server, a method of operating the same storage server and a data center including the same storage server | |
EP4258097A1 (en) | Operation method of host device and operation method of storage device | |
US20220187992A1 (en) | Systems and methods for data copy offload for storage devices | |
US20230325110A1 (en) | Operation method of host device and operation method of storage device | |
CN116893877A (zh) | 主机装置的操作方法及存储装置的操作方法 | |
KR20230144434A (ko) | 호스트 장치의 동작 방법 및 스토리지 장치의 동작 방법 | |
US20230153237A1 (en) | Method and device for storing data | |
US11914879B2 (en) | Storage controller and storage system comprising the same | |
US20230135891A1 (en) | Storage device including storage controller and operating method | |
EP4148572B1 (en) | Computational storage device and storage system including the computational storage device | |
US20230141936A1 (en) | Secure processor, operating method thereof, and storage device including same | |
US20240069814A1 (en) | Storage server and operation method of storage server | |
KR102583244B1 (ko) | 스토리지 장치 및 스토리지 장치의 동작 방법 | |
EP4332773A1 (en) | Storage server and operation method of storage server | |
US20230393749A1 (en) | Method and device of storage data | |
TW202321921A (zh) | 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 | |
CN115480700A (zh) | 数据存储方法、存储设备以及主机 | |
CN116266146A (zh) | 多核处理器和存储装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |