Cache management including solid state device virtualization
First Claim
1. A method of caching data in a computer system having one or more processors, memory storing one or more storage management programs for execution by the one or more processors, non-volatile cache memory, and an interface to a non-volatile secondary storage, the method comprising:
- identifying two or more write requests to write data, wherein each write request of the two or more identified write requests includes an address or storage offset in the non-volatile secondary storage and write data;
sequentially writing the write data for the two or more identified write requests to sequential locations in the non-volatile cache memory; and
storing metadata, in the memory of the computer system, that maps the addresses or storage offsets in the non-volatile secondary storage for the write data corresponding to the two or more identified write requests to the sequential locations in the non-volatile cache memory;
wherein the memory of the computer system is distinct from the non-volatile secondary storage and distinct from the non-volatile cache memory, and the non-volatile secondary storage is distinct from the non-volatile cache memory,the method further comprising;
maintaining, at the computer system, a write pointer corresponding to a boundary of an unused region of the non-volatile cache memory, a clean pointer corresponding to a boundary of a clean region of the non-volatile cache memory, the clean region storing data that has been flushed to the non-volatile secondary storage and that can be read from the non-volatile cache memory by the computer system, and a flush pointer corresponding to a boundary between the clean region and a dirty region of the non-volatile cache memory, the dirty region storing data that has not been flushed to the non-volatile secondary storage and that can be read from the non-volatile cache memory by the computer system, wherein the, write, clean, and flush pointers identify distinct locations in the non-volatile cache memory; and
wherein maintaining the write pointer includes advancing the write pointer as write data is sequentially written to the non-volatile cache memory,the method further including;
receiving information identifying an amount of available storage in the non-volatile cache memory and information identifying a size of the address space of the non-volatile cache memory and an amount of said address space corresponding to unavailable management units in the non-volatile cache memory;
whereinthe size of said address space of the non-volatile cache memory remains fixed throughout performance of the method; and
said maintaining further comprises maintaining said pointers so as to maintain said unused region at a size that is greater than an amount of said address space corresponding to unavailable management units in the non-volatile cache memory.
3 Assignments
0 Petitions
Accused Products
Abstract
A method of caching data is performed by a respective computer having one or more processors storing one or more storage management programs for execution by the one or more processors, non-volatile secondary storage and non-volatile cache memory. The method includes receiving from the non-volatile cache memory information identifying an amount of available storage in the non-volatile cache memory, and identifying a size of the management units in the non-volatile cache memory. The method further includes identifying write requests to write data to the non-volatile cache memory, sequentially writing to the non-volatile cache memory the write data for the identified write requests, to sequentially arranged locations in an address space of the non-volatile cache memory, and storing in memory metadata that maps the addresses or storage offsets of the write data to respective locations in the address space of the non-volatile cache memory.
50 Citations
17 Claims
-
1. A method of caching data in a computer system having one or more processors, memory storing one or more storage management programs for execution by the one or more processors, non-volatile cache memory, and an interface to a non-volatile secondary storage, the method comprising:
-
identifying two or more write requests to write data, wherein each write request of the two or more identified write requests includes an address or storage offset in the non-volatile secondary storage and write data; sequentially writing the write data for the two or more identified write requests to sequential locations in the non-volatile cache memory; and storing metadata, in the memory of the computer system, that maps the addresses or storage offsets in the non-volatile secondary storage for the write data corresponding to the two or more identified write requests to the sequential locations in the non-volatile cache memory; wherein the memory of the computer system is distinct from the non-volatile secondary storage and distinct from the non-volatile cache memory, and the non-volatile secondary storage is distinct from the non-volatile cache memory, the method further comprising; maintaining, at the computer system, a write pointer corresponding to a boundary of an unused region of the non-volatile cache memory, a clean pointer corresponding to a boundary of a clean region of the non-volatile cache memory, the clean region storing data that has been flushed to the non-volatile secondary storage and that can be read from the non-volatile cache memory by the computer system, and a flush pointer corresponding to a boundary between the clean region and a dirty region of the non-volatile cache memory, the dirty region storing data that has not been flushed to the non-volatile secondary storage and that can be read from the non-volatile cache memory by the computer system, wherein the, write, clean, and flush pointers identify distinct locations in the non-volatile cache memory; and wherein maintaining the write pointer includes advancing the write pointer as write data is sequentially written to the non-volatile cache memory, the method further including; receiving information identifying an amount of available storage in the non-volatile cache memory and information identifying a size of the address space of the non-volatile cache memory and an amount of said address space corresponding to unavailable management units in the non-volatile cache memory; wherein the size of said address space of the non-volatile cache memory remains fixed throughout performance of the method; and said maintaining further comprises maintaining said pointers so as to maintain said unused region at a size that is greater than an amount of said address space corresponding to unavailable management units in the non-volatile cache memory. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A computer system, comprising:
-
memory storing one or more programs, the one or more programs including one or more storage management programs; one or more processors for executing instructions in the one or more programs stored in memory; an interface to non-volatile secondary storage; and non-volatile cache memory, the non-volatile cache memory including a controller responsive to commands sent by the one or more processors of the computer system; the one or more storage management programs comprising instructions that, when executed by the one or more processors, cause the computer system to; identify two or more write requests to write data, wherein each write request of the two or more identified write requests includes an address or storage offset in the non-volatile secondary storage and write data; sequentially write the write data for the two or more identified write requests to sequential locations in the non-volatile cache memory; and store metadata, in the memory of the computer system, that maps the addresses or storage offsets in the non-volatile secondary storage for the write data corresponding to the two or more identified write requests to the sequential locations in the non-volatile cache memory; wherein the memory of the computer system is distinct from the non-volatile secondary storage and distinct from the non-volatile cache memory, and the non-volatile secondary storage is distinct from the non-volatile cache memory, the one or more storage management programs further comprising instructions that, when executed by the one or more processors, cause the computer system to; maintain, at the computer system, a write pointer corresponding to a boundary of an unused region of the non-volatile cache memory, a clean pointer corresponding to a boundary of a clean region of the non-volatile cache memory, the clean region storing data that has been flushed to the non-volatile secondary storage and that can be read from the non-volatile cache memory by the computer system, and a flush pointer corresponding to a boundary between the clean region and a dirty region of the non-volatile cache memory, the dirty region storing data that has not been flushed to the non-volatile secondary storage and that can be read from the non-volatile cache memory by the computer system, wherein the, write, clean, and flush pointers identify distinct locations in the non-volatile cache memory; and wherein maintaining the write pointer includes advancing the write pointer as write data is sequentially written to the non-volatile cache memory, the one or more storage management programs further including instructions that, when executed by the one or more processors, cause the computer system to receive information identifying an amount of available storage in the non-volatile cache memory and information identifying a size of the address space of the non-volatile cache memory and an amount of said address space corresponding to unavailable management units in the non-volatile cache memory; wherein the size of said address space of the non-volatile cache memory remains fixed; and said maintaining further comprises maintaining said pointers so as to maintain said unused region at a size that is greater than an amount of said address space corresponding to unavailable management units in the non-volatile cache memory. - View Dependent Claims (13, 14)
-
-
15. A non-volatile computer readable storage medium storing one or more storage management programs comprising instructions that, when executed by one or more processors of a computer system that includes the one or more processors, non-volatile secondary storage and non-volatile cache memory, the non-volatile cache memory including a controller responsive to commands sent by the one or more processors of the computer system, cause the computer system to:
-
identify two or more write requests to write data, wherein each write request of the two or more identified write requests includes an address or storage offset in the non-volatile secondary storage and write data; sequentially write the write data for the two or more identified write requests to sequential locations in the non-volatile cache memory; and store metadata, in the memory of the computer system, that maps the addresses or storage offsets in the non-volatile secondary storage for the write data corresponding to the two or more identified write requests to the sequential locations in the non-volatile cache memory; wherein the memory of the computer system is distinct from the non-volatile secondary storage and distinct from the non-volatile cache memory, and the non-volatile secondary storage is distinct from the non-volatile cache memory, the one or more storage management programs further comprising instructions that, when executed by the one or more processors, cause the computer system to; maintain, at the computer system, a write pointer corresponding to a boundary of an unused region of the non-volatile cache memory, a clean pointer corresponding to a boundary of a clean region of the non-volatile cache memory, the clean region storing data that has been flushed to the non-volatile secondary storage and that can be read from the non-volatile cache memory by the computer system, and a flush pointer corresponding to a boundary between the clean region and a dirty region of the non-volatile cache memory, the dirty region storing data that has not been flushed to the non-volatile secondary storage and that can be read from the non-volatile cache memory by the computer system, wherein the, write, clean, and flush pointers identify distinct locations in the non-volatile cache memory; and wherein maintaining the write pointer includes advancing the write pointer as write data is sequentially written to the non-volatile cache memory, the one or more storage management programs further including instructions that, when executed by the one or more processors, cause the computer system to receive information identifying an amount of available storage in the non-volatile cache memory and information identifying a size of the address space of the non-volatile cache memory and an amount of said address space corresponding to unavailable management units in the non-volatile cache memory; wherein the size of said address space of the non-volatile cache memory remains fixed; and said maintaining further comprises maintaining said pointers so as to maintain said unused region at a size that is greater than an amount of said address space corresponding to unavailable management units in the non-volatile cache memory. - View Dependent Claims (16, 17)
-
Specification