Efficient implementation of optimized host-based garbage collection strategies using xcopy and multiple logical stripes
First Claim
1. A method of managing a storage system having a plurality of storage devices, the method comprising:
- at a host system that is distinct from the plurality of storage devices, performing a host-based garbage collection operation, comprising;
identifying, in accordance with data storage information stored at the host system, one or more logical stripes, whereineach logical stripe of the one or more logical stripes is a distinct contiguous sequence of logical addresses in a logical address space of the host system,each logical stripe includes two or more contiguous sequences of valid logical addresses, which are separated from each other by one or more gaps,a size of each logical stripe is a same predetermined size, andlogical addresses for each logical stripe in the logical address space of the host system are mapped to physical addresses in a physical address space of the plurality of storage devices by mapping information in the plurality of storage devices; and
in accordance with the identifying, for each logical stripe of the one or more logical stripes, coalescing valid data, including;
for at least one contiguous sequence of valid logical addresses of the group of two or more contiguous sequences of valid logical addresses, in a logical stripe in the logical address space of the host system, sending instructions from the host system to one or more storage devices of the plurality of storage devices to move valid data corresponding to a first contiguous sequence of valid logical addresses from a first physical location in the physical address space to a second physical location in the physical address space; and
for each respective logical stripe of the one or more logical stripes, repacking the two or more contiguous sequences of valid logical addresses, in the respective logical stripe in the logical address space of the host system, to a single contiguous set of logical addresses in a contiguous portion of a corresponding target logical stripe, in the logical address space of the host system, the corresponding target logical stripe comprising the respective logical stripe or another logical stripe distinct from the respective logical stripe, wherein the other logical stripe is a second contiguous sequence of logical addresses in the logical address space of the host system distinct from the first contiguous sequence of logical addresses in the logical address space of the host system.
1 Assignment
0 Petitions
Accused Products
Abstract
Systems, methods and/or devices are used for efficient implementation of optimized host-based garbage collection strategies using xcopy and arrays of flash devices. In one aspect, a method of managing a storage system having one or more storage devices includes a host-based garbage collection operation that includes identifying two or more logical stripes in accordance with data storage information stored at the host system, and enabling a process of coalescing valid data in the two or more logical stripes. Further, the use of an internal copy operation (e.g., xcopy), allows the host-based garbage collection operation to occur without transferring data back to the host, thus minimizing the number of I/O operations between the host and storage devices. Additionally, use of the host-based garbage collection operation allows more sophisticated garbage collection algorithms (e.g., matching the current workload) to be used, and ensures that multiple logical stripes are available to write data.
52 Citations
26 Claims
-
1. A method of managing a storage system having a plurality of storage devices, the method comprising:
at a host system that is distinct from the plurality of storage devices, performing a host-based garbage collection operation, comprising; identifying, in accordance with data storage information stored at the host system, one or more logical stripes, wherein each logical stripe of the one or more logical stripes is a distinct contiguous sequence of logical addresses in a logical address space of the host system, each logical stripe includes two or more contiguous sequences of valid logical addresses, which are separated from each other by one or more gaps, a size of each logical stripe is a same predetermined size, and logical addresses for each logical stripe in the logical address space of the host system are mapped to physical addresses in a physical address space of the plurality of storage devices by mapping information in the plurality of storage devices; and in accordance with the identifying, for each logical stripe of the one or more logical stripes, coalescing valid data, including; for at least one contiguous sequence of valid logical addresses of the group of two or more contiguous sequences of valid logical addresses, in a logical stripe in the logical address space of the host system, sending instructions from the host system to one or more storage devices of the plurality of storage devices to move valid data corresponding to a first contiguous sequence of valid logical addresses from a first physical location in the physical address space to a second physical location in the physical address space; and for each respective logical stripe of the one or more logical stripes, repacking the two or more contiguous sequences of valid logical addresses, in the respective logical stripe in the logical address space of the host system, to a single contiguous set of logical addresses in a contiguous portion of a corresponding target logical stripe, in the logical address space of the host system, the corresponding target logical stripe comprising the respective logical stripe or another logical stripe distinct from the respective logical stripe, wherein the other logical stripe is a second contiguous sequence of logical addresses in the logical address space of the host system distinct from the first contiguous sequence of logical addresses in the logical address space of the host system. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
-
20. A host system, comprising:
-
an interface for operatively coupling to a storage system having a plurality of storage devices; one or more processors; and memory storing one or more programs, which when executed by the one or more processors cause the host system that is distinct from the plurality of storage devices to perform a host-based garbage collection operation comprising; identifying, in accordance with data storage information stored at the host system, one or more logical stripes, wherein each logical stripe of the one or more logical stripes is a distinct contiguous sequence of logical addresses in a logical address space of the host system, each logical stripe includes two or more contiguous sequences of valid logical addresses, which are separated from each other by one or more gaps, a size of each logical stripe is a same predetermined size, and logical addresses for each logical stripe in the logical address space of the host system are mapped to physical addresses in a physical address space of the plurality of storage devices by mapping information in the plurality of storage devices; and in accordance with the identifying, for each logical stripe of the one or more logical stripes, coalescing valid data, including; for at least one contiguous sequence of valid logical addresses of the group of two or more contiguous sequences of valid logical addresses, in a logical stripe in the logical address space of the host system, sending instructions from the host system to one or more storage devices of the plurality of storage devices to move valid data corresponding to a first contiguous sequence of valid logical addresses from a first physical location in the physical address space to a second physical location in the physical address space; and for each respective logical stripe of the one or more logical stripes, repacking the two or more contiguous sequences of valid logical addresses, in the respective logical stripe in the logical address space of the host system, to a single contiguous set of logical addresses in a contiguous portion of a corresponding target logical stripe, in the logical address space of the host system, the corresponding target logical stripe comprising the respective logical stripe or another logical stripe distinct from the respective logical stripe, wherein the other logical stripe is a second contiguous sequence of logical addresses in the logical address space of the host system distinct from the first contiguous sequence of logical addresses in the logical address space of the host system. - View Dependent Claims (21, 22)
-
-
23. A non-transitory computer readable storage medium, storing one or more programs configured for execution by one or more processors of a host system that is distinct from a plurality of storage devices in a storage system, the one or more programs including instructions that when executed by the one or more processors cause the host system to perform a host-based garbage collection operation, including:
-
identifying, in accordance with data storage information stored at the host system, one or more logical stripes, wherein each logical stripe is a distinct contiguous sequence of logical addresses in the logical address space of the host system, each logical stripe includes two or more contiguous sequences of valid logical addresses, which are separated from each other by one or more gaps, a size of each logical stripe of the one or more logical stripes is a same predetermined size, and logical addresses for each logical stripe in the logical address space of the host system are mapped to physical addresses in a physical address space of the plurality of storage devices by mapping information in the plurality of storage devices; and in accordance with the identifying, for each logical stripe in the one or more logical stripes, coalescing valid, including; for at least one contiguous sequence of valid logical addresses of the group of two or more contiguous sequences of valid logical addresses, in a logical stripe in the logical address space of the host system, sending instructions from the host system to one or more storage devices of the plurality of storage devices to move valid data corresponding to a first contiguous sequence of valid logical addresses from a first physical location in the physical address space to a second physical location in the physical address space; and for each respective logical stripe of the one or more logical stripes, repacking the two or more contiguous sequences of valid logical addresses, in the respective logical stripe in the logical address space of the host system, to a single contiguous set of logical addresses in a contiguous portion of a corresponding target logical stripe, in the logical address space of the host system, the corresponding target logical stripe comprising the respective logical stripe or another logical stripe distinct from the respective logical stripe, wherein the other logical stripe is a second contiguous sequence of logical addresses in the logical address space of the host system distinct from the first contiguous sequence of logical addresses in the logical address space of the host system. - View Dependent Claims (24)
-
-
25. A storage system, comprising:
-
a plurality of storage devices; one or more subsystems having one or more processors; and memory storing one or more programs, which when executed by the one or more processors cause the one or more subsystems to perform operations comprising; at a host system that is distinct from the plurality of storage devices, performing a host-based garbage collection operation, comprising; identifying, in accordance with data storage information stored at the host system, one or more logical stripes, wherein each logical stripe is a distinct contiguous sequence of logical addresses in a logical address space of the host system, each logical stripe includes two or more contiguous sequences of valid logical addresses, which are separated from each other by one or more gaps, a size of each logical stripe of the one or more logical stripes is a same predetermined size, and logical addresses for each logical stripe in the logical address space of the host system are mapped to physical addresses in a physical address space of the plurality of storage devices by mapping information in the plurality of storage devices; and in accordance with the identifying, for each logical stripe in the one or more logical stripes, coalescing valid data, including; for at least one contiguous sequence of valid logical addresses of the group of two or more contiguous sequences of valid logical addresses, in a logical stripe in the logical address space of the host system, sending instructions from the host system to one or more storage devices of the plurality of storage devices to move valid data corresponding to a first contiguous sequence of valid logical addresses from a first physical location in the physical address space to a second physical location in the physical address space; and for each respective logical stripe of the one or more logical stripes, repacking the two or more contiguous sequences of valid logical addresses, in the respective logical stripe in the logical address space of the host system, to a single contiguous set of logical addresses in a contiguous portion of a corresponding target logical stripe, in the logical address space of the host system, the corresponding target logical stripe comprising the respective logical stripe or another logical stripe distinct from the respective logical stripe, wherein the other logical stripe is a second contiguous sequence of logical addresses in the logical address space of the host system distinct from the first contiguous sequence of logical addresses in the logical address space of the host system. - View Dependent Claims (26)
-
Specification