WO2018094708A1 - 数据迁移的方法、主机、及固态存储设备 - Google Patents
数据迁移的方法、主机、及固态存储设备 Download PDFInfo
- Publication number
- WO2018094708A1 WO2018094708A1 PCT/CN2016/107368 CN2016107368W WO2018094708A1 WO 2018094708 A1 WO2018094708 A1 WO 2018094708A1 CN 2016107368 W CN2016107368 W CN 2016107368W WO 2018094708 A1 WO2018094708 A1 WO 2018094708A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- ssd
- data
- migration
- migrated
- read
- Prior art date
Links
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/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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/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
-
- 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/0658—Controller construction 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/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
-
- 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/313—In storage device
-
- 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
Definitions
- the present invention relates to the field of storage technologies, and in particular, to a method for data migration between storage devices.
- SSDs solid-state storage devices
- NVMe Non-Volatile Memory Express
- the bandwidth of the host CPU occupied by data migration between SSDs is generally limited. This may result in excessive data migration between SSDs and increase the risk of data loss. In addition, even limiting the bandwidth of data migration between SSDs will still affect the performance of the storage system.
- the embodiment of the present invention provides a method for data migration between SSDs, which does not occupy the bandwidth of the host CPU during data migration, thereby not affecting the performance of the storage system and ensuring the speed of data migration.
- a first aspect of the embodiments of the present invention provides a data migration method, where the data migration method is applied to a host.
- the host is connected to a plurality of SSDs, and the plurality of SSDs are connected to each other.
- a migration cache is configured on each SSD, and the access information of the migration cache of each SSD is recorded on the host, and the host or other SSDs connected to the host access the migration cache of each SSD according to the access information. For example, if the SSD connected to the host has SSD0 to SSD24, the host and other SSDs (SSD1 to SSD224) can access the access information according to the access information provided by any one of the SSDs (for example, SSD0).
- the data migration method includes:
- the read instruction is configured to instruct the source SSD to read a data block corresponding to the read instruction in the source SSD flash memory to a migration cache of the target SSD;
- the cache cache information configured for each SSD is set in the register of the controller of each SSD, so that when the host is booted, each of the registers of the controller of each SSD can be read.
- the SSD migrates the cache information, and then allocates the access information to the migration cache of each SSD according to the read migration cache information, and records the access information to implement configuration of the migration cache of each SSD.
- the SSD can use its own cache as a migration cache, so that the migrated data does not need to use host memory during the data migration process.
- the first one is to use the length of the migration cache of the target SSD in the access information of the target SSD and the data amount of the data to be migrated in the migration data information.
- the migration data is divided into a plurality of data blocks, and the read command is generated according to the migrated data information of the sliced data block and the access information corresponding to the target SSD.
- the target SSD After the data block migrated by the read command is migrated to the target SSD, the target SSD sends a write completion command to the host, and after receiving the write completion feedback instruction, the host receives the write completion feedback command. Determining whether the previously split data block has been migrated. If not, the data block is determined from the data block that has not been migrated, and a new read command is generated for the determined data block to perform the determined data block. The migration is performed until the previously segmented data blocks are migrated to the target SSD.
- the data to be migrated in the source SSD can be migrated into data blocks, so that when the read command is generated, the segmented data block is directly obtained to generate a read command to read the acquired data.
- the block is migrated.
- the second method is to obtain the data migrated to the target SSD according to the length of the migration cache of the target SSD in the access information of the target SSD and the data volume of the data to be migrated in the migration data information.
- the migration data information of the block generates the read instruction according to the migrated data information of the acquired data block and the access information corresponding to the target SSD.
- the target SSD sends a write completion instruction to the host, and the host receives the write sent by the target SSD.
- the migration data information of one data block is obtained according to the migrated data information of the unmigrated data to be migrated, according to the obtained
- the migrated data information of the data block generates a new read command to migrate the acquired data block until all of the data to be migrated migrates to the target SSD.
- the data block to be migrated by the read command can be segmented from the data to be migrated.
- each read command includes a source address and a destination address
- the source address is a logical address of a data block read by each read instruction
- the destination address is The access first address of the migration cache of the target SSD.
- the source SSD can obtain the data block to be migrated according to the source address information in the read command, and temporarily store the data block to be migrated in the read data block to the migration cache indicated by the destination address. .
- the target SSD may be multiple.
- a read command is generated for each target SSD, and the generated multiple read commands are sent to the source SSD.
- the data to be migrated in the source SSD can be simultaneously migrated to multiple target SSDs, thereby accelerating the migration rate of the data to be migrated in the source SSD.
- the method may further include:
- the migration data information of the data to be migrated in the source SSD is obtained when the preset data migration condition is detected.
- the preset migration condition may be that a failure of the source SSD is detected to be pre-failed, or a data migration command is received.
- the second aspect of the embodiments of the present invention provides another data migration method.
- the data migration method provided by the second aspect is also applied to a host.
- the connection relationship between the host and the SSD is the same as the data migration method provided by the first aspect.
- the SSD is also configured with a migration cache.
- the main difference between the provided data migration method of the second aspect and the data migration method provided by the first aspect is that, in the data migration method provided by the second aspect, the host sends a read command to the source SSD, indicating The SSD migrates the data block corresponding to the read command in the source SSD to the migration cache of the source SSD, and then sends a write command to the target SSD, indicating that the target SSD will use the source SSD The data blocks in the migration cache are migrated to the flash memory of the target SSD.
- the host Since the data migration method provided by the second aspect is to migrate the data block to be migrated to the migration cache of the source SSD, the host sets the target address of the read instruction to be the same when generating the read instruction. Determining the access information of the migration cache of the source SSD, and when generating the write instruction, setting the source address of the write instruction to the access information of the migration cache of the source SSD, so that the source SSD can be read according to the The instruction will pair the read command
- the data block to be migrated to the migration cache of the source SSD, and the target SSD may write the data block in the migration buffer of the source SSD to its own flash memory according to the write instruction.
- the data is also segmented according to the length of the migration buffer of the source SSD.
- a third aspect of the embodiments of the present invention provides another data migration method.
- the data migration method provided by the third aspect is also applied to a host.
- the connection relationship between the host and the SSD is the same as the data migration method provided by the first aspect, and each The SSD is also configured with a migration cache.
- the main difference between the provided data migration method of the third aspect and the data migration method provided by the first aspect is that after determining the target SSD, the host carries the access information of the target SSD in the data migration instruction and sends the information to the source SSD. Instructing the source SSD to migrate the data to be migrated in the source SSD to the migration cache of the target SSD, the source SSD resending the write request to the target SSD, instructing the target SSD to write the data in the own migration cache to itself. In the flash. After the source SSD migrates the data to be migrated in the source SSD, a feedback instruction of the migration completion is sent to the host.
- the host not only does not need to move the data, but also participates in the read and write control of the data during the data transfer process, thereby further reducing the CPU bandwidth occupied during the data migration process, and further reducing the impact on the performance of the storage system. .
- a fourth aspect of the embodiments of the present invention provides another data migration method.
- the data migration method provided by the fourth aspect is also applied to a host.
- the connection relationship between the host and the SSD is the same as the data migration method provided by the first aspect.
- the SSD is also configured with a migration cache.
- the main difference between the data migration method provided by the fourth aspect and the data migration method provided by the third aspect is that the host stores the access information and the target SSD information of the migration cache of the source SSD carried in the data migration instruction to indicate the location.
- the source SSD migrates the data to be migrated in the source SSD to the migration cache of the source SSD, and the source SSD sends a write request to the target SSD, indicating that the target SSD will use the data in the migration cache of the source SSD. Write to its own flash memory.
- a fifth aspect of the embodiments of the present invention provides another data migration method.
- the data migration method provided by the fifth aspect is applied to an SSD, and the connection relationship between the SSD and the host is first.
- the data migration method provided by the aspect is the same, and the SSD is also configured with a migration cache.
- the data migration method provided by the fifth aspect corresponds to the data migration method provided by the third aspect, that is, after receiving the data migration instruction that is sent by the host and carrying the access information of the target SSD, that is, the data to be migrated in the source SSD. Perform the migration.
- the source SSD migrates the data in the same manner as the data migration method provided in the first aspect, except that in the implementation of the fifth aspect, the generation and execution of the read command are performed by the source SSD, and in addition, the source SSD is based on
- the read instruction reads the data block corresponding to the read instruction to the migration cache of the target SSD
- the access information of the target SSD is carried in the write request and sent to the target SSD, so that the target SSD migrates itself according to the write request.
- the data blocks in the cache are written to their own flash memory.
- a sixth aspect of the embodiments of the present invention provides another data migration method.
- the data migration method provided by the sixth aspect is applied to an SSD, and the connection relationship between the SSD and the host is the same as the data migration method provided by the first aspect, where the SSD is A migration cache is also configured.
- the data migration method provided by the sixth aspect corresponds to the data migration method provided by the fourth aspect, that is, after receiving the data migration instruction of the active SSD carrying the active SSD and the target SSD information sent by the host, that is, in the source SSD
- the data to be migrated is migrated.
- the source SSD migrates the data in the same manner as the data migration method provided in the second aspect.
- the generation and execution of the read command are performed by the source SSD, and in addition, the source SSD is based on After the read instruction reads the data block corresponding to the read instruction to the migration buffer of the source SSD, the access information of the source SSD is carried in the write request and sent to the target SSD, so that the target SSD sends the source SSD according to the write request.
- the data blocks in the migration cache are written to their own flash memory.
- the seventh aspect of the embodiments of the present invention provides another data migration method.
- the data migration method provided by the sixth aspect is applied to an SSD, and the connection relationship between the SSD and the host is the same as the data migration method provided by the first aspect, but in the first
- the SSD is not configured with a migration cache.
- the data migration process the data is migrated by using the registers of the controller of the SSD.
- the data migration method provided by the seventh aspect is similar to the data migration method provided by the third aspect, except that when the host sends the migration instruction to the source SSD, the migration instruction carries the access information of the register of the controller of the target SSD. .
- the data data is divided according to the length of the register of the controller of the target SSD, and the destination address of the generated read command is the access information of the register of the controller of the target SSD, and is sent to the location.
- the access information carried in the write request of the target SSD is also the access information of the register of the controller of the target SSD, such that the source SSD can correspond to the read command in the source SSD by executing the read command.
- the data block is read into a register of a controller of the target SSD, and the target SSD can read a data block in a register of its own controller into its own flash memory according to the write request.
- An eighth aspect of the embodiments of the present invention provides a host, where the host is connected to multiple SSDs, and the multiple SSDs are connected to each other.
- a migration cache is configured on each SSD, and the access information of the migration cache of each SSD is recorded on the host, and the host or other SSDs connected to the host access the migration cache of each SSD according to the access information.
- the host includes a read indication module and a write indication module, and the read indication module is configured to acquire migration data information of the data to be migrated in the source SSD and determine a target SSD, according to the access information corresponding to the target SSD and the migration data information.
- Generating a read command and transmitting the read command to the source SSD the read command being used to instruct the source SSD to read a data block corresponding to the read command in the source SSD flash memory to the target a migration buffer of the SSD
- the write indication module is configured to send a write instruction to the target SSD after receiving the read completion feedback command sent by the source SSD, instructing the target SSD to cache the The data block is written to its own flash memory.
- the host further includes an allocation module, where the allocation module is configured to allocate access information for the migration cache provided by the SSD connected to the host, and the specific allocation manner may be referred to. Description in the first possible implementation of the first aspect.
- the read instruction module also includes two modes when generating a read command, and the corresponding manner of generating a new read command also includes two types. For details, refer to the first aspect of the method for generating a read command and a new read command. description of.
- the structure of the read command generated by the degree indicating module is also the same as the structure of the read command in the first aspect, and details are not described herein again.
- the target SSD may be multiple, and when the read instruction module generates a read command, generate a read command for each target SSD, and generate the generated multiple A read command is sent to the source SSD.
- the ninth aspect of the embodiment of the present invention also provides a host.
- the connection relationship between the host and the SSD is the same as that of the host in the eighth aspect, and each SSD is also configured with a migration cache.
- the main difference between the host of the ninth aspect and the host of the eighth aspect is that the read instruction module of the host of the eighth aspect sends the read command to the source SSD, which indicates that the source SSD will be in the source SSD.
- the data block corresponding to the read instruction is migrated to the migration cache of the source SSD, and the write indication module sends a write instruction to the target SSD, indicating that the target SSD will use the data in the migration cache of the source SSD.
- the block is migrated to the flash memory of the target SSD.
- the host of the eighth aspect migrates the data block to be migrated to the migration cache of the source SSD
- the host sets the target address of the read instruction to the source SSD when generating the read command.
- the data block corresponding to the read instruction is migrated to the migration cache of the source SSD, and the target SSD may write the data block in the migration cache of the source SSD to its own flash memory according to the write instruction.
- the read indication module performs data segmentation of the data to be migrated
- the data is also segmented according to the length of the migration buffer of the source SSD.
- the tenth aspect of the embodiment of the present invention provides another host.
- the connection relationship between the host and the SSD is the same as that of the host in the eighth aspect, and each SSD is also configured with a migration cache.
- the main difference between the host of the tenth aspect and the host of the eighth aspect is that the host includes a migration indication module, and the migration indication module carries the access information of the target SSD in the data migration instruction after determining the target SSD, and The function is sent to the source SSD, and the functions performed by the read indication module, the write indication module, and the determination module of the eighth aspect are all performed by the source SSD in the tenth aspect.
- the host not only does not need to move the data, but also participates in the read and write control of the data during the data transfer process, thereby further reducing the CPU bandwidth occupied during the data migration process, and further reducing the impact on the performance of the storage system. .
- An eleventh aspect of the present invention provides a host, the host, and an SSD.
- the connection relationship is the same as that of the first aspect of the host, and each SSD is also configured with a migration cache.
- the main difference between the host of the eleventh aspect and the host of the tenth aspect is that the migration instruction module of the host carries the access information of the migration cache of the source SSD and the target SSD information carried in the data migration instruction to indicate that the source SSD will The data to be migrated in the source SSD is migrated to the migration cache of the source SSD, and the source SSD sends a write request to the target SSD, instructing the target SSD to write data in the migration cache of the source SSD to itself.
- the migration instruction module of the host carries the access information of the migration cache of the source SSD and the target SSD information carried in the data migration instruction to indicate that the source SSD will The data to be migrated in the source SSD is migrated to the migration cache of the source SSD, and the source SSD sends a write request to the target SSD, instructing the target SSD to write data in the migration cache of the source SSD to itself.
- flash memory In flash memory.
- a twelfth aspect of the embodiment of the present invention provides an SSD.
- the connection relationship between the SSD and the host is the same as the connection between the host and the SSD in the first aspect, and the SSD is also configured with a migration cache.
- the SSD provided by the twelfth aspect corresponds to the host provided by the tenth aspect, the SSD includes a read indication module, a read module, and a write indication module, where the degree indication module receives the host SSD carrying the target SSD.
- a read instruction is generated, and the read instruction is executed by the reading module to migrate the data to be migrated in the source SSD.
- the source SSD migrates the data in the same manner as the data migration method provided in the eighth aspect, except that in the implementation of the eighth aspect, the generation and execution of the read instruction is performed by the read indication module and the read module of the source SSD.
- the access instruction module After the reading module reads the data block corresponding to the read instruction to the migration buffer of the target SSD according to the read instruction, the access instruction module carries the access information of the target SSD in the write request and sends the information to the target SSD, so that the The target SSD writes the data block in its own migration cache to its own flash memory according to the write request.
- a thirteenth aspect of the embodiment of the present invention provides another SSD.
- the connection relationship between the SSD and the host is the same as the connection between the host and the SSD in the first aspect, and the SSD is also configured with a migration cache.
- the SSD of the thirteenth aspect corresponds to the host provided by the eleventh aspect, and the SSD further includes a read indication module, a read module, and a write indication module.
- the read instruction module receives the data migration instruction of the active SSD and the target SSD information sent by the host, the data to be migrated in the source SSD is migrated by the reading module.
- the source SSD migrates the data in the same manner as the data migration provided in the ninth aspect, except that in the implementation of the thirteenth aspect, the generation and execution of the read instruction is read by the source SSD.
- the instruction module and the reading module are completed.
- the write indication module carries the access information of the source SSD in the write request and sends the data.
- the target SSD is given to cause the target SSD to write the data blocks in the migration cache of the source SSD into its own flash memory according to the write request.
- the fourteenth aspect of the embodiments of the present invention provides another SSD, the connection relationship between the SSD and the host is the same as the connection relationship between the host and the SSD in the first aspect.
- the SSD is not configured with a migration cache.
- the data migration process the data is migrated mainly by using the registers of the controller of the SSD.
- the SSD of the fourteenth aspect also includes a read indication module, a read module, and a write indication module.
- the function performed by each module is similar to that performed by each module of the SSD of the fifth aspect. The only difference is that when the host sends the migration instruction to the source SSD, the migration instruction carries the access information of the register of the controller of the target SSD. .
- the read instruction module When the read instruction module generates a read command according to the migration instruction, the data data is divided according to the length of the register of the controller of the target SSD, and the destination address of the generated read instruction is a register of the controller of the target SSD.
- the access information, the write instruction sent by the write instruction module to the target SSD is also the access information of the register of the controller of the target SSD, such that the reading module of the source SSD performs the
- the read instruction may read a data block corresponding to the read instruction in the source SSD into a register of a controller of the target SSD, and the target SSD may be in a register of its own controller according to the write request.
- the data block is read into its own flash memory.
- the cache or the register of the SSD in the storage system can be cached as data in the data migration process, so that when the data is migrated, the migrated data is not transmitted through the host.
- the migration data does not occupy the bandwidth of the host CPU, which greatly reduces the performance impact on the storage system and ensures the speed of data migration.
- Figure 1 is an architectural diagram of a storage system.
- FIG. 2 is a flow chart of a method for data migration between SSDs in the prior art.
- FIG. 3 is a block diagram of a storage system in a first embodiment of the present invention.
- FIG. 4 is a flowchart of a method for configuring a migration cache for an SSD according to a first embodiment of the present invention.
- FIG. 5 is a flowchart of a method for performing data migration in the first embodiment of the present invention.
- FIG. 6 is a functional block diagram of a host and an SSD corresponding to the data migration method in the first embodiment in the storage system.
- FIG. 7 is a flowchart of a method for performing data migration in a second embodiment of the present invention.
- FIG. 8 is a flowchart of a method for performing data migration in a third embodiment of the present invention.
- FIG. 9 is a functional block diagram of a host and an SSD corresponding to the data migration method in the third embodiment in the storage system.
- FIG. 10 is a flowchart of a method for performing data migration in a fourth embodiment of the present invention.
- FIG. 11 is a functional block diagram of a host and an SSD of a storage system according to a fifth embodiment of the present invention.
- the storage system includes a host 10 and a plurality of SSDs connected to the host 10 through a high-speed Peripheral Component Connectivity Express (PCIe) switch 11 (ie, SSD0).
- PCIe Peripheral Component Connectivity Express
- the host 10 includes a CPU 101 and a memory 102.
- step S201 when the CPU 10 detects that the data in the SSD2 needs to be migrated, for example, detecting that the data in the SSD2 is about to fail, selecting a target SSD in other SSDs, that is, SSD24 to move the data in SSD2 to SSD24.
- step S202 the CPU 101 applies for a migration memory space dedicated to data migration in the memory 102, and acquires the data volume of the data to be migrated.
- Step S203 the CPU 101 generates a read command according to the length of the migrated memory space and the acquired data amount of the data to be migrated, and sends the read command to the SSD2.
- Step S204 the SSD2 reads the data block corresponding to the read instruction in the SSD2 to the migration memory space according to the read instruction.
- Step S205 after the execution of the read instruction is completed, the SSD2 sends a read completion feedback instruction to the host 10.
- Step S206 the CPU 101 sends a write command to the SSD 24 according to the read completion feedback instruction.
- Step S207 the SSD 24 writes the data block in the migration memory space into the SSD 24 according to the received data write instruction.
- step S208 the SSD 24 sends a write completion feedback command to the host 10.
- Step S209 the CPU 101 determines whether the data to be migrated in the SSD2 is completely migrated after receiving the write completion feedback command sent by the SSD 24. If not, the process returns to step S203 to generate a new read command, and continues to the SSD2. The data to be migrated in the migration is migrated, and if it is completed, the process of data migration is ended.
- the embodiment of the present invention provides a data migration method.
- data When data is migrated between the source SSD and the target SSD, the data does not pass through the host's memory during the migration process, but is directly transmitted through the interface of the PCIE switch, and does not occupy the bandwidth of the host CPU. Therefore, the performance of the storage system is not affected.
- the rate of data migration is not limited by the bandwidth of the host CPU, thereby increasing the rate of data migration.
- the data migration method provided by the present invention will be described below through various embodiments.
- FIG. 3 is an architectural diagram of a storage system in a first embodiment of the present invention.
- the architecture of the storage system in the first embodiment is basically the same as the architecture of the storage system in the prior art in FIG. 1, and includes a host 30, a PCIe switch 31, and SSD0 to SSD24, and the SSD1 to SSD24 pass through the PCIe switch 31. Connected to each other.
- the host 30 includes a CPU 301 and a memory 302.
- the CPU 301 is configured to run an application 303 in the memory to implement some functions provided by the host 30, for example, to control data access and migration in the SSD0 to SSD24.
- the memory 302 further stores metadata 304 of SSD0 to SSD24, the metadata 304 recording information of data stored in each SSD, such as the amount of data of the stored data, and logical address information of the stored data. Wait.
- the SSD 2 includes a main controller 221, a direct memory access (DMA) controller 224, a cache 223, and a flash memory 225.
- the main controller 221 is configured to receive a data fetch command sent by the host 30 to control access of data in the flash memory 225 according to the fetch command of the host 30.
- the DMA controller 224 can directly access the memory of other devices, such as the memory of the host 30, or a cache of other SSDs.
- the cache 223 stores program instructions required by the main controller 221 or the DMA controller 224 to operate, and temporarily stores data read from the flash memory 225 or written in the flash memory 225. Flash memory is the primary storage element of the SSD for storing data 226 written to the SSD.
- each SSD can provide a segment of cache for the host 30 and other SSDs to access.
- the method for each SSD to provide caching to the host 30 and other SSDs can be referred to FIG.
- the cache that provides each SSD to the host and other SSD accesses is referred to as a migration cache.
- each SSD sets the cache information of the migration cache in the register 222 of the controller 221.
- the cache information includes the size of the migration cache.
- the size of the migration cache of each SSD can be determined according to a specific application environment, such as the performance of the storage system, the size of the cache of the SSD, and the interface bandwidth of the SSD.
- the size of the migration cache of each SSD may be the same or different. When some SSDs do not need to provide buffers for use by the host and other SSDs, the size of the cache may also be set to 0 in the register 222.
- Step S402 in the BIOS startup phase of the host 30, read the migration cache information of each SSD from the register 222 of the main controller 221 of each SSD, and respectively for each SSD according to the read migration cache information.
- the migration cache allocates access information, and the access information allocated for each SSD is recorded in the metadata 204 of each SSD, the access information including the length of the migration cache that accesses the first address and the SSD.
- the access first address is an address information in the host memory, and the address information corresponds to the start address information of the migration cache of the SSD. When the host needs to access the cache of the SSD, the access first address needs to be found in the memory 302 first. Access the migration cache of the SSD based on the first address of the access.
- step S403 the host 30 writes the access information allocated for the migration cache of each SSD into the register of each SSD. In a specific implementation, only the access first address may be written.
- each SSD selects a cache space in the cache 223 that is the same as the cache size set in the cache 223 as a migration cache, and establishes a mapping relationship between the access information and the migration cache.
- the host 30 or other SSDs other than the SSDs can access the migration cache of each SSD through the access information.
- the migration cache is set for SSD0 by the above method
- the host or SSD1 to SSD24 can access the migration cache through the access information.
- the migration cache of each SSD After the migration cache of each SSD is determined, the migration cache can be utilized for data migration between SSDs.
- the specific migration method is shown in Figure 5.
- step S501 the host detects a preset condition for performing data migration.
- the preset migration condition may be determined when an SSD in the storage system is about to expire, or when a data migration request is received, the migration request is from an application, or another device.
- Step S502 When detecting a preset condition for performing data migration, the host acquires migration data information of the data to be migrated in the source SSD, and determines a target SSD.
- the host 30 obtains the migration data information of the data to be migrated in the source SSD from the metadata of the source SSD stored in the memory 302, where the migration data information includes the data volume and the logical address of the data to be migrated.
- the target SSD may be determined by a user, or may be a backup disk set in advance for the source SSD.
- the number of the target SSDs may be one or multiple, and the specific number may be determined according to the speed requirement of data migration.
- the user can select according to the amount of data stored in each SSD and the degree of busyness, and can select the SSD that is relatively small in storage and is currently idle, as the target SSD.
- Step S503 generating a read command according to the access information corresponding to the target SSD and the migration data information.
- the first manner is: first, according to the length of the migration cache provided by the target SSD in the access information of the target SSD, and the migration data information.
- the amount of data to be migrated is divided into a plurality of data blocks, and the length of each data block is less than or equal to the length of the migration cache.
- the length of each data block is equal to the length of the migration buffer.
- the logical address of each data block may be determined according to the logical address of the data to be migrated and the length of the segmented data block, and one data block is acquired for each target SSD to generate a read instruction.
- the second way is: when generating a read command, not all the data to be migrated is segmented, but only one data block is segmented for one target SSD, and the length of the segmented data block is less than or equal to the migration cache.
- the length usually, the length of the sliced data block is equal to the length of the migration buffer, then determines the logical address of the sliced data block, and generates a read instruction for the sliced data block.
- the read command includes a source address and a destination address, and the source address is the read command
- the logical address of the read data block which is the access first address of the migration cache of the target SSD.
- Step S504 the host 30 sends the read command to the source SSD.
- the host 30 When the host 30 generates a plurality of read commands based on the plurality of target SSDs, the plurality of read commands are sequentially transmitted to the source SSD in the order of generation.
- Step S505 the source SSD reads the data block corresponding to the read command in the source SSD flash memory 225 to the migration cache of the target SSD when receiving the read command.
- the main controller of the source SSD after receiving the read command, notifies the DMA controller 224 to find the content from the flash memory of the source SSD according to the source address in the read command.
- the data block corresponding to the source address is then written into the cache of the target SSD indicated by the destination address according to the destination address.
- the DMA controller 224 writes the data block into the cache of the target SSD, first transmitting the data block and the destination address to the target SSD indicated by the destination address through the PCIe switch.
- the target SSD further finds a physical address of the migration cache corresponding to the access first address according to the access first address in the destination address, and then stores the data block to the migration cache.
- Step S506 after the data blocks are all read to the migration buffer of the SSD, the source SSD sends a read completion feedback instruction to the host 30.
- Step S507 after receiving the read completion feedback command sent by the source SSD, the host 30 sends a write command to the target SSD, where the write command includes a source address and a destination address, and the source of the write command
- the address is the access information of the migration cache of the target SSD
- the destination address of the write instruction is a logical address corresponding to the storage space of the data block in the flash memory of the target SSD.
- Step S508 the target SSD reads the data block from the migration cache of the target SSD according to the source address in the write instruction, and writes the data block in the migration cache according to the destination address.
- the flash memory of the target SSD In the flash memory of the target SSD.
- Step S509 after the target SSD writes the data block, the target The SSD sends a write completion feedback command to the host 30.
- Step S510 after receiving the feedback instruction of the writing completion, the host 30 determines whether the data to be migrated in the source SSD is migrated.
- step S511 if the migration is not completed, a new read command is generated, and then the process returns to step S504. If the migration is completed, the flow of the data migration is ended.
- the destination address of the generated new read command is the access information of the target SSD migration cache that sends the feedback instruction.
- the host 30 receives a plurality of feedback instructions, it generates a new read command for each feedback instruction.
- step S511 If the manner of generating the read command in step S503 is the first mode described above, then in step S511, one data block is determined from the data blocks that have not been migrated, and a new read command is generated for the determined data block.
- step 511 a data block is sliced from the unmigrated data to be migrated, and a new read command is generated according to the newly sliced data block.
- the data in the source SSD can be directly transmitted to the target SSD without passing through the memory of the host 30, thereby occupying the bandwidth of the CPU of the host 30 and improving the rate of data migration between the SSDs.
- FIG. 6 it is a functional block diagram of the host 30 and the SSD in the storage system shown in FIG. 3 in the embodiment (only a block diagram of the source SSD and the target SSD for data migration is shown in the figure).
- the host 30 includes an allocation module 601, a read indication module 602, a write indication module 603, and a determination module 604.
- the SSD includes a setting module 605, a mapping module 606, a reading module 607, and a writing module 608.
- all SSDs include the same functional modules, but in practical applications, when the SSD is used as the source SSD of the data outbound party, the functions performed by the write module 608 are not executed, and the SSD is moved as data. When the destination SSD is used, the function performed by the reading module 607 is not executed.
- the setting module 605 of each SSD cooperates with the allocation module 601 of the host 30 to implement the function of providing the migration cache in the SSD for the host and other SSDs to access, and the SSD shown in FIG. 4 provides the cache for the host to access.
- the method corresponds.
- the SSD The setting module 605 is configured to set the cache information of the migration cache in the register 222 of the controller 221 of the SSD. For the specific setting manner, refer to the description of step S401.
- the allocation module 601 of the host 30 is configured to read the migration cache information of each SSD from the register 222 of the main controller 221 of each SSD during the BIOS startup phase of the host 30, and according to the read migration cache information.
- the access information is allocated for each SSD's migration cache, and the access information allocated for each SSD is recorded in the metadata 204 of each SSD, and the access information allocated by the migration cache of each SSD is written to each. In the register of the SSD.
- the mapping module 606 is configured to select, in the cache 223, a cache space of the same size as the set cache, as a migration cache, and establish a mapping relationship between the access information and the migration cache, corresponding to step S404.
- the read indication module 602 of the SSD is configured to detect a preset condition for performing data migration. When detecting a preset condition for performing data migration, acquiring the migration data information of the data to be migrated in the source SSD, and determining the target. The SSD then generates a read command according to the access information corresponding to the target SSD and the migrated data information, and sends the generated read command to the source SSD.
- the functions performed by the read instruction module 602 correspond to the steps S501-S504. The two methods for generating the read command are also the same as those in the step S503, and details are not described herein again.
- the source SSD After receiving the read command, the source SSD reads a data block corresponding to the read instruction in the source SSD flash memory to a migration buffer of the target SSD, when all the data blocks are read After the migration buffer of the SSD, the source SSD sends a read completion feedback instruction to the host 30, and the process of reading data from the flash memory of the source SSD refers to the descriptions of steps S505 and S506.
- the write command module 603 of the host After receiving the read completion feedback command sent by the source SSD, the write command module 603 of the host sends a write command to the target SSD.
- the function performed by the write indication module 603 corresponds to step S507.
- the write module 608 of the target SSD writes the cache address in the target SSD into the flash memory of the target SSD according to the write command, and sends a write completion feedback command to the host after the write is completed. 30.
- the determining module 604 of the host 30 determines whether the data to be migrated in the source SSD is migrated, and if no migration is completed, generates a new read command, and the new read An instruction is sent to the source SSD. If done, the data migration process ends.
- the manner of generating new instructions please refer to the related description in step S511.
- the second embodiment differs from the first embodiment only in that, in the second embodiment, the data to be migrated in the source SSD is first read to the local migration cache, and then the data in the local migration cache is rewritten to the target SSD. .
- the data migration method in the second embodiment will be described below with reference to a flowchart.
- the architecture of the storage system is the same as that of FIG. 3.
- the SSD in the storage system also provides a cache for the host and other SSDs to access, so in the following description, the architecture description of FIG. 3 will be used.
- the method for the SSD to provide the cache to the host and other SSDs is the same as that in the first embodiment. For details, please refer to the description of FIG. 4, and details are not described herein again.
- a method of migrating data to be migrated in a source SSD to a target SSD in the second embodiment will be described below with reference to FIG.
- Step S701 is to detect the condition of the host to detect the preset data migration. This step is the same as step S501 of the first embodiment, and details are not described herein again.
- step S702 when the preset condition for data migration is detected, the host determines the target SSD, and the manner of determining the target SSD is also the same as that of step S502 in the first embodiment, and details are not described herein again.
- the second embodiment is required to read the data to be migrated in the source SSD into the cache of the cache of the source SSD. Therefore, in step S703, the data is generated according to the access information of the source SSD and the migrated data information. Read the instruction.
- the first type is to divide the data to be migrated into multiple data blocks according to the length of the migration cache of the source SSD and the data amount of the data to be migrated in the migration data information in the access information of the source SSD. And generating the read instruction according to the migrated data information of the sliced data block and the access information corresponding to the source SSD.
- the second type is that the migration of the source SSD in the access information of the source SSD is slow. And the data amount of the data to be migrated in the migration data information, the migration data information of the data block migrated to the target SSD, the migration data information of the acquired data block, and the source The read information corresponding to the SSD generates the read command.
- the source address of the read command is a logical address of a data block read by the source SSD, and the destination address is an access first address of a migration cache of the source SSD.
- step S605 the source SSD reads the data block corresponding to the read command in the source SSD flash memory to the source according to the read command. SSD migration cache.
- the source SSD After all the data blocks are read into the migration buffer of the source SSD, the source SSD also generates a read completion feedback command to the host in step S706.
- step S707 after receiving the read completion feedback instruction, the host sends a write command to the target SSD.
- the source address of the write instruction is a logical address of a data block read by the read instruction
- the destination address is a storage space of the flash memory for storing the data block in the flash memory of the target SSD. Logical address.
- Step S708 the target SSD writes the data block in the migration buffer of the source SSD into the target SSD according to the write instruction.
- the target SSD after receiving the write command, notifies the DMA controller of the target SSD to pass the data block stored in the migration buffer of the source SSD by way of DMA.
- the PCIe switch writes into a cache of the target SSD.
- the DMA controller When the DMA controller acquires the data block in the migration cache of the source SSD by means of DMA, the DMA controller transmits the access first address of the source SSD to the source SSD, and the source SSD is based on The access first address acquires the data block stored in the migration cache of the SSD, and then writes the data block to the flash memory of the target SSD through the PCIe switch.
- Step S709 after the target SSD writes the data block, the target SSD sends a write completion feedback instruction to the host.
- Step S710 after receiving the feedback instruction of the writing completion, the host determines whether the data to be migrated in the source SSD is migrated.
- Step S711 if not migrated, generate a new read command, and then return to step S604, If the migration is complete, the process of data migration ends.
- step S611 If the manner of generating the read command in step S703 is the first mode described above, then in step S611, one data block is determined from the data blocks that have not been migrated, and a new read command is generated for the determined data block.
- step 711 a data block is sliced from the unmigrated data to be migrated, and a new read command is generated according to the newly sliced data block.
- the functional block diagrams of the host and the SSD are the same as those of the host and the SSD in the first embodiment, but some of the functional modules perform different functions.
- the functions performed by the allocation module 601 of the host, the setting module 605 and the mapping module 606 in the SSD are the same as those in the first embodiment, and are not described herein again.
- the data in the flash memory of the source SSD is first moved into the migration buffer of the source SSD.
- the read instruction module 602 When the read instruction module 602 generates a read command, the destination address of the generated read command is the source SSD. Migrate cached access information.
- the reading module 607 of the source SSD reads the data block corresponding to the read instruction into the migration buffer of the source SSD according to the read instruction.
- the source address of the write command sent by the write indication module 603 of the host is the access information of the migration cache of the source SSD.
- the write module of the target SSD migrates the data block in the migration cache of the source SSD to its own flash memory according to the write instruction.
- the difference between the third embodiment and the first embodiment is that, in the third embodiment, when detecting that the data in the source SSD needs to be migrated, the host SSD only needs to send a migration command to the source SSD, and the source SSD is according to the The migration command can migrate the data to be migrated in the flash memory to the target SSD. After the source SSD migrates the data in the cache, the feedback command of the migration completion is sent to the host. In this way, during the entire data migration process, the host only needs to interact with the source SSD twice, and does not participate in the data migration process, thereby further reducing the host bandwidth occupied by data migration between SSDs.
- the data migration method in the third embodiment will be described below with reference to a flowchart.
- the architecture of the storage system is the same as that of FIG. 3, and the SSD in the storage system also provides a migration cache for the host and other SSDs to access, so in the following description, the architecture description based on FIG. 3 is still used.
- the method for the SSD to provide the migration cache to the host and other SSDs is the same as the method in the first embodiment. For details, refer to the description of FIG. 4, and details are not described herein again.
- a method of migrating data to be migrated in the source SSD to the target SSD in the third embodiment will be described below with reference to FIG.
- Step S801 is to detect the condition of the host to detect the preset data migration. This step is the same as step S501 of the first embodiment, and details are not described herein again.
- step S802 when the preset condition for data migration is detected, the host determines the target SSD, and the manner of determining the target SSD is also the same as that of step S502 in the first embodiment, and details are not described herein again.
- Step S803 the host sends a data migration instruction to the source SSD, where the data migration instruction carries the access information corresponding to the target SSD.
- Step S804 the source SSD generates a read command according to the access information corresponding to the target SSD carried in the received migration instruction and the data to be migrated in the source SSD.
- the manner in which the source SSD generates a read command also includes two types.
- the first type is: according to the length of the migration cache provided by the target SSD in the access information of the target SSD, and the source SSD.
- the data volume of the data to be migrated is divided into a plurality of data blocks, and the length of each data block is equal to the length of the migration buffer, and the storage address of each data block may be migrated according to the data to be migrated.
- the storage address of the data and the length of the segmented data block are determined, and a data block is acquired for each target SSD to generate a read command.
- the storage address here is the logical address of the data in the SSD, and the data stored in the SSD can be found according to the mapping relationship between the logical address and the physical address of the data in the SSD.
- the second way is: when generating a read command, not all the data to be migrated is segmented, but only one data block is segmented for one target SSD, and the storage address of the sliced data block is determined, and then The segmented data block generates a read command.
- the read command includes a source address and a destination address, where the source address is a storage address of a data block read by the read command, and the destination address is a migration of the target SSD.
- Step S805 the source SSD executes the read instruction, and reads a data block corresponding to the read instruction in the source SSD flash memory to a migration buffer of the target SSD.
- the data block corresponding to the read instruction in the flash memory of the source SSD is also read to the migration cache of the target SSD by the DMA controller in the source SSD, and the DMA reads the data block.
- the process is the same as that of the first embodiment. For details, refer to the related description in step S505 of the first embodiment.
- Step S806 after the execution of the read instruction is completed, the source SSD sends a write request to the target SSD, where the write request includes access information of the migration cache of the destination SSD.
- Step S807 the target SSD generates a write instruction according to the write request.
- the write instruction includes a source address and a destination address, the source address of the write instruction is access information of the migration cache of the target SSD, and the destination address of the write instruction is the data block stored in the flash memory of the target SSD. Storage address.
- Step S808 the data block in the migration buffer of the destination SSD is written into the flash memory of the destination SSD by executing the write instruction.
- Step S809 after the writing is completed, the target SSD sends a write completion feedback command to the source SSD.
- Step S810 after receiving the feedback instruction of the writing completion, the source SSD determines whether the migration of the data to be migrated is completed. If the migration is not completed, step S811 is performed, and if the migration is completed, step S812 is performed.
- Step S811 generating a new read command, and then returning to step S805. If the manner of generating the read command in step S804 is the first mode, then in step S811, the source SSD determines a data from the data blocks that have not been migrated. Block and generate a new read instruction for the determined data block.
- step S811 the source SSD cuts out a data block from the unmigrated data to be migrated, and generates a new data according to the newly sliced data block. Read instruction.
- Step S812 the source SSD sends a migration completion feedback instruction to the host, and the host receives After the feedback instruction of the migration completion, the data migration method can be ended.
- the host includes an allocation module 901 and a migration indication module 902.
- the SSD includes a setting module 903, a mapping module 904, a read indication module 905, a reading module 906, a write indication module 907, a writing module 908, and a determining module 909.
- the functions performed by the allocation module 901 of the host, the setting module 903 and the mapping module 904 in the SSD are the same as those of the allocation module 601, the setting module 605, and the mapping module 606 in the first embodiment, and are not described herein again. .
- the migration indication module 902 is configured to: when detecting a preset condition for performing data migration, determine a target SSD, and send a data migration instruction to the source SSD, where the data migration instruction carries the access information corresponding to the target SSD.
- the read indication module 905 of the source SSD is configured to generate a read instruction according to the access information corresponding to the target SSD carried in the received migration instruction and the data to be migrated in the source SSD.
- a read instruction for the two ways of generating a read command, please refer to the description of step S804.
- the read module 906 of the source SSD is configured to execute the read command, and read a data block corresponding to the read command in the source SSD flash memory to a migration cache of the target SSD, corresponding to step 805.
- the write indication module 907 of the source SSD sends a write request to the target SSD, and the write request includes access information of the migration cache of the target SSD.
- the write module 908 of the target SSD generates a write command in accordance with the write request.
- the write instruction includes a source address and a destination address, the source address of the write instruction is access information of the migration cache of the target SSD, and the destination address of the write instruction is the data block stored in the flash memory of the target SSD. a storage address, the data block in the migration buffer of the destination SSD is written into the flash memory of the destination SSD according to the write command, and after the writing is completed, a write completion feedback instruction is sent to the source SSD.
- the determining module 909 of the source SSD determines whether the migration of the data to be migrated is completed, and if not, generates a new read command, generates a new instruction, and performs step S811. The same is true, and will not be described here. If it is completed, the migration completion feedback command is sent to the host, so that the host ends the migration of data.
- the fourth embodiment is similar to the third embodiment except that when the data to be migrated in the source SSD is migrated to the target SSD, the migration of the data to be migrated in the source SSD to the source SSD is first migrated. In the cache, the data in the migration cache of the source SSD is then migrated into the flash memory of the target SSD.
- the architecture of the storage system is the same as that of FIG. 3, and the SSD in the storage system also provides a cache for the host to access, so in the following description, the third embodiment will be described based on the architecture of FIG. 3. .
- the method for the SSD to provide the cache to the host is the same as the method in the first embodiment. For details, refer to the description of FIG. 4, and details are not described herein again.
- a method of migrating data to be migrated in the source SSD to the target SSD in the fourth embodiment will be described below with reference to FIG.
- the detecting host detects the preset data migration condition. This step is the same as the step S501 in the first embodiment, and details are not described herein again.
- step S1002 when the preset condition for data migration is detected, the host determines the target SSD, and the manner of determining the target SSD is also the same as that of step S502 in the first embodiment, and details are not described herein again.
- Step S1003 The host sends a data migration instruction to the source SSD, where the data migration instruction carries the access information corresponding to the source SSD and the target SSD information.
- Step S1004 The SSD generates a read command according to the access information corresponding to the source SSD carried in the received migration instruction and the data to be migrated in the source SSD.
- the manner in which the source SSD generates a read command is similar to the manner in which the source SSD generates a read command in the third embodiment, except that the destination address of the generated read command is the access information corresponding to the source SSD. .
- Step S1005 the source SSD executes the read command, and reads a data block corresponding to the read instruction in the source SSD flash memory to a migration buffer of the source SSD.
- Step S1006 After executing the read command, the source SSD sends a write request to the target SSD corresponding to the target SSD information, where the write request carries the access information of the migration cache of the source SSD.
- Step S1007 the target SSD generates a write command according to the write request, and the write
- the source address of the instruction is the access information corresponding to the source SSD
- the destination address of the write instruction is the address of the data block in the flash memory of the destination SSD for storing the source SSD.
- Step S1008 the target SSD executes the write instruction, and migrates the data block in the migration cache of the source SSD to the flash memory of the SSD.
- Step S1009 After the target SSD executes the write command, send a write completion feedback command to the source SSD.
- step S1010 after receiving the feedback instruction of the writing completion, the source SSD determines whether the migration of the data to be migrated is completed. If the migration is not completed, step S1011 is performed, and if the migration is completed, step S1012 is performed.
- Step S1011 generating a new read command, and then returning to step S1005. If the manner of generating the read command in step S1004 is the first mode, then in step S1011, the source SSD determines a data from the data blocks that have not been migrated. Block and generate a new read instruction for the determined data block.
- step S1011 the source SSD segments a data block from the unmigrated data to be migrated, and generates a new data according to the newly segmented data block. Read instruction.
- Step S1012 The source SSD sends a migration completion feedback instruction to the host, and after receiving the feedback instruction of the migration completion, the host may end the data migration method.
- the functional block diagrams of the host and the SSD are the same as those of the host and the SSD in the first embodiment, but some of the functional modules perform different functions.
- the function performed by the allocation module 901 of the host, the setting module 903 and the mapping module 904 in the SSD is the same as the setting module 605 and the mapping module 606 in the SSD of the host in the first embodiment, and is no longer Narration.
- the data in the flash memory of the source SSD is first moved into the migration buffer of the source SSD.
- the read instruction module 905 When the read instruction module 905 generates the read command, the destination address of the generated read command is the source SSD. Migration information for the cached access.
- the reading module 607 of the source SSD reads the data block corresponding to the read instruction into the migration buffer of the source SSD according to the read instruction.
- the write request information sent by the write indication module 907 carries the access information of the migration cache of the source SSD.
- Write mode of the target SSD The block generates a write instruction according to the write request, and executes the write instruction to migrate the data block in the migration cache of the source SSD into a flash memory of the SSD.
- the source address of the write instruction is the access information corresponding to the source SSD
- the destination address of the write instruction is the address of the data block in the flash memory of the destination SSD for storing the source SSD. .
- the SSD in the storage system does not need to provide a cache for the host and other SSD access, but uses the registers of the controller in the SSD to perform data migration between the SSDs.
- the architecture of the storage system is the same as that of FIG. 3, and the method for performing data migration between SSDs by using the registers of the controller of the SSD is similar to the data migration method provided by the third embodiment, and the difference lies only in the access information corresponding to the target SSD.
- the access information of the register is already recorded in the host, so the host can directly obtain the register information of the controller of the target SSD.
- the access information corresponding to the SSD in the embodiment is the information of the register of the controller of the SSD
- the information corresponding to the target SSD carried in the migration instruction sent by the host is the register information of the controller of the target SSD (correspondence map) Step S804).
- the read data block is segmented according to the information of the register of the controller of the target SSD, such as the register length, and the generated read command
- the destination address is access information of a register of the controller of the target SSD.
- the step of executing the read command (corresponding to step S805 of FIG.
- the source SSD reads the data block corresponding to the read command in the flash memory of the source SSD to the The register of the controller of the target SSD.
- the source address of the command is the access information of the register, so that the target SSD can write the data block in the register of the controller itself into its own flash memory according to the write command.
- FIG. 11 is a block diagram of a host and an SSD in the fifth embodiment.
- the module and the mapping module are not set, and the corresponding host has no allocation module.
- the host includes a migration indication module 1101, and the SSD (including a source SSD and a target SSD) includes a read indication module 1102, a read module 1103, a write indication module 1104, a write module 1105, and a judgment. Module 1106.
- the access information corresponding to the SSD in the embodiment is the information of the register of the controller of the SSD
- the information corresponding to the target SSD carried in the migration instruction sent by the migration instruction module 1101 of the host is the register of the controller of the target SSD.
- the read instruction module 1102 When the read instruction module 1102 generates a read command, the read data block is segmented according to the information of the register of the controller of the target SSD, for example, the register length, and the destination address of the generated read command is the target. Access information for the registers of the SSD controller.
- the reading module 1103 of the source SSD reads the data block corresponding to the read instruction in the flash memory of the source SSD into the register of the controller of the target SSD.
- the access information carried in the write request is also the register of the controller of the target SSD.
- the source address of the write command generated by the write instruction module 1105 of the target SSD is the access information of the register, so that the write module 1106 of the target SSD can register the controller of the own controller according to the write command.
- the data block in it is written to its own flash memory.
- the IO device registration technology is described in detail when the computer device provided by the embodiment of the present invention is started.
- the principle and implementation manner of the present invention are described in the following. The description of the above embodiment is only for helping.
- the method of the present invention and its core idea are understood; at the same time, for those skilled in the art, according to the idea of the present invention, there are changes in the specific embodiments and application scopes. It should be understood that the invention is limited.
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
本发明实施例涉及一种数据迁移方法、主机、及SSD。存储系统的主机连接有多个SSD,且所述多个SSD互相连通,每个SSD上配置有迁移缓存,每个SSD对应一个访问信息,所述数据迁移方法包括:获取源SSD中待迁移数据的迁移数据信息并确定目标SSD,根据所述目标SSD对应的访问信息及所述迁移数据信息生成读指令,以指示所述源SSD将所述源SSD闪存中的所述读指令对应的数据块读取至所述目标SSD的迁移缓存;在接收到所述源SSD发送的读取完成的反馈指令后,发送写指令指示所述目标SSD将自身缓存中的所述数据块写入自身的闪存中。如此,在进行SSD间数据迁移时,数据不经过主机内存,从而降低了对存储系统的性能影响,且保障了数据迁移的速度。
Description
本发明涉及存储技术领域,特别涉及存储设备间的数据迁移的方法。
随着固态存储设备(Solid Static Disk,SSD)成本不断下降与非易失存储器标准(Non-Volatile Memory Express,NVMe)的发展,目前基于NVMe标准的SSD盘,以其高性能、低时延的特性逐渐代替传统的机械硬盘成为存储系统中的主要存储介质。
实际应用中,经常需要在存储系统的SSD之间进行数据迁移。例如,在存储系统中,由于SSD盘的数量及容量巨大,出故障的概率也会比较大,为了避免出现数据丢失,需要预先识别出即将失效的SSD,即预失效SSD,然后将所述预失效SSD中的数据迁移到其他SSD中进行备份。
现有技术中,在进行SSD间数据迁移时,需要先在存储系统的主机内存中分配一段专用于数据迁移的内存空间,然后再由主机的中央处理器(Central Processing Unit)将源SSD(数据迁出的SSD,例如侦测到的预先效SSD)中的数据先读取到所述内存空间中,再将所述内存空间中的数据写入目标SSD(数据迁入的SSD)中。可见,现有技术中,在SSD间进行数据迁移时,所迁移的数据必须由主机的CPU控制数据的传输过程,因而会占用主机的CPU的带宽,如此则会对其他SSD中的数据的正常访问产生影响,从而影响整个存储系统的性能。为了减少SSD间数据迁移对存储系统性能影响,一般会限制SSD间数据迁移时所占用的主机CPU的带宽,这就会导致SSD间数据迁移的时间过长,增加数据丢失的风险。另外,即使限制SSD间数据迁移的带宽,也还是会影响存储系统的性能。
发明内容
本发明实施例提供在SSD间进行数据迁移的方法,在数据迁移时,不占用主机CPU的带宽,从而不影响存储系统的性能,且保障数据迁移的速度。
本发明实施例第一方面提供一种数据迁移方法,所述数据迁移方法应用于主机。所述主机连接有多个SSD,且所述多个SSD互相连通。每个SSD上配置有迁移缓存,且主机上记录有每个SSD的迁移缓存的访问信息,所述主机或者连接至所述主机的其他SSD根据所述访问信息访问每个SSD的迁移缓存。例如,连接至所述主机的SSD有SSD0~SSD24,则对于任意一个SSD(例如SSD0)所提供的缓存,则主机和其他SSD(SSD1~SSD224)都可以根据所述访问信息进行访问。
所述数据迁移方法包括:
获取源SSD中待迁移数据的迁移数据信息并确定目标SSD,根据所述目标SSD对应的访问信息及所述迁移数据信息生成读指令,并将所述读指令发送至所述源SSD,所述读指令用于指示所述源SSD将所述源SSD闪存中的所述读指令对应的数据块读取至所述目标SSD的迁移缓存;
在接收到所述源SSD发送的读取完成的反馈指令后,发送写指令至所述目标SSD,指示所述目标SSD将自身缓存中的所述数据块写入自身的闪存中。
这样,通过将存储系统中的SSD的缓存作为数据迁移过程中的数据缓存,从而在迁移数据时,所迁移的数据不经过主机传输,使迁移数据不占用主机CPU的带宽,大大降低了对存储系统的性能影响,且保障了数据迁移的速度。
可选地,每个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。
这样,可以将源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之后,将目标SSD的访问信息携带在数据迁移指令中,并发送至源SSD,指示源SSD将所述源SSD中的待迁移数据迁移至目标SSD的迁移缓存中,所述源SSD再发送写请求至目标SSD,指示所述目标SSD将自身迁移缓存中的数据写入自身的闪存中。在源SSD将源SSD中的待迁移数据迁移完成之后,再发送一个迁移完成的反馈指令给主机。这样,主机不但不需要对数据进行搬移,也不参与数据搬移过程中的数据的读写控制,则进一步减少了数据迁移过程中占用的CPU的带宽,也进一步减少了对存储系统的性能的影响。
本发明实施例第四方面提供另外一种数据迁移方法,第四方面所提供的数据迁移方法也应用于主机,所述主机与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的访问信息及目标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互相连通。每个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的迁移缓存中的数据块迁移至所述目标SSD的闪存中。
由于第八方面的主机是将待迁移的数据块先迁移至所述源SSD的迁移缓存中,所以所述主机在生成读指令时,将所述读指令的目标地址设置为所述源SSD的迁移缓存的访问信息,而在生成写指令时,将所述写指令的源地址设置为所述源SSD的迁移缓存的访问信息,这样,所述源SSD即可根据所述读指令将所述读指令对应的数据块迁移至所述源SSD的迁移缓存,所述目标SSD可以根据所述写指令将所述所述源SSD的迁移缓存中的数据块写入自身的闪存。
另外,所述读指示模块在进行待迁移数据切分时,也是根据所述源SSD的迁移缓存的长度进行数据的切分。
其他与第八方面所提供的主机各模块所执行功能相同,可参考相关描述,在此不再赘述。
本发明实施例第十方面提供另外一个主机,所述主机与SSD的连接关系与第八方面的主机相同,每个SSD也配置有迁移缓存。
第十方面的主机与第八方面的主机的主要区别在于,所述主机包括迁移指示模块,所述迁移指示模块在确定了目标SSD之后,将目标SSD的访问信息携带在数据迁移指令中,并发送至源SSD,而第八方面的读指示模块、写指示模块及判断模块所执行的功能在第十方面都由源SSD来执行。这样,主机不但不需要对数据进行搬移,也不参与数据搬移过程中的数据的读写控制,则进一步减少了数据迁移过程中占用的CPU的带宽,也进一步减少了对存储系统的性能的影响。
本发明实施例第十一方面提供还提供一种主机,所述主机与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与主机的连接关系与第一方面的主机与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的控制器的寄存器的访问信息,这样,所述源SSD的读取模块通过执行所述读指令可将所述源SSD中的所述读指令对应的数据块读取至所述目标SSD的控制器的寄存器中,所述目标SSD可以根据所述写请求将自身的控制器的寄存器中的数据块读入到自身的闪存中。
通过本发明的上述实施例中的各种实现方式,可以将存储系统中的SSD的缓存或者寄存器作为数据迁移过程中的数据缓存,从而在迁移数据时,所迁移的数据不经过主机传输,使迁移数据不占用主机CPU的带宽,大大降低了对存储系统的性能影响,且保障了数据迁移的速度。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域
普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为存储系统的架构图。
图2为现有技术中在SSD间进行数据迁移的方法的流程图。
图3为本发明第一实施例中的存储系统的架构图。
图4为本发明第一实施例中为SSD配置迁移缓存的方法的流程图。
图5为本发明第一实施例中进行数据迁移的方法的流程图。
图6为存储系统中与第一实施例中的数据迁移方法对应的主机及SSD的功能模块图。
图7为本发明第二实施例中进行数据迁移的方法的流程图。
图8为本发明第三实施例中进行数据迁移的方法的流程图。
图9为存储系统中与第三实施例中的数据迁移方法对应的主机及SSD的功能模块图。
图10为本发明第四实施例中进行数据迁移的方法的流程图。
图11为本发明第五实施例中存储系统的主机及SSD的功能模块图。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为存储系统的架构图,所述存储系统包括主机10,及与主机10通过高速外围组件互连标准(Peripheral component interconnection express,PCIe)交换机11连接的多个SSD(即SSD0至SSD24)。所述主机10包括CPU101及内存102。
在实际的应用中,经常需要在两个SSD之间进行数据的迁移,例如,在主机10侦测到预失效SSD时,就需要将预失效的SSD中的数据
迁移到其他SSD,以免所述预失效SSD失效后,造成数据的丢失。在此,将数据迁出的SSD盘作为源SSD,将数据迁入的盘作为目标SSD。如图1所示,在需要将SSD2中的数据迁入SSD24时,SSD2即为源SSD,SSD24即为目标SSD。下面将结合图2说明现有技术中将源SSD中的数据迁入目标SSD的方法。
如图2所示,在步骤S201中,当所述CPU10侦测到SSD2中的数据需要迁出时,例如,侦测到SSD2中的数据即将失效,则在其他SSD中选择一个目标SSD,即SSD24,以将SSD2中的数据迁入SSD24。
步骤S202,所述CPU101在内存102中申请一段专门用于数据迁移的迁移内存空间,并获取待迁移数据的数据量。
步骤S203,所述CPU101根据所述迁移内存空间的长度及所获取的待迁移数据的数据量,生成读指令,并将所述读指令发送至SSD2。
步骤S204,所述SSD2根据所述读指令将SSD2中所述读指令对应的数据块读取至所述迁移内存空间。
步骤S205,在所述读指令执行完成后,所述所述SSD2发送读取完成反馈指令至所述主机10。
步骤S206,所述CPU101根据所述读取完成反馈指令发送写指令至所述SSD24。
步骤S207,所述SSD24根据接收到的数据写指令,将所述迁移内存空间中的数据块写入所述SSD24中。
步骤S208,所述SSD24发送写完成反馈指令至所述主机10。
步骤S209,所述CPU101在接收到SSD24发送的写完成反馈指令后,判断所述SSD2中的待迁移数据是否全部迁移完成,如果没有完成,则返回步骤S203,生成新的读指令,继续对SSD2中的待迁移数据进行迁移,如果完成,则结束数据迁移的流程。
在上述数据迁移方法中可以看出,现有技术在将源SSD中的数据迁移至目标SSD时,数据迁移的过程必需由主机10控制,并经过内存102进行迁移,这样,即使限制数据迁移时所占用的主机10的CPU101的带宽,也还是会对存储系统的性能产生影响,而且受CPU带宽的限制,甚至限制数据迁移的带宽会使数据迁移的速度非常慢,增加迁移
数据丢失的风险,从而影响存储系统的可靠性。
本发明实施例提出数据迁移方法,在源SSD和目标SSD之间迁移数据的时候,数据在迁移过程中不经过主机的内存,而是通过PCIE交换机的接口直接传输,不占用主机CPU的带宽,因而不会影响存储系统的性能,另外,数据迁移的速率也不受主机CPU的带宽限制,从而提高了数据迁移的速率。下面将通过多个实施例对本发明所提供的数据迁移方法进行描述。
第一实施例
如图3所示,为本发明第一实施例中的存储系统的架构图。第一实施例中的存储系统的架构图与图1中现有技术中的存储系统的架构基本相同,包括主机30、PCIe交换机31、SSD0~SSD24,所述SSD1至SSD24通过所述PCIe交换机31互相连通。
所述主机30包括CPU301及内存302,所述CPU301用于运行内存中的应用程序303,以实现主机30所提供的一些功能,例如控制SSD0~SSD24中数据的访存及迁移。所述内存302中还存储有SSD0~SSD24的元数据304,所述元数据304记录有每个SSD中所存储的数据的信息,例如所存储数据的数据量,以及所存储数据的逻辑地址信息等。
所述SSD0~SSD24的结构基本相同,下面以SSD2为例来说明每个SSD的结构。如图3所示,所述SSD2包括主控制器221、直接内存访问(Direct Memory Access,DMA)控制器224、缓存223、及闪存225。所述主控制器221用于接收所述主机30发送的数据访存命令,以根据主机30的访存命令控制闪存225中的数据的存取。所述DMA控制器224可以直接访问其他设备的内存,例如主机30的内存,或者其他SSD的缓存。所述缓存223存储主控制器221或者DMA控制器224运行时所需要的程序指令,及暂存从闪存225读取的或者写入闪存225中的数据。闪存是所述SSD的主要存储元件,用于存储写入所述SSD的数据226。
本实施例中,每个SSD可提供一段缓存供主机30及其他SSD访问。每个SSD提供缓存给主机30及其他SSD访问的方法可参考图4所示的
流程图,下文中将每个SSD提供给主机及其他SSD访问的缓存称为迁移缓存。
步骤S401,每个SSD在自己的控制器221的寄存器222中设置迁移缓存的缓存信息,本实施例中,所述缓存信息包括迁移缓存的大小。每个SSD的迁移缓存的大小可根据具体的应用环境确定,例如存储系统的性能、SSD的缓存的大小,SSD的接口带宽等因素确定。每个SSD的迁移缓存的大小可以相同,也可以不同,当有些SSD不需要提供缓存供主机及其他SSD使用时,也可以在所述寄存器222中将所述缓存的大小设置为0。
步骤S402,在所述主机30的BIOS启动阶段,从每个SSD的主控制器221的寄存器222中读取每个SSD的迁移缓存信息,并根据所读取的迁移缓存信息分别为每个SSD的迁移缓存分配访问信息,将为每个SSD分配的访问信息记录在每个SSD的元数据204中,所述访问信息包括访问首地址及SSD的迁移缓存的长度。所述访问首地址即为主机内存中的一个地址信息,这个地址信息对应SSD的迁移缓存的起始地址信息,在主机需要访问SSD的缓存时,首先需要在内存302中找到所述访问首地址,根据该访问首地址访问SSD的迁移缓存。
步骤S403,主机30将为每个SSD的迁移缓存分配的访问信息分别写入每个SSD的寄存器中。在具体实现时,可以只写入所述访问首地址。
步骤S404,每个SSD在缓存223中选择一段与所在所设置的缓存大小相同的缓存空间,作为迁移缓存,并建立所述访问信息与所述迁移缓存之间的映射关系。
如此,所述主机30或者处所述每个SSD之外的其他SSD即可通过所述访问信息访问每个SSD的迁移缓存。例如,如果通过上述方法为SSD0设置了迁移缓存,则主机或者SSD1~SSD24都可以通过所述访问信息访问所述迁移缓存。
在确定了每个SSD的迁移缓存后,即可利用所述迁移缓存进行SSD间的数据迁移。具体迁移方法如图5所示。
步骤S501,主机侦测预设的进行数据迁移的条件。
所述预设的迁移条件可以为确定所述存储系统中的某个SSD即将失效,或者接收到数据迁移请求时,所述迁移请求来自于应用,或者其他设备。
步骤S502,当侦测到预设的进行数据迁移的条件时,所述主机获取源SSD中待迁移数据的迁移数据信息,并确定目标SSD。
主机30从内存302中存储的所述源SSD的元数据中获取所述源SSD中的待迁移数据的迁移数据信息,所述迁移数据信息包括待迁移数据的数据量及逻辑地址。
所述目标SSD可以由用户确定,也可以是预先为所述源SSD设置的备份盘。所述目标SSD的个数可以是一个,也可以是多个,具体数量可以根据数据迁移的速度要求决定。
用户在确定目标SSD时,可以根据每个SSD存储的数据量及忙闲程度进行选择,即可选择存储的数据量比较小且当前比较空闲的SSD作为目标SSD。
步骤S503,根据所述目标SSD对应的访问信息及所述迁移数据信息生成读指令。
本实施方式中,提供两种生成读指令的方式,第一种方式为:首先根据所述目标SSD的访问信息中所述目标SSD所提供的迁移缓存的长度及所述迁移数据信息中所述待迁移数据的数据量将所述待迁移数据切分成多个数据块,每个数据块的长度小于等于所述迁移缓存的长度,通常,每个数据块的长度与所述迁移缓存的长度相等,且每个数据块的逻辑地址可以根据所述待迁移数据的逻辑地址及所切分的数据块的长度确定,并针对每个目标SSD获取一个数据块,生成一个读指令。
第二种方式为:在生成读指令时,不对所有的待迁移数据进行切分,而是只针对一个目标SSD切分出一个数据块,所切分的数据块的长度小于等于所述迁移缓存的长度,通常,所切分的数据块的长度与所述迁移缓存的长度相等,然后确定所切分数据块的逻辑地址,并针对所切分出的数据块生成读指令。
所述读指令包括源地址及目的地址,所述源地址即为所述读指令
所读取的数据块的逻辑地址,所述目的地址即为所述目标SSD的迁移缓存的访问首地址。在所确定的目标SSD为多个时,则根据待迁移数据的逻辑地址从低到高的顺序分别针对每个目标SSD获取一个数据块,以生成多个读指令。
步骤S504,所述主机30将所述读指令发送至所述源SSD。
在主机30根据多个目标SSD生成多个读指令时,则将所述多个读指令按照生成顺序依次发送至所述源SSD。
步骤S505,所述源SSD在接收到所述读指令时,将所述源SSD闪存225中的所述读指令对应的数据块读取至所述目标SSD的迁移缓存。
本实施方式中,在所述源SSD的主控制器接收到所述读指令后,通知所述DMA控制器224根据所述读指令中的源地址,从所述源SSD的闪存中找到所述源地址所对应的数据块,然后根据所述目的地址,将所述数据块写入所述目地地址所指示的目标SSD的缓存中。在所述DMA控制器224在将所述数据块写入所述目标SSD的缓存时,首先将所述数据块及所述目的地址通过所述PCIe交换机传输至所述目的地址所指示的目标SSD,所述目标SSD再根据所述目的地址中的访问首地址找到所述访问首地址对应的迁移缓存的物理地址,然后将所述数据块存储至所述迁移缓存。
步骤S506,当所述数据块全部被读取至所述SSD的迁移缓存后,所述源SSD发送一个读取完成反馈指令至所述主机30。
步骤S507,所述主机30在接收到所述源SSD发送的读取完成的反馈指令后,发送写指令至所述目标SSD,所述写指令包括源地址及目的地址,所述写指令的源地址为所述目标SSD的迁移缓存的访问信息,所述写指令的目的地址为所述目标SSD的闪存中存储所述数据块的存储空间对应的逻辑地址。
步骤S508,所述目标SSD根据所述写指令中的源地址从所述目标SSD的迁移缓存中读取所述数据块,并根据所述目的地址将所述迁移缓存中的数据块写入所述目标SSD的闪存中。
步骤S509,在所述目标SSD将所述数据块写入完成后,所述目标
SSD发送写入完成反馈指令至所述主机30。
步骤S510,在接收到所述写入完成的反馈指令后,所述主机30判断所述源SSD中的待迁移数据是否迁移完成。
步骤S511,若未迁移完,则生成新的读指令,然后返回步骤S504,如果迁移完成,则结束数据迁移的流程。所生成的新的读指令的目的地址即为发送所述反馈指令的目标SSD迁移缓存的访问信息。所述主机30在接收到多个反馈指令时,则针对每个反馈指令生成一个新的读指令。
如果步骤S503中生成读指令的方式为上述第一种方式,则在步骤S511中,从尚未迁移的数据块中确定一个数据块,并针对所确定的数据块生成新的读指令。
如果步骤S503中生成读指令的方式为上述第二种方式,则在步骤511中,从未迁移的待迁移数据中切分出一个数据块,根据新切分的数据块生成新的读指令。
通过上述实施例提供的方法,即可将源SSD中的数据不经过主机30的内存直接传输至目标SSD中,从而不占用主机30的CPU的带宽,且提高了SSD间数据迁移的速率。
如图6所示,为本实施例中图3所示存储系统中主机30和SSD的功能模块图(图中只示出了进行数据迁移的源SSD及目标SSD的模块图)。所述主机30包括分配模块601、读指示模块602、写指示模块603及判断模块604。所述SSD包括设置模块605、映射模块606、读取模块607及写入模块608。图中,所有SSD所包括的功能模块相同,但在实际应用中,当SSD作为数据迁出方的源SSD时,不执行所述写入模块608所执行的功能,当SSD作为数据的迁入方的目的SSD时,不执行读取模块607所执行的功能。
下面将根据数据迁移的过程介绍主机及SSD的各个模块所执行的功能。
所述每个SSD的设置模块605与所述主机30的分配模块601相互配合,实现提供SSD中的迁移缓存供主机及其他SSD访问的功能,与图4所示的SSD提供缓存供主机访问的方法对应。具体地,所述SSD
的设置模块605用于在SSD的控制器221的寄存器222中设置迁移缓存的缓存信息,具体设置的方式请参考步骤S401的描述。
所述主机30的分配模块601用于在主机30的BIOS启动阶段,从每个SSD的主控制器221的寄存器222中读取每个SSD的迁移缓存信息,并根据所读取的迁移缓存信息分别为每个SSD的迁移缓存分配访问信息,将为每个SSD分配的访问信息记录在每个SSD的元数据204中,同时,将每个SSD的迁移缓存分配的访问信息分别写入每个SSD的寄存器中。具体分配方式请看考步骤S402的描述。
所述映射模块606用于在缓存223中选择一段与所设置的缓存大小相同的缓存空间,作为迁移缓存,并建立所述访问信息与所述迁移缓存之间的映射关系,与步骤S404对应。
所述SSD的读指示模块602用于侦测预设的进行数据迁移的条件,当侦测到预设的进行数据迁移的条件时,获取源SSD中待迁移数据的迁移数据信息,并确定目标SSD,然后根据目标SSD对应的访问信息及所述迁移数据信息生成读指令,并将所生成的读指令发送至源SSD。所述读指示模块602所执行的功能对应步骤S501-S504,生成读指令的两种方式也与步骤S503中的相同,在此不再赘述。
所述源SSD的在接收到所述读指令后,将所述源SSD闪存中的所述读指令对应的数据块读取至所述目标SSD的迁移缓存,当所述数据块全部被读取至所述SSD的迁移缓存后,所述源SSD发送一个读取完成反馈指令至所述主机30,从源SSD的闪存读取数据的过程请参考步骤S505和S506的描述。
在接收到所述源SSD发送的读取完成的反馈指令后,所述主机的写指令模块603发送写指令至所述目标SSD。所述写指示模块603执行的功能对应步骤S507。
所述目标SSD的写入模块608根据所述写指令将所述目标SSD中的缓存地址写入所述目标SSD的闪存中,并在写完后,发送写入完成的反馈指令至所述主机30。
所述主机30的判断模块604判断所述源SSD中的待迁移数据是否迁移完成,如果没有迁移完成,则生成新的读指令,并将所述新的读
指令发送至所述源SSD。如果完成,则结束数据的迁移过程。生成新指令的方式请参考步骤S511中的相关描述。
第二实施例
第二实施例与第一实施例区别仅在于,在第二实施例中,源SSD中的待迁移数据首先被读取至本地的迁移缓存,然后将本地迁移缓存中的数据再写入目标SSD。下面将结合流程图说明第二实施例中的数据迁移方法。
在第二实施例中,存储系统的架构与图3相同,所述存储系统中的SSD也会提供缓存供主机及其他SSD访问,所以在下面的描述中,还是会用图3的架构描述第二实施例。另外,所述SSD提供缓存给主机及其他SSD访问的方法与第一实施例中方式相同,具体请参考图4的描述,在此不再赘述。
下面将结合图6描述在第二实施例中将源SSD中的待迁移数据迁移至目标SSD的方法。
步骤S701为侦测主机侦测预设的进行数据迁移的条件,这个步骤与第一实施例的步骤S501相同,在此不再赘述。
步骤S702,当侦测到预设的进行数据迁移的条件时,所述主机确定目标SSD,确定目标SSD的方式也与第一实施例中步骤S502相同,在此也不再赘述。
由于第二实施例是需要将源SSD中的待迁移数据读取至源SSD的缓存的迁移缓存中,所以,在步骤S703中,是根据所述源SSD的访问信息及所述迁移数据信息生成读指令。
在根据所述源SSD的访问信息及所述迁移数据信息生成读指令的方式也同样有两种。
第一种为,根据所述源SSD的访问信息中所述源SSD的迁移缓存的长度及所述迁移数据信息中所述待迁移数据的数据量将所述待迁移数据切分成多个数据块,根据所切分的数据块的迁移数据信息及所述源SSD对应的访问信息生成所述读指令。
第二种为,根据所述源SSD的访问信息中的所述源SSD的迁移缓
存的长度及所述迁移数据信息中的所述待迁移数据的数据量获取本次迁移至所述目标SSD的数据块的迁移数据信息,根据所获取的数据块的迁移数据信息及所述源SSD对应的访问信息生成所述读指令。
所述读指令的源地址为所述源SSD所读取数据块的逻辑地址,而所述目的地址为所述源SSD的迁移缓存的访问首地址。
所述读指令在经过步骤604发送至源SSD后,在步骤S605中,所述源SSD根据所述读指令将所述源SSD闪存中的所述读指令对应的数据块读取至所述源SSD的迁移缓存中。
在将所述数据块全部读取至所述源SSD的迁移缓存中后,所述源SSD在步骤S706中,也会产生一个读取完成反馈指令至所述主机。
在步骤S707中,所述主机在接收到所述读取完成反馈指令后,会发送写指令至所述目标SSD。所述写指令的源地址为所述读指令所读取的数据块的逻辑地址,所述目的地址为所述目的地址为所述目标SSD的闪存中用于存储所述数据块的存储空间的逻辑地址。
步骤S708,所述目标SSD根据所述写指令将所述源SSD的迁移缓存中的所述数据块写入所述目标SSD中。
具体地,所述目标SSD在接收到所述写指令后,则通知所述目标SSD的所述DMA控制器通过DMA的方式,将所述源SSD的迁移缓存中所存储的所述数据块经过所述PCIe交换机写入所述目标SSD的缓存中。
在所述DMA控制器通过DMA的方式获取源SSD的迁移缓存中的所述数据块时,所述DMA控制器将所述源SSD的访问首地址传输至所述源SSD,所述源SSD根据所述访问首地址获取存储在所述SSD的迁移缓存中的所述数据块,然后将所述数据块再通过所述PCIe交换机写入所述目标SSD的闪存中。
步骤S709,在所述目标SSD将所述数据块写入完成后,所述目标SSD发送写入完成反馈指令至所述主机。
步骤S710,在接收到所述写入完成的反馈指令后,所述主机判断所述源SSD中的待迁移数据是否迁移完成。
步骤S711,若未迁移完,则生成新的读指令,然后返回步骤S604,
如果迁移完成,则结束数据迁移的流程。
如果步骤S703中生成读指令的方式为上述第一种方式,则在步骤S611中,从尚未迁移的数据块中确定一个数据块,并针对所确定的数据块生成新的读指令。
如果步骤S703中生成读指令的方式为上述第二种方式,则在步骤711中,从未迁移的待迁移数据中切分出一个数据块,根据新切分的数据块生成新的读指令。
在第二实施例中,主机和SSD的功能模块图与第一实施例中的主机和SSD所包括的功能模块相同,但部分功能模块执行的功能不同。
其中,主机的分配模块601、SSD中的设置模块605及映射模块606所执行的功能与第一实施例中的相同,在此不再赘述。
由于本实施例是将源SSD的闪存中的数据先迁入源SSD的迁移缓存中,所以在所述读指示模块602生成读指令时,所生成的读指令的目的地址为所述源SSD的迁移缓存的访问信息。这样,所述源SSD的读取模块607会根据所述读指令将所述读指令对应的数据块读到所述源SSD的迁移缓存中。所述主机的写指示模块603所发送的写指令的源地址即为所述源SSD的迁移缓存的访问信息。所述目标SSD的写入模块会根据所述写指令将所述源SSD的迁移缓存中的所述数据块迁移至自身的闪存中。
其他部分与第一实施例相同,在此不再赘述。
第三实施例
第三实施例与第一实施例区别在于,在第三实施例中,主机SSD在侦测到需要对源SSD中的数据进行迁移时,只需要发送迁移命令至源SSD,源SSD根据所述迁移命令即可将自身闪存中的待迁移数据迁移至目标SSD,在源SSD将自身缓存中的数据迁移完成之后,再发送迁移完成的反馈指令给主机即可。这样,在整个数据迁移的过程中,主机只需要与源SSD发生两次命令交互,而不参与数据迁移的过程,从而进一步减少了SSD间数据迁移时所占用的主机带宽。下面将结合流程图说明第三实施例中的数据迁移方法。
在第三实施例中,存储系统的架构与图3相同,所述存储系统中的SSD也会提供迁移缓存供主机及其他SSD访问,所以在下面的描述中,还是会基于图3的架构描述第三实施例。另外,所述SSD提供迁移缓存给主机及其他SSD访问的方法与第一实施例中的方法相同,具体请参考图4的描述,在此不再赘述。
下面将结合图8描述在第三实施例中将源SSD中的待迁移数据迁移至目标SSD的方法。
步骤S801为侦测主机侦测预设的进行数据迁移的条件,这个步骤与第一实施例的步骤S501相同,在此不再赘述。
步骤S802,当侦测到预设的进行数据迁移的条件时,所述主机确定目标SSD,确定目标SSD的方式也与第一实施例中步骤S502相同,在此也不再赘述。
步骤S803,所述主机发送数据迁移指令至源SSD,所述数据迁移指令携带目标SSD对应的访问信息。
步骤S804,所述源SSD根据所接收到的迁移指令中携带的目标SSD对应的访问信息及所述源SSD中的待迁移数据生成读指令。
本实施例中,所述源SSD生成读指令的方式也包括两种,第一种为:根据所述目标SSD的访问信息中所述目标SSD所提供的迁移缓存的长度及所述源SSD中所述待迁移数据的数据量将所述待迁移数据切分成多个数据块,每个数据块的长度与所述迁移缓存的长度相等,且每个数据块的存储地址可以根据所述待迁移数据的存储地址及所切分的数据块的长度确定,并针对每个目标SSD获取一个数据块,生成一个读指令。需要说明的是,这里的存储地址为数据在SSD中的逻辑地址,根据SSD中数据的逻辑地址与物理地址的映射关系,可以找到SSD中存储的数据。
第二种方式为:在生成读指令时,不对所有的待迁移数据进行切分,而是只针对一个目标SSD切分出一个数据块,并确定所切分数据块的存储地址,然后针对所切分出的数据块生成读指令。
所述读指令包括源地址及目的地址,所述源地址即为所述读指令所读取的数据块的存储地址,所述目的地址即为所述目标SSD的迁移
缓存的访问首地址。在所确定的目标SSD为多个时,则根据待迁移数据的存储地址从低到高的顺序分别针对每个目标SSD获取一个数据块,以生成多个读指令。
步骤S805,所述源SSD执行所述读指令,将所述源SSD闪存中的所述读指令对应的数据块读取至所述目标SSD的迁移缓存。
本实施例中,也是通过源SSD中的DMA控制器将所述源SSD的闪存中的所述读指令对应的数据块读取至目标SSD的迁移缓存,所述DMA读取所述数据块的过程与第一实施例相同,具体请参考第一实施例的步骤S505中的相关描述。
步骤S806,在所述读指令执行完成后,所述源SSD发送写请求至所述目标SSD,所述写请求包括所述目的SSD的迁移缓存的访问信息。
步骤S807,所述目标SSD根据所述写请求生成写指令。所述写指令包括源地址及目的地址,所述写指令的源地址为所述目标SSD的迁移缓存的访问信息,所述写指令的目的地址为所述目标SSD的闪存中存储所述数据块的存储地址。
步骤S808,通过执行所述写指令将所述目的SSD的迁移缓存中的所述数据块写入所述目的SSD的闪存中。
步骤S809,所述目标SSD在写入完成后,发送一写完成反馈指令至所述源SSD。
步骤S810,在接收到所述写入完成的反馈指令后,所述源SSD判断所述待迁移数据是否迁移完成,如果未迁移完成,则执行步骤S811,如果迁移完成,在执行步骤S812。
步骤S811,生成新的读指令,然后返回步骤S805,如果步骤S804中生成读指令的方式为上述第一种方式,则在步骤S811中,所述源SSD从尚未迁移的数据块中确定一个数据块,并针对所确定的数据块生成新的读指令。
如果步骤S804中生成读指令的方式为上述第二种方式,则在步骤S811中,所述源SSD从未迁移的待迁移数据中切分出一个数据块,根据新切分的数据块生成新的读指令。
步骤S812,所述源SSD发送迁移完成反馈指令至主机,主机接收
到所述迁移完成的反馈指令后,即可结束所述数据迁移方法。
如图9所示,为第二实施例中,所述主机及所述SSD的模块图。所述主机包括分配模块901及迁移指示模块902。所述SSD包括设置模块903、映射模块904、读指示模块905、读取模块906、写指示模块907、写入模块908、及判断模块909。本实施例中,主机的分配模块901、SSD中的设置模块903及映射模块904所执行的功能与第一实施例中分配模块601、设置模块605及映射模块606的相同,在此不再赘述。
所述主机的迁移指示模块902用于在侦测到预设的进行数据迁移的条件时,确定目标SSD,发送数据迁移指令至源SSD,所述数据迁移指令携带目标SSD对应的访问信息。
所述源SSD的读指示模块905用于根据所接收到的迁移指令中携带的目标SSD对应的访问信息及所述源SSD中的待迁移数据生成读指令。生成读指令的两种方式请参考步骤S804的描述。
所述源SSD的读取模块906用于执行所述读指令,将所述源SSD闪存中的所述读指令对应的数据块读取至所述目标SSD的迁移缓存,与步骤805对应。
在所述读指令执行完成后,所述源SSD的写指示模块907发送写请求至所述目标SSD,所述写请求包括所述目标SSD的迁移缓存的访问信息。
所述目标SSD的写入模块908根据所述写请求生成写指令。所述写指令包括源地址及目的地址,所述写指令的源地址为所述目标SSD的迁移缓存的访问信息,所述写指令的目的地址为所述目标SSD的闪存中存储所述数据块的存储地址,根据所述写指令将所述目的SSD的迁移缓存中的所述数据块写入所述目的SSD的闪存中,并在写入完成后,发送一写完成反馈指令至所述源SSD。
所述源SSD的判断模块909在接收到所述写入完成的反馈指令后,判断所述待迁移数据是否迁移完成,如果没有完成,则生成新的读指令,生成新指令的方式与步骤S811中相同,在此不再赘述,如果完成,则发送迁移完成反馈指令至主机,以使主机结束数据的迁移。
第四实施例
第四实施例与第三实施例类似,其不同仅在于,在将源SSD中的待迁移数据迁移至目标SSD时,首先将所述源SSD中的待迁移数据迁移至所述源SSD的迁移缓存中,然后在将所述源SSD的迁移缓存中的数据迁移至所述目标SSD的闪存中。
在第三实施例中,存储系统的架构与图3相同,所述存储系统中的SSD也会提供缓存供主机访问,所以在下面的描述中,还是会基于图3的架构描述第三实施例。另外,所述SSD提供缓存给主机使用的方法与第一实施例中的方法相同,具体请参考图4的描述,在此不再赘述。
下面将结合图10描述在第四实施例中将源SSD中的待迁移数据迁移至目标SSD的方法。
步骤S1001为侦测主机侦测预设的进行数据迁移的条件,这个步骤与第一实施例的步骤S501相同,在此不再赘述。
步骤S1002,当侦测到预设的进行数据迁移的条件时,所述主机确定目标SSD,确定目标SSD的方式也与第一实施例中步骤S502相同,在此也不再赘述。
步骤S1003,所述主机发送数据迁移指令至源SSD,所述数据迁移指令携带源SSD对应的访问信息及目标SSD信息。
步骤S1004,所述SSD根据所接收到的迁移指令中携带的源SSD对应的访问信息及所述源SSD中的待迁移数据生成读指令。
所述源SSD生成读指令的方式与第三实施例中源SSD生成读指令的两种方式类似,其不同之处仅在于,所生成的读指令的目的地址为所述源SSD对应的访问信息。
步骤S1005,所述源SSD执行所述读指令,将所述源SSD闪存中的所述读指令对应的数据块读取至所述源SSD的迁移缓存。
步骤S1006,所述源SSD在执行完所述读指令后,发送写请求至所述目标SSD信息对应的目标SSD中,所述写请求中携带所述源SSD的迁移缓存的访问信息。
步骤S1007,所述目标SSD根据所述写请求生成写指令,所述写
指令的源地址为所述源SSD对应的访问信息,所述写指令的目的地址为所述目的SSD的闪存中用于存储所述源SSD的迁移缓存中的所述数据块的地址。
步骤S1008,所述目标SSD执行所述写指令,将所述源SSD的迁移缓存中的所述数据块迁移至所述SSD的闪存中。
步骤S1009,在所述目标SSD执行完所述写指令后,发送写完成反馈指令至所述源SSD。
步骤S1010,在接收到所述写入完成的反馈指令后,所述源SSD判断所述待迁移数据是否迁移完成,如果未迁移完成,则执行步骤S1011,如果迁移完成,在执行步骤S1012。
步骤S1011,生成新的读指令,然后返回步骤S1005,如果步骤S1004中生成读指令的方式为上述第一种方式,则在步骤S1011中,所述源SSD从尚未迁移的数据块中确定一个数据块,并针对所确定的数据块生成新的读指令。
如果步骤S1004中生成读指令的方式为上述第二种方式,则在步骤S1011中,所述源SSD从未迁移的待迁移数据中切分出一个数据块,根据新切分的数据块生成新的读指令。
步骤S1012,所述源SSD发送迁移完成反馈指令至主机,主机接收到所述迁移完成的反馈指令后,即可结束所述数据迁移方法。
在第四实施例中,主机和SSD的功能模块图与第一实施例中的主机和SSD所包括的功能模块相同,但部分功能模块执行的功能不同。
其中,主机的分配模块901、SSD中的设置模块903及映射模块904所执行的功能与第一实施例中主机的分配模块601、SSD中的设置模块605及映射模块606相同,在此不再赘述。
由于本实施例是将源SSD的闪存中的数据先迁入源SSD的迁移缓存中,所以在所述读指示模块905在生成读指令时,所生成的读指令的目的地址为所述源SSD的迁移缓存的访问信息。这样,所述源SSD的读取模块607会根据所述读指令将所述读指令对应的数据块读到所述源SSD的迁移缓存中。所述写指示模块907所发送的写请求信息中携带的是所述源SSD的迁移缓存的访问信息。所述目标SSD的写入模
块会根据所述写请求生成写指令,并执行所述写指令将所述源SSD的迁移缓存中的所述数据块迁移至所述SSD的闪存中。所述写指令的源地址为所述源SSD对应的访问信息,所述写指令的目的地址为所述目的SSD的闪存中用于存储所述源SSD的迁移缓存中的所述数据块的地址。
其他部分与第三实施例中的主机及SSD所包括的各模块的功能相同,在此不再赘述。
第五实施例
在第五实施例中,存储系统中的SSD不需要提供缓存供主机及其他SSD访问,而是利用SSD中的控制器的寄存器进行SSD间的数据迁移。
存储系统的架构与图3的架构相同,利用SSD的控制器的寄存器进行SSD间数据迁移的方法与第三实施例所提供的数据迁移方法类似,其不同点仅在于,目标SSD对应的访问信息为目标SSD的控制器的寄存器的信息,所述寄存器信息包括所述寄存器的访问首地址及寄存器的长度。由于现有技术中,所述寄存器的访问信息中已经记录在主机中,所以主机可以直接获取所述目标SSD的控制器的寄存器信息下面参考图8所示的第三实施例的数据迁移方法说明本实施例中数据迁移方法。由于本实施例中SSD对应的访问信息为SSD的控制器的寄存器的信息,所以,所述主机发送的迁移指令中所携带的目标SSD对应的信息为目标SSD的控制器的寄存器信息(对应图8的步骤S804)。这样,在生成读指令的步骤中(对应图8的步骤S804),为根据所述目标SSD的控制器的寄存器的信息,例如寄存器长度,切分读取的数据块,所生成的读指令的目的地址为所述目标SSD的控制器的寄存器的访问信息。相应的,在本实施例中,在执行读指令的步骤(对应图8的步骤S805)中,所述源SSD将所述源SSD的闪存中的所述读指令对应的数据块读取至所述目标SSD的控制器的寄存器中。另外,在发送写请求的步骤(对应图8的步骤S806)中,写请求中携带的也是所述目标SSD的控制器的寄存器的访问信息,所述目标SSD所生成的写指
令的源地址即为所述寄存器的访问信息,如此,所述目标SSD即可根据所述写指令将自身控制器的寄存器中的数据块写入自身的闪存中了。其他步骤与第三实施例基本相同,具体请参考图8的相关描述。
图11为第五实施例中的主机及SSD的模块图。在第五实施例中,由于SSD不需要提供迁移缓存给主机及其他SSD访问,所以,没有设置模块及映射模块,相应的主机也没有分配模块。具体如图11所示,所述主机包括迁移指示模块1101,所述SSD(包括源SSD和目标SSD)包括读指示模块1102、读取模块1103、写指示模块1104、写入模块1105、及判断模块1106。
由于本实施例中SSD对应的访问信息为SSD的控制器的寄存器的信息,所以所述主机的迁移指示模块1101发送的迁移指令中所携带的目标SSD对应的信息为目标SSD的控制器的寄存器信息。在所述读指示模块1102生成读指令时,为根据所述目标SSD的控制器的寄存器的信息,例如寄存器长度,切分读取的数据块,所生成的读指令的目的地址为所述目标SSD的控制器的寄存器的访问信息。相应的,所述源SSD的读取模块1103将所述源SSD的闪存中的所述读指令对应的数据块读取至所述目标SSD的控制器的寄存器中。另外,在所述源SSD的写指示模块1104在发送写请求时,写请求中携带的也是所述目标SSD的控制器的寄存器的访问信息。所述目标SSD的写指示模块1105所生成的写指令的源地址即为所述寄存器的访问信息,如此,所述目标SSD的写入模块1106即可根据所述写指令将自身控制器的寄存器中的数据块写入自身的闪存中了。其他模块所实现的功能与第三实施例中相应的模块所执行的功能基本相同,具体请参考图9的相关模块的描述,在此不再赘述。
以上对本发明实施例所提供的计算机设备启动时,IO设备注册的技术进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (72)
- 一种数据迁移方法,应用于主机,所述主机连接有多个固态存储设备SSD,且所述多个SSD互相连通,每个SSD上配置有迁移缓存,每个SSD对应一个访问信息,所述主机或所述每个SSD自身之外的其他SSD根据所述访问信息访问每个SSD的迁移缓存,所述数据迁移方法包括:获取源SSD中待迁移数据的迁移数据信息并确定目标SSD,根据所述目标SSD对应的访问信息及所述迁移数据信息生成读指令,并将所述读指令发送至所述源SSD,所述读指令用于指示所述源SSD将所述源SSD闪存中的所述读指令对应的数据块读取至所述目标SSD的迁移缓存;在接收到所述源SSD发送的读取完成的反馈指令后,发送写指令至所述目标SSD,指示所述目标SSD将自身缓存中的所述数据块写入自身的闪存中。
- 如权利要求1所述的数据迁移方法,其特征在于,所述方法还包括:在所述主机启动时,读取每个SSD的控制器的寄存器中设置的每个SSD配置的迁移缓存信息;并根据所读取的迁移缓存信息为每个SSD的迁移缓存分配所述访问信息,并在所述主机中记录每个SSD对应的所述访问信息。
- 如权利要求1或2所述的数据迁移方法,其特征在于,所述根据所述目标SSD的访问信息及所述迁移数据信息生成读指令,包括:根据所述目标SSD的访问信息中所述目标SSD的迁移缓存的长度及所述迁移数据信息中所述待迁移数据的数据量将所述待迁移数据切分成多个数据块,根据所切分的数据块的迁移数据信息及所述目标SSD对应的访问信息生成所述读指令。
- 如权利要求3所述的数据迁移方法,其特征在于,所述方法还包括:接收所述目标SSD发送的写完成反馈指令,判断所切分的数据块是否迁移完,若未迁移完,则从尚未迁移的数据块中确定一个数据 块,并针对所确定的数据块生成新的读指令,所述新的读指令的目的地址为发送所述写完成反馈指令的目标SSD。
- 如权利要求1或2所述的数据迁移方法,其特征在于,所述根据所述目标SSD的访问信息及所述迁移数据信息生成读指令,包括:根据所述目标SSD的访问信息中的所述目标SSD的迁移缓存的长度及所述迁移数据信息中的所述待迁移数据的数据量获取本次迁移至所述目标SSD的数据块的迁移数据信息,根据所获取的数据块的迁移数据信息及所述目标SSD对应的访问信息生成所述读指令。
- 如权利要求5所述的数据迁移方法,其特征在于,所述方法还包括:接收所述目标SSD发送的写完成反馈指令,判断是否还有未迁移的待迁移数据,若还有未迁移的待迁移数据,则根据未迁移的待迁移数据的迁移数据信息获取一个数据块的迁移数据信息,根据所获取的数据块的迁移数据信息生成新的读指令,所述新的读指令的目的地址为发送所述写完成反馈指令的目标SSD。
- 如权利要求1-6任意一项所述的数据迁移方法,其特征在于,每个读指令包括源地址及目的地址,所述源地址为每个读指令所读取的数据块的逻辑地址,所述目的地址为所述目标SSD的迁移缓存的访问首地址。
- 如权利要求1-7任意一项所述的数据迁移方法,其特征在于,所述目标SSD为多个目标SSD,在生成读指令时,针对每个目标SSD,生成一个读指令,并将所生成的多个读指令发送至所述源SSD。
- 一种数据迁移方法,应用于主机,所述主机连接有多个固态存储设备SSD,且所述多个SSD互相连通,每个SSD上配置有迁移缓存,每个SSD对应一个访问信息,所述主机或所述每个SSD自身之外的其他SSD根据所述访问信息访问每个SSD的迁移缓存,所述数据迁移方法包括:获取源SSD中待迁移数据的迁移数据信息并确定目标SSD,根据所述源SSD对应的访问信息及所述迁移数据信息生成读指令,并将所述读指令发送至所述源SSD,所述读指令用于指示所述源SSD将所述源SSD闪存中的所述读指令对应的数据块读取至所述源SSD的迁移缓 存;在接收到所述源SSD发送的读取完成的反馈指令后,发送写指令至所述目标SSD,指示所述目标SSD将所述源SSD的迁移缓存中的所述数据块写入自身的闪存中。
- 如权利要求9述的数据迁移方法,其特征在于,所述方法还包括:在所述主机启动时,读取每个SSD的控制器的寄存器中设置的每个SSD配置的迁移缓存信息;并根据所读取的迁移缓存信息为每个SSD的迁移缓存分配所述访问信息,并在所述主机中记录每个SSD对应的所述访问信息。
- 如权利要求9或10所述的数据迁移方法,其特征在于,所述根据所述源SSD的访问信息及所述迁移数据信息生成读指令,包括:根据所述源SSD的访问信息中所述源SSD的迁移缓存的长度及所述迁移数据信息中所述待迁移数据的数据量将所述待迁移数据切分成多个数据块,根据所切分的数据块的迁移数据信息及所述源SSD对应的访问信息生成所述读指令。
- 如权利要求11所述的数据迁移方法,其特征在于,所述方法还包括:接收所述目标SSD发送的写完成反馈指令,判断所切分的数据块是否迁移完,若未迁移完,则从尚未迁移的数据块中确定一个数据块,并针对所确定的数据块生成新的读指令。
- 如权利要求9或10所述的数据迁移方法,其特征在于,所述根据所述源SSD的访问信息及所述迁移数据信息生成读指令,包括:根据所述源SSD的访问信息中的所述源SSD的迁移缓存的长度及所述迁移数据信息中的所述待迁移数据的数据量获取本次迁移至所述目标SSD的数据块的迁移数据信息,根据所获取的数据块的迁移数据信息及所述源SSD对应的访问信息生成所述读指令。
- 如权利要求13所述的数据迁移方法,其特征在于,所述方法还包括:接收所述目标SSD发送的写完成反馈指令,判断是否还有未迁移的待迁移数据,若还有未迁移的待迁移数据,则根据未迁移的待迁移数据的迁移数据信息获取数据块的迁移数据信息,根据所获取的 数据块的迁移数据信息生成新的读指令。
- 如权利要求9-14任意一项所述的数据迁移方法,其特征在于,每个读指令包括源地址及目的地址,所述源地址为每个读指令所读取的数据块的逻辑地址,所述目的地址为所述源SSD的迁移缓存的访问首地址。
- 一种数据迁移方法,应用于主机,所述主机连接有多个固态存储设备SSD,且所述多个SSD互相连通,每个SSD上配置有迁移缓存,每个SSD对应一个访问信息,所述主机或所述每个SSD自身之外的其他SSD根据所述访问信息访问每个SSD的迁移缓存,所述数据迁移方法包括:发送数据迁移指令至源SSD,所述数据迁移指令携带目标SSD对应的访问信息,以使所述源SSD根据所述目标SSD对应的访问信息及所述源SSD中的待迁移数据生成读指令,执行所述读指令将所述源SSD闪存中的所述读指令对应的数据块读取至所述目标SSD的迁移缓存,并在所述读指令执行完成后,发送写请求至所述目标SSD,指示所述目标SSD将自身缓存中的所述数据块写入自身的闪存中。
- 如权利要求16所述的数据迁移方法,其特征在于,所述方法还包括:在所述主机启动时,读取每个SSD的控制器的寄存器中设置的每个SSD的迁移缓存信息;并根据所读取的迁移缓存信息为每个SSD的迁移缓存分配所述访问信息,并在所述主机中记录每个SSD对应的所述访问信息。
- 如权利要求16或17所述的数据迁移方法,其特征在于,所述数据迁移指令携带多个目标SSD对应的访问信息。
- 一种数据迁移方法,应用于固态存储设备SSD,所述SSD连接至主机,且与连接至所述主机的其他SSD互相连通,连接至所述主机的SSD上配置有迁移缓存,连接至所述主机的每个SSD对应一个访问信息,所述主机或所述每个SSD自身之外的其他SSD根据所述访问信息访问每个SSD的迁移缓存,所述数据迁移方法包括:作为源SSD接收数据迁移指令,所述数据迁移指令携带目标SSD 对应的访问信息;根据所述目标SSD对应的访问信息及所述源SSD闪存中的待迁移数据的迁移数据信息生成读指令;执行所述读指令将所述源SSD闪存中的所述读指令对应的数据块读取至所述目标SSD的迁移缓存;在所述读指令执行完成后,发送写请求至所述目标SSD,指示所述目标SSD将自身缓存中的所述数据块写入自身的闪存中,所述写请求中携带所述目标SSD的迁移缓存的访问信息。
- 如权利要求19所述的数据迁移方法,其特征在于,所述方法还包括:在所述源SSD的控制器的寄存器中设置所述源SSD的迁移缓存信息,以使所述主机在启动时读取所述寄存器中设置的迁移缓存信息,并根据所读取的迁移缓存信息为每个SSD的迁移缓存分配所述访问信息,并在所述主机中记录每个SSD对应的所述访问信息。
- 如权利要求20所述的数据迁移方法,其特征在于,所述根据所述目标SSD对应的访问信息及所述源SSD闪存中的待迁移数据的迁移数据信息生成读指令,包括:根据所述目标SSD的访问信息中所述目标SSD的迁移缓存的长度及所述迁移数据信息中所述待迁移数据的数据量将所述待迁移数据切分成多个数据块,根据所切分的数据块的迁移数据信息及所述目标SSD对应的访问信息生成所述读指令。
- 如权利要求21所述的数据迁移方法,其特征在于,所述方法还包括:接收所述目标SSD发送的写完成反馈指令,判断所切分的数据块是否迁移完,若未迁移完,则从尚未迁移的数据块中确定一个数据块,并针对所确定的数据块生成新的读指令,所述新的读指令的目的地址为发送所述写完成反馈指令的目标SSD。
- 如权利要求19所述的数据迁移方法,其特征在于,所述根据所述目标SSD对应的访问信息及所述源SSD闪存中的待迁移数据的迁移数据信息生成读指令,包括:根据所述目标SSD的访问信息中的所述目标SSD的迁移缓存的长 度及所述迁移数据信息中的所述待迁移数据的数据量获取本次迁移至所述目标SSD的数据块的迁移数据信息,根据所获取的数据块的迁移数据信息及所述目标SSD对应的访问信息生成所述读指令。
- 如权利要求23所述的数据迁移方法,其特征在于,所述方法还包括:接收所述目标SSD发送的写完成反馈指令,判断是否还有未迁移的待迁移数据,若还有未迁移的待迁移数据,则根据未迁移的待迁移数据的迁移数据信息获取本次迁移的数据块的迁移数据信息,根据所获取的数据块的迁移数据信息生成新的读指令,所述新的读指令的目的地址为发送所述写完成反馈指令的目标SSD。
- 如权利要求19-24任意一项所述的数据迁移方法,其特征在于,每个读指令包括源地址及目的地址,所述源地址为每个读指令所读取的数据块的地址,所述目的地址为所述目标SSD的迁移缓存的访问首地址。
- 如权利要求19-25任意一项所述的数据迁移方法,其特征在于,所述目标SSD为多个目标SSD,在生成读指令时,针对每个目标SSD,生成一个读指令。
- 一种数据迁移方法,应用于主机,所述主机连接有多个固态存储设备SSD,且所述多个SSD互相连通,每个SSD上配置有迁移缓存,每个SSD对应一个访问信息,所述主机根据所述访问信息访问每个SSD的迁移缓存,所述数据迁移方法包括:发送数据迁移指令至源SSD,所述数据迁移指令携带源SSD对应的访问信息及目标SSD信息,以使所述源SSD根据所述源SSD对应的访问信息及所述源SSD中的闪存中待迁移数据生成读指令,执行所述读指令将所述源SSD闪存中的所述读指令对应的数据块读取至所述源SSD的迁移缓存,并在所述读指令执行完成后,发送写请求至所述目标SSD信息对应的目标SSD,指示所述目标SSD将所述源SSD的迁移缓存中的所述数据块写入自身的闪存中,所述写请求携带所述源SSD的迁移缓存的访问信息。
- 如权利要求27所述的数据迁移方法,其特征在于,所述方法还包括:在所述主机启动时,读取每个SSD的控制器的寄存器中设置的每个SSD的迁移缓存信息;并根据所读取的迁移缓存信息为每个SSD的迁移缓存分配所述访问信息,并在所述主机中记录每个SSD对应的所述访问信息。
- 一种数据迁移方法,应用于固态存储设备SSD,所述SSD连接至主机,且与连接至所述主机的其他SSD互相连通,连接至所述主机的SSD上配置有迁移缓存,连接至所述主机的每个SSD对应一个访问信息,所述主机或所述每个SSD自身之外的其他SSD根据所述访问信息访问每个SSD的迁移缓存,所述数据迁移方法包括:作为源SSD接收数据迁移指令,所述数据迁移指令携带所述源SSD对应的访问信息及目标SSD信息;根据所述源SSD对应的访问信息及所述源SSD闪存中的待迁移数据的迁移数据信息生成读指令;执行所述读指令将所述源SSD闪存中的所述读指令对应的数据块读取至所述源SSD的迁移缓存;在所述读指令执行完成后,发送写请求至所述目标SSD信息对应的目标SSD,指示所述目标SSD将所述源SSD的迁移缓存中的所述数据块写入自身的闪存中,所述写请求中携带所述源SSD的迁移缓存的访问信息。
- 如权利要求29所述的数据迁移方法,其特征在于,所述方法还包括:在所述源SSD的控制器的寄存器中设置所述源SSD的迁移缓存大小,以使所述主机在启动时,读取所述迁移缓存信息,并根据所读取的迁移缓存信息为所述源SSD的迁移缓存分配所述访问信息。
- 如权利要求29或30所述的数据迁移方法,其特征在于,所述根据所述源SSD对应的访问信息及所述源SSD闪存中的待迁移数据的迁移数据信息生成读指令,包括:根据所述源SSD的访问信息中所述源SSD的迁移缓存的长度及所述迁移数据信息中所述待迁移数据的数据量将所述待迁移数据切分成多个数据块,根据所切分的数据块的迁移数据信息及所述源SSD对应的访问信息生成所述读指令。
- 如权利要求31所述的数据迁移方法,其特征在于,所述方法还包括:接收所述目标SSD发送的写完成反馈指令,判断所切分的数据块是否迁移完,若未迁移完,则从尚未迁移的数据块中确定一个数据块,并针对所确定的数据块生成新的读指令。
- 如权利要求29或30所述的数据迁移方法,其特征在于,所述根据所述源SSD对应的访问信息及所述源SSD闪存中的待迁移数据的迁移数据信息生成读指令,包括:根据所述源SSD的访问信息中的所述源SSD的迁移缓存的长度及所述迁移数据信息中的所述待迁移数据的数据量获取本次迁移的数据块的迁移数据信息,根据所获取的数据块的迁移数据信息及所述源SSD对应的访问信息生成所述读指令。
- 如权利要求33所述的数据迁移方法,其特征在于,所述方法还包括:接收所述目标SSD发送的写完成反馈指令,判断是否还有未迁移的待迁移数据,若还有未迁移的待迁移数据,则根据未迁移的待迁移数据的迁移数据信息获取本次迁移的数据块的迁移数据信息,根据所获取的数据块的迁移数据信息生成新的读指令。
- 如权利要求29-34任意一项所述的数据迁移方法,其特征在于,每个读指令包括源地址及目的地址,所述源地址为每个读指令所读取的数据块的地址,所述目的地址为所述源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闪存中的所述读指令对应的数据块读取至所述目标SSD的迁移缓存;写指示模块,用于在接收到所述源SSD发送的读取完成的反馈指令后,发送写指令至所述目标SSD,指示所述目标SSD将自身缓存中的所述数据块写入自身的闪存中。
- 如权利要求37所述的主机,其特征在于,还包括:分配模块,用于在所述主机启动时,读取每个SSD的控制器的寄存器中设置的每个SSD配置的迁移缓存信息,并根据所读取的迁移缓存信息为每个SSD的迁移缓存分配所述访问信息,并在所述主机中记录每个SSD对应的所述访问信息。
- 如权利要求37或38所述的主机,其特征在于,所述读指示模块在根据所述目标SSD的访问信息及所述迁移数据信息生成读指令时,具体用于:根据所述目标SSD的访问信息中所述目标SSD的迁移缓存的长度及所述迁移数据信息中所述待迁移数据的数据量将所述待迁移数据切分成多个数据块,根据所切分的数据块的迁移数据信息及所述目标SSD对应的访问信息生成所述读指令。
- 如权利要求39所述的主机,其特征在于,还包括:判断模块,用于接收所述目标SSD发送的写完成反馈指令,判断所切分的数据块是否迁移完,若未迁移完,则从尚未迁移的数据块中确定一个数据块,并针对所确定的数据块生成新的读指令,所述新的 读指令的目的地址为发送所述写完成反馈指令的目标SSD。
- 如权利要求37或38所述的主机,其特征在于,所述读指示模块在根据所述目标SSD的访问信息及所述迁移数据信息生成读指令时,具体用于根据所述目标SSD的访问信息中的所述目标SSD的迁移缓存的长度及所述迁移数据信息中的所述待迁移数据的数据量获取本次迁移至所述目标SSD的数据块的迁移数据信息,根据所获取的数据块的迁移数据信息及所述目标SSD对应的访问信息生成所述读指令。
- 如权利要求41所述的主机,其特征在于,所述主机还包括:判断模块,用于接收所述目标SSD发送的写完成反馈指令,判断是否还有未迁移的待迁移数据,若还有未迁移的待迁移数据,则根据未迁移的待迁移数据的迁移数据信息获取一个数据块的迁移数据信息,根据所获取的数据块的迁移数据信息生成新的读指令,所述新的读指令的目的地址为发送所述写完成反馈指令的目标SSD。
- 如权利要求37-42任意一项所述的主机,其特征在于,每个读指令包括源地址及目的地址,所述源地址为每个读指令所读取的数据块的逻辑地址,所述目的地址为所述目标SSD的迁移缓存的访问首地址。
- 如权利要求37-43任意一项所述的主机,其特征在于,所述目标SSD为多个目标SSD,在所述读指示模块生成读指令时,针对每个目标SSD,生成一个读指令,并将所生成的多个读指令发送至所述源SSD。
- 一种主机,所述主机连接有多个固态存储设备SSD,且所述多个SSD互相连通,每个SSD上配置有迁移缓存,每个SSD对应一个访问信息,所述主机或所述每个SSD自身之外的其他SSD根据所述访问信息访问每个SSD的迁移缓存,所述主机包括:读指示模块,用于获取源SSD中待迁移数据的迁移数据信息并确定目标SSD,根据所述源SSD对应的访问信息及所述迁移数据信息生成读指令,并将所述读指令发送至所述源SSD,所述读指令用于指示所述源SSD将所述源SSD闪存中的所述读指令对应的数据块读取至所 述源SSD的迁移缓存;写指示模块,用于在接收到所述源SSD发送的读取完成的反馈指令后,发送写指令至所述目标SSD,指示所述目标SSD将所述源SSD的迁移缓存中的所述数据块写入自身的闪存中。
- 如权利要求45所述的主机,其特征在于,所述主机还包括:分配模块,用于在所述主机启动时,读取每个SSD的控制器的寄存器中设置的每个SSD配置的迁移缓存信息,并根据所读取的迁移缓存信息为每个SSD的迁移缓存分配所述访问信息,并在所述主机中记录每个SSD对应的所述访问信息。
- 如权利要求45或46所述的主机,其特征在于,所述读指示模块根据所述源SSD的访问信息及所述迁移数据信息生成读指令时,具体用于:根据所述源SSD的访问信息中所述源SSD的迁移缓存的长度及所述迁移数据信息中所述待迁移数据的数据量将所述待迁移数据切分成多个数据块,根据所切分的数据块的迁移数据信息及所述源SSD对应的访问信息生成所述读指令。
- 如权利要求47所述的主机,其特征在于,还包括:判断模块,用于接收所述目标SSD发送的写完成反馈指令,判断所切分的数据块是否迁移完,若未迁移完,则从尚未迁移的数据块中确定一个数据块,并针对所确定的数据块生成新的读指令。
- 如权利要求45或46所述的主机,其特征在于,所述读指示模块根据所述源SSD的访问信息及所述迁移数据信息生成读指令时,具体用于:根据所述源SSD的访问信息中的所述源SSD的迁移缓存的长度及所述迁移数据信息中的所述待迁移数据的数据量获取本次迁移至所述目标SSD的数据块的迁移数据信息,根据所获取的数据块的迁移数据信息及所述源SSD对应的访问信息生成所述读指令。
- 如权利要求49所述的主机,其特征在于,还包括:判断模块,用于接收所述目标SSD发送的写完成反馈指令,判断是否还有未迁移的待迁移数据,若还有未迁移的待迁移数据,则根据 未迁移的待迁移数据的迁移数据信息获取数据块的迁移数据信息,根据所获取的数据块的迁移数据信息生成新的读指令。
- 如权利要求45-50任意一项所述的主机,其特征在于,每个读指令包括源地址及目的地址,所述源地址为每个读指令所读取的数据块的逻辑地址,所述目的地址为所述源SSD的迁移缓存的访问首地址。
- 一种主机,所述主机连接有多个固态存储设备SSD,且所述多个SSD互相连通,每个SSD上配置有迁移缓存,每个SSD对应一个访问信息,所述主机或所述每个SSD自身之外的其他SSD根据所述访问信息访问每个SSD的迁移缓存,所述主机包括:迁移指示模块,用于发送数据迁移指令至源SSD,所述数据迁移指令携带目标SSD对应的访问信息,以使所述源SSD根据所述目标SSD对应的访问信息及所述源SSD中的待迁移数据生成读指令,执行所述读指令将所述源SSD闪存中的所述读指令对应的数据块读取至所述目标SSD的迁移缓存,并在所述读指令执行完成后,发送写请求至所述目标SSD,指示所述目标SSD将自身缓存中的所述数据块写入自身的闪存中。
- 如权利要求52所述的主机,其特征在于,还包括:分配模块,用于在所述主机启动时,读取每个SSD的控制器的寄存器中设置的每个SSD的迁移缓存信息,并根据所读取的迁移缓存信息为每个SSD的迁移缓存分配所述访问信息,并在所述主机中记录每个SSD对应的所述访问信息。
- 如权利要求51或52所述的主机,其特征在于,所述数据迁移指令携带多个目标SSD对应的访问信息。
- 一种固态存储设备SSD,所述SSD连接至主机,且与连接至所述主机的其他SSD互相连通,连接至所述主机的SSD上配置有迁移缓存,连接至所述主机的每个SSD对应一个访问信息,所述主机或所述每个SSD自身之外的其他SSD根据所述访问信息访问每个SSD的迁移缓存,所述SSD包括:读指示模块,在所述SSD作为源SSD时,用于接收数据迁移指令, 所述数据迁移指令携带目标SSD对应的访问信息,并根据所述目标SSD对应的访问信息及所述源SSD闪存中的待迁移数据的迁移数据信息生成读指令;读取模块,用于执行所述读指令将所述源SSD闪存中的所述读指令对应的数据块读取至所述目标SSD的迁移缓存;写指示模块,在所述读指令执行完成后,发送写请求至所述目标SSD,指示所述目标SSD将自身缓存中的所述数据块写入自身的闪存中,所述写请求中携带所述目标SSD的迁移缓存的访问信息。
- 如权利要求55所述的SSD,其特征在于,还包括:设置模块,用于在所述源SSD的控制器的寄存器中设置所述源SSD的迁移缓存大小,以使所述主机在启动时,读取所述迁移缓存信息,并根据所读取的迁移缓存信息为所述源SSD的迁移缓存分配所述访问信息。
- 如权利要求55或56所述的SSD,其特征在于,所述读指示模块在根据所述目标SSD对应的访问信息及所述源SSD闪存中的待迁移数据的迁移数据信息生成读指令时,具体用于:根据所述目标SSD的访问信息中所述目标SSD的迁移缓存的长度及所述迁移数据信息中所述待迁移数据的数据量将所述待迁移数据切分成多个数据块,根据所切分的数据块的迁移数据信息及所述目标SSD对应的访问信息生成所述读指令。
- 如权利要求57所述的SSD,其特征在于,所述SSD还包括:判断模块,用于接收所述目标SSD发送的写完成反馈指令,判断所切分的数据块是否迁移完,若未迁移完,则从尚未迁移的数据块中确定一个数据块,并针对所确定的数据块生成新的读指令,所述新的读指令的目的地址为发送所述写完成反馈指令的目标SSD。
- 如权利要求55或56所述的SSD,其特征在于,所述读指示模块在根据所述目标SSD对应的访问信息及所述源SSD闪存中的待迁移数据的迁移数据信息生成读指令时,具体用于:根据所述目标SSD的访问信息中的所述目标SSD的迁移缓存的长度及所述迁移数据信息中的所述待迁移数据的数据量获取本次迁移 至所述目标SSD的数据块的迁移数据信息,根据所获取的数据块的迁移数据信息及所述目标SSD对应的访问信息生成所述读指令。
- 如权利要求59所述的SSD,其特征在于,还包括:判断模块,用于接收所述目标SSD发送的写完成反馈指令,判断是否还有未迁移的待迁移数据,若还有未迁移的待迁移数据,则根据未迁移的待迁移数据的迁移数据信息获取本次迁移的数据块的迁移数据信息,根据所获取的数据块的迁移数据信息生成新的读指令,所述新的读指令的目的地址为发送所述写完成反馈指令的目标SSD。
- 如权利要求55-60任意一项所述的SSD,其特征在于,每个读指令包括源地址及目的地址,所述源地址为每个读指令所读取的数据块的地址,所述目的地址为所述目标SSD的迁移缓存的访问首地址。
- 如权利要求55-61任意一项所述的SSD,其特征在于,所述目标SSD为多个目标SSD,在生成读指令时,针对每个目标SSD,生成一个读指令。
- 一种主机,所述主机连接有多个固态存储设备SSD,且所述多个SSD互相连通,每个SSD上配置有迁移缓存,每个SSD对应一个访问信息,所述主机根据所述访问信息访问每个SSD的迁移缓存,所述主机包括:迁移指示模块,用于发送数据迁移指令至源SSD,所述数据迁移指令携带源SSD对应的访问信息及目标SSD信息,以使所述源SSD根据所述源SSD对应的访问信息及所述源SSD中的闪存中待迁移数据生成读指令,执行所述读指令将所述源SSD闪存中的所述读指令对应的数据块读取至所述源SSD的迁移缓存,并在所述读指令执行完成后,发送写请求至所述目标SSD信息对应的目标SSD,指示所述目标SSD将所述源SSD的迁移缓存中的所述数据块写入自身的闪存中。
- 如权利要求63所述的主机,其特征在于,还包括:分配模块,用于在所述主机启动时,读取每个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的迁移缓存的访问信息。
- 如权利要求65所述的SSD,其特征在于,所述SSD还包括:设置模块,用于在所述源SSD的控制器的寄存器中设置所述源SSD的迁移缓存大小,以使所述主机在启动时,读取所述迁移缓存信息,并根据所读取的迁移缓存信息为所述源SSD的迁移缓存分配所述访问信息。
- 如权利要求65或66所述的SSD,其特征在于,所述读指示模块在根据所述源SSD对应的访问信息及所述源SSD闪存中的待迁移数据的迁移数据信息生成读指令时,具体用于:根据所述源SSD的访问信息中所述源SSD的迁移缓存的长度及所述迁移数据信息中所述待迁移数据的数据量将所述待迁移数据切分成多个数据块,根据所切分的数据块的迁移数据信息及所述源SSD对应的访问信息生成所述读指令。
- 如权利要求67所述的SSD,其特征在于,还包括:判断模块,接收所述目标SSD发送的写完成反馈指令,判断所切分的数据块是否迁移完,若未迁移完,则从尚未迁移的数据块中确定 一个数据块,并针对所确定的数据块生成新的读指令。
- 如权利要求65或66所述的SSD,其特征在于,所述读指示模块在根据所述源SSD对应的访问信息及所述源SSD闪存中的待迁移数据的迁移数据信息生成读指令时,具体用于:根据所述源SSD的访问信息中的所述源SSD的迁移缓存的长度及所述迁移数据信息中的所述待迁移数据的数据量获取本次迁移的数据块的迁移数据信息,根据所获取的数据块的迁移数据信息及所述源SSD对应的访问信息生成所述读指令。
- 如权利要求69所述的SSD,其特征在于,还包括:判断模块,用于接收所述目标SSD发送的写完成反馈指令,判断是否还有未迁移的待迁移数据,若还有未迁移的待迁移数据,则根据未迁移的待迁移数据的迁移数据信息获取本次迁移的数据块的迁移数据信息,根据所获取的数据块的迁移数据信息生成新的读指令。
- 如权利要求65-70任意一项所述的SSD,其特征在于,每个读指令包括源地址及目的地址,所述源地址为每个读指令所读取的数据块的地址,所述目的地址为所述源SSD的迁移缓存的访问首地址。
- 一种固态存储设备SSD,所述SSD连接至主机,且与连接至所述主机的其他SSD互相连通,所述SSD包括:读指示模块,用于在所述SSD作为源SSD时接收数据迁移指令,所述数据迁移指令携带目标SSD的控制器的寄存器的访问信息,根据所述目标SSD的控制器的寄存器的访问信息及所述源SSD闪存中的待迁移数据的迁移数据生成读指令;读取模块,用于执行所述读指令将所述源SSD闪存中的所述读指令对应的数据块读取至所述目标SSD的控制器的寄存器中;写指示模块,用于在所述读指令执行完成后,发送写请求至所述目标SSD,指示所述目标SSD将所述目标SSD的控制器的寄存器中的所述数据块写入自身的闪存中,所述写请求携带所述目标SSD的控制器的寄存器的访问信息。
Priority Applications (11)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019528048A JP6848060B2 (ja) | 2016-11-26 | 2016-11-26 | データ移行方法、ホスト、およびソリッドステートディスク |
CN201680003366.1A CN108475229B (zh) | 2016-11-26 | 2016-11-26 | 数据迁移的方法、主机、及固态存储设备 |
EP21155650.1A EP3926454A1 (en) | 2016-11-26 | 2016-11-26 | Data migration method, host, and solid-state storage device |
EP16922464.9A EP3537304B1 (en) | 2016-11-26 | 2016-11-26 | Method for migrating data, host and solid static disk |
PCT/CN2016/107368 WO2018094708A1 (zh) | 2016-11-26 | 2016-11-26 | 数据迁移的方法、主机、及固态存储设备 |
CN202110791259.2A CN113655952A (zh) | 2016-11-26 | 2016-11-26 | 数据迁移的方法、主机、及固态存储设备 |
US16/423,341 US10795599B2 (en) | 2016-11-26 | 2019-05-28 | Data migration method, host and solid state disk |
US16/985,575 US11644994B2 (en) | 2016-11-26 | 2020-08-05 | Data migration method, host, and solid state disk |
JP2021033491A JP2021106002A (ja) | 2016-11-26 | 2021-03-03 | データ移行方法、ホスト、およびソリッドステートディスク |
US18/313,467 US11960749B2 (en) | 2016-11-26 | 2023-05-08 | Data migration method, host, and solid state disk |
US18/635,269 US20240264760A1 (en) | 2016-11-26 | 2024-04-15 | Data Migration Method, Host, and Solid State Disk |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/107368 WO2018094708A1 (zh) | 2016-11-26 | 2016-11-26 | 数据迁移的方法、主机、及固态存储设备 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/423,341 Continuation US10795599B2 (en) | 2016-11-26 | 2019-05-28 | Data migration method, host and solid state disk |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2018094708A1 true WO2018094708A1 (zh) | 2018-05-31 |
Family
ID=62194551
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2016/107368 WO2018094708A1 (zh) | 2016-11-26 | 2016-11-26 | 数据迁移的方法、主机、及固态存储设备 |
Country Status (5)
Country | Link |
---|---|
US (4) | US10795599B2 (zh) |
EP (2) | EP3537304B1 (zh) |
JP (2) | JP6848060B2 (zh) |
CN (2) | CN113655952A (zh) |
WO (1) | WO2018094708A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3939237B1 (en) * | 2019-03-14 | 2024-05-15 | Marvell Asia Pte, Ltd. | Transferring data between solid state drives (ssds) via a connection between the ssds |
US11048447B2 (en) | 2019-10-17 | 2021-06-29 | International Business Machines Corporation | Providing direct data access between accelerators and storage in a computing environment, wherein the direct data access is independent of host CPU and the host CPU transfers object map identifying object of the data |
CN110750521A (zh) * | 2019-10-25 | 2020-02-04 | 北京浪潮数据技术有限公司 | 一种数据迁移方法、装置、设备及计算机可读存储介质 |
US11256448B2 (en) | 2019-12-16 | 2022-02-22 | Samsung Electronics Co., Ltd. | Network storage gateway |
CN112114753B (zh) * | 2020-09-17 | 2022-09-30 | 杭州海康威视系统技术有限公司 | 一种数据写入方法、装置及设备 |
CN115113798B (zh) * | 2021-03-17 | 2024-03-19 | 中国移动通信集团山东有限公司 | 一种应用于分布式存储的数据迁移方法、系统及设备 |
CN115543221B (zh) * | 2022-11-29 | 2023-03-14 | 苏州浪潮智能科技有限公司 | 固态硬盘的数据迁移方法、装置、电子设备及存储介质 |
CN115543225B (zh) * | 2022-11-30 | 2023-03-24 | 苏州浪潮智能科技有限公司 | 数据处理方法、系统、装置、计算机存储介质及电子设备 |
CN117389485B (zh) * | 2023-12-13 | 2024-03-01 | 苏州元脑智能科技有限公司 | 存储性能优化方法、装置、存储系统、电子设备和介质 |
CN117851304B (zh) * | 2024-03-07 | 2024-07-30 | 济南浪潮数据技术有限公司 | 一种硬盘更换方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101446924A (zh) * | 2008-12-16 | 2009-06-03 | 成都市华为赛门铁克科技有限公司 | 一种数据存储及获取方法、系统 |
CN104487952A (zh) * | 2012-05-22 | 2015-04-01 | 网络装置公司 | 用于闪存存储的i/o访问模式专用 |
US20160306552A1 (en) * | 2015-04-20 | 2016-10-20 | Nimble Storage, Inc. | Low write amplification in solid state drive |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5680640A (en) * | 1995-09-01 | 1997-10-21 | Emc Corporation | System for migrating data by selecting a first or second transfer means based on the status of a data element map initialized to a predetermined state |
JP3193880B2 (ja) * | 1996-12-11 | 2001-07-30 | 株式会社日立製作所 | データ移行方法 |
JP3617437B2 (ja) | 2000-09-13 | 2005-02-02 | 日本電気株式会社 | データコピー方法およびデータコピー用プログラムを記録したプログラム記録媒体 |
JP2006018642A (ja) * | 2004-07-02 | 2006-01-19 | Victor Co Of Japan Ltd | Dma転送制御装置 |
JP2006301820A (ja) | 2005-04-19 | 2006-11-02 | Hitachi Ltd | ストレージシステム及びストレージシステムのデータ移行方法 |
KR101671334B1 (ko) | 2010-07-27 | 2016-11-02 | 삼성전자주식회사 | 메모리 장치와 이의 데이터 제어방법 |
US8345489B2 (en) * | 2010-09-02 | 2013-01-01 | International Business Machines Corporation | Caching scheme synergy for extent migration between tiers of a storage system |
US8555019B2 (en) * | 2010-09-08 | 2013-10-08 | International Business Machines Corporation | Using a migration cache to cache tracks during migration |
JP5595530B2 (ja) * | 2010-10-14 | 2014-09-24 | 株式会社日立製作所 | データ移行システム及びデータ移行方法 |
WO2013046254A1 (en) * | 2011-09-27 | 2013-04-04 | Hitachi, Ltd. | Management server and data migration method |
KR20130079706A (ko) * | 2012-01-03 | 2013-07-11 | 삼성전자주식회사 | 휘발성 메모리를 포함하는 저장 장치의 구동 방법 |
CN102929792B (zh) * | 2012-11-12 | 2016-03-30 | 华为技术有限公司 | 数据移动方法和系统、存储设备和主机 |
US20200387575A1 (en) * | 2013-02-15 | 2020-12-10 | Emc Corporation | Migrating virtual machines using asynchronous transfer and synchronous acceleration |
JP6191022B2 (ja) | 2013-02-20 | 2017-09-06 | パナソニックIpマネジメント株式会社 | アクセス装置、情報記録装置およびアクセスシステム |
JP6005566B2 (ja) * | 2013-03-18 | 2016-10-12 | 株式会社東芝 | 情報処理システム、制御プログラムおよび情報処理装置 |
US9055119B2 (en) * | 2013-03-26 | 2015-06-09 | Vmware, Inc. | Method and system for VM-granular SSD/FLASH cache live migration |
HUE035390T2 (en) | 2013-09-24 | 2018-05-02 | Huawei Tech Co Ltd | Data migration process, data migration device and storage device |
KR20150037364A (ko) * | 2013-09-30 | 2015-04-08 | 삼성전자주식회사 | 캐시 마이그레이션 관리 방법 및 이를 적용한 호스트 시스템 |
US20150095551A1 (en) * | 2013-09-30 | 2015-04-02 | Micron Technology, Inc. | Volatile memory architecutre in non-volatile memory devices and related controllers |
US9798661B2 (en) * | 2013-10-15 | 2017-10-24 | Hitachi, Ltd. | Storage system and cache control method |
CN103946828B (zh) | 2013-10-29 | 2017-02-22 | 华为技术有限公司 | 数据处理系统和数据处理的方法 |
WO2015089798A1 (zh) | 2013-12-19 | 2015-06-25 | 华为技术有限公司 | 一种数据迁移方法和装置 |
WO2015125221A1 (ja) * | 2014-02-19 | 2015-08-27 | 株式会社日立製作所 | ストレージシステム及び移行方法 |
US10776033B2 (en) * | 2014-02-24 | 2020-09-15 | Hewlett Packard Enterprise Development Lp | Repurposable buffers for target port processing of a data transfer |
CN105446888B (zh) * | 2014-05-30 | 2018-10-12 | 华为技术有限公司 | 存储设备间移动数据的方法、控制器和存储系统 |
US9547592B2 (en) * | 2014-07-29 | 2017-01-17 | International Business Machines Corporation | Cache mobility |
JP6517549B2 (ja) * | 2015-03-13 | 2019-05-22 | 東芝メモリ株式会社 | メモリコントローラ、記憶装置、データ転送システム、データ転送方法、及びデータ転送プログラム |
CN106326030B (zh) * | 2015-06-26 | 2020-03-20 | 伊姆西Ip控股有限责任公司 | 用于存储系统中的软切换的方法和装置 |
-
2016
- 2016-11-26 EP EP16922464.9A patent/EP3537304B1/en active Active
- 2016-11-26 CN CN202110791259.2A patent/CN113655952A/zh active Pending
- 2016-11-26 EP EP21155650.1A patent/EP3926454A1/en active Pending
- 2016-11-26 WO PCT/CN2016/107368 patent/WO2018094708A1/zh unknown
- 2016-11-26 JP JP2019528048A patent/JP6848060B2/ja active Active
- 2016-11-26 CN CN201680003366.1A patent/CN108475229B/zh active Active
-
2019
- 2019-05-28 US US16/423,341 patent/US10795599B2/en active Active
-
2020
- 2020-08-05 US US16/985,575 patent/US11644994B2/en active Active
-
2021
- 2021-03-03 JP JP2021033491A patent/JP2021106002A/ja active Pending
-
2023
- 2023-05-08 US US18/313,467 patent/US11960749B2/en active Active
-
2024
- 2024-04-15 US US18/635,269 patent/US20240264760A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101446924A (zh) * | 2008-12-16 | 2009-06-03 | 成都市华为赛门铁克科技有限公司 | 一种数据存储及获取方法、系统 |
CN104487952A (zh) * | 2012-05-22 | 2015-04-01 | 网络装置公司 | 用于闪存存储的i/o访问模式专用 |
US20160306552A1 (en) * | 2015-04-20 | 2016-10-20 | Nimble Storage, Inc. | Low write amplification in solid state drive |
Also Published As
Publication number | Publication date |
---|---|
JP6848060B2 (ja) | 2021-03-24 |
EP3537304A4 (en) | 2019-11-20 |
CN108475229A (zh) | 2018-08-31 |
US11960749B2 (en) | 2024-04-16 |
EP3537304B1 (en) | 2021-03-17 |
US10795599B2 (en) | 2020-10-06 |
US20230350595A1 (en) | 2023-11-02 |
US11644994B2 (en) | 2023-05-09 |
JP2021106002A (ja) | 2021-07-26 |
CN113655952A (zh) | 2021-11-16 |
US20240264760A1 (en) | 2024-08-08 |
EP3926454A1 (en) | 2021-12-22 |
CN108475229B (zh) | 2021-07-16 |
US20200363977A1 (en) | 2020-11-19 |
JP2020501249A (ja) | 2020-01-16 |
EP3537304A1 (en) | 2019-09-11 |
US20190278507A1 (en) | 2019-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2018094708A1 (zh) | 数据迁移的方法、主机、及固态存储设备 | |
EP3663928B1 (en) | Data migration method and system and intelligent network card | |
US10296255B1 (en) | Data migration techniques | |
TWI488044B (zh) | 減少存儲系統請求的響應延遲 | |
JP6569477B2 (ja) | ストレージ制御装置、および制御プログラム | |
WO2017092002A1 (zh) | 应用于计算机系统的数据迁移方法和装置、计算机系统 | |
JP2015228235A (ja) | 格納デバイスの仮想化 | |
US20190213149A1 (en) | Module based data transfer | |
JP2017041076A (ja) | ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム | |
WO2014166409A1 (en) | Migrating data across storages with dissimilar allocation sizes | |
US8713257B2 (en) | Method and system for shared high speed cache in SAS switches | |
WO2022073399A1 (zh) | 存储节点、存储设备及网络芯片 | |
JP7495191B2 (ja) | I/o性能を最適化するためのメモリ・コピーおよびメモリ・マッピング間の動的な切り替え | |
CN112486406B (zh) | 动态调整多个存储器拷贝和存储器映射窗口以优化i/o性能 | |
US20160357479A1 (en) | Storage control apparatus | |
US10705905B2 (en) | Software-assisted fine-grained data protection for non-volatile memory storage devices | |
US11496563B2 (en) | System and method for migrating volumes between storage appliances | |
KR20140015857A (ko) | 컴퓨팅 장치 및 컴퓨팅 장치가 가상 장치를 제어하는 가상 장치 제어 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 16922464 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2019528048 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
ENP | Entry into the national phase |
Ref document number: 2016922464 Country of ref document: EP Effective date: 20190603 |