IP Library › Granted Patent US 10,152,412
Granted Patent B2
US 10,152,412 · App. 14/794,107 · Granted Dec 11, 2018

Smart flash cache logger

Inventors: Selcuk Aya (San Carlos, CA); Jia Shi (Burlingame, CA); Kothanda Umamageswaran (Sunnyvale, CA); Juan Loaiza (Woodside, CA)
Assignee: Oracle International Corporation
G06F12/0246G06F12/0804G06F12/0871G06F2212/1016G06F2212/1024G06F2212/7208
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,152,412
App. No.
14/794,107
Granted
Dec 11, 2018
Kind
B2
Abstract

Techniques herein are for chaining nonvolatile storage devices to achieve high availability. A method involves a storage server receiving a write request to store data blocks in a first nonvolatile memory device. The storage server comprises a plurality of nonvolatile memory devices that cache data blocks stored on primary storage. The plurality of nonvolatile memory devices comprises the first nonvolatile memory device. The storage server maintains a cache index of data blocks that reside in the plurality of nonvolatile memory devices. Based on one or more criteria, the storage server reroutes the write request to a second nonvolatile memory device of the plurality of nonvolatile memory devices and stores an identifier of the second nonvolatile memory device in the cache index.

Claims (81)

1. A method comprising:

a storage server receiving a write request to store particular data blocks, wherein:

the storage server comprises a plurality of nonvolatile memory devices,

each nonvolatile memory device of the plurality of nonvolatile memory devices caches a plurality of data blocks that are or will be stored on primary storage consisting essentially of block storage devices,

the particular data blocks reside in a first nonvolatile memory device of the plurality of nonvolatile memory devices,

the storage server maintains a cache index of data blocks that reside in the plurality of nonvolatile memory devices, and

the cache index contains a first index entry that contains an identifier of the first nonvolatile memory device and an identifier of a specific data block of the particular data blocks;

detecting, responsive to receiving the write request, a status of the first nonvolatile memory device;

based on detecting the status of the first nonvolatile memory device, the storage server:

rerouting the write request to a second nonvolatile memory device of the plurality of nonvolatile memory devices,

inserting a second index entry that contains an identifier of the second nonvolatile memory device and said identifier of the specific data block, and

marking said first index entry as diverted;

removing said second index entry from the cache index;

marking said first index entry as not diverted.

2. The method of claim 1 wherein the second nonvolatile memory device comprises a write-back cache, wherein the write-back cache comprises a plurality of cache lines.

3. The method of claim 2 wherein each cache line of the plurality of cache lines is associated with a bitmap that indicates which portions of the each cache line are valid.

4. The method of claim 2 wherein a specific pattern residing in a portion of one of the plurality of cache lines indicates that the portion is invalid.

5. The method of claim 1 wherein based on the status of the first nonvolatile memory device comprises based on the write request being cancelled.

6. The method of claim 1 wherein the second nonvolatile memory device comprises a flash memory.

7. The method of claim 1 wherein the second nonvolatile memory device comprises one of: a ferroelectric random access memory (RAM), a magnetoresistive RAM, a phase change RAM, or a millipede memory.

8. The method of claim 1 further comprising based on metadata associated with cached blocks that reside in the plurality of nonvolatile memory devices, generating the cache index, wherein the metadata resides on one or more storage devices.

9. The method of claim 8 further comprising booting a plurality of storage computers in an ordering based on dependencies encoded within the metadata.

10. The method of claim 1 wherein based on the status of the first nonvolatile memory device comprises the write request times out when the storage server delivers the write request to the first nonvolatile memory device.

11. The method of claim 1 further comprising:

the storage server receiving a metadata write request to store metadata in a nonvolatile memory device;

based on one or more criteria, the storage server:

rerouting the metadata write request to a third nonvolatile memory device of the plurality of nonvolatile memory devices;

storing an identifier of the third nonvolatile memory device in the cache index.

12. One or more non-transitory computer readable media comprising instructions that when executed by one or more processors cause:

a storage server receiving a write request to store particular data blocks, wherein:

the storage server comprises a plurality of nonvolatile memory devices,

each nonvolatile memory device of the plurality of nonvolatile memory devices caches a plurality of data blocks that are or will be stored on primary storage consisting essentially of block storage devices,

the particular data blocks reside in a first nonvolatile memory device of the plurality of nonvolatile memory devices,

the storage server maintains a cache index of data blocks that reside in the plurality of nonvolatile memory devices, and

the cache index contains a first index entry that contains an identifier of the first nonvolatile memory device and an identifier of a specific data block of the particular data blocks;

detecting, responsive to receiving the write request, a status of the first nonvolatile memory device;

based on detecting the status of the first nonvolatile memory device, the storage server:

rerouting the write request to a second nonvolatile memory device of the plurality of nonvolatile memory devices,

inserting a second index entry that contains an identifier of the second nonvolatile memory device and said identifier of the specific data block, and

marking said first index entry as diverted;

removing said second index entry from the cache index;

marking said first index entry as not diverted.

13. The one or more non-transitory computer readable media of claim 12 wherein the second nonvolatile memory device comprises a write-back cache, wherein the write-back cache comprises a plurality of cache lines.

14. The one or more non-transitory computer readable media of claim 13 wherein each cache line of the plurality of cache lines is associated with a bitmap that indicates which portions of the each cache line are valid.

15. The one or more non-transitory computer readable media of claim 13 wherein a specific pattern residing in a portion of one of the plurality of cache lines indicates that the portion is invalid.

16. The one or more non-transitory computer readable media of claim 13 wherein based on the status of the first nonvolatile memory device comprises based on the write request being cancelled.

17. The one or more non-transitory computer readable media of claim 12 wherein the second nonvolatile memory device comprises one of: a flash memory, a ferroelectric random access memory (RAM), a magnetoresistive RAM, a phase change RAM, or a millipede memory.

18. A storage server comprising:

a primary storage configured to store data blocks;

a plurality of nonvolatile memory devices configured to cache data blocks that are stored on the primary storage; and

a processor, connected to the primary storage and the plurality of nonvolatile memory devices, wherein the processor is configured to:

receive a write request to store particular data blocks, wherein:

the storage server comprises a plurality of nonvolatile memory devices,

each nonvolatile memory device of the plurality of nonvolatile memory devices caches a plurality of data blocks that are or will be stored on primary storage consisting essentially of block storage devices,

the particular data blocks reside in a first nonvolatile memory device of the plurality of nonvolatile memory devices,

the storage server maintains a cache index of data blocks that reside in the plurality of nonvolatile memory devices, and

the cache index contains a first index entry that contains an identifier of the first nonvolatile memory device and an identifier of a specific data block of the particular data blocks;

detecting, responsive to receiving the write request, a status of the first nonvolatile memory device;

based on detecting the status of the first nonvolatile memory device, the storage server:

rerouting the write request to a second nonvolatile memory device of the plurality of nonvolatile memory devices,

inserting a second index entry that contains an identifier of the second nonvolatile memory device and said identifier of the specific data block, and

mark said first index entry as diverted;

removing said second index entry from the cache index;

marking said first index entry as not diverted.

19. The system of claim 18 wherein the second nonvolatile memory device comprises at least one of: a flash memory or a write-back cache, wherein the write-back cache comprises a plurality of cache lines.

20. The system of claim 18 wherein based on the status of the first nonvolatile memory device comprises based on the write request timing out when a processor delivers the write request to the first nonvolatile memory device.

21. The method of claim 1 further comprising:

the storage server receiving a read request to retrieve at least one data block of said particular data blocks;

accessing said first index entry and said second index entry to retrieve said at least one data block.

22. The method of claim 1 further comprising:

the storage server receiving a second write request to store said particular data blocks;

detecting, responsive to receiving the second write request, a second status of the second nonvolatile memory device;

based on detecting the second status of the second nonvolatile memory device, the storage server:

rerouting the second write request to a third nonvolatile memory device of the plurality of nonvolatile memory devices; and

for each data block of the particular data blocks:

inserting a third index entry that contains an identifier of the third nonvolatile memory device and an identifier of the data block in the cache index, and

marking, as diverted to the third nonvolatile memory device, said second index entry in the cache index.

23. The method of claim 1 further comprising:

the storage server receiving a read request to retrieve a specific data block of said particular data blocks;

retrieving a first portion of said specific data block from said first nonvolatile memory device;

retrieving a second portion of said specific data block from said second nonvolatile memory device.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 8, 2015
From: AYA, SELCUK; SHI, JIA; UMAMAGESWARAN, KOTHANDA; LOAIZA, JUAN
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 036027/0171 →
Continuity (2)
Provisional Application 62054262 · Sep 23, 2014
Related Publication 20160085681A1 · Mar 24, 2016