Memory system and control method
US-2023087470-A1 · Mar 23, 2023 · US
US12147692B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-12147692-B2 |
| Application number | US-202318299354-A |
| Country | US |
| Kind code | B2 |
| Filing date | Apr 12, 2023 |
| Priority date | Apr 12, 2023 |
| Publication date | Nov 19, 2024 |
| Grant date | Nov 19, 2024 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
A technique consolidates data at multiple levels of granularity, the levels including a first level based on whole PLBs (physical large blocks) and a second level based on portions of donor PLBs. The technique further includes tracking PLBs in multiple PLB queues arranged based on storage utilization of the PLBs, and tracking PLB portions in multiple portion queues arranged based on storage utilization of the portions. When consolidating data to create a new PLB, a set of whole PLBs is selected, based on utilization, from the PLB queues, and a set of portions of donor PLBs is selected, based on utilization, from the portion queues. The selections are performed such that the total data size of the selected whole PLB(s) and the selected portion(s) fit within the new PLB.
Opening claim text (preview).
What is claimed is: 1. A method of consolidating data storage space, comprising: selecting a set of source PLBs (physical large blocks) from a plurality of PLB queues that track PLBs based on utilization; selecting a set of source-PLB portions from a plurality of PLB-portion queues that track PLB portions based on utilization, none of the selected set of PLB portions belonging to any PLB of the selected set of source PLBs; and copying data from the selected set of source PLBs and data from the selected set of source-PLB portions to a target PLB, wherein the method further comprises providing queue elements for representing respective PLBs, wherein a queue element represents a particular PLB and identifies its own location within the plurality of PLB queues. 2. The method of claim 1 , further comprising freeing the set of source PLBs. 3. The method of claim 2 , wherein each of the set of source-PLB portions belongs to a respective donor PLB, and wherein the method further comprises freeing the set of source-PLB portions in each respective donor PLB, such that each respective donor PLB become less utilized. 4. The method of claim 1 , wherein each PLB includes one or more PLB portions. 5. The method of claim 4 , wherein each PLB portion contains data referenced by one and only one respective VLB (virtual large block), and wherein each VLB provides block virtualization for the data in the respective PLB portion. 6. The method of claim 5 , wherein the plurality of PLB queues is provided for multiple ranges of PLB utilization, and wherein each of the plurality of PLB queues is provided for a single, respective range of PLB utilization. 7. The method of claim 6 , wherein the plurality of PLB-portion queues is provided for multiple ranges of VLB utilization, and wherein each of the plurality of PLB-portion queues is provided for a single, respective range of VLB utilization. 8. The method of claim 7 , wherein the ranges of VLB utilization are smaller than the ranges of PLB utilization. 9. The method of claim 7 , wherein each of the ranges of PLB utilization has a respective upper range limit, and wherein selecting the set of source PLBs includes choosing from a particular set of PLB queues such that a sum of the upper range limits of the particular set of PLB queues corresponds to a completely utilized PLB. 10. The method of claim 9 , wherein each of the ranges of VLB utilization has a respective upper range limit, and wherein the method further comprises: determining a measure of utilization of the set of source PLBs that is more accurate than the sum of the upper range limits; and determining a residual space based on a difference between a size of the target PLB and the more accurate measure of utilization, wherein selecting the set of source-PLB portions includes choosing a PLB portion from a PLB-portion queue having an upper range limit that does not exceed the residual space. 11. The method of claim 1 , wherein the queue element further identifies, for each VLB that references the particular PLB, its own location within the plurality of PLB-portion queues. 12. The method of claim 11 , further comprising providing a tracking structure that identifies a list of queue elements that represent PLBs contained within a particular storage extent, and wherein the queue element further identifies its own location in the list of queue elements. 13. The method of claim 12 , further comprising purging the particular storage extent from the tracking structure, wherein said purging includes, for each queue element in the list of queue elements, (i) removing the queue element from the plurality of PLB queues at the indicated location within the plurality of PLB queues and (ii) removing the queue element from the plurality of PLB-portion queues at the indicated location within the plurality of PLB-portion queues. 14. The method of claim 1 , wherein the PLB queues of the plurality of PLB queues cover respective ranges of PLB utilization, each of the ranges having an upper range limit, and wherein selecting the set of source PLBs from the plurality of PLB queues includes choosing PLBs only from PLB queues whose upper range limits do not exceed a threshold level, the threshold level calculated as a system average level of PLB utilization plus a margin that does not exceed 20%. 15. The method of claim 14 , further comprising populating the plurality of PLB queues with queue elements, including populating only those PLB queues that have upper range limits that do not exceed the threshold level. 16. A computerized apparatus, comprising control circuitry that includes a set of processors coupled to memory, the control circuitry constructed and arranged to: select a set of source PLBs (physical large blocks) from a plurality of PLB queues that track PLBs based on utilization; select a set of source-PLB portions from a plurality of PLB-portion queues that track PLB portions based on utilization, none of the selected set of PLB portions belonging to any PLB of the selected set of source PLBs; and copy data from the selected set of source PLBs and data from the selected set of source-PLB portions to a target PLB, wherein the control circuitry is further constructed and arranged to provide queue elements for representing respective PLBs, wherein a queue element represents a particular PLB and identifies its own location within the plurality of PLB queues. 17. A computer program product including a set of non-transitory, computer-readable media having instructions which, when executed by control circuitry of a computerized apparatus, cause the computerized apparatus to perform a method of consolidating data storage space, the method comprising: selecting a set of source PLBs (physical large blocks) from a plurality of PLB queues that track PLBs based on utilization; selecting a set of source-PLB portions from a plurality of PLB-portion queues that track PLB portions based on utilization, none of the selected set of PLB portions belonging to any PLB of the selected set of source PLBs; and copying data from the selected set of source PLBs and data from the selected set of source-PLB portions to a target PLB, wherein the method further comprises providing queue elements for representing respective PLBs, wherein a queue element represents a particular PLB and identifies its own location within the plurality of PLB queues. 18. The computer program product of claim 17 , wherein each PLB includes one or more PLB portions, wherein each PLB portion contains data referenced by one and only one respective VLB (virtual large block), and wherein each VLB provides block virtualization for the data in the respective PLB portion. 19. The computer program product of claim 18 , wherein the plurality of PLB queues is provided for multiple ranges of PLB utilization, wherein each of the plurality of PLB queues is provided for a single, respective range of PLB utilization, wherein the plurality of PLB-portion queues is provided for multiple ranges of VLB utilization, and wherein each of the plurality of PLB-portion queues is provided for a single, respective range of VLB utilization.
in block erasable memory, e.g. flash memory · CPC title
at area level, e.g. provisioning of virtual or logical volumes · CPC title
Saving storage space on storage systems · CPC title
Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS] · CPC title
Improving I/O performance · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.