Storage drive

The storage drive with a controller managing logical address spaces and providing usage information addresses the increased processing load during data migration, ensuring efficient data migration and maintained garbage collection efficiency.

JP2025141383APending Publication Date: 2025-09-29KIOXIA CORP
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
JP2024041284
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-03-15
Publication Date
2025-09-29

Smart Images

  • Figure 2025141383000001_ABST
    Figure 2025141383000001_ABST
Patent Text Reader

Abstract

To achieve a storage drive capable of reducing a processing amount in a host.SOLUTION: According to an embodiment, a storage drive includes a storage medium and a controller. The controller receives a read request specifying a first logical address range in a logical address space from a host. The controller transfers first information indicating whether or not each of a plurality of logical addresses included in the first logical address range is used by the host to a host memory included in the host. The controller reads one or more valid data stored in one or more logical addresses used by the host among the plurality of logical addresses from the storage medium. The controller transfers any of a plurality of data each corresponding to the plurality of logical addresses including the one or more valid data, or the one or more valid data, to the host memory.SELECTED DRAWING: Figure 9
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] SUMMARY OF THE INVENTION An embodiment of the present invention relates to a storage drive that controls a storage medium. [Background technology]

[0002] In recent years, storage drives equipped with storage media have become widespread. One such storage drive is a solid-state drive (SSD) equipped with NAND flash memory. Storage drives are used as the main storage of various computing devices.

[0003] A storage drive may provide a host with multiple logical address spaces. One example of a logical address space is a logical storage area called a namespace. The multiple logical addresses included in each namespace may include logical addresses that store valid data and logical addresses that do not store valid data. In other words, logical addresses that store valid data are logical addresses that are being used by the host. Also, logical addresses that do not store valid data are logical addresses that are not being used by the host.

[0004] A host may perform a process (data migration process) to migrate data stored in a namespace of a storage drive to another namespace. The efficiency of the data migration process can be improved by, for example, using information (usage information) that indicates whether valid data is stored in each logical address of the migration source namespace (i.e., whether each logical address is being used by the host).

[0005] However, if the host performs data migration processing while taking into account usage information, there is a possibility that the processing load on the host will increase. [Prior art documents] [Patent documents]

[0006] [Patent Document 1] Patent Publication No. 2021-6984 Summary of the Invention [Problem to be solved by the invention]

[0007] An object of one embodiment of the present invention is to provide a storage drive that can reduce the amount of processing in a host. [Means for solving the problem]

[0008] According to an embodiment, a storage drive connectable to a host includes a storage medium and a controller. The controller manages a logical address space. The controller receives a read request from the host specifying a first logical address range within the logical address space. The controller transfers first information indicating whether each of a plurality of logical addresses included in the first logical address range is being used by the host to a host memory included in the host. The controller reads one or more valid data items stored in one or more logical addresses being used by the host from the storage medium. The controller transfers either a plurality of data items corresponding to the plurality of logical addresses, including the one or more valid data items, or the one or more valid data items to the host memory. [Brief explanation of the drawings]

[0009] [Figure 1] FIG. 10 is a diagram showing data migration between namespaces in a storage system including a storage drive according to a comparative example. [Figure 2] FIG. 10 is a diagram showing data migration between namespaces without using information on whether a logical address is in use, in a storage system including a storage drive according to a comparative example. [Figure 3]FIG. 10 is a diagram showing data migration between namespaces using information on whether a logical address is in use, managed by a host, in a storage system including a storage drive according to a comparative example. [Figure 4] FIG. 10 is a diagram showing data migration between namespaces using information on whether logical addresses are in use, managed by a storage drive, in a storage system including a storage drive according to a comparative example. [Figure 5] FIG. 1 is a block diagram showing an example of the configuration of a storage system including a storage drive according to a first embodiment. [Figure 6] 4A and 4B are diagrams showing an example of a data read operation with usage information in a storage system including a storage drive according to the first embodiment. [Figure 7] FIG. 10 is a block diagram showing an example of the configuration of a storage system including a storage drive according to a second embodiment. [Figure 8] FIG. 11 is a diagram showing an example of a data write operation with usage information in a storage system including a storage drive according to the second embodiment. [Figure 9] FIG. 11 is a diagram showing an example of data migration between namespaces in a storage system according to the third embodiment. [Figure 10] FIG. 13 is a diagram showing an example of a data read operation with usage information in a storage system including a storage drive according to the fourth embodiment. [Figure 11] FIG. 13 is a diagram showing an example of a data write operation with usage information in a storage system including a storage drive according to the fifth embodiment. [Figure 12] FIG. 13 is a block diagram showing an example of the configuration of a storage system including a storage drive according to the ninth embodiment. [Figure 13] FIG. 23 is a diagram showing an example of a data read operation with usage information in a storage system including a storage drive according to the ninth embodiment. [Figure 14] FIG. 23 is a block diagram showing an example of the configuration of a storage system including a storage drive according to a tenth embodiment. [Figure 15]FIG. 23 is a diagram showing an example of a data write operation with usage information in a storage system including a storage drive according to the tenth embodiment. [Figure 16] FIG. 23 is a diagram showing an example of data migration between namespaces in a storage system according to the eleventh embodiment. DETAILED DESCRIPTION OF THE INVENTION

[0010] Hereinafter, embodiments will be described with reference to the drawings.

[0011] (Comparative Example) First, with reference to Figures 1 to 4, data migration between namespaces in a storage system including a storage drive according to a comparative example will be described. The storage drive is, for example, an SSD. A namespace is a logical address space provided by a storage drive to a host. The logical address space includes multiple logical addresses. A logical address is an address used by a host to address a storage area of ​​a storage drive. A logical address is, for example, a logical block address (LBA). The following mainly illustrates a case where the logical address is an LBA.

[0012] There are use cases for storage drives where you want to read a set of data in one namespace on one storage drive and migrate it to another namespace on another (or the same) storage drive, or you want to store the read set of data on the host so that you can later migrate it to another namespace, or you want to use the set of data stored on the host to write data to another namespace.

[0013] Examples of such use cases include, but are not limited to, backing up data stored on storage drives, migrating virtual machines (VMs) using storage drives, and creating snapshots.

[0014] Below, we will provide an overview of the operation of such a use case of data migration between namespaces, using VM migration as an example.

[0015] 1 shows data migration between namespaces in a storage system including a storage drive according to a comparative example. Here, it is assumed that data is migrated between namespaces in order to migrate a first VM 29C-1 running on a first host 2C-1 to a second host 2C-2 and operate it as a second VM 29C-2.

[0016] The first host 2C-1 is communicatively connected to each of the first storage drive 3C-1 and the second host 2C-2. The first host 2C-1 includes a first memory 22C-1. The first VM 29C-1 uses a first namespace 51C-1 provided by the first storage drive 3C-1. The first namespace 51C-1 is the source namespace of data migration.

[0017] The second host 2C-2 is communicatively connected to both the second storage drive 3C-2 and the first host 2C-1. The second host 2C-2 includes a second memory 22C-2. The second VM 29C-2 uses a second namespace 51C-2 provided by the second storage drive 3C-2. The second namespace 51C-2 is a namespace to which data is migrated.

[0018] Data migration from the first namespace 51C-1 to the second namespace 51C-2 is performed by the following operations (1) to (3). (1) A series of data stored in the first namespace 51C-1 of the first storage drive 3C-1 is read into the first memory 22C-1 of the first host 2C-1. (2) The data read into the first memory 22C-1 is transferred to the second memory 22C-2 of the second host 2C-2. (3) The data transferred to the second memory 22C-2 is written to the second namespace 51C-2 of the second storage drive 3C-2.

[0019] Due to constraints such as the capacity of the first memory 22C-1 and the second memory 22C-2, it may not be possible to read and migrate all of the data in the first namespace 51C-1 at once. In this case, a possible method is to divide the data into several parts and repeatedly read and write it, thereby migrating all of the data in the first namespace 51C-1 to the second namespace 51C-2. Hereinafter, the data obtained from the storage drive when the host requests data to be read from the namespace will also be referred to as LBA data.

[0020] In FIG. 1, for example, LBA data 421C corresponding to LBA range 551C in first namespace 51C-1 is read to first memory 22C-1 ((1) in FIG. 1). The read LBA data 421C is transferred from first memory 22C-1 to second memory 22C-2 ((2) in FIG. 1). Then, LBA data 421C transferred to second memory 22C-2 is written to LBA range 552C in second namespace 51C-2 ((3) in FIG. 1).

[0021] By repeating this operation, all of the data in the first namespace 51C-1 is migrated to the second namespace 51C-2.

[0022] Here, three specific means for migrating data between namespaces in the comparative example will be listed. Method 1: Data migration without using information indicating whether each LBA is in use by the host (usage information) - Method 2: Data migration using usage information managed by the host -Third method: Data migration using usage information managed by the storage drive Each of these means will be explained in turn below.

[0023] (Method 1: Data migration without using usage information) The first method is the simplest of the three methods for migrating data between namespaces. In this method, when reading and writing a series of data in a data migration between namespaces, LBA data in a specified LBA range is read from a namespace without using usage information, and then the LBA data is written to a specified LBA range in another namespace. The LBA range is specified, for example, by the starting LBA and the number of LBAs.

[0024] Here, the use / non-use information will be explained.

[0025] The LBA space (e.g., namespace) provided by a storage drive may include LBAs to which data has not yet been written and LBAs to which written data has been deleted. An LBA in which no valid data is stored, either because data has not yet been written or because written data has been deleted, is an LBA not in use by the host (hereinafter also referred to as a Deallocated LBA). In contrast, an LBA in which valid data is stored is an LBA in use by the host (hereinafter also referred to as an Allocated LBA). The status of whether an LBA is in use by the host is also referred to as the LBA's usage status (Allocation status). Data stored in an LBA in use by the host is also referred to as valid data.

[0026] The Flash Translation Layer (FTL) provided in a storage drive is a functional layer responsible for converting between logical addresses (e.g., LBA) and physical addresses (e.g., PBA) of the storage media within the storage drive. The FTL performs garbage collection (GC) to ensure the write control characteristics of the storage media within the storage drive. GC is a process that copies valid data from several physical blocks to other physical blocks. After GC copies valid data to other blocks, physical blocks that no longer store valid data are reclaimed as physical blocks (free blocks) to which new data can be written.

[0027] It is known that GC efficiency decreases as the percentage of valid data in the LBA space increases. For this reason, hosts proactively set unused LBAs to an unused state (deallocate). This allows hosts to increase FTL GC efficiency, improve the storage drive's write amplification factor (WAF), increase throughput, and extend product life.

[0028] During a data read operation on the storage drive, the deallocated LBA behaves as if it were an allocated LBA with a predetermined value, such as "FF" or "00," stored therein (depending on the storage drive settings). In other words, when a host requests the storage drive to read data from a deallocated LBA, the storage drive returns data with the predetermined value to the host as the deallocated LBA data. Therefore, regardless of the use status of each LBA, when the host reads a series of LBA data from the source namespace, the read LBA data may contain a mixture of valid data corresponding to the allocated LBA and data with the predetermined value corresponding to the deallocated LBA. Then, when the read LBA data is written to the destination namespace, the data corresponding to the deallocated LBA in the source namespace is written as valid data corresponding to the allocated LBA in the destination namespace.

[0029] 2 shows a data migration (first method) between namespaces that does not use usage information in a storage system including a storage drive according to a comparative example. In FIG. 2, each LBA included in the first namespace 51C-1 and the second namespace 51C-2 is indicated by different hatching to indicate whether it is a Deallocated LBA or an Allocated LBA.

[0030] In the first method, when the first host 2C-1 reads data from the first namespace 51C-1 of the first storage drive 3C-1, the use status information is not used. Therefore, all of the series of LBA data read from the first namespace 51C-1 is read as data corresponding to Allocated LBAs. Then, when the read LBA data is written to the second namespace 51C-2 of the second storage drive 3C-2, the second storage drive 3C-2 treats all of the LBAs to which that LBA data has been written as Allocated LBAs.

[0031] 2, for example, the data corresponding to LBA range 553C in first namespace 51C-1 is a mixture of data corresponding to Deallocated LBAs and data (valid data) corresponding to Allocated LBAs. However, all of the data corresponding to LBA range 553C in first namespace 51C-1 is read to first memory 22C-1 as LBA data 422C corresponding to Allocated LBAs ((1) in FIG. 2). The read LBA data 422C is transferred from first memory 22C-1 to second memory 22C-2 ((2) in FIG. 2). Then, all of the LBA data 422C transferred to second memory 22C-2 is written to LBA range 554C in second namespace 51C-2 as data corresponding to Allocated LBAs ((3) in FIG. 2).

[0032] Therefore, in the data migration by the first means, the occupancy rate of valid data in the migration destination namespace (here, the second namespace 51C-2) becomes high. Therefore, in the data migration by the first means, the GC efficiency in the migration destination namespace decreases.

[0033] (Second method: Data migration using usage information managed by the host) To avoid a decrease in GC efficiency in the destination namespace, it is conceivable to migrate the use status of each LBA included in the source namespace to the destination namespace together with the data.

[0034] To achieve this, in the second method, the host uses usage information managed by the host. Specifically, the host uses the usage information to read only valid data corresponding to the allocated LBA from the source namespace and copies the read valid data to the destination namespace. In this case, the deallocated LBA in the source namespace remains as deallocated LBA in the destination namespace. Therefore, data migration using the second method does not reduce GC efficiency in the destination namespace.

[0035] 3 shows a data migration (second method) between namespaces using usage information managed by a host in a storage system including a storage drive according to a comparative example. A first host 2C-1 manages first usage information 41C-1. The first usage information 41C-1 includes information for identifying whether each LBA in a first namespace 51C-1 is being used by the first host 2C-1.

[0036] In the second method, the first host 2C-1 uses the first usage information 41C-1 when reading data from the first namespace 51C-1. When reading data from the first namespace 51C-1, the first host 2C-1 uses the first usage information 41C-1 to read only valid data corresponding to the Allocated LBA. When the read valid data is written to the second namespace 51C-2 of the second storage drive 3C-2, the second storage drive 3C-2 treats the LBA to which valid data has been written as an Allocated LBA and treats the LBA to which valid data has not been written as a Deallocated LBA. Therefore, the second storage drive 3C-2 can treat only the LBAs that the first host 2C-1 managed as Allocated LBAs in the first usage information 41C-1 as Allocated LBAs.

[0037] In FIG. 3, for example, the first host 2C-1 uses the first usage information 41C-1 to identify an LBA range 555C in the first namespace 51C-1 that includes only Allocated LBAs, and reads the valid data 423C stored in the LBA range 555C to the first memory 22C-1 ((1) in FIG. 3). The read valid data 423C is transferred from the first memory 22C-1 to the second memory 22C-2 ((2) in FIG. 3). The valid data 423C transferred to the second memory 22C-2 is then written to an LBA range 556C in the second namespace 51C-2 as data corresponding to the Allocated LBA ((3) in FIG. 3). The second storage drive 3C-2 treats only the LBAs to which valid data is written (here, the LBA range 556C) as Allocated LBAs, and therefore GC efficiency in the second namespace 51C-2 does not decrease.

[0038] However, in the second method, the first host 2C-1 uses the first usage information 41C-1 managed by the first host 2C-1 to check the usage status of each LBA in the first namespace 51C-1 and determines whether to read and write data from and to each LBA, which causes overhead.

[0039] The process of checking the use status of each LBA in a namespace using use status information managed by the host is often complicated. For example, when LBA use status is managed at a file system level, the LBA space managed by the file system does not necessarily match the LBA space managed by the storage drive. This can occur, for example, when address space conversion is performed by a device mapper below the file system. Furthermore, when the operating system (OS) that manages use status information runs on a VM, the virtual machine monitor (VMM) that hosts it may perform LBA space conversion. It cannot be denied that there may be other modules that manipulate the LBA status. These circumstances make the process of checking the use status of each LBA in a namespace using use status information managed by the host complicated.

[0040] (Third method: Data migration using usage information managed by the storage drive) To avoid the overhead associated with using host-managed usage information to check the usage status of each LBA in the namespace, it is possible to have the storage drive provide usage status information for the LBA space.

[0041] 4 shows a data migration (third means) between namespaces in a storage system including a storage drive according to a comparative example, using usage information managed by the storage drive. The first storage drive 3C-1 has the function of managing second usage information 41C-2 and providing it to the first host 2C-1. The second usage information 41C-2 includes information indicating whether each LBA in the first namespace 51C-1 is being used by the first host 2C-1.

[0042] In the third method, the second usage information 41C-2 is used when the first host 2C-1 reads data from the first namespace 51C-1. When reading data from the first namespace 51C-1, the first host 2C-1 uses the second usage information 41C-2 to read only valid data corresponding to the Allocated LBA. When the read valid data is written to the second namespace 51C-2 of the second storage drive 3C-2, the second storage drive 3C-2 treats the LBA to which valid data has been written as an Allocated LBA and treats the LBA to which valid data has not been written as a Deallocated LBA. Therefore, the second storage drive 3C-2 can treat only the LBAs that were managed as Allocated LBAs in the second usage information 41C-2 as Allocated LBAs.

[0043] In FIG. 4, the first host 2C-1 acquires the second usage status information 41C-2 managed by the first storage drive 3C-1 from the first storage drive 3C-1 ((1) in FIG. 4). The first host 2C-1, for example, uses the second usage status information 41C-2 to identify an LBA range 555C in the first namespace 51C-1 that includes only Allocated LBAs, and reads the valid data 423C stored in the LBA range 555C to the first memory 22C-1 ((2) in FIG. 4). The read valid data 423C is transferred from the first memory 22C-1 to the second memory 22C-2 ((3) in FIG. 4). The valid data 423C transferred to the second memory 22C-2 is then written to the LBA range 556C in the second namespace 51C-2 as data corresponding to the Allocated LBA ((4) in FIG. 4). The second storage drive 3C-2 treats only the LBAs in which valid data has been written (here, LBA range 556C) as Allocated LBAs, so GC efficiency in the second namespace 51C-2 does not decrease.

[0044] In the third method, the host can obtain usage information from the storage drive. The host uses the obtained usage information to read valid data corresponding to the allocated LBA from the source namespace and writes the read valid data to the destination namespace. This reduces processing overhead compared to the second method.

[0045] However, even in the third method, the host needs to use the usage information to determine which LBA data to migrate. The host also issues a large number of read commands to the storage drive so that only valid data corresponding to the allocated LBA is read from the source namespace. The host also issues a large number of write commands to the storage drive so that only valid data corresponding to the allocated LBA is written to the destination namespace.

[0046] Therefore, compared to the first method, the third method adds a determination process using use / non-use information, and the number of read commands and write commands issued increases depending on the use / non-use status of each LBA in the LBA space, which complicates processing in the host and generates overhead.

[0047] In comparison with the above comparative examples, the storage drive according to the embodiment can reduce the amount of processing in the host. Storage systems including storage drives according to several embodiments will be described below.

[0048] (First embodiment) 5 is a block diagram showing an example of the configuration of a storage system 1 including a storage drive 3 according to the first embodiment. The storage system 1 includes a host device 2 and a storage drive 3.

[0049] The host device 2 may be a storage server that stores a large amount of diverse data in the storage drive 3, or may be a personal computer. Hereinafter, the host device 2 will also be referred to as the host 2.

[0050] The storage drive 3 is a storage device configured to write data to a storage medium 31 and read data from the storage medium 31. The storage drive 3 is realized as, for example, a solid-state drive (SSD) or a hard disk drive (HDD). The storage drive 3 is also referred to as a memory system or a storage device.

[0051] The storage drive 3 can be used as storage for the host 2. The storage drive 3 can be connected to the host 2 via a cable or a network. The storage drive 3 may also be built into the host 2.

[0052] The interface for connecting the host 2 and the storage drive 3 is, for example, PCI Express. TM (PCIe TM ), Ethernet TM , Fiber channel, NVM Express TM (NVMe TM ), UFS, M-PHY, USB, etc.

[0053] An example configuration of the host 2 and storage drive 3 will be described below.

[0054] The host 2 includes, for example, a central processing unit (CPU) 21 and a host memory 22. The CPU 21 and the host memory 22 may be connected via a bus.

[0055] The CPU 21 is, for example, at least one processor. The CPU 21 controls the operations of various components within the host 2. The CPU 21 issues various commands (for example, input / output (I / O) commands, various control commands) to the storage drive 3. The I / O commands include, for example, read commands and write commands. The control commands include, for example, trim commands (unmap commands). The host 2 may be provided with a control circuit (interface circuit) that controls communication (data transfer) between the host 2 and the storage drive 3.

[0056] The host memory 22 is, for example, a dynamic random access memory (DRAM). The storage areas of the host memory 22 are allocated as, for example, a first buffer 221 and a second buffer 222. The first buffer 221 is a buffer area for use status information 41. The second buffer 222 is a buffer area for LBA data 42. The host memory 22 is capable of direct memory access (DMA) by, for example, the controller 32 of the storage drive 3.

[0057] The storage drive 3 includes, for example, a storage medium 31 and a controller 32.

[0058] The storage medium 31 is a non-volatile storage medium. The storage medium 31 is, for example, a non-volatile memory, a magnetic disk, or an optical disk. The non-volatile memory is, for example, a NAND flash memory. User data is written to the storage medium 31 in response to a request from the host 2, for example.

[0059] The controller 32 is a control circuit that controls the operations of various components within the storage drive 3. The controller 32 is realized by a circuit such as a System-on-a-chip (SoC). The controller 32 is capable of DMA to the host memory 22. Specifically, the controller 32 is capable of transferring data from the host memory 22 to the storage drive 3 without going through the CPU 21 of the host 2. The controller 32 is also capable of transferring data from the storage drive 3 to the host memory 22 without going through the CPU 21 of the host 2.

[0060] The controller 32 may have built-in memory (e.g., static random access memory (SRAM)). Alternatively, memory (e.g., DRAM) may be connected to the controller 32. The storage area of ​​such memory may be allocated, for example, as a storage area for usage information managed by the storage drive 3 and as a storage area for various data transferred from the host 2 (host memory 22).

[0061] The controller 32 functions as a media controller configured to control the storage medium 31 .

[0062] The controller 32 manages one or more LBA spaces provided to the host 2. The LBA space is, for example, a namespace. The controller 32 may function as an FTL configured to manage the storage medium 31. The management performed by this FTL includes management of mapping information (for example, a logical-physical address translation table) indicating the correspondence between each LBA included in the LBA space and each PBA of the storage medium 31, and GC.

[0063] The controller 32 includes a circuit for receiving various commands and data from the host 2. The controller 32 also includes a circuit for transmitting responses to commands and data to the host 2.

[0064] The controller 32 includes, for example, a circuit that electrically connects the controller 32 and the storage medium 31. This circuit complies with interface standards such as Toggle DDR and Open NAND Flash Interface (ONFI), for example.

[0065] The functions of each unit in the controller 32 may be realized by dedicated hardware in the controller 32, or may be realized by the CPU in the controller 32 executing firmware (FW).

[0066] The controller 32 functions as, for example, a command reception and response unit 320, a data read and transfer unit 321, and an information management and transfer unit 322. The controller 32 functions as each of these units by, for example, executing the FW.

[0067] The command reception and response unit 320 receives commands issued by the host 2. The command reception and response unit 320 causes the data read and transfer unit 321 and the information management and transfer unit 322 to perform processing in accordance with the received command. The command reception and response unit 320 also returns a response to the host 2 indicating the completion of processing in accordance with the received command.

[0068] When the command reception and response unit 320 receives a read command from the host 2, the data read and transfer unit 321 transfers data (LBA data) in the LBA range specified by the read command to the host memory 22. Specifically, if the specified LBA range includes an Allocated LBA, the data read and transfer unit 321 reads the data stored in the Allocated LBA (i.e., valid data) from the storage medium 31. If the specified LBA range does not include any Allocated LBAs, the data read and transfer unit 321 does not read data (valid data) from the storage medium 31. If the specified LBA range includes a Deallocated LBA, the data read and transfer unit 321 generates data of a predetermined value, such as "FF" or "00", as the data for the Deallocated LBA. If the specified LBA range includes a Deallocated LBA, the data read and transfer unit 321 may read specific data from the storage medium 31. The data of the deallocated LBA can be obtained by a method according to the specifications of the storage drive 3, and is not limited to the above method.

[0069] The information management and transfer unit 322 manages usage information corresponding to an LBA space (e.g., a namespace). The usage information indicates the usage status of each LBA in the LBA space provided by the storage drive 3 to the host 2. The usage information is, for example, bitmap information in which multiple bits corresponding to multiple LBAs included in the LBA space are arranged in order. For example, if an LBA is an allocated LBA, the bit corresponding to that LBA is set to "1." Also, if an LBA is a deallocated LBA, the bit corresponding to that LBA is set to "0." The usage information is not limited to a bitmap format. For example, it may be in a format in which a bit indicating whether the first LBA is an allocated LBA is listed first, followed by bits indicating the length of consecutive LBAs with the same usage status as the previous LBA. The format of the usage information is not limited to the format described above, and any format can be used as long as it is consistent across the system. The information management and transfer unit 322 may dynamically generate the usage status information using a logical-physical address conversion table in response to a request for usage status information from the host 2. The logical-physical address conversion table is data indicating the correspondence between each LBA and each PBA.

[0070] In response to the command reception and response unit 320 receiving a specific read command from the host 2, the information management and transfer unit 322 transfers the use status information of the LBA range specified by the read command to the host memory 22. The specific read command is, for example, a data read command with use status information (hereinafter also referred to as a first read command).

[0071] 6 shows an example of a data read operation with use status information in a storage system 1 including a storage drive 3 according to the first embodiment. The storage drive 3 of the first embodiment has a first data read function with use status information. The first data read function with use status information is a function that, in response to receiving a first read command 61 from the host 2, provides the host 2 with data (LBA data) corresponding to the LBA range specified in the first read command 61, as well as use status information for the specified LBA range.

[0072] Here, an example is shown in which the host 2 is using a namespace 51-1 in the storage drive 3. The information management and transfer unit 322 of the storage drive 3 manages usage status information 52-1 that indicates the usage status of each LBA in the namespace 51-1. In Figure 6, the LBA data stored in the LBA space of the namespace 51-1 is shown with hatching indicating the usage status of each LBA in the namespace 51-1 (i.e., deallocated LBA or allocated LBA). This usage status corresponds to the usage status information 52-1.

[0073] 6 illustrates an example in which an LBA range 551 is specified by a first read command 61. In this case, use status information 41 corresponding to the LBA range 551 is stored in a first buffer 221 in the host memory 22. Furthermore, LBA data 42 corresponding to the LBA range 551 is stored in a second buffer 222 in the host memory 22.

[0074] The first read command 61 is a command requesting the reading of LBA data 42 corresponding to a specific LBA range and the provision of usage status information 41 for that specific LBA range. The first read command 61 specifies (a) a start LBA and LBA size (number of LBAs), and (b) a first address indicating a first buffer 221 in the host memory 22 where the usage status information 41 is stored, and a second address indicating a second buffer 222 in the host memory 22 where the LBA data 42 is stored. Note that information corresponding to the specific LBA range in the usage status information 52-1 managed by the storage drive 3 is stored as usage status information 41 in the host memory 22.

[0075] The first read command 61 specifies a start LBA and an LBA size, thereby specifying an LBA range (hereinafter also referred to as a first LBA range) 551 corresponding to the LBA data to be obtained.

[0076] The first buffer 221 has a size that allows it to store the usage information 41 provided from the storage drive 3 in response to the first read command 61. The first address is, for example, an address indicating the beginning of the first buffer 221.

[0077] The second buffer 222 has a size capable of storing the LBA data 42 provided from the storage drive 3 in response to the first read command 61. More specifically, the second buffer 222 includes a plurality of storage areas corresponding to the plurality of LBAs included in the first LBA range 551. Each of these plurality of storage areas has a size capable of storing data (LBA data) logically stored in one LBA. When a plurality of pieces of data are respectively obtained from the plurality of LBAs in the first LBA range 551 in response to the first read command 61, the obtained plurality of pieces of data are stored in a plurality of storage areas in the second buffer 222 in LBA order. Furthermore, the second address is, for example, an address indicating the beginning of the second buffer 222.

[0078] In the controller 32 of the storage drive 3, the command reception and response unit 320 receives a first read command 61 from the host 2. In response to the command reception and response unit 320 receiving the first read command 61, the following operation is performed in the storage drive 3.

[0079] (1) The information management and transfer unit 322 transfers the usage status information 41 corresponding to the LBA range (first LBA range) 551 specified in the first read command 61 from the usage status information 52-1 it manages to the first buffer 221 in the host memory 22 based on the first address.

[0080] (2) The data read / transfer unit 321 acquires the LBA data 42 corresponding to the first LBA range 551, and transfers the acquired LBA data 42 to the second buffer 222 in the host memory 22 based on the second address.

[0081] The procedure (2) will be described in detail. The data read / transfer unit 321 acquires a plurality of pieces of data corresponding to the plurality of LBAs included in the first LBA range 551. The data read / transfer unit 321 reads, for example, one or more pieces of valid data stored in one or more Allocated LBAs in the first LBA range 551 from the storage medium 31. The data read / transfer unit 321 also acquires, for example, data of a predetermined value, such as "FF" or "00," as data stored in each Deallocated LBA in the first LBA range 551. The plurality of pieces of data corresponding to the plurality of LBAs included in the first LBA range 551 may include the one or more pieces of valid data that have been read and the acquired data of the predetermined value. The data read / transfer unit 321 transfers the acquired pieces of data to a plurality of storage areas in the second buffer 222, respectively, based on the second address.

[0082] In the storage drive 3, steps (1) and (2) are repeated until processing for all LBAs in the namespace 51-1 is completed.

[0083] With the above configuration, the storage drive 3 can provide the host 2 with the use status information 41 of the specified first LBA range 551 along with the LBA data 42 corresponding to the specified first LBA range 551 in response to the first read command 61. The host 2 does not incur the overhead of, for example, checking the use status of each LBA in the namespace 51-1 using the use status information 41 and reading the data. Therefore, the storage drive 3 can reduce the amount of processing in the host 2 when, for example, data is migrated from the namespace 51-1 of the storage drive 3 to another namespace.

[0084] (Second embodiment) The storage drive 3 according to the first embodiment provides LBA data corresponding to a specific LBA range, as well as information on whether the specific LBA range is in use, to the host 2. In other words, the storage drive 3 according to the first embodiment corresponds to the storage drive 3 that includes the migration source namespace.

[0085] In contrast to this, the storage drive 3 according to the second embodiment writes the LBA data corresponding to a specific LBA range to an LBA space (namespace) based on the usage status information for that specific LBA range transferred from the host 2. In other words, the storage drive 3 according to the second embodiment corresponds to the storage drive 3 that includes the migration destination namespace.

[0086] The configuration of the storage system including the storage drive 3 of the second embodiment is similar to the storage system including the storage drive 3 of the first embodiment. The second embodiment differs from the first embodiment in the processing for migrating data to the migration destination namespace. Below, the differences from the first embodiment will be mainly explained.

[0087] 7 is a block diagram showing an example of the configuration of a storage system 1 including a storage drive according to the second embodiment. The storage system 1 includes a host 2 and a storage drive 3.

[0088] The configuration of the host 2 is the same as the configuration of the host 2 described above with reference to Fig. 5. The storage areas of the host memory 22 in the host 2 are allocated as, for example, a first buffer 221 and a second buffer 222. In the following, it is assumed that the first buffer 221 stores usage status information 41, and the second buffer 222 stores LBA data 42.

[0089] The configuration of the storage drive 3 is the same as that of the storage drive 3 described above with reference to Fig. 5, except for the function of the controller 32. The controller 32 functions as a command reception and response unit 320, an information management and transfer unit 322, and also as a data transfer and writing unit 323. The controller 32 may also function as a data read and transfer unit 321.

[0090] The command reception and response unit 320 receives commands issued by the host 2. The command reception and response unit 320 causes the information management and transfer unit 322 and the data transfer and writing unit 323 to perform processing in accordance with the received command. The command reception and response unit 320 also returns a response to the host 2 indicating the completion of processing in accordance with the received command.

[0091] The information management and transfer unit 322 manages usage information corresponding to the LBA space. In response to the command reception and response unit 320 receiving a specific write command from the host 2, the information management and transfer unit 322 transfers usage information 41 from the host memory 22 based on the address specified by the write command. The specific write command is a data write command with usage information (hereinafter also referred to as a first write command). The information management and transfer unit 322 updates the usage information it manages using the transferred usage information 41.

[0092] In response to the command reception and response unit 320 receiving a specific write command (for example, a first write command) from the host 2, the data transfer and write unit 323 transfers LBA data 42 from the host memory 22 based on the address specified by the write command. The data transfer and write unit 323 writes the LBA data 42 to the LBA range specified by the write command using the use status information 41 transferred by the information management and transfer unit 322. Specifically, the data transfer and write unit 323 uses the use status information 41 to write corresponding LBA data 42 (valid data) to the storage medium 31 for LBAs that are Allocated LBAs among the LBAs in the LBA range specified by the write command. On the other hand, the data transfer and write unit 323 does not write corresponding LBA data 42 to the storage medium 31 for LBAs that are Deallocated LBAs.

[0093] 8 shows an example of a data write operation with use status information in a storage system 1 including a storage drive 3 according to the second embodiment. The storage drive 3 of the second embodiment has a first data write function with use status information. The first data write function with use status information is a function that, in response to receiving a first write command 71 from the host 2, writes LBA data corresponding to a specified LBA range to an LBA space (namespace) based on the use status information of the LBA range specified in the first write command 71.

[0094] Here, an example is shown in which the host 2 is using the namespace 51-2 in the storage drive 3. The information management and transfer unit 322 of the storage drive 3 manages usage status information 52-2 that indicates the usage status of each LBA in the namespace 51-2. In Figure 8, the data (LBA data) stored in the LBA space of the namespace 51-2 is shown with hatching indicating the usage status of each LBA in the namespace 51-2. This usage status corresponds to the usage status information 52-2.

[0095] 8 illustrates an example in which an LBA range 552 is specified by the first write command 71. In this case, the use status information 52-2 corresponding to the LBA range 552 is replaced with the use status information 41 transferred from the host memory 22. In addition, valid data from the LBA data 42 transferred from the host memory 22 is written into the LBA range 552.

[0096] The first write command 71 is a command requesting writing of LBA data 42 corresponding to a specific LBA range based on the usage status information 41. The first write command 71 specifies (a) a start LBA and an LBA size, and (b) a first address indicating the first buffer 221 in the host memory 22 where the usage status information 41 is stored, and a second address indicating the second buffer 222 in the host memory 22 where the LBA data 42 is stored.

[0097] The first write command 71 specifies a start LBA and an LBA size, thereby specifying an LBA range (hereinafter also referred to as a second LBA range) 552 corresponding to the LBA data to be written.

[0098] The first buffer 221 stores the usage information 41 provided to the storage drive 3 in response to the first write command 71.

[0099] The second buffer 222 stores LBA data 42 provided to the storage drive 3 in response to the first write command 71. More specifically, the second buffer 222 includes a plurality of storage areas corresponding to the plurality of LBAs included in the second LBA range 552. Each of these storage areas has a size sufficient to store data logically stored in one LBA. When a plurality of pieces of data corresponding to the plurality of LBAs in the second LBA range 552 are provided in response to the first write command 71, the plurality of pieces of data are stored in the plurality of storage areas in the second buffer 222 in LBA order.

[0100] In the controller 32 of the storage drive 3, the command reception and response unit 320 receives a first write command 71 from the host 2. In response to the command reception and response unit 320 receiving the first write command 71, the following operation is performed in the storage drive 3.

[0101] (1) The information management and transfer unit 322 transfers the use status information 41 from the first buffer 221 in the host memory 22 based on the first address. The information management and transfer unit 322 updates the use status information 41 that corresponds to the LBA range (second LBA range) 552 specified in the first write command 71, among the use status information 52-2 that it manages.

[0102] (2) Based on the second address, the data transfer and writing unit 323 transfers the LBA data 42 from the second buffer 222 in the host memory 22. Then, based on the use status information 41, the data transfer and writing unit 323 writes the LBA data 42 corresponding to the Allocated LBA in the second LBA range 552 to that LBA in the namespace 51-2.

[0103] The procedure (2) will be described in detail. First, the data transfer and write unit 323 transfers each of the multiple data items included in the LBA data 42 from multiple storage areas included in the second buffer 222 based on the second address. The multiple data items correspond to the multiple LBAs included in the second LBA range 552, respectively. Each of the multiple data items is data stored in the corresponding LBA. The data transfer and write unit 323 identifies an Allocated LBA within the second LBA range 552 based on the usage information 41. The data transfer and write unit 323 selects data (i.e., valid data) that corresponds to the identified Allocated LBA from the multiple data items included in the LBA data 42. The data transfer and write unit 323 writes the selected valid data to the identified Allocated LBA in the namespace 51-2. That is, the data transfer and write unit 323 writes the selected valid data to the storage medium 31 and associates it with the corresponding Allocated LBA in the namespace 51-2. It should be noted that the data read / transfer unit 321 does not write data corresponding to the Deallocated LBAs in the second LBA range 552 to the namespace 51-2 (more specifically, the storage medium 31).

[0104] In the storage drive 3, steps (1) and (2) are repeated until processing for all LBAs in the namespace 51-2 is completed.

[0105] With the above configuration, the storage drive 3 can write valid data corresponding to a specific LBA range 552 to the namespace 51-2 based on the usage status information 41 of that specific LBA range 552 in response to the first write command 71. The host 2 does not incur the overhead of, for example, checking the usage status of each LBA in the namespace 51-2 using the usage status information 41 and writing the data. Therefore, for example, when data is migrated from another namespace to the namespace 51-2 of the storage drive 3, the storage drive 3 can reduce the amount of processing in the host 2.

[0106] (Third embodiment) The storage system 1 according to the third embodiment is a system for migrating data from the storage drive 3 according to the first embodiment to the storage drive 3 according to the second embodiment.

[0107] 9 shows an example of data migration between namespaces in a storage system 1 of the third embodiment. The storage system 1 includes a first storage drive 3-1, a first host 2-1, a second host 2-2, and a second storage drive 3-2. The first storage drive 3-1 is connected to the first host 2-1. The second storage drive 3-2 is connected to the second host 2-2. The first host 2-1 is also connected to the second host 2-2. The interface for connecting the first host 2-1 and the second host 2-2 complies with standards such as Ethernet, for example.

[0108] The configuration of the first storage drive 3-1 is the same as that of the storage drive 3 of the first embodiment. In other words, the first storage drive 3-1 is a storage drive that has a first function of reading data with usage information.

[0109] The configuration of the first host 2-1 is the same as that of the host 2 in the first embodiment. In other words, the first host 2-1 is a host that issues a data read command (first read command) 61 with usage information to the first storage drive 3-1.

[0110] The configuration of the second storage drive 3-2 is the same as that of the storage drive 3 of the second embodiment. In other words, the second storage drive 3-2 is a storage drive having a first data write function with usage information.

[0111] The configuration of the second host 2-2 is the same as that of the host 2 of the second embodiment. In other words, the second host 2-2 is a host that issues a data write command (first write command) 71 with usage information to the second storage drive 3-2.

[0112] A specific example of the operation of the storage system 1 will be described.

[0113] The first host 2-1 allocates storage areas of the host memory 22-1 as a first buffer 221-1 that stores the usage status information 41 and a second buffer 222-1 that stores the LBA data 42. Then, the first host 2-1 issues a first read command 61 to the first storage drive 3-1 ((1) in FIG. 9).

[0114] In response to receiving the first read command 61 from the first host 2-1, the first storage drive 3-1 performs a data read operation with in-use information ((2) and (3) in FIG. 9). The specific procedure for the data read operation with in-use information is as described above with reference to FIG. 6 in the first embodiment. As a result, the LBA data 42 is read from the namespace 51-1 in the first storage drive 3-1, and the in-use information 41 and the LBA data 42 are transferred to the host memory 22-1 in the first host 2-1.

[0115] Next, the first host 2-1 transfers the usage status information 41 and the LBA data 42 from the host memory 22-1 to the host memory 22-2 in the second host 2-2 ((4) and (5) in FIG. 9). Any method can be selected from a variety of methods for transferring data between information processing devices to transfer data between the first host 2-1 and the second host 2-2. Furthermore, storage areas of the host memory 22-2 are allocated as a first buffer 221-2 for storing the usage status information 41 and a second buffer 222-2 for storing the LBA data 42.

[0116] Upon completion of the transfer of the usage information 41 and the LBA data 42 to the host memory 22-2, the second host 2-2 issues a first write command 71 to the second storage drive 3-2 ((6) in FIG. 9).

[0117] In response to receiving the first write command 71 from the second host 2-2, the second storage drive 3-2 performs a data write operation with usage status information ((7) and (8) in FIG. 9). The specific procedure for the data write operation with usage status information is as described above with reference to FIG. 8 in the second embodiment. As a result, usage status information 41 and LBA data 42 are transferred from the host memory 22-2 in the second host 2-2 to the second storage drive 3-2, and the LBA data 42 is written to the namespace 51-2 based on the usage status information 41. In addition, usage status information 52-2 managed by the second storage drive 3-2 is updated using the usage status information 41.

[0118] In the storage system 1, these steps (1) to (8) are repeated until processing of all LBAs in the namespace 51-1 of the first storage drive 3-1 is completed.

[0119] As a result, the storage system 1 can achieve the following effects. (1) Since the usage information 52-1 corresponding to the source namespace 51-1 is reflected in the usage information 52-2 of the destination namespace 51-2, there is no deterioration in GC efficiency in the second storage drive 3-2 compared to the first method of the comparative example (data migration without using usage information). (2) Data migration between namespaces is performed without either the first host 2-1 or the second host 2-2 performing a judgment process using usage status information 41, so the processing volume (overhead) in the first host 2-1 and the second host 2-2 can be significantly reduced compared to the third method of the comparative example (data migration using usage status information managed by the storage drive).

[0120] (Fourth embodiment) The storage drive 3 according to the first embodiment provides the host 2 with LBA data corresponding to a specific LBA range, as well as information on whether the specific LBA range is in use.

[0121] In contrast, the storage drive 3 according to the fourth embodiment provides the host 2 with LBA data corresponding to Allocated LBAs within a specific LBA range, as well as information on whether the specific LBA range is in use. In other words, the storage drive 3 according to the fourth embodiment is configured to provide only valid data corresponding to Allocated LBAs to the host 2, and not to provide data corresponding to Deallocated LBAs to the host 2. The storage drive 3 according to the fourth embodiment corresponds to the storage drive 3 that includes the migration source namespace.

[0122] The configuration of a storage system including a storage drive 3 of the fourth embodiment is similar to that of the storage system including the storage drive 3 of the first embodiment. More specifically, the configurations of the host 2 and storage drive 3 are similar to those of the host 2 and storage drive 3 described above with reference to FIG. 5. The storage drive 3 of the fourth embodiment differs from the first embodiment in the processing for providing only valid data corresponding to the Allocated LBA to the host 2. The following mainly describes the differences from the first embodiment.

[0123] In response to the command reception and response unit 320 receiving a specific read command from the host 2, the data read and transfer unit 321 transfers valid data corresponding to an Allocated LBA within the LBA range specified by the read command to the host memory 22. Specifically, if the specified LBA range includes an Allocated LBA, the data read and transfer unit 321 reads the valid data stored in that Allocated LBA from the storage medium 31. Then, the data read and transfer unit 321 transfers the read valid data to the storage area in the host memory 22 that corresponds to that Allocated LBA. On the other hand, if the specified LBA range includes a Deallocated LBA, the data read and transfer unit 321 does not read or transfer data related to that Deallocated LBA. The specific read command is, for example, a data read command 61 with use status information (first read command 61).

[0124] 10 shows an example of a data read operation with usage information in a storage system 1 including a storage drive 3 of the fourth embodiment. The storage drive 3 of the fourth embodiment has a second data read function with usage information. The second data read function with usage information is a function that, in response to receiving a first read command 61 from the host 2, provides the host 2 with valid data corresponding to the Allocated LBAs within the LBA range specified in the first read command 61 as well as usage information for the specified LBA range.

[0125] Here, we will explain an example in which the host 2 is using namespace 51-1 in the storage drive 3. The information management and transfer unit 322 of the storage drive 3 manages usage status information 52-1 that indicates the usage status of each LBA in the namespace 51-1. In Figure 10, the LBA data stored in the LBA space of the namespace 51-1 is shown with hatching that indicates the usage status of each LBA in the namespace 51-1.

[0126] 10 illustrates an example in which an LBA range 551 is specified by a first read command 61. In this case, use status information 41 corresponding to the LBA range 551 is stored in a first buffer 221 in the host memory 22. Furthermore, LBA data 42 corresponding to the LBA range 551 is stored in a second buffer 222 in the host memory 22. Of the stored LBA data 42, only valid data corresponding to the Allocated LBA is read from the storage drive 3 (more specifically, the storage medium 31) and transferred to the host memory 22.

[0127] As in the first embodiment, the first read command 61 specifies (a) the starting LBA and LBA size, and (b) a first address indicating the first buffer 221 in the host memory 22 where the usage status information 41 is stored, and a second address indicating the second buffer 222 in the host memory 22 where the LBA data 42 is stored.

[0128] In the controller 32 of the storage drive 3, the command reception and response unit 320 receives a first read command 61 from the host 2. In response to the command reception and response unit 320 receiving the first read command 61, the following operation is performed in the storage drive 3.

[0129] (1) The information management and transfer unit 322 transfers the usage status information 41 corresponding to the LBA range (first LBA range) 551 specified in the first read command 61 from the usage status information 52-1 it manages to the first buffer 221 in the host memory 22 based on the first address.

[0130] (2) Using the usage information 41, the data read / transfer unit 321 transfers one or more valid data items corresponding to one or more Allocated LBAs in the first LBA range 551 to the second buffer 222 in the host memory 22 based on the second address.

[0131] The procedure (2) will be described in detail. First, the data read / transfer unit 321 uses the usage information 41 to obtain one or more valid data items corresponding to one or more Allocated LBAs in the first LBA range 551. That is, the data read / transfer unit 321 reads one or more valid data items stored in one or more Allocated LBAs from the storage medium 31. The data read / transfer unit 321 transfers the corresponding valid data items to the second buffer 222 based on the relative position of each Allocated LBA from the beginning of the first LBA range 551 and the second address. The second buffer 222 includes multiple storage areas starting from the second address. Each of the multiple storage areas has a size sufficient to store data logically stored in one LBA. For example, if the ith LBA in the first LBA range 551 is an Allocated LBA, the data read / transfer unit 321 transfers the valid data items corresponding to this Allocated LBA to the ith storage area among the multiple storage areas included in the second buffer 222. Here, i is an integer between 1 and the LBA size.

[0132] Note that the data read / transfer unit 321 does not acquire data corresponding to the Deallocated LBA in the first LBA range 551. Therefore, the data corresponding to the Deallocated LBA is not transferred to the second buffer 222. For example, if the jth LBA in the first LBA range 551 is a Deallocated LBA, the data read / transfer unit 321 does not acquire the data stored in the jth LBA, and does not transfer any data to the jth storage area among the multiple storage areas included in the second buffer 222. Here, j is an integer between 1 and the LBA size. In the host 2, for example, data of a predetermined value such as "FF" or "00" stored in the jth storage area among the multiple storage areas included in the second buffer 222 can be treated as data stored in the jth LBA (Deallocated LBA) in the first LBA range 551.

[0133] In the storage drive 3, steps (1) and (2) are repeated until processing for all LBAs in the namespace 51-1 is completed.

[0134] With the above configuration, the storage drive 3 can provide the host 2 with the use status information 41 of the specified LBA range 551 along with valid data corresponding to the Allocated LBAs within the specified LBA range 551 in response to the first read command 61. The host 2 does not incur the overhead of, for example, using the use status information 41 to check the use status of each LBA in the namespace and then reading the data. Therefore, the storage drive 3 can reduce the amount of processing in the host 2, for example, when data is migrated from the namespace 51-1 of the storage drive 3 to another namespace. Furthermore, because only valid data corresponding to the Allocated LBAs is transferred from the storage drive 3 to the host memory 22, the amount of data transferred from the storage drive 3 to the host memory 22 can be reduced compared to, for example, the storage drive 3 of the first embodiment.

[0135] (Fifth embodiment) The storage drive 3 according to the second embodiment writes LBA data corresponding to a specific LBA range to an LBA space (name space) based on the information on whether the specific LBA range is in use.

[0136] In contrast, the storage drive 3 according to the fifth embodiment transfers valid data corresponding to Allocated LBAs within a specific LBA range from the host 2 and writes it to the LBA space (namespace) based on the use / non-use information for that specific LBA range transferred from the host 2. In other words, the storage drive 3 according to the fifth embodiment is configured to transfer only valid data corresponding to Allocated LBAs from the host 2, and not transfer data corresponding to Deallocated LBAs from the host 2. The storage drive 3 according to the fifth embodiment corresponds to the storage drive 3 that includes the migration destination namespace.

[0137] The configuration of the storage system including the storage drive 3 of the fifth embodiment is similar to the storage system including the storage drive 3 of the second embodiment. More specifically, the configurations of the host 2 and storage drive 3 are similar to the configurations of the host 2 and storage drive 3 described above with reference to FIG. 7. The storage drive 3 of the fifth embodiment differs from the second embodiment in the processing for transferring only valid data corresponding to the Allocated LBA from the host 2. The following mainly describes the differences from the second embodiment.

[0138] In response to the command reception and response unit 320 receiving a specific write command from the host 2, the information management and transfer unit 322 transfers the usage status information 41 from the host memory 22 based on the address specified by the write command. The specific write command is a data write command (first write command) 71 with usage status information.

[0139] The data transfer and write unit 323 uses the use status information 41 transferred by the information management and transfer unit 322 to transfer valid data corresponding to the Allocated LBAs within the LBA range specified in the write command (i.e., valid data in the LBA data 42) from the host memory 22. Then, the data transfer and write unit 323 writes the transferred LBA data 42 to the storage medium 31. On the other hand, the data transfer and write unit 323 does not transfer data corresponding to the Deallocated LBAs within the LBA range specified in the write command from the host memory 22. Therefore, the data corresponding to the Deallocated LBAs is not written to the storage medium 31.

[0140] 11 shows an example of a data write operation with use status information in a storage system 1 including a storage drive 3 of the fifth embodiment. The storage drive 3 of the fifth embodiment has a second data write function with use status information. The second data write function with use status information is a function that, in response to receiving a first write command 71 from the host 2, transfers valid data corresponding to Allocated LBAs within the LBA range based on the use status information of the LBA range specified in the first write command 71, and writes the transferred valid data to an LBA space (namespace).

[0141] Here, an example is shown in which the host 2 is using the namespace 51-2 in the storage drive 3. The information management and transfer unit 322 of the storage drive 3 manages usage status information 52-2 that indicates the usage status of each LBA in the namespace 51-2. In Figure 11, the LBA data stored in the LBA space of the namespace 51-2 is shown with hatching indicating the usage status of each LBA in the namespace 51-2.

[0142] 11 illustrates an example in which an LBA range 552 is specified by the first write command 71. In this case, the usage status information 52-2 corresponding to the LBA range 552 is replaced with the usage status information 41 transferred from the host memory 22. Furthermore, valid data transferred to the storage drive 3 from the LBA data 42 stored in the host memory 22 is written into the LBA range 552.

[0143] As in the second embodiment, the first write command 71 specifies (a) a starting LBA and LBA size, and (b) a first address indicating a first buffer 221 in the host memory 22 where the usage status information 41 is stored, and a second address indicating a second buffer 222 in the host memory 22 where the LBA data 42 is stored.

[0144] In the controller 32 of the storage drive 3, the command reception and response unit 320 receives a first write command 71 from the host 2. In response to the command reception and response unit 320 receiving the first write command 71, the following operation is performed in the storage drive 3.

[0145] (1) Based on the first address, the information management and transfer unit 322 transfers the usage status information 41 from the first buffer 221 in the host memory 22. The information management and transfer unit 322 updates the usage status information 52-2 it manages that corresponds to the LBA range (second LBA range) 552 specified in the first write command 71 with the transferred usage status information 41.

[0146] (2) Based on the use status information 41 and the second address, the data transfer and write unit 323 transfers one or more valid data items corresponding to one or more Allocated LBAs in the second LBA range 552 from the LBA data 42 stored in the second buffer 222 in the host memory 22. The data transfer and write unit 323 writes the transferred one or more valid data items to the storage medium 31.

[0147] The procedure (2) will be described in detail. First, the data transfer and write unit 323 identifies one or more Allocated LBAs in the second LBA range 552 using the usage information 41. The data transfer and write unit 323 transfers corresponding valid data from the second buffer 222 based on the relative position of each Allocated LBA from the beginning of the second LBA range 552 and the second address. The second buffer 222 includes multiple storage areas starting from the second address. Each of these multiple storage areas has a size sufficient to store data logically stored in one LBA. For example, if the ith LBA in the second LBA range 552 is an Allocated LBA, the data transfer and write unit 323 transfers valid data corresponding to this Allocated LBA from the ith storage area among the multiple storage areas included in the second buffer 222. The data transfer and write unit 323 writes the valid data corresponding to each transferred Allocated LBA to the storage medium 31 in the namespace 51-2. That is, the data transfer / write unit 323 writes the transferred valid data to the storage medium 31 and associates it with the corresponding Allocated LBA in the namespace 51-2.

[0148] The data transfer and writing unit 323 does not transfer data corresponding to the Deallocated LBA in the second LBA range 552 from the second buffer 222. Therefore, the data corresponding to the Deallocated LBA is not written to the storage medium 31. For example, if the j-th LBA in the second LBA range 552 is a Deallocated LBA, the data transfer and writing unit 323 does not transfer data from the j-th storage area of ​​the multiple storage areas included in the second buffer 222.

[0149] In the storage drive 3, steps (1) and (2) are repeated until processing for all LBAs in the namespace 51-2 is completed.

[0150] With the above configuration, the storage drive 3 can transfer valid data corresponding to Allocated LBAs in a specific second LBA range 552 from the host 2 and write the valid data to the namespace 51-2 based on the usage status information 41 of the specific second LBA range 552 transferred from the host 2 in response to the first write command 71. The host 2 does not incur the overhead of, for example, checking the usage status of each LBA in the namespace using the usage status information 41 and writing the data. Therefore, the storage drive 3 can reduce the processing volume in the host 2, for example, when data is migrated from another namespace to the namespace 51-2 of the storage drive 3. Furthermore, because only valid data corresponding to Allocated LBAs is transferred from the host memory 22 to the storage drive 3, the amount of data transferred from the host memory 22 to the storage drive 3 can be reduced compared to, for example, the storage drive 3 of the second embodiment.

[0151] (Sixth embodiment) The storage system 1 according to the sixth embodiment is a system for migrating data from the storage drive 3 according to the fourth embodiment to the storage drive 3 according to the second embodiment.

[0152] The storage system 1 of the sixth embodiment has a configuration in which the first storage drive 3-1 in the storage system 1 of the third embodiment described above with reference to Fig. 9 is replaced with the storage drive 3 of the fourth embodiment instead of the storage drive 3 of the first embodiment. That is, in the storage system 1 of the sixth embodiment, the first storage drive 3-1 is a storage drive having a data read function with second usage status information.

[0153] The storage system 1 of the sixth embodiment can obtain the effects of the storage drive 3 of the fourth embodiment in addition to the effects of the storage system 1 of the third embodiment. That is, since only valid data corresponding to the Allocated LBA is transferred from the first storage drive 3-1 to the host memory 22-1, the amount of data transferred from the first storage drive 3-1 to the host memory 22-1 can be reduced compared to, for example, the storage system 1 of the third embodiment.

[0154] Seventh embodiment The storage system 1 according to the seventh embodiment is a system for migrating data from the storage drive 3 according to the first embodiment to the storage drive 3 according to the fifth embodiment.

[0155] The storage system 1 of the seventh embodiment has a configuration in which the second storage drive 3-2 in the storage system 1 of the third embodiment described above with reference to Fig. 9 is replaced with the storage drive 3 of the fifth embodiment instead of the storage drive 3 of the second embodiment. That is, in the storage system 1 of the seventh embodiment, the second storage drive 3-2 is a storage drive having a data write function with second usage status information.

[0156] The storage system 1 of the seventh embodiment can obtain the effects of the storage drive 3 of the fifth embodiment in addition to the effects of the storage system 1 of the third embodiment. That is, since only valid data corresponding to the Allocated LBA is transferred from the host memory 22-2 to the second storage drive 3-2, the amount of data transferred from the host memory 22-2 to the second storage drive 3-2 can be reduced compared to, for example, the storage system 1 of the third embodiment.

[0157] (Eighth embodiment) The storage system 1 according to the eighth embodiment is a system for migrating data from the storage drive 3 according to the fourth embodiment to the storage drive 3 according to the fifth embodiment.

[0158] The storage system 1 of the eighth embodiment has a configuration in which the first storage drive 3-1 is replaced from the storage drive 3 of the first embodiment to the storage drive 3 of the fourth embodiment, and the second storage drive 3-2 is replaced from the storage drive 3 of the second embodiment to the storage drive 3 of the fifth embodiment in the storage system 1 of the third embodiment described above with reference to Fig. 9. That is, in the storage system 1 of the eighth embodiment, the first storage drive 3-1 is a storage drive having a data read function with second use presence information, and the second storage drive 3-2 is a storage drive having a data write function with second use presence information.

[0159] The storage system 1 of the eighth embodiment achieves the effects of the storage system 1 of the third embodiment, as well as the effects of the storage drive 3 of the fourth embodiment and the effects of the storage drive 3 of the fifth embodiment. That is, since only valid data corresponding to the Allocated LBA is transferred from the first storage drive 3-1 to the host memory 22-1, the amount of data transferred from the first storage drive 3-1 to the host memory 22-1 can be reduced compared to, for example, the storage system 1 of the third embodiment. Furthermore, since only valid data corresponding to the Allocated LBA is transferred from the host memory 22-2 to the second storage drive 3-2, the amount of data transferred from the host memory 22-2 to the second storage drive 3-2 can be reduced compared to, for example, the storage system 1 of the third embodiment.

[0160] (Ninth embodiment) The storage drive 3 according to the first embodiment provides the host 2 with LBA data corresponding to a specific LBA range, as well as usage status information 41 for that specific LBA range. The storage drive 3 according to the fourth embodiment provides the host 2 with valid data corresponding to Allocated LBAs within the specific LBA range, as well as usage status information 41 for that specific LBA range.

[0161] In contrast, a storage drive 3 according to the ninth embodiment provides the host 2 with valid data corresponding to Allocated LBAs within a specific LBA range, up to a specific maximum number of LBAs, and also provides the host 2 with use status information and header information corresponding to the provided valid data. The valid data provided to the host 2 with an upper limit of a specific maximum number of LBAs is also referred to as "shrink data." The header information includes information for identifying the LBA range corresponding to the shrink data provided to the host 2. In other words, the storage drive 3 according to the ninth embodiment provides the host 2 with valid data (shrink data) corresponding to Allocated LBAs, up to a specific maximum number of LBAs, and is configured not to provide the host 2 with valid data that exceeds the data amount corresponding to the specific maximum number of LBAs, even if the valid data corresponds to Allocated LBAs within the specific LBA range. The storage drive 3 according to the ninth embodiment corresponds to a storage drive 3 including a migration source namespace.

[0162] The configuration of a storage system including a storage drive 3 of the ninth embodiment is similar to the storage systems including the storage drives 3 of the first and fourth embodiments. The storage drive 3 of the ninth embodiment differs from the first and fourth embodiments in the processing for providing shrink data to the host 2. Below, the differences from the first and fourth embodiments will be mainly described.

[0163] 12 is a block diagram showing an example of the configuration of a storage system 1 including a storage drive 3 according to the ninth embodiment. The storage system 1 includes a host 2 and a storage drive 3.

[0164] The configuration of the host 2 is the same as that of the host 2 described above with reference to FIG. 5, except for the allocation of storage areas in the host memory 22. The storage areas in the host memory 22 are allocated as, for example, a first buffer 221, a second buffer 222, and a third buffer 223. The first buffer 221 is a buffer area for the usage status information 41. The second buffer 222 is a buffer area for the shrink data 44. The third buffer 223 is a buffer area for the header information 43.

[0165] The configuration of the storage drive 3 is the same as that of the storage drive 3 described above with reference to Fig. 5, except for the function of the controller 32. The controller 32 functions as a command reception and response unit 320, a data read and transfer unit 321, and also as an information management, generation, and transfer unit 324.

[0166] The command reception and response unit 320 receives commands issued by the host 2. The command reception and response unit 320 causes the data read and transfer unit 321 and the information management, generation, and transfer unit 324 to perform processing in accordance with the received command. The command reception and response unit 320 also returns a response to the host 2 indicating the completion of processing in accordance with the received command.

[0167] The information management, generation, and transfer unit 324 manages use status information corresponding to the LBA space. In response to the command reception and response unit 320 receiving a specific read command from the host 2, the information management, generation, and transfer unit 324 acquires use status information for the LBA range specified in the read command and generates header information. The specific read command is a shrink data read command with use status information (hereinafter also referred to as a second read command). The information management, generation, and transfer unit 324 transfers the acquired use status information and the generated header information to the host memory 22.

[0168] When the command reception and response unit 320 receives a specific read command (for example, a second read command) from the host 2, the data read and transfer unit 321 transfers to the host memory 22 valid data corresponding to the Allocated LBAs within the LBA range specified in the read command, up to the maximum number of LBAs specified in the read command.

[0169] 13 shows an example of a data read operation with usage information in a storage system 1 including a storage drive 3 of the ninth embodiment. The storage drive 3 of the ninth embodiment has a shrink data read function with usage information. The shrink data read function with usage information is a function that, in response to receiving a second read command 62 from the host 2, provides the host 2 with valid data corresponding to Allocated LBAs within the LBA range specified in the second read command 62, up to the maximum number of LBAs specified in the second read command 62, and also provides the host 2 with usage information and header information corresponding to this valid data.

[0170] Here, we will explain an example in which the host 2 is using namespace 51-1 in the storage drive 3. The information management, generation, and transfer unit 324 of the storage drive 3 manages usage status information 52-1 that indicates the usage status of each LBA in the namespace 51-1. In Figure 13, the LBA data stored in the LBA space of the namespace 51-1 is shown with hatching that indicates the usage status of each LBA in the namespace 51-1.

[0171] The second read command 62 specifies (a) the starting LBA and LBA size (number of LBAs), (b) a first address indicating the first buffer 221 in the host memory 22 where the usage status information 41 is stored, a second address indicating the second buffer 222 in the host memory 22 where the shrink data 44 is stored, and a third address indicating the third buffer 223 in the host memory 22 where the header information 43 is stored, and (c) information that can identify the maximum number of LBAs.

[0172] The second read command 62 specifies the start LBA and LBA size, thereby specifying an LBA range (hereinafter also referred to as a first LBA range) 555 corresponding to the LBA data to be obtained.

[0173] The first buffer 221 has a size that allows it to store the usage information 41 provided from the storage drive 3 in response to the second read command 62.

[0174] The second buffer 222 has a size capable of storing the shrink data 44 provided from the storage drive 3 in response to the second read command 62. More specifically, the second buffer 222 includes a storage area with the maximum number of LBAs specified in the second read command 62. Each of the storage areas with the maximum number of LBAs has a size capable of storing data logically stored in one LBA. In response to the second read command 62, the storage drive 3 sequentially obtains, from among the valid data corresponding to all Allocated LBAs in the first LBA range 555, one or more valid data up to the maximum number of LBAs, starting from the beginning of the first LBA range 555. The obtained one or more valid data are sequentially stored in one or more storage areas, starting from the beginning of the maximum number of storage areas in the second buffer 222. The second buffer 222 does not have a storage area for data corresponding to Deallocated LBAs.

[0175] The third buffer 223 has a size that allows it to store the header information 43 provided by the storage drive 3 in response to the second read command 62. The third address is, for example, an address indicating the beginning of the third buffer 223.

[0176] The information that can identify the maximum number of LBAs indicates, for example, the sum of the sizes of the first buffer 221, the second buffer 222, and the third buffer 223 (i.e., the buffer capacity). In this case, the storage drive 3 obtains the size of the second buffer 222 by subtracting the size of the usage status information 41 and the size of the header information 43 to be transferred to the host 2 from the buffer capacity. The storage drive 3 then obtains the upper limit of the number of Allocated LBAs corresponding to valid data to be transferred to the second buffer 222 (i.e., the maximum number of LBAs) by dividing the size of the second buffer 222 by the size of data logically stored in one LBA. Alternatively, the information that can identify the maximum number of LBAs may indicate the upper limit itself of the number of Allocated LBAs corresponding to valid data to be transferred to the second buffer 222.

[0177] 13, 16 is set as the start LBA, 48 is set as the number of LBAs, and buffer capacity is set as information indicating the maximum number of LBAs. That is, this second read command 62 specifies an LBA range including 48 LBAs from LBA 16 to 63. The buffer capacity indicates the sum of the size of the LBA data corresponding to 16 LBAs (size of the second buffer 222), the size of the header information 43 (size of the third buffer 223), and the size of the use status information 41 (size of the first buffer 221). That is, this second read command 62 specifies a buffer capacity that can identify the maximum number of LBAs as 16.

[0178] In the controller 32 of the storage drive 3, the command reception and response unit 320 receives a second read command 62 from the host 2. In response to the command reception and response unit 320 receiving the second read command 62, the following operation is performed in the storage drive 3.

[0179] (1) The information management, generation, and transfer unit 324 acquires the usage status information 41 corresponding to the LBA range (first LBA range) 555 specified in the second read command 62 from the usage status information 52-1 that it manages, and generates header information 43.

[0180] The header information includes, for example, START LBA (first LBA), LAST LBA (last LBA), and Allocated LBA Num (number of Allocated LBAs). The information management, generation, and transfer unit 324 sets the start LBA specified in the second read command 62 as START LBA. Using the acquired usage information 41, the information management, generation, and transfer unit 324 determines whether the total number M of Allocated LBAs in the first LBA range 555 is equal to or less than the maximum number of LBAs, and determines the LAST LBA and Allocated LBA Num according to the result of this determination.

[0181] Specifically, if M is equal to or less than the maximum number of LBAs, the information management, generation, and transfer unit 324 sets the last LBA of the first LBA range 555 as the last LBA. Then, the information management, generation, and transfer unit 324 sets M as the Allocated LBA Num.

[0182] On the other hand, if M exceeds the maximum number of LBAs, the information management, generation, and transfer unit 324 identifies the first Allocated LBA where the number of valid data stored in Allocated LBAs in the first LBA range 555, counted sequentially from the beginning, exceeds the maximum number of LBAs.The information management, generation, and transfer unit 324 then sets the LBA immediately before the identified Allocated LBA as the last LBA.The information management, generation, and transfer unit 324 also sets the maximum number of LBAs as Allocated LBA Num.

[0183] In the example shown in FIG. 13, 16 (=start LBA) is set as the START LBA. 56 is set as the LAST LBA. Specifically, the information management, generation, and transfer unit 324 determines that the total number M (=22) of Allocated LBAs within the LBA range from 16 to 63 exceeds the maximum number of LBAs (=16). When acquiring valid data corresponding to Allocated LBAs within this LBA range from the beginning, the information management, generation, and transfer unit 324 identifies that the first Allocated LBA that exceeds the maximum number of LBAs is 57. Then, the information management, generation, and transfer unit 324 sets 56, which is the LBA immediately before the identified Allocated LBA, as the LAST LBA. Furthermore, 16 (=maximum number of LBAs) is set as the Allocated LBA Num.

[0184] The information management, generation, and transfer unit 324 transfers the acquired usage information 41 to the first buffer 221 in the host memory 22 based on the first address. Note that, of the usage information 41, usage information corresponding to LBAs after the LAST LBA is treated as invalid usage information. Usage information corresponding to LBAs after the LAST LBA may be deleted from the usage information 41. Alternatively, the usage information 41 may be transferred directly to the first buffer 221.

[0185] Furthermore, the information management, generation, and transfer unit 324 transfers the generated header information 43 to the third buffer 223 in the host memory 22 based on the third address.

[0186] (2) The data read / transfer unit 321 uses the use / non-use information corresponding to the first LBA range 555 to identify Allocated LBA Num Allocated LBAs included in the range from the first LBA to the last LBA within the first LBA range 555. The data read / transfer unit 321 obtains Allocated LBA Num valid data corresponding to the identified Allocated LBA Num Allocated LBAs. In other words, the data read / transfer unit 321 reads Allocated LBA Num valid data stored in the Allocated LBA Num Allocated LBAs from the storage medium 31. As described above, if the total number M of Allocated LBAs within the first LBA range 555 is equal to or less than the maximum number of LBAs, Allocated LBA Num is M. If the total number M of Allocated LBAs within the second LBA range is greater than the maximum number of LBAs, Allocated LBA Num is the maximum number of LBAs.

[0187] The data read / transfer unit 321 transfers the acquired Allocated LBA Num valid data to the second buffer 222 in the host memory 22 based on the second address. The second buffer 222 includes a storage area of ​​the maximum number of LBAs starting from the second address. Each of these storage areas of the maximum number of LBAs has a size sufficient to store data logically stored in one LBA. The transferred Allocated LBA Num valid data is stored in order from the beginning of the storage area of ​​the maximum number of LBAs in the second buffer 222, in the Allocated LBA Num number of storage areas. The second buffer 222 stores only valid data corresponding to the Allocated LBAs, and does not store any data corresponding to the Deallocated LBAs. Therefore, the second buffer 222 stores shrunken data 44 in which only valid data corresponding to the Allocated LBAs is packed in.

[0188] In the storage drive 3, steps (1) and (2) are repeated until processing for all LBAs in the namespace 51-1 is completed.

[0189] 13 illustrates an example in which an LBA range (first LBA range) 555 from LBA 16 to 63 is specified by the second read command 62. In this case, use status information 41 corresponding to the first LBA range 555 is stored in the first buffer 221 in the host memory 22. Note that, of the use status information 41, use status information corresponding to each of the LBAs from 57 to 63 after the LAST LBA (=56) is treated as invalid use status information. In FIG. 13, invalid use status information in the use status information 41 is indicated by hatching different from that corresponding to the allocated LBA and the deallocated LBA. Header information 43 regarding the shrunken data 44 read in response to the second read command 62 is stored in the third buffer 223 in the host memory 22. The second buffer 222 in the host memory 22 stores valid data from the beginning up to the maximum number of LBAs (here, 16) among the valid data corresponding to the Allocated LBAs in the first LBA range 555. Here, the second buffer 222 stores shrunken data 44 made up of 16 valid data corresponding respectively to the 16 Allocated LBAs.

[0190] With the above configuration, the storage drive 3 can provide the host 2 with valid data corresponding to Allocated LBAs in the specified first LBA range 555, up to the specified maximum number of LBAs, in response to the second read command 62, and can also provide the host 2 with usage status information 41 and header information 43 corresponding to the provided valid data. The host 2 does not incur the overhead of, for example, using the usage status information 41 to check the usage status of each LBA in the namespace and then reading the data. Therefore, the storage drive 3 can reduce the amount of processing in the host 2, for example, when data is migrated from namespace 51-1 of the storage drive 3 to another namespace.

[0191] Furthermore, the storage drive 3 transfers data from the storage drive 3 to the host memory 22 by limiting the capacity of the host memory 22 provided in the host memory 22, and only valid data corresponding to the Allocated LBA is stored in the host memory 22. Therefore, in most cases, the storage drive 3 of the ninth embodiment can reduce the number of repetitions of operations for data transfer compared to the storage drives 3 of the first and fourth embodiments. Note that if most of the namespace 51-1 is occupied by Allocated LBAs, the generation and transfer of header information 43 will be additional, resulting in a decrease in efficiency. However, such cases are considered to be extremely rare.

[0192] (Tenth embodiment) The storage drive 3 according to the ninth embodiment provides valid data corresponding to Allocated LBAs within a specific LBA range, up to a specific maximum number of LBAs, to the host 2 (i.e., provides shrink data 44), and also provides usage status information 41 and header information 43 corresponding to this valid data to the host 2. In other words, the storage drive 3 according to the ninth embodiment corresponds to the storage drive 3 including the source namespace from which the shrink data 44 is read.

[0193] In contrast, the storage drive 3 according to the tenth embodiment writes the shrink data 44 transferred from the host 2 to the LBA space (name space) based on the usage information 41 and header information 43 transferred from the host 2. In other words, the storage drive 3 according to the tenth embodiment corresponds to the storage drive 3 including the migration destination name space into which the shrink data 44 is written.

[0194] The configuration of the storage system including the storage drive 3 of the tenth embodiment is the same as the storage system including the storage drive 3 of the ninth embodiment. The tenth embodiment differs from the ninth embodiment in the processing for migrating data to the migration destination namespace. The following mainly describes the differences from the ninth embodiment.

[0195] 14 is a block diagram showing an example of the configuration of a storage system 1 including a storage drive according to Embodiment 10. The storage system 1 includes a host 2 and a storage drive 3.

[0196] The configuration of the host 2 is the same as the configuration of the host 2 described above with reference to Fig. 12. The storage areas of the host memory 22 in the host 2 are allocated as, for example, a first buffer 221, a second buffer 222, and a third buffer 223. In the following, it is assumed that the first buffer 221, the second buffer 222, and the third buffer 223 store the usage status information 41, the shrink data 44, and the header information 43, respectively.

[0197] The configuration of the storage drive 3 is the same as that of the storage drive 3 described above with reference to Fig. 12, except for the function of the controller 32. The controller 32 functions as a command reception and response unit 320 and an information management, generation, and transfer unit 324, as well as a data transfer and writing unit 323. The controller 32 may also function as a data read and transfer unit 321.

[0198] The command reception and response unit 320 receives commands issued by the host 2. The command reception and response unit 320 causes the information management, generation, and transfer unit 324 and the data transfer and writing unit 323 to perform processing in accordance with the received command. The command reception and response unit 320 also returns a response to the host 2 indicating the completion of processing in accordance with the received command.

[0199] The information management, generation, and transfer unit 324 manages usage information corresponding to the LBA space. In response to the command reception and response unit 320 receiving a specific write command from the host 2, the information management, generation, and transfer unit 324 transfers usage information 41 and header information 43 from the host memory 22 based on the address specified in the write command. The specific write command is a shrink data write command with usage information (hereinafter also referred to as a second write command). The information management, generation, and transfer unit 324 updates the usage information that it manages using the transferred usage information 41.

[0200] In response to the command reception and response unit 320 receiving a specific write command (for example, a second write command) from the host 2, the data transfer and write unit 323 transfers the shrink data 44 from the host memory 22 based on the address specified by the write command. The data transfer and write unit 323 writes the shrink data 44 to an Allocated LBA in the LBA space (name space) based on the usage information 41 and header information 43 transferred by the information management, generation, and transfer unit 324.

[0201] 15 shows an example of a data write operation with usage information in a storage system 1 including a storage drive 3 of the tenth embodiment. The storage drive 3 of the tenth embodiment has a shrink data write function with usage information. The shrink data write function with usage information is a function that, in response to receiving a second write command 72 from the host 2, writes shrink data 44 transferred from the host 2 to an LBA space (name space) based on usage information 41 and header information 43 transferred from the host 2.

[0202] Here, we will explain an example in which the host 2 is using the namespace 51-2 in the storage drive 3. The information management, generation, and transfer unit 324 of the storage drive 3 manages usage status information 52-2 that indicates the usage status of each LBA in the namespace 51-2. In Figure 15, the LBA data stored in the LBA space of the namespace 51-2 is shown with hatching that indicates the usage status of each LBA in the namespace 51-2.

[0203] The second write command 72 specifies a first address indicating a first buffer 221 in the host memory 22 where the usage information 41 is stored, a second address indicating a second buffer 222 in the host memory 22 where the shrunken data 44 is stored, and a third address indicating a third buffer 223 in the host memory 22 where the header information 43 is stored.

[0204] The first buffer 221 stores the usage information 41 that is provided to the storage drive 3 in response to the second write command 72.

[0205] The second buffer 222 stores the shrink data 44 to be provided to the storage drive 3 in response to the second write command 72. The shrink data 44 includes a first number (N) of valid data corresponding to the N Allocated LBAs, respectively. N corresponds to the Allocated LBA Num indicated in the header information 43. The second buffer 222 includes a storage area with a maximum number of LBAs equal to or greater than N. Each of the storage areas with the maximum number of LBAs has a size capable of storing data logically stored in one LBA. When the shrink data 44 is provided in response to the second write command 72, the N valid data included in the shrink data 44 are stored in the N storage areas, starting from the top, of the storage area with the maximum number of LBAs in the second buffer 222. The second buffer 222 does not have a storage area for data corresponding to Deallocated LBAs.

[0206] The third buffer 223 stores the header information 43 that is provided to the storage drive 3 in response to the second write command 72.

[0207] In the controller 32 of the storage drive 3, the command reception and response unit 320 receives the second write command 72 from the host 2. In response to the command reception and response unit 320 receiving the second write command 72, the following operation is performed in the storage drive 3.

[0208] (1) The information management, generation, and transfer unit 324 transfers usage status information 41 from the first buffer 221 in the host memory 22 based on the first address. The information management, generation, and transfer unit 324 transfers header information 43 from the third buffer 223 in the host memory 22 based on the third address. The information management, generation, and transfer unit 324 identifies the LBA range from the START LBA to the LAST LBA (hereinafter referred to as the second LBA range) 556 based on the START LBA and LAST LBA included in the header information 43. The information management, generation, and transfer unit 324 updates the usage status information corresponding to the second LBA range 556 in the usage status information 52-2 that it manages with the usage status information 41.

[0209] (2) The data transfer and writing unit 323 transfers the shrunk data 44 from the second buffer 222 in the host memory 22 based on the second address. The data transfer and writing unit 323 writes the transferred shrunk data 44 to the storage medium 31.

[0210] The procedure (2) will be described in detail. The shrink data 44 includes N valid data items corresponding to the N allocated LBAs. Each of the N valid data items is data stored in the corresponding allocated LBA. The data transfer and write unit 323 transfers the N valid data items from the first N storage areas in the second buffer 222. Then, the data transfer and write unit 323 identifies the allocated LBAs in the second LBA range 556, sequentially from the first, based on the usage information 41. Each time the data transfer and write unit 323 identifies an allocated LBA, it selects one valid data item from the transferred N valid data items, sequentially from the first. For example, when the ith allocated LBA in the second LBA range 556 is identified, the data transfer and write unit 323 selects the ith valid data item from the N valid data items. The data transfer and write unit 323 writes the selected valid data item to the identified allocated LBA in the namespace 51-2. That is, the data transfer / write unit 323 writes the selected valid data to the storage medium 31 and associates it with the corresponding Allocated LBA in the namespace 51-2.

[0211] In the storage drive 3, steps (1) and (2) are repeated until processing for all LBAs in the namespace 51-2 is completed.

[0212] 15 illustrates an example in which a second LBA range 556, from LBA 16 to 56, is identified based on the START LBA and LAST LBA of the header information 43. Since the Allocated LBA Num of the header information 43 is 16, the shrunken data 44 includes 16 valid data items stored in 16 Allocated LBAs, respectively.

[0213] In this case, the usage status information 52-2 corresponding to the second LBA range 556 is replaced with the usage status information 41 (more specifically, the usage status information 41 for LBAs 16 to 56) transferred from the host memory 22. Furthermore, within the second LBA range 556, the 16 allocated LBAs indicated in the usage status information 41 each store 16 valid data included in the shrunken data 44.

[0214] With the above configuration, the storage drive 3 can write the shrink data 44 to the namespace 51-2 based on the usage status information 41 and the header information 43 in response to the second write command 72. The host 2 does not incur the overhead of, for example, checking the usage status of each LBA in the namespace using the usage status information 41 and writing data. Therefore, the storage drive 3 can reduce the amount of processing in the host 2 when, for example, data is migrated from another namespace to the namespace 51-2 of the storage drive 3.

[0215] Furthermore, the storage drive 3 transfers data from the host memory 22 to the storage drive 3 by limiting the capacity of the host memory 22 provided in the host memory 22, and only valid data corresponding to the Allocated LBA is stored in the storage medium 31. Therefore, in most cases, the storage drive 3 of the tenth embodiment can reduce the number of repetitions of operations for data transfer compared to the storage drives 3 of the second and fifth embodiments. Note that if most of the namespace 51-2 is occupied by Allocated LBA, the generation and transfer of header information 43 will be additional, resulting in a decrease in efficiency. However, such cases are considered to be extremely rare.

[0216] (Eleventh embodiment) The storage system 1 according to the eleventh embodiment is a system for migrating data from the storage drive 3 according to the ninth embodiment to the storage drive 3 according to the tenth embodiment.

[0217] 16 shows an example of data migration between namespaces in a storage system 1 of the eleventh embodiment. The storage system 1 includes a first storage drive 3-1, a first host 2-1, a second host 2-2, and a second storage drive 3-2. The first storage drive 3-1 is connected to the first host 2-1. The second storage drive 3-2 is connected to the second host 2-2. The first host 2-1 is also connected to the second host 2-2. The interface for connecting the first host 2-1 and the second host 2-2 complies with standards such as Ethernet, for example.

[0218] The configuration of the first storage drive 3-1 is the same as that of the storage drive 3 of the ninth embodiment. In other words, the first storage drive 3-1 is a storage drive that has a function for reading shrink data with usage information.

[0219] The configuration of the first host 2-1 is the same as that of the host 2 of the ninth embodiment. In other words, the first host 2-1 is a host that issues a shrink data read command (second read command) 62 with usage information to the first storage drive 3-1.

[0220] The configuration of the second storage drive 3-2 is the same as that of the storage drive 3 of the tenth embodiment. In other words, the second storage drive 3-2 is a storage drive that has a shrink data write function with usage status information.

[0221] The configuration of the second host 2-2 is the same as that of the host 2 of the tenth embodiment. In other words, the second host 2-2 is a host that issues a shrink data write command (second write command) 72 with usage information to the second storage drive 3-2.

[0222] A specific example of the operation of the storage system 1 will be described.

[0223] The first host 2-1 allocates storage areas of the host memory 22-1 as a first buffer 221-1 for storing the usage status information 41, a second buffer 222-1 for storing the shrink data 44, and a third buffer 223-1 for storing the header information 43. Then, the first host 2-1 issues a second read command 62 to the first storage drive 3-1 ((1) in FIG. 16).

[0224] In response to receiving the second read command 62 from the first host 2-1, the first storage drive 3-1 performs a data read operation with usage status information ((2) and (3) in FIG. 16). The specific procedure for the data read operation with usage status information is as described above with reference to FIG. 13 in the ninth embodiment. As a result, the shrink data 44 is read from the namespace 51-1 in the first storage drive 3-1, and the usage status information 41, header information 43, and shrink data 44 are transferred to the host memory 22-1 in the first host 2-1.

[0225] Next, the first host 2-1 transfers the usage information 41, header information 43, and shrink data 44 from the host memory 22-1 to the host memory 22-2 in the second host 2-2 ((4) and (5) in FIG. 16). The storage areas of the host memory 22-2 are allocated as a first buffer 221-2 that stores the usage information 41, a second buffer 222-2 that stores the shrink data 44, and a third buffer 223-2 that stores the header information 43. For data transfer between the first host 2-1 and the second host 2-2, any method can be selected from a variety of methods for transferring data between information processing devices.

[0226] Upon completion of the transfer of the usage information 41, header information 43, and shrink data 44 to the host memory 22-2, the second host 2-2 issues a second write command 72 to the second storage drive 3-2 ((6) in FIG. 16).

[0227] In response to receiving the second write command 72 from the second host 2-2, the second storage drive 3-2 performs a data write operation with usage information ((7) and (8) in FIG. 16). The specific procedure for the data write operation with usage information is as described above with reference to FIG. 15 in the tenth embodiment. As a result, the usage information 41, header information 43, and shrink data 44 are transferred from the host memory 22-2 in the second host 2-2 to the second storage drive 3-2, and the shrink data 44 is written to the namespace 51-2 based on the usage information 41 and the header information 43. In addition, the usage information 41 is used to update the usage information 52-2 managed by the second storage drive 3-2.

[0228] In the storage system 1, these steps (1) to (8) are repeated until processing of all LBAs in the namespace 51-1 of the first storage drive 3-1 is completed. Note that the first host 2-1 generates the next second read command 62, for example, using the header information 43 obtained in the most recently completed data read operation with usage information. Specifically, the first host 2-1 sets the LBA next to the LAST LBA indicated in the header information 43 as the start LBA specified in the next second read command 62, for example.

[0229] As a result, in the storage system 1 of the eleventh embodiment, in addition to the effects obtained in the storage systems 1 of the third embodiment and the sixth to eighth embodiments, it is possible to obtain the following effects.

[0230] The first storage drive 3-1 limits the capacity of the host memory 22-1 provided in the host memory 22 of the first host 2-1 to transfer data from the first storage drive 3-1 to the host memory 22-1, and only valid data corresponding to the Allocated LBA is stored in the host memory 22-1. Also, the second storage drive 3-2 limits the capacity of the host memory 22-2 provided in the host memory 22-2 of the second host 2-2 to transfer data from the host memory 22-2 to the second storage drive 3-2, and only valid data corresponding to the Allocated LBA is stored in the host memory 22-2.

[0231] Therefore, in most cases, the storage system 1 of the eleventh embodiment can reduce the number of repetitions of operations for data transfer compared to the storage systems 1 of the third embodiment and the sixth to eighth embodiments. Note that if most of the namespaces 51-1 and 51-2 are occupied by Allocated LBAs, the generation and transfer of header information 43 will be additional, resulting in a decrease in efficiency. However, such cases are considered to be extremely rare.

[0232] As explained above, according to the first to eleventh embodiments, the processing amount in the host 2 can be reduced.

[0233] The command reception and response unit 320 receives a read request specifying a first LBA range within the first LBA space (for example, namespace 51-2) from the host 2. The information management and transfer unit 322 (or information management, generation, and transfer unit 324) transfers usage status information 41 indicating whether each of the multiple LBAs included in the first LBA range is being used by the host 2 to the host memory 22 included in the host 2. The data read and transfer unit 321 reads one or more valid data items stored in one or more LBAs that are being used by the host 2 among the multiple LBAs from the storage medium 31. The data read and transfer unit 321 transfers either one or more valid data items or multiple data items corresponding to the multiple LBAs, each including one or more valid data items, to the host memory 22.

[0234] As a result, in response to a read request, the storage drive 3 can provide the host 2 with the use status information for the first LBA range along with the data corresponding to the first LBA range. The host 2 does not incur the overhead of checking the use status of each LBA in the namespace and reading the data, for example, using the use status information 41. Therefore, the storage drive 3 can reduce the amount of processing in the host 2 when, for example, data is migrated from the namespace 51-1 of the storage drive 3 to another namespace.

[0235] The command reception and response unit 320 also receives a write request specifying a first LBA range within the first LBA space from the host 2. The information management and transfer unit 322 (or the information management, generation, and transfer unit 324) transfers, from the host memory 22 included in the host 2, usage status information 41 indicating whether each of the multiple LBAs included in the first LBA range is being used by the host 2. The data transfer and write unit 323 transfers, from the host memory 22, either multiple pieces of data corresponding to the multiple LBAs respectively, or one or more valid data pieces from the multiple pieces of data. The data transfer and write unit 323 writes the one or more valid data pieces to the storage medium 31 based on the usage status information 41.

[0236] As a result, in response to a write request, the storage drive 3 can write valid data corresponding to the first LBA range to the namespace 51-2 based on the usage status information 41. The host 2 does not incur the overhead of, for example, checking the usage status of each LBA in the namespace using the usage status information 41 and then writing data. Therefore, the storage drive 3 can reduce the amount of processing in the host 2 when, for example, data is migrated from another namespace to the namespace 51-2 of the storage drive 3.

[0237] Each of the various functions described in the first to eleventh embodiments may be realized by a circuit (processing circuit). An example of a processing circuit includes a programmed processor, such as a central processing unit (CPU). This processor performs each of the described functions by executing a computer program (a set of instructions) stored in a memory. This processor may be a microprocessor including electrical circuits. Examples of processing circuits include a digital signal processor (DSP), an application specific integrated circuit (ASIC), a microcontroller, a controller, and other electrical circuit components. Each of the components other than the CPU described in these embodiments may also be realized by a processing circuit.

[0238] Although several embodiments of the present invention have been described, these embodiments are presented as examples and are not intended to limit the scope of the invention. These novel embodiments can be embodied in various other forms, and various omissions, substitutions, and modifications can be made without departing from the spirit of the invention. These embodiments and their modifications are included within the scope and spirit of the invention, and are also included in the scope of the invention and its equivalents as defined in the claims. [Explanation of symbols]

[0239] 1...storage system, 2...host, 3...storage drive, 21...CPU, 22...host memory, 221...first buffer, 222...second buffer, 223...third buffer, 31...storage medium, 32...controller, 320...command reception and response unit, 321...data read and transfer unit, 322...information management and transfer unit, 323...data transfer and write unit, 324...information management, generation and transfer unit, 41...usage information, 42...LBA data, 43...header information, 51-1, 51-2...name space, 52-1, 52-2...usage information, 61...data read command with usage information, 62...shrink data read command with usage information, 71...data write command with usage information, 72...shrink data write command with usage information.

Claims

1. A storage drive connectable to a host, comprising: Storage media and Manages logical address space, receiving a read request from the host specifying a first logical address range within the logical address space; transferring first information indicating whether each of a plurality of logical addresses included in the first logical address range is in use by the host to a host memory included in the host; reading from the storage medium one or more pieces of valid data stored in one or more logical addresses used by the host out of the plurality of logical addresses; a controller configured to transfer one of a plurality of data items corresponding to the plurality of logical addresses, each including the one or more valid data items, and the one or more valid data items to the host memory; A storage drive comprising:

2. the storage area of ​​the host memory includes a first buffer capable of storing the first information and a second buffer capable of storing the plurality of data; the read request further specifies a first address indicating the first buffer and a second address indicating the second buffer; The controller Transferring the first information to the first buffer based on the first address; configured to transfer either the plurality of data or the one or more valid data to the second buffer based on the second address; The storage drive of claim 1 .

3. the second buffer includes a plurality of storage areas respectively corresponding to the plurality of logical addresses; the controller is configured to transfer the plurality of data to the plurality of storage areas, respectively, when transferring the plurality of data to the second buffer; The storage drive of claim 2 .

4. the second buffer includes a plurality of storage areas respectively corresponding to the plurality of logical addresses; a first valid data item among the one or more valid data items is data stored in an i-th logical address among the plurality of logical addresses, where i is an integer between 1 and the number of the one or more valid data items; the controller is configured to transfer the first valid data to an i-th storage area of ​​the plurality of storage areas when transferring the one or more valid data to the second buffer; The storage drive of claim 2 .

5. the read request further specifies information capable of identifying a maximum number of valid data to be read from the first logical address range; The controller further determines whether a first number of valid data items equal to or less than the maximum number are stored in the first logical address range. transferring second information to the host memory, the second information including a first address indicating the beginning of the first logical address range, a second address indicating the end of the first logical address range, and the first number; Transferring the first information to the host memory; reading the first number of valid data from the storage medium; configured to transfer the first number of valid data read to the host memory; The controller further determines whether or not a number of valid data items stored in the first logical address range exceeds the maximum number of valid data items. transferring information including the first address, a third address immediately preceding the first logical address at which the number of valid data stored in the first logical address range, counted sequentially from the beginning, exceeds the maximum number, and the maximum number to the host memory as the second information; transferring, as the first information to the host memory, information at least indicating whether valid data is stored in each of one or more logical addresses from the first address to the third address; reading the maximum number of valid data from the storage medium in order from the beginning of the plurality of data stored at the plurality of logical addresses, respectively; configured to transfer the maximum number of valid data read to the host memory; The storage drive of claim 1 .

6. the storage area of ​​the host memory includes a first buffer capable of storing the first information, a second buffer capable of storing the maximum number of data, and a third buffer capable of storing the second information; the read request further specifies a first address indicating the first buffer, a second address indicating the second buffer, and a third address indicating the third buffer; The controller Transferring the first information to the first buffer based on the first address; Transferring either the first number of valid data or the maximum number of valid data to the second buffer based on the second address; configured to transfer the second information to the third buffer based on the third address; The storage drive of claim 5 .

7. the second buffer includes the maximum number of storage areas; The controller When transferring the first number of valid data to the second buffer, the first number of valid data is transferred from the head of the maximum number of storage areas to the first number of storage areas, respectively; When the maximum number of valid data items is transferred to the second buffer, the maximum number of valid data items is transferred to the maximum number of storage areas, respectively. The storage drive of claim 6.

8. A storage drive connectable to a host, comprising: Storage media and Manages logical address space, receiving a write request from the host specifying a first logical address range within the logical address space; transferring first information indicating whether each of a plurality of logical addresses included in the first logical address range is being used by the host from a host memory included in the host; transferring from the host memory either a plurality of data items corresponding to the plurality of logical addresses or one or more valid data items among the plurality of data items; a controller configured to write the one or more valid data to the storage medium based on the first information; A storage drive comprising:

9. the storage area of ​​the host memory includes a first buffer storing the first information and a second buffer storing the plurality of data; the write request further specifies a first address indicating the first buffer and a second address indicating the second buffer; The controller Transferring the first information from the first buffer based on the first address; configured to transfer either the plurality of data or the one or more valid data from the second buffer based on the second address; The storage drive of claim 8.

10. the second buffer includes a plurality of storage areas in which the plurality of data are respectively stored; the controller is configured to transfer the plurality of data from the plurality of storage areas, respectively, when transferring the plurality of data from the second buffer; The storage drive of claim 9.

11. the second buffer includes a plurality of storage areas in which the plurality of data are respectively stored; a first valid data item among the one or more valid data items is data stored in an i-th logical address among the plurality of logical addresses, where i is an integer between 1 and the number of the one or more valid data items; the controller is configured to transfer the first valid data from an i-th storage area of ​​the plurality of storage areas when transferring the one or more valid data from the second buffer; The storage drive of claim 9.

12. A storage drive connectable to a host, comprising: Storage media and Manages logical address space, receiving a write request from the host; transferring first information indicating whether valid data is stored in each of a plurality of logical addresses included in a first logical address range within the logical address space from a host memory included in the host; transferring second information from the host memory, the second information including a first address indicating the beginning of the first logical address range, a second address indicating the end of the first logical address range, and a first number of valid data stored in the first logical address range; transferring the first number of valid data from the host memory; a controller configured to write the first number of valid data to the storage medium based on the first information; A storage drive comprising:

13. the storage area of ​​the host memory includes a first buffer storing the first information, a second buffer storing the first number of valid data, and a third buffer storing the second information; the write request further specifies a first address indicating the first buffer, a second address indicating the second buffer, and a third address indicating the third buffer; The controller Transferring the first information from the first buffer based on the first address; Transferring the first number of valid data from the second buffer based on the second address; configured to transfer the second information from the third buffer based on the third address; The storage drive of claim 12.

14. the second buffer includes a first number of storage areas in which the first number of valid data are respectively stored; the i-th valid data among the first number of valid data is data stored in the i-th logical address from the beginning of the plurality of logical addresses that is being used by the host, where i is an integer between 1 and the first number; the controller is configured to transfer the first number of valid data from the first number of storage areas, respectively; The storage drive of claim 13.

Citation Information

Patent Citations

  • Writing management of nonvolatile memory data

    JP2021006984A