CN112835817A - 数据迁移的方法及系统 - Google Patents
数据迁移的方法及系统 Download PDFInfo
- Publication number
- CN112835817A CN112835817A CN202110043788.4A CN202110043788A CN112835817A CN 112835817 A CN112835817 A CN 112835817A CN 202110043788 A CN202110043788 A CN 202110043788A CN 112835817 A CN112835817 A CN 112835817A
- Authority
- CN
- China
- Prior art keywords
- source
- network card
- migration
- data
- ssd
- 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
- 238000013508 migration Methods 0.000 title claims abstract description 275
- 230000005012 migration Effects 0.000 title claims abstract description 275
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000013507 mapping Methods 0.000 claims description 17
- 230000015654 memory Effects 0.000 description 71
- 238000003491 array Methods 0.000 description 26
- 238000010586 diagram Methods 0.000 description 12
- 238000013403 standard screening design Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/004—Error avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5007—Internet protocol [IP] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/26—Using a specific storage system architecture
- G06F2212/261—Storage comprising a plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/314—In storage network, e.g. network attached cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例涉及一种应用于源智能网卡的数据迁移方法。所述方法包括:接收第一迁移指令,所述第一迁移指令携带源SSD中待迁移数据的地址,及迁入所述待迁移数据的目标SSD的信息,所述目标SSD属于目标存储阵列;发送读指令至所述源SSD,所述读指令包括所述第一迁移指令携带的所述源SSD的地址及所述源迁移缓存的访问信息,用于指示所述源SSD将所述待迁移数据读取至所述源迁移缓存;发送第二迁移指令至所述目标存储阵列的目标智能网卡,所述第二迁移指令包括所述源迁移缓存的访问信息及根据所述目标SSD信息确定的目标SSD地址,用于指示所述目标智能网卡所述源迁移缓存中的待迁移数据迁移至所述目标存储阵列。
Description
本案是专利申请号为201780002932.1,申请日为2017年9月5日,发明名称为“数据迁移的方法、系统及智能网卡”的分案申请。
技术领域
本发明涉及存储技术领域,特别涉及存储设备间的数据迁移的方法。
背景技术
在实际应用中,经常需要在存储系统中的不同存储阵列之间进行数据迁移。例如,在存储系统中,由于SSD盘的数量及容量巨大,出故障的概率也会比较大,为了避免出现数据丢失,需要预先识别出即将失效的SSD,即预失效SSD,然后将所述预失效SSD中的数据迁移到集群中的其他存储阵列的SSD中进行备份。
现有技术中,在对通过网络连接的两个存储阵列中的数据进行迁移时,需要先在源存储阵列的内存中分配一段专用于数据迁移的内存空间,然后再由源存储阵列的控制器将源SSD(数据迁出的SSD,例如侦测到的预失效SSD)中的数据先读取到所述内存空间中,再向源存储阵列的网卡发送迁移命令,源存储阵列的网卡再将该请求转发至目标存储阵列的网卡,目标存储阵列的网卡再通知目标存储阵列的控制器,目标阵列的控制器需要分配一段专用于数据迁移的内存,分配好后,则通知目标存储阵列的网卡将数据从源存储阵列的内存迁移至目标存储阵列的内存,目标存储阵列的控制器再将目标存储阵列的内存中数据写入所述目标阵列的闪存中。
可见,现有技术中,在存储系统中的存储阵列之间进行数据迁移时,所迁移的数据必须通过源存储阵列的控制器进行迁移,因而会占用源存储阵列的控制器的带宽,另外还会占用源存储阵列的内存与目标存储阵列的内存,如此则会对阵列中的其他SSD中的数据的正常访问产生影响,从而影响整个存储系统的性能。为了减少数据迁移对存储系统性能影响,一般会限制数据迁移时所占用的控制器的带宽,这就会导致数据迁移的时间过长,增加数据丢失的风险。另外,即使限制数据迁移的带宽,也还是会影响存储系统的性能。
发明内容
本发明实施例提供在存储阵列间进行数据迁移的方法,在数据迁移时,不占用源存储阵列及目标存储阵列的控制器的带宽及内存,从而不影响存储系统的性能,且保障数据迁移的速度。
本发明实施例第一方面提供一种数据迁移方法。所述方法应用于源智能网卡,所述源智能网卡与源固态硬盘SSD属于源存储阵列,且互相连通,所述源智能网卡包括源迁移缓存,所述源迁移缓存包括访问信息,所述源SSD根据所述访问信息访问所述源迁移缓存。所述方法包括:
接收第一迁移指令,所述第一迁移指令携带所述源SSD中待迁移数据的地址,及迁入所述待迁移数据的目标SSD的信息,所述目标SSD属于目标存储阵列;
发送读指令至所述源SSD,所述读指令包括所述第一迁移指令携带的所述源SSD的地址及所述源迁移缓存的访问信息,用于指示所述源SSD将所述待迁移数据读取至所述源迁移缓存;
发送第二迁移指令至所述目标存储阵列的目标智能网卡,所述第二迁移指令包括所述源迁移缓存的访问信息及根据所述目标SSD信息确定的目标SSD地址,用于指示所述目标智能网卡所述源迁移缓存中的待迁移数据迁移至所述目标存储阵列。
通过上述数据迁移方法,在将源存储阵列中的数据迁移目标存储阵列时,数据迁移过程中,不占用源存储阵列的控制器的带宽及内存,从而不影响源存储阵列的性能,且在数据迁移过程中,不受源存储阵列的控制器的带宽的限制,提升了数据迁移的速度。
进一步地,所述访问信息包括所述源存储阵控制器为所述源迁移缓存分配的所述的内存地址。
通过分配所述内存地址,即可实现所述源SSD对所述源智能网卡的源迁移缓存的访问。
进一步地,所述目标SSD的信息包括所述目标SSD的IP地址,所述目标SSD的IP地址为所述目标存储阵列与所述源存储阵列建立连接时,所述源智能网卡为所述目标SSD分配的IP地址。这样,即可根据所述目标SSD信息中的目标SSD的IP地址确定所述目标智能网卡,从而发送所述第二迁移指令至所述目标智能网卡。
通过IP地址映射的方式,可以将目标存储阵列的SSD映射至源存储阵列,源存储阵列根据SSD的IP地址即可找到目标智能网卡,从而进行数据的传输。
进一步地,所述源智能网卡中存储有所述目标SSD的IP地址与所述目标SSD的磁盘标识的映射关系,所述目标SSD的信息还包括所述目标SSD中存入所述待迁移数据的逻辑地址,如此,在根据所述目标SSD的信息确定目标SSD地址时,可以首先根据所述映射关系及所述目标SSD信息中的目标SSD的IP地址确定所述目标SSD的磁盘标识,然后将所述目标SSD的磁盘标识和所述目标SSD中存入所述待迁移数据的逻辑地址作为所述目标SSD地址。
源智能网卡在接收到目标存储阵列发送的目标SSD的信息时,通过建立为每个目标SSD分配的IP地址与每个SSD的磁盘标识,在数据迁移过程中,即可根据所述映射关系确定SSD磁盘标识,进而可以方便的确定目标SSD,实现数据的迁移。
在另外一种实现方式中,所述目标SSD的信息包括所述目标智能网卡的IP地址,所述目标智能网卡的IP地址为所述目标存储阵列与所述源存储阵列建立连接时,所述源智能网卡为所述目标智能网卡分配的IP地址,这样所述源智能网卡可以根据所述目标SSD信息中的目标智能网卡的IP地址确定所述目标智能网卡。
这样通过给目标智能网卡分配IP地址的方式方便源存储阵列管理目标存储阵列映射至源存储阵列的虚拟硬盘。
进一步地,所述目标SSD的信息还包括目标SSD的磁盘标识及目标SSD中存入所述待迁移数据的逻辑地址,这样,在根据所述目标SSD的信息确定目标SSD地址时,可以将所述目标SSD的磁盘标识和存入所述待迁移数据的逻辑地址作为所述目标SSD地址。
本发明实施例第二方面提供一种数据迁移方法。所述方法应用于目标智能网卡。所述目标智能网卡与目标SSD属于目标存储阵列,且互相连通,所述目标智能网卡包括目标迁移缓存,所述目标迁移缓存包括访问信息,所述目标SSD根据所述访问信息访问所述目标迁移缓存。所述方法包括:
接收源存储阵列的源智能网卡发送的迁移指令,所述迁移指令包括所述源智能网卡的所述源迁移缓存的访问信息及所述目标SSD的地址,所述源迁移缓存的访问信息为存储在所述源迁移缓存中的由所述源SSD迁入的待迁移数据的信息;
根据所述迁移指令将所述源迁移缓存中的待迁移数据读取至所述目标迁移缓存中;
发送写指令至所述目标SSD,其中,所述写指令包括所述目标迁移缓存的信息及所述目标SSD的地址,用于指示所述目标SSD将所述目标迁移缓存中的待迁移数据写入所述目标SSD中。
通过上述数据迁移方法,在将源存储阵列中的数据迁移目标存储阵列时,数据迁移过程中,不占用目标存储阵列的控制器的带宽及内存,从而不影响目标存储阵列的性能,且在数据迁移过程中,不受目标存储阵列的控制器的带宽的限制,提升了数据迁移的速度。
进一步地,所述访问信息包括所述目标存储阵的控制器为所述目标迁移缓存分配的所述控制器的内存地址。
通过分配所述内存地址,即可实现所述目标SSD对所述目标智能网卡的源迁移缓存的访问。
进一步地,在根据所述迁移指令将所述源迁移缓存中的待迁移数据读取至所述目标迁移缓存中时,首先根据所述迁移指令生成读指令,所述读指令的源地址为所述迁移指令中的源迁移缓存的访问信息,所述读指令的目的地址为所述目标迁移缓存的访问信息。
进一步地,所述目标SSD的信息包括所述目标SSD的磁盘标识,如此,在将所述写指令发送至所述目标SSD时,所述目标智能网卡根据所述目标SSD的磁盘标识从所述目标阵列的多个SSD中确定所述目标SSD,然后将所述写指令发送至所述目标SSD。
本发明实施例的第三方面提供一种源智能网卡,所述源智能网卡与源SSD属于源存储阵列,且互相连通,所述源智能网卡包括源迁移缓存,所述源迁移缓存包括访问信息,所述源SSD根据所述访问信息访问所述源迁移缓存。所述源智能网卡还包括接收模块、读指示模块、及迁移指示模块等,通过源智能网卡的各种模块执行本发明实施例的第一方面提供的数据迁移方法。
本发明实施例的第四方面提供一种目标智能网卡,所述目标智能网卡与目标SSD属于目标存储阵列,且互相连通,所述目标智能网卡包括目标迁移缓存,所述目标迁移缓存包括访问信息,所述目标SSD根据所述访问信息访问所述目标迁移缓存,所述目标智能网卡包括接收模块、读模块、及写指示模块等。通过目标智能网卡的各种模块执行本发明实施例的第二方面提供的数据迁移方法。
本发明实施例第五方面提供一种数据迁移系统,所述数据迁移系统包括源智能网卡及目标智能网卡,所述源智能网卡为本发明实施例第三方面提供的源智能网卡,所述目标智能网卡为本发明实施例第四方面提供的目标智能网卡。
本发明实施例第六方面提供一种源智能网卡,所述源智能网卡中存储有程序指令,所述源智能网卡的处理器执行所述程序指令以实现本发明实施例第一方面提供的方法。
本发明实施例第七方面提供一种目标智能网卡,所述目标智能网卡中存储有程序指令,所述目标智能网卡的处理器执行所述程序指令以实现本发明实施例第二方面提供的方法。
通过本发明的上述实施例中的各种实现方式,可以将通过源智能网卡及目标智能网卡提供的迁移缓存作为数据的中转缓存,从而在迁移数据时,所迁移的数据不经过源存储阵列和目标存储阵列的控制器及内存,使迁移数据不占用源存储阵列及目标存储阵列的控制器的带宽及内存,大大降低了对存储系统的性能影响,且保障了数据迁移的速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为现有技术中的存储系统的架构图。
图2为存储阵列间进行虚拟磁盘映射的示意图。
图3为现有技术中将源存储阵列的数据迁移至目标存储阵列的方法的流程图。
图4为本发明第一实施例中的存储系统的架构图。
图5为本发明第一实施例中的源存储阵列的架构图。
图6为本发明实施例中为源存储阵列中的源智能网卡分配访问信息的方法的流程图。
图7为本发明实施例中将源存储阵列的数据迁移至目标存储阵列的方法的流程图。
图8为本发明第二实施例中的存储系统的架构图。
图9为本发明实施例中的存储系统中的各元件的模块图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
如图1所示,为现有存储系统100的架构图,所述存储系统100为通过网络110连接的多个存储阵列组成的集群,一般用作数据中心。图中为了简洁,只示出了两个存储阵列,即源存储阵列120及目标存储阵列130,所述源存储阵列120即为数据迁出的SSD,所述目标存储阵列130即为数据迁入的SSD。各存储阵列之间通过基于RDMA协议的通信协议进行通信。
每个存储阵列的结构基本相同,下面以源存储阵列120为例进行说明。所述源存储阵列120包括源控制器121、源内存122、高速外围组件互连标准(Peripheral componentinterconnection express,PCIe)总线123、多个SSD(即SSD0至SSD10)及网卡125(NetworkInterface Card,NIC)。所述源内存122连接至所述源控制器121。所述源控制器121通过所述PCIe总线123与所述多个SSD及网卡125连接。所述网卡125通过网络110与其他存储阵列的网卡连接,从而实现所述源存储阵列120与其他存储阵列,例如目标存储阵列130之间的通信。
在存储系统100中的各存储阵列之间建立连接时,会进行链路初始化,在链路初始化时,基于RDMA协议,每个存储阵列可以将本地的SSD映射至存储系统中的其他存储阵列供其他存储阵列直接访问。以所述源存储阵列120及所述目标存储阵列130为例,在进行链路初始化时,所述目标存储阵列130将本地的SSD(SSD0-SSD10)映射至源存储阵列120,这样,所述目标存储阵列130的SSD0-SSD10即可作为所述源存储阵列120的虚拟磁盘SSD11-SSD21,供所述源存储阵列120使用,具体请参考图4所示。所述目标存储阵列130将本地SSD映射至源存储阵列120作为源存储阵列的虚拟SSD的具体方法为:在链路初始化时,所述目标存储阵列130选定需要映射给其他存储阵列使用的SSD,本实施例中,目标存储阵列130将本地的所有SSD都映射给其他存储阵列使用,然后将选定的每个SSD的信息,例如磁盘标识、磁盘大小、地址空间等通过与其他存储阵列之间的链路发送给其他存储阵列,例如源存储阵列120。在每个存储阵列发送的SSD信息经过源存储阵列120的网卡(networkinformation center,NIC)125时,所述网卡125会为每个SSD生成一个IP地址,并将所述IP地址添加至每个SSD的信息中,然后在网卡125中建立每个IP地址与每个SSD的磁盘标识的对应关系,源存储阵列120在收到每个SSD的信息后,会记录每个SSD的IP地址,通过SSD的IP地址来识别每个SSD,然后为每个SSD信息创建一个磁盘对象,即所述虚拟磁盘(如图4中的SSD11-SSD21),如此即可将目标存储阵列130的本地SSD映射至源存储阵列120,作为源存储阵列120的虚拟磁盘,所述源存储阵列在访问所述虚拟硬盘时,只要在访问信息中携带所述虚拟硬盘的IP地址即可。
所述目标存储阵列130将本地SSD映射至源存储阵列120作为源存储阵列的虚拟SSD的另外一种方法为:在每个存储阵列发送的SSD信息经过源存储阵列120的网卡(network information center,NIC)125时,所述网卡只会为目标存储阵列130的网卡135生成一个IP地址,源存储阵列120会通过IP地址+磁盘标识的方式标识每个SSD,并建立磁盘对象。所述磁盘标识为每个存储阵列为存储阵列中的每个SSD分配的唯一标识。这样,所述源存储阵列在访问所述虚拟硬盘时,在访问信息中携带的是虚拟硬盘的IP地址+磁盘标识。
在实际的应用中,经常需要在存储阵列之间进行数据的迁移,例如,在源存储阵列120侦测到即将失效的SSD,即源SSD120时,就需要将所述源SSD120中的数据迁移到其他SSD,以免所述源SSD120失效后,造成数据的丢失。在迁移时,可以将所述源SSD120中的数据迁移到同一存储阵列的SSD中,也可以迁移到其他存储阵列的SSD。本实施例中只描述将所述源SSD120中的数据迁移到其他存储阵列如目标存储阵列130中的SSD的情况。所述目标存储阵列130的硬件结构与源存储阵列120的硬件结构相同,在描述过程中,为了与源存储阵列120所包括的各元件相区别,则目标存储阵列130中所包括的各元件在此分别被命名为目标控制器131、目标内存132、及目标SSD134。目标SSD134即为迁入所述源SSD124中的数据的SSD。
下面将结合图3说明现有技术中将源存储阵列120中的源SSD124中的数据迁入目标存储阵列130的目标SSD134的方法。
如图3所示,在步骤S201中,当所述源控制器121侦测到源SSD124中的数据需要迁出时,例如,侦测到源SSD124的数据即将失效,则在所述存储系统100中选择迁入所述源SSD中的目标SSD,所述目标SSD可以是本地SSD,也可以是虚拟SSD,在此,只描述所述目标SSD为虚拟SSD的情况,也即所述目标SSD位于远端存储阵列的情况。
步骤S202,所述源控制器121在所述源内存122中申请一段专门用于数据迁移的迁移内存空间,并获取待迁移数据的数据量。
步骤S203,所述源控制器121根据所述迁移内存空间的长度及所获取的待迁移数据的数据量,生成读指令,并将所述读指令发送至源SSD124,所述读指令指示所述源SSD124对与所述迁移内存空间等大的数据块进行迁移。
步骤S204,所述源SSD124根据所述读指令将所述源SSD中所述读指令对应的数据块读取至所述迁移内存空间。
步骤S205,在所述读指令执行完成后,所述源SSD124发送读取完成反馈指令至所述源控制器121。
步骤S206,所述源控制器121根据所述读取完成反馈指令发送写指令至源网卡125,所述写指令指示所述源网卡125将所述源内存122中的迁移内存中的数据迁移至所述目标SSD中。
步骤S207,所述源网卡125接收到所述写指令后,根据所述写指令中所述目标SSD的信息,确定目标网卡,然后所述写指令转发至所述目标网卡135。
步骤S208,所述目标网卡135再将所述写指令转发至所述目标控制器131。
步骤S209,所述目标控制器131根据所述写指令在所述目标内存132中分配一段迁移内存,并生成迁移指令,所述迁移指令的源地址为所述源内存122中的迁移内存的地址,所述迁移指令的目标地址为所述目标内存132中的迁移内存的地址,并将所述迁移指令发送至所述目标网卡。
步骤S210,所述目标网卡135根据所述迁移指令将所述源内存122中的迁移内存中的数据读取到所述目标内存132中的目标迁移内存中。
步骤S211,所述目标网卡135在数据迁移完成后,通知所述目标控制器数据搬移完成。
步骤S212,所述目标控制器向所述目标SSD发送写命令,以使所述目标SSD将所述目标内存中的数据写入所述目标SSD的闪存中。
步骤S213,所述目标网卡135在接收到所述目标SSD发送的搬迁完成的命令后,通知所述源网卡125数据搬移完成,所述源网卡125进一步通知所述源控制器121数据搬移完成。
步骤S214,所述源控制器121在收到所述通知命令后,判断所述待迁移数据是否迁移完成。如果没有迁移完成,则返回步骤S201,继续执行流程,直到所述源SSD124中的待迁移数据被迁移完,如果迁移完成,则结束流程。
在上述数据迁移方法中可以看出,现有技术在将源SSD中的数据迁移至目标SSD时,数据迁移的过程必需由源控制器及目标控制器控制,且迁移数据必须经过源内存122及目标内存132进行迁移,这样,即使限制数据迁移时所占用的源控制器及目标控制器的带宽,也还是会对存储系统的性能产生影响,另外,如果限制数据迁移的所占用的源控制器及目标控制器带宽,会使数据迁移的速度非常慢,增加迁移数据丢失的风险,从而影响存储系统的可靠性。
本发明实施例提出数据迁移方法,在源SSD和目标SSD之间迁移数据的时候,数据在迁移过程中不经过源内存及目标内存,而是通过PCIE交换机的接口直接传输,且源控制器只发送迁移相关命令,所以只占用源控制器很少带宽,因而不会影响存储系统的性能,另外,数据迁移的速率也不受源控制器带宽限制,从而提高了数据迁移的速率。下面将详细对本发明实施例提供的方案进行详细的描述。
如图4所示,为本发明第一实施例中的存储系统的架构图。第一实施例中的存储系统的架构图与图1中现有技术中的存储系统的架构基本相同,不同之处在于连接所述源存储阵列120和所述目标存储阵列130的网络设备由原来的网卡更换为具有控制功能的智能网卡。为了描述方便,将源存储阵列120中的智能网卡称为源智能网卡126,目标存储阵列130中的智能网卡称为目标智能网卡136,所述源智能网卡126及目标智能网卡136之间通过基于RDMA协议的通信协议,例如NOF协议进行通信。
所述源控制器121用于运行源内存122中的应用程序1222,以实现源存储阵列120所提供的一些功能,例如控制SSD0~SSD10中数据的访存及迁移,对源智能网卡126进行数据传输过程的控制。所述源内存122中还存储有SSD0~SSD10及源智能网卡126的元数据1221,所述元数据1221记录有每个SSD中所存储的数据的信息,例如所存储数据的数据量,以及所存储数据的逻辑地址信息,及所述源智能网卡126的迁移缓存的访问信息,关于迁移缓存的访问信息将在下文做详细介绍。
本发明实施例中,所述源存储阵列120与目标存储阵列130的结构基本相同,在此,仅以源存储阵列120为例说明存储阵列中各元件的结构图。首先来描述源智能网卡126的结构图,目标智能网卡136的结构与源智能网卡136的结构相同,在此仅以源智能网卡126为例进行说明。如图5所示,所述源智能网卡126包括处理器1261、缓存1262,所述缓存1262中还设置有迁移缓存1263,所述处理器1261中还包括寄存器1264。所述缓存1262中存储有程序指令(图未示),所述处理器1261执行所述程序指令以实现所述程序指令所指示的功能。所述迁移缓存1263可以提供给所述源控制器121及SSD访问,所述迁移缓存1263被提供给所述源控制器121及SSD访问的方法请参阅图6的流程图所示。
步骤S601,所述源智能网卡126在所述处理器1261的寄存器1264中设置迁移缓存1263的缓存信息,本实施例中,所述缓存信息包括迁移缓存的大小。
步骤S602,在所述源存储阵列126的BIOS启动阶段,所述源控制器121从所述智能网卡126中处理器1261的寄存器1264中读取所述迁移缓存1263的缓存信息,并根据所读取的缓存信息为所述迁移缓存1263分配访问信息,并将为所述迁移缓存分配的访问信息记录在源内存122中的源智能网卡的元数据中1221,所述访问信息包括访问首地址及迁移缓存的长度。所述访问首地址即为所述源内存122的一个地址信息,这个地址信息对应所述迁移缓存1263的起始地址信息,根据所述访问地址与所述迁移缓存的大小即可形成所述迁移缓存的访问地址空间。
步骤S603,源控制器121将为所述迁移缓存1263分配的访问信息写入所述源智能网卡126的寄存器1264中。在具体实现时,可以只写入所述访问首地址。
步骤S604,所述源智能网卡126在缓存1262中选择一段与所设置的缓存大小相同的缓存空间,作为迁移缓存1263,并建立所述访问信息与所述迁移缓存1263的映射关系。
在源控制器126或者其他SSD需要访问所述迁移缓存1263的任意位置时,只要在访问命令中携带所述访问地址空间的一段访问地址,即可根据寄存器中存储的所述访问首地址与迁移缓存1263的起始地址的对应关系找到所述访问地址对应的迁移缓存的物理地址,从而实现对所述迁移缓存1263中的数据的访问。如此,所述源控制器121或者SSD即可通过所述访问信息访问所述智能网卡126的迁移缓存1263。在确定了所述智能网卡126的迁移缓存1263后,即可利用所述迁移缓存1263进行数据迁移。
源存储阵列120中的各SSD的结构也基本相同,在此以源SSD124为例进行说明。所述源SSD124包括处理器1241、直接内存访问(Direct Memory Access,DMA)控制器1242、缓存1243、及闪存1244。所述处理器1241用于接收所述源控制器121发送的数据访存命令,以根据源控制器121的访存命令控制闪存1244中的数据1246的存取。所述DMA控制器1242可以直接访问源内存122。另外,由于所述智能网卡126中的迁移缓存1263被所述源控制器121分配了访问信息,所以,所述DMA控制器1242也可以直接访问所述智能网卡126的迁移缓存1263。具体访问方法将在下文介绍数据迁移时再做详细描述。
在设置了所述源智能网卡126及目标智能网卡136的迁移缓存后,即可利用所述迁移缓存进行数据迁移。具体迁移方法如图7所示。
步骤S701,源控制器121侦测预设的进行数据迁移的条件。
所述预设的迁移条件可以为确定所述源存储阵列126中的某个SSD即将失效,或者接收到数据迁移请求时,所述迁移请求来自于应用,或者其他设备。
步骤S702,当侦测到预设的进行数据迁移的条件时,所述源控制器121获取需要进行数据迁移的SSD,即源SSD中待迁移数据的迁移数据信息,并确定目标SSD。
所述目标SSD可以是图2中的本地SSD,也可以是虚拟SSD,但在本实施例中只描述所述目标SSD为虚拟SSD时进行数据迁移的方法,在本实施例中所述虚拟SSD21被选择为目标SSD。
所述源控制器121从所述源内存122中存储的元数据1221中获取所述源SSD中的待迁移数据的迁移数据信息,所述迁移数据信息包括待迁移数据的数据量及逻辑地址。
所述目标SSD可以由用户确定,也可以是预先为所述源SSD设置的备份盘。所述目标SSD的个数可以是一个,也可以是多个,具体数量可以根据数据迁移的速度要求决定。
用户在确定目标SSD时,可以根据每个SSD存储的数据量及忙闲程度进行选择,即可选择当前业务量比较小且有较多空闲空间的SSD作为目标SSD。一般在一个存储系统中,会设置一个控制服务器(图中未示),该控制服务器中有系统中所有SSD的当前状态信息,例如业务量及空闲空间,所有用户可以通过访问该集群控制器选择所述目标SSD,所述集群控制器将所选择的目标SSD的信息发送至所述源存储阵列120。
步骤S703,所述源控制器121生成第一迁移指令,所述迁移指令包括所述源SSD中待迁移数据块的信息、所述目标SSD的信息及本次迁移的数据长度。
本实施方式中,提供两种生成第一迁移指令的方式,第一种方式为:首先根据预设的每次迁移的数据块的长度及所述迁移数据信息中所述待迁移数据的数据量将所述待迁移数据切分成多个数据块,需要说明的是,每个数据块的长度可以等于与所述迁移缓存的长度,也可以小于所述迁移缓存的长度。且每个数据块的逻辑地址可以根据所述待迁移数据的逻辑地址及所切分的数据块的长度确定。
第二种方式为:在生成第一迁移指令时,不对所有的待迁移数据进行切分,而是只针对一次迁移切分出一个数据块,所切分的数据块的长度为预设的长度,可以小于或者等于所述迁移缓存的长度,然后确定所切分数据块的逻辑地址,并针对所切分出的数据块生成第一迁移指令。
所述第一迁移指令包括源地址及目标地址,所述源地址即为所述第一迁移指令所迁移的数据块在所述源SSD中的逻辑地址。由于本实施例中所描述的是目标SSD位于远端存储阵列的情况,所述目标地址根据图2中描述的虚拟磁盘两种映射方式,可以为SSD的IP地址+逻辑地址,也可以为目标网卡的IP地址+SSD的磁盘标识+逻辑地址。
在所确定的目标SSD为多个时,则根据待迁移数据在所述源SSD的逻辑地址从低到高的顺序分别针对每个目标SSD获取一个数据块,以生成多个第一迁移指令。
步骤S704,所述源控制器121将所述第一迁移指令发送至所述源智能网卡126。
在所述源控制器121根据多个目标SSD生成多个第一迁移指令时,则将所述多个第一迁移指令按照生成顺序依次发送至所述源智能网卡126。
步骤S705,所述源智能网卡126在接收到所述第一迁移指令时,生成第一读指令,并将所述第一读指令发送至所述源SSD。所述第一读指令中包括源地址、目标地址及迁移数据块长度,所述源地址为待迁移数据块的逻辑地址,所述目标地址为所述智能网卡的迁移缓存的访问地址。
步骤S706,所述源SSD124在接收到所述读指令时,根据所述源地址及待迁移数据块长度从待迁移数据中获取本次所迁移的数据块,并将所述数据块读取至所述源智能网卡126的迁移缓存中。
本实施方式中,在所述源SSD124的处理器1241接收到所述读指令后,通知所述DMA控制器1242根据所述读指令中的源地址,从所述源SSD的闪存中找到所述源地址所对应的待迁移数据块,然后根据所述目标地址,即所述迁移缓存的访问地址,将所述待迁移数据块写入所述目地地址所指示的源智能网卡126的迁移缓存中。在所述DMA控制器1242在将所述待迁移数据块读到所述智能网卡126的迁移缓存时,首先将所述待迁移数据块及所述目标地址通过所述PCIe总线123传输至所述目标地址所指示的源智能网卡126的迁移缓存,所述源智能网卡126再根据所述目标地址中的访问地址找到所述访问地址对应的迁移缓存的物理地址,然后将所述待迁移数据块存储至所述迁移缓存中所述物理地址所指示的位置处。
步骤S707,当所述待迁移数据块全部被读取至源智能网卡126的迁移缓存后,所述源SSD124发送一个读取完成反馈指令至所述源智能网卡126。
步骤S708,所述源智能网卡126在接收到所述源SSD124发送的读取完成的反馈指令后,根据所述第一迁移指令中的目标地址确定目标智能网卡136,然后发送第二迁移指令至所述目标智能网卡136,所述第二迁移指令包括源地址及目标地址,所述第二迁移指令的源地址为所述源智能网卡126的迁移缓存中存储所述待迁移数据块的物理区间的访问地址,所述第二迁移指令的目标地址根据所述第一迁移指令中的目标地址确定。
如步骤S703所述,当所述第一迁移指令中的目标地址以为目标SSD的IP地址+逻辑地址时,则所述源智能网络126可以根据所述目标SSD的IP地址确定所述目标智能网卡,然后根据在进行磁盘映射时建立的SSD的IP地址与SSD的磁盘标识确定所述目标SSD的IP地址对应的目标SSD的磁盘标识,然后将所述磁盘标识+逻辑地址作为所述第二迁移命令的目标地址。
当所述第一迁移指令中的目标地址为目标网卡的IP地址+目标SSD的磁盘标识+逻辑地址时,则所述源智能网络126根据所述目标网卡的IP地址确定目标网卡,并将目标SSD的磁盘标识+逻辑地址作为所述第二迁移命令的目标地址。
步骤S709,所述目标智能网卡136根据所述第二迁移指令生成第二读指令,所述第二读指令中的源地址为所述第二迁移命令中的源地址,所述第二读指令的目的地址为所述目标智能网卡136的迁移缓存的访问地址,所述目标智能网卡136根据所述第二读指令从所述源智能网卡126的迁移缓存中读取所述待迁移数据块至所述目标智能网卡136的迁移缓存中。
在此,所述目标智能网卡136通过RDMA协议从所述源智能网卡126的迁移缓存中读取所述待迁移数据块。
步骤S710,在所述待迁移数据块被读取完之后,所述目标智能网卡136发送写命令至所述目标SSD,所述写命令的源地址为所述目标智能网卡的迁移缓存的访问地址,所述写命令的目标地址为所述第二迁移指令中的目标地址。
如上所述,所述目标地址中包括所述目标SSD的磁盘标识及LBA,所以所述目标智能网卡可以根据所述磁盘标识找到所述目标SSD,根据所述LBA找到所述目标SSD的闪存中用于存储所述待迁移数据块的物理地址。
步骤S711,所述目标SSD134的处理器(图未示)根据所述写指令将所述目标智能网卡136中的迁移缓存中的待迁移数据块写入所述目标SSD的闪存中。
在此需要说明的是所述目标SSD134与所述源SSD124的结构相同,所述目标SSD134也包括DMA控制器(图未示),所述目标SSD通过DMA控制器将所述目标智能网卡136的迁移缓存中的待迁移数据块写入所述目标SSD的闪存中。
步骤S712,将所述待迁移数据块写入完成后,所述目标智能网卡136发送写入完成反馈指令至所述源控制器121。
步骤S713,在接收到所述写入完成的反馈指令后,所述源控制器判断所述源SSD中的待迁移数据是否迁移完成。
步骤S714,若未迁移完,则生成新的迁移指令,然后返回步骤S703,如果迁移完成,则结束数据迁移的流程。所述源控制器121在接收到多个反馈指令时,则针对每个反馈指令生成一个新的迁移指令。
如果步骤S703中生成迁移指令的方式为上述第一种方式,则在步骤S714,从尚未迁移的数据块中确定一个数据块,并针对所确定的数据块生成新的读指令。
如果步骤S703中生成读指令的方式为上述第二种方式,则在步骤714中,从未迁移的待迁移数据中切分出一个数据块,根据新切分的数据块生成新的读指令。
通过上述实施例提供的方法,即可将源SSD中的数据不经过源内存122及目标内存132传输至目标SSD中,从而不占用源控制器121的带宽,且提高了不同存储阵列间数据迁移的速率。
在本发明的另外一种实现方式中,如图8所示,所述源控制器和所述源内存形成一个独立的设备,即主机10,所述主机10通过PCIE交换机40连接至存储阵列20,所述存储阵列包括多个SSD30及智能网卡50。在这种结构下,还是由所述源控制器产生及发送第一迁移指令,所述智能网卡50的结构及实现与第一种实现方式相同,具体请参考图6及图7的描述,在此不再赘述。
另外,所述源智能网卡及所述目标智能网卡还可以是现场可编程门阵列(Field-Programmable Gate Array,FPGA),这时,所述缓存1262中的程序烧录在所述现场可编程门阵列的芯片中,而不是存储在所述缓存1262中,所述处理器1261直接执行所述烧录程序即可,而不需要从所述缓存1262中调用所述程序指令执行。
如图9所示,为本实施例中图4所示存储系统中的源存储阵列120中的源控制器121、源智能网卡126的模块图与目标存储阵列130中的目标智能网卡136的功能模块图。
所述源控制器121包括生成模块901、分配模块902、第一迁移指示模块903及判断模块904。所述源智能网卡126包括标记模块905、设置模块906、映射模块907、第一接收模块908、读指示模块909、第二迁移指示模块910。所述目标智能网卡136包括设置模块911、映射模块912、第二接收模块913、读模块914、及写指示模块915。
在实际实现时,存储系统中的各存储阵列的结构基本相同,各存储阵列的元件所包括的功能模块也基本相同,但在分别作为源端和目的端的时候,所实现的功能会有所不同,在本实施例中,只描述存储阵列作为源存储阵列或者目标存储阵列时所实现的功能模块。
在存储系统的各存储阵列进行链路初始化时,所述源智能网卡的标记模块905根据所述目标智能网卡发送的SSD的信息生成所述目标智能网卡的标识信息,在此,所述标记信息可以为为每个SSD的分配的IP地址,也可以为为所述目标智能网卡分配的IP地址,具体请参考图2的相关描述。所述源控制器的生成模块901在接收到源智能网卡发送的每个SSD的信息后,根据每个SSD的信息生成所述源存储阵列的虚拟磁盘,具体生成过程也请参考图2中的相关描述。
所述源智能网卡的设置模块906与所述源控制器的分配模块902相互配合,实现提供源智能网卡中的迁移缓存供所述源控制器及SSD访问的功能,与图6所示的源智能网卡提供迁移缓存的方法对应。具体地,所述源智能网卡的设置模块905用于在源智能网卡的寄存器中设置迁移缓存的缓存信息,具体设置的方式请参考步骤S601的描述。
所述源控制器的分配模块902用于在源存储阵列的BIOS启动阶段,从源智能网卡的处理器的寄存器中读取源智能网卡的迁移缓存信息,并根据所读取的迁移缓存信息为所述源智能网卡的迁移缓存分配访问信息,将为所述源智能网卡分配的访问信息记录在元数据中,同时,将为所述源智能网卡的迁移缓存分配的访问信息写入所述源智能网卡的寄存器中。具体分配方式请看考步骤S602的描述。
所述源智能网卡的映射模块907用于在缓存中选择一段与所设置的缓存大小相同的缓存空间,作为迁移缓存,并建立所述访问信息与所述迁移缓存之间的映射关系,与步骤S604对应。
所述目标智能网卡的设置模块910与映射模块911所执行的功能与所述源智能网卡的设置模块906及映射模块907所执行的功能相同,即实现为所述目标智能网卡设置迁移缓存,具体请参考关于源智能网卡的迁移缓存设置的相关描述,在此不再赘述。
所述源控制器的第一迁移指示模块903用于侦测预设的进行数据迁移的条件,当侦测到预设的进行数据迁移的条件时,获取源SSD中待迁移数据的迁移数据信息,并确定目标SSD,然后根据待迁移数据的迁移数据信息及所述目标SSD的信息生成第一迁移指令,并将所述第一迁移指令发送至所述源智能网卡。所述第一迁移指示模块903所执行的功能对应图7中的步骤S701-S704,生成第一迁移指令的两种方式也与步骤S703中的相同,在此不再赘述。
所述第一接收模块908用于接收到所述第一迁移指令,所述源智能网卡的读指示模块909根据所述第一迁移指令生成读指令,指示所述源SSD将源SSD中的待迁移数据读取至所述源智能网卡的迁移缓存,具体请参考图7中的步骤S705-S707的描述。
在待迁移数据迁移至所述源智能网卡的迁移缓存后,所述源智能网卡的第二迁移指示模块910发送第二迁移指令至所述目标智能网卡,具体请参考图7中步骤S708的描述。
所述目标智能网卡的第二接收模块913接收所述第二迁移指令所述目标智能网卡的读模块914根据所述第二迁移指令生成第二读指令,并执行所生成的第二读指令从所述源智能网卡的迁移缓存中读取待迁移数据至目标智能网卡的迁移缓存,具体请参考图7中的步骤S709的描述。
在所述待迁移数据被迁移至所述目标智能网卡的迁移缓存后,所述目标智能网卡的写指示模块915发送写命令至所述目标SSD,以指示所述目标SSD将所述目标智能网卡中的待迁移数据写入所述目标SSD的闪存中,具体请参考图7中的步骤S710-712。
在待迁移的数据块写入所述目标SSD的闪存后,则所述源控制器的判断模块则进一步判断源SSD中的待迁移数据是否迁移完成,如果未迁移完,则生成新的迁移指令继续迁移,直到所述源SSD中的待迁移数据全部迁移完,如果迁移完成,则结束迁移流程,具体请参考图7步骤S713的描述。
如图5所示,所述源智能网卡的缓存中还存储有程序指令(图中未示),所述源智能网卡的处理器执行所述程序指令实现图7中所示流程图中的源智能网卡所执行的相应步骤。同理,所述目标智能网卡的缓存中也存储有程序指令(图中未示),所述目标智能网卡的处理器执行所述程序指令实图7中所示流程图中目标智能网卡所执行的相应步骤。
以上对本发明实施例所提供的在存储阵列之间迁移数据的技术进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种存储设备间数据迁移方法,其特征在于,第一存储设备包含第一硬盘和第一网卡,第二存储设备包含第二硬盘和第二网卡;所述方法包括:
所述第一网卡从所述第一硬盘中获取数据;
所述第一网卡发送所述数据至所述第二网卡;
所述第二网卡将所述数据写入到所述第二硬盘。
2.根据权利要求1所述的方法,其特征在于,所述第一存储设备还包括处理器;所述方法还包括:所述第一网卡接收所述处理器的第一迁移指令;所述第一迁移指令包含所述数据在所述第一硬盘中的存储地址。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述第一网卡发送第二迁移指令给所述第二网卡;所述第二迁移指令包含所述数据在所述第一网卡中的缓存信息以及所述数据在所述第二硬盘中的地址信息。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
所述第一网卡发送所述数据至所述第二网卡前,接收所述第二网卡根据所述第二迁移指令发送的数据读取请求。
5.根据权利要求3所述的方法,其特征在于,所述第二硬盘中的地址信息是所述第一网卡根据所述第二硬盘的IP地址确定的;所述IP地址为所述第一存储设备与所述第二存储设备建立连接时,所述第一网卡为所述第二硬盘分配的。
6.根据权利要求5所述的方法,其特征在于,所述第一网卡存储有所述IP地址与所述第二硬盘的映射关系。
7.一种存储系统,其特征在于,所述存储系统包含第一存储设备和第二存储设备;所述第一存储设备包含第一硬盘和第一网卡,所述第二存储设备包含第二硬盘和第二网卡;其中,
所述第一网卡用于:
从所述第一硬盘中获取数据;
发送所述数据至所述第二网卡;
所述第二网卡用于将所述数据写入到所述第二硬盘。
8.根据权利要求7所述的存储系统,其特征在于,所述第一存储设备还包括处理器;
所述第一网卡还用于接收所述处理器的第一迁移指令;所述第一迁移指令包含所述数据在所述第一硬盘中的存储地址。
9.根据权利要求7或8所述的存储系统,其特征在于,
所述第一网卡还用于发送第二迁移指令给所述第二网卡;所述第二迁移指令包含所述数据在所述第一网卡中的缓存信息以及所述数据在所述第二硬盘中的地址信息。
10.根据权利要求9所述的存储系统,其特征在于,
所述第一网卡还用于发送所述数据至所述第二网卡前,接收所述第二网卡根据所述第二迁移指令发送的数据读取请求。
11.根据权利要求9所述的存储系统,其特征在于,
所述第一网卡还用于根据所述第二硬盘的IP地址确定所述第二硬盘中的地址信息;所述IP地址为所述第一存储设备与所述第二存储设备建立连接时,所述第一网卡为所述第二硬盘分配的。
12.根据权利要求11所述的存储系统,其特征在于,所述第一网卡还用于存储所述IP地址与所述第二硬盘的映射关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110043788.4A CN112835817A (zh) | 2017-09-05 | 2017-09-05 | 数据迁移的方法及系统 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/100586 WO2019047026A1 (zh) | 2017-09-05 | 2017-09-05 | 数据迁移的方法、系统及智能网卡 |
CN201780002932.1A CN109791522B (zh) | 2017-09-05 | 2017-09-05 | 数据迁移的方法、系统及智能网卡 |
CN202110043788.4A CN112835817A (zh) | 2017-09-05 | 2017-09-05 | 数据迁移的方法及系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780002932.1A Division CN109791522B (zh) | 2017-09-05 | 2017-09-05 | 数据迁移的方法、系统及智能网卡 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112835817A true CN112835817A (zh) | 2021-05-25 |
Family
ID=65633432
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780002932.1A Active CN109791522B (zh) | 2017-09-05 | 2017-09-05 | 数据迁移的方法、系统及智能网卡 |
CN202110043788.4A Pending CN112835817A (zh) | 2017-09-05 | 2017-09-05 | 数据迁移的方法及系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780002932.1A Active CN109791522B (zh) | 2017-09-05 | 2017-09-05 | 数据迁移的方法、系统及智能网卡 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11966612B2 (zh) |
EP (2) | EP3663928B1 (zh) |
CN (2) | CN109791522B (zh) |
WO (1) | WO2019047026A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11068365B2 (en) * | 2018-08-23 | 2021-07-20 | Micron Technology, Inc. | Data recovery within a memory sub-system without moving or processing the data through a host |
CN112578997B (zh) * | 2019-09-30 | 2022-07-22 | 华为云计算技术有限公司 | 一种数据迁移方法、系统及相关设备 |
KR20220055034A (ko) * | 2020-10-26 | 2022-05-03 | 삼성전자주식회사 | 스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법 |
KR20220059266A (ko) * | 2020-11-02 | 2022-05-10 | 에스케이하이닉스 주식회사 | 스토리지 시스템 |
CN112559245A (zh) * | 2020-12-01 | 2021-03-26 | 深圳市欧瑞博科技股份有限公司 | 智能网关的数据迁移方法、装置、服务器以及存储介质 |
CN113220346B (zh) * | 2021-04-29 | 2024-06-07 | 上海阵量智能科技有限公司 | 一种硬件电路、数据搬移方法、芯片和电子设备 |
CN115374024A (zh) * | 2021-05-21 | 2022-11-22 | 华为技术有限公司 | 一种内存数据排序方法及相关设备 |
CN114489517B (zh) * | 2022-02-14 | 2023-09-08 | 苏州浪潮智能科技有限公司 | 一种离线加速迁移方法、系统、设备及存储介质 |
CN115543221B (zh) * | 2022-11-29 | 2023-03-14 | 苏州浪潮智能科技有限公司 | 固态硬盘的数据迁移方法、装置、电子设备及存储介质 |
CN117573043B (zh) * | 2024-01-17 | 2024-06-28 | 济南浪潮数据技术有限公司 | 分布式存储数据的传输方法、装置、系统、设备和介质 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8782199B2 (en) * | 1997-10-14 | 2014-07-15 | A-Tech Llc | Parsing a packet header |
CN1282326C (zh) * | 2003-12-10 | 2006-10-25 | 中国科学院计算技术研究所 | 基于智能网卡的计算机间用户级并行通信的方法 |
US20070041383A1 (en) * | 2005-04-05 | 2007-02-22 | Mohmmad Banikazemi | Third party node initiated remote direct memory access |
CN101702688B (zh) * | 2009-11-24 | 2012-01-04 | 武汉绿色网络信息服务有限责任公司 | 一种数据包收发方法 |
CN102244579B (zh) * | 2010-05-12 | 2013-10-30 | 北京研华兴业电子科技有限公司 | 网卡及网络数据接收方法 |
US8555019B2 (en) * | 2010-09-08 | 2013-10-08 | International Business Machines Corporation | Using a migration cache to cache tracks during migration |
WO2012085975A1 (en) * | 2010-12-22 | 2012-06-28 | Hitachi, Ltd. | Storage system comprising multiple storage apparatuses with both storage virtualization function and capacity virtualization function |
CN102651690B (zh) * | 2011-02-28 | 2015-11-25 | 国际商业机器公司 | 对共享内存进行控制的方法和装置 |
US20130042238A1 (en) * | 2011-08-12 | 2013-02-14 | International Business Machines Corporation | Optimized Virtual Function Translation Entry Memory Caching |
KR101861170B1 (ko) * | 2011-08-17 | 2018-05-25 | 삼성전자주식회사 | 마이그레이션 관리자를 포함하는 메모리 시스템 |
CN102333037A (zh) * | 2011-10-20 | 2012-01-25 | 中兴通讯股份有限公司 | 虚拟机迁移方法及装置 |
CN103970481B (zh) | 2013-01-29 | 2017-03-01 | 国际商业机器公司 | 重建存储器阵列的方法和装置 |
US10382401B1 (en) * | 2013-02-26 | 2019-08-13 | Zentera Systems, Inc. | Cloud over IP for enterprise hybrid cloud network and security |
WO2014141411A1 (ja) * | 2013-03-13 | 2014-09-18 | 株式会社日立製作所 | ストレージシステムおよびストレージシステム制御方法 |
WO2015198441A1 (ja) * | 2014-06-26 | 2015-12-30 | 株式会社日立製作所 | 計算機システム、管理計算機、および管理方法 |
US9195402B1 (en) * | 2014-07-15 | 2015-11-24 | Oracle International Corporation | Target and initiator mode configuration of tape drives for data transfer between source and destination tape drives |
US10162558B2 (en) * | 2015-10-30 | 2018-12-25 | Micron Technology, Inc. | Data transfer techniques for multiple devices on a shared bus |
US10447800B2 (en) * | 2015-12-17 | 2019-10-15 | Dell Products L.P. | Network cache deduplication analytics based compute cluster load balancer |
CN107077426B (zh) * | 2016-12-05 | 2019-08-02 | 华为技术有限公司 | NVMe over Fabric架构中数据读写命令的控制方法、设备和系统 |
CN108228647B (zh) * | 2016-12-21 | 2022-05-24 | 伊姆西Ip控股有限责任公司 | 用于数据拷贝的方法和设备 |
-
2017
- 2017-09-05 EP EP17924034.6A patent/EP3663928B1/en active Active
- 2017-09-05 CN CN201780002932.1A patent/CN109791522B/zh active Active
- 2017-09-05 EP EP21174867.8A patent/EP3929756A1/en active Pending
- 2017-09-05 WO PCT/CN2017/100586 patent/WO2019047026A1/zh unknown
- 2017-09-05 CN CN202110043788.4A patent/CN112835817A/zh active Pending
-
2020
- 2020-03-04 US US16/809,026 patent/US11966612B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20200233601A1 (en) | 2020-07-23 |
EP3663928B1 (en) | 2021-06-23 |
EP3929756A1 (en) | 2021-12-29 |
US11966612B2 (en) | 2024-04-23 |
CN109791522A (zh) | 2019-05-21 |
EP3663928A4 (en) | 2020-09-02 |
CN109791522B (zh) | 2021-01-15 |
EP3663928A1 (en) | 2020-06-10 |
WO2019047026A1 (zh) | 2019-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109791522B (zh) | 数据迁移的方法、系统及智能网卡 | |
US11644994B2 (en) | Data migration method, host, and solid state disk | |
CN107422983B (zh) | 用于租户感知存储共享平台的方法和装置 | |
KR101491484B1 (ko) | 스케일러블 스토리지 디바이스들 | |
US7543129B2 (en) | Storage system and storage area allocation method configuring pool areas each including logical volumes having identical allocation unit size | |
US8639898B2 (en) | Storage apparatus and data copy method | |
EP3206207A1 (en) | Method for distributing data in storage system, distribution apparatus and storage system | |
WO2013097618A1 (zh) | 存储虚拟化的装置、存储系统及数据存储方法及系统 | |
US11899533B2 (en) | Stripe reassembling method in storage system and stripe server | |
US20170262220A1 (en) | Storage control device, method of controlling data migration and non-transitory computer-readable storage medium | |
US20230137668A1 (en) | storage device and storage system | |
US20190114076A1 (en) | Method and Apparatus for Storing Data in Distributed Block Storage System, and Computer Readable Storage Medium | |
US12032849B2 (en) | Distributed storage system and computer program product | |
US11693577B2 (en) | Storage operation processing during data migration using migrated indicator from source storage | |
WO2023102784A1 (zh) | 数据存取方法、装置、磁盘控制器、磁盘和数据存储系统 | |
US20200334103A1 (en) | Storage system, drive housing thereof, and parity calculation method | |
JP6039149B2 (ja) | ストレージ装置及びその制御方法 | |
US20170109092A1 (en) | Selective initialization of storage devices for a logical volume | |
US11496563B2 (en) | System and method for migrating volumes between storage appliances | |
US10705905B2 (en) | Software-assisted fine-grained data protection for non-volatile memory storage devices | |
CN104956348A (zh) | Sata发起方寻址和存储设备分片 | |
WO2014115184A1 (en) | Storage system and control method for storage system | |
CN115878499A (zh) | 计算机设备、处理数据的方法及计算机系统 | |
JPWO2018131067A1 (ja) | 記憶ドライブの故障により消失したデータを復元する装置 |
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 |