IP Library Granted Patent US 9,588,691
Granted Patent B2
US 9,588,691 · App. 14/736,240 · Granted Mar 7, 2017

Dynamically managing control information in a storage device

Inventor: Eric D. Seppanen (Mountain View, CA)
Assignee: Pure Storage, Inc.
G06F3/0605G06F3/0665G06F3/0689G06F11/1076
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 9,588,691
App. No.
14/736,240
Granted
Mar 7, 2017
Kind
B2
Abstract

Dynamically managing control information in a storage device, including: querying, by an array management module executing on a storage array controller, the storage device for a location of control information for the storage device, the control information describing the state of one or more memory blocks in the storage device; and issuing, by the array management module in dependence upon the location of the control information for the storage device, a request to retrieve the control information for the storage device.

Claims (48)

1. A method of dynamically managing control information in a plurality of storage devices in a storage array of storage devices, the method comprising:

querying, by a storage array controller using a data communications link coupling the storage array controller to the plurality of storage devices, the plurality of storage devices for an identification of a plurality of memory blocks that contain control information stored within the memory blocks, the control information describing the state of other memory blocks in the storage device, wherein querying the plurality of storage devices for an identification of a plurality of memory blocks that contain control information stored within the memory blocks comprises:

sending, from the storage array controller to at least one of the plurality of storage devices, a location discovery request instructing the at least one of the plurality of storage devices to determine locations of the control information stored on the at least one of the plurality of storage devices

wherein the control information is distributed across multiple memory blocks in the at least one of the plurality of storage devices, and

wherein the locations of the control information on the at least one of the plurality of storage devices are unknown to the storage array controller;

receiving, by the storage array controller from each of the plurality of storage devices, the identification of the plurality of memory blocks that contain control information stored within the memory blocks; and

issuing, by the storage array controller to the each of the plurality of storage devices, one or more read requests addressed to the memory blocks identified as containing control information stored within the memory blocks.

2. The method of claim 1 wherein:

the plurality of storage devices include control information of a plurality of types; and

querying the plurality of storage devices for an identification of a plurality of memory blocks that contain control information stored within the memory blocks further comprises querying the plurality of storage devices for an identification of a plurality of memory blocks that contain control information-of a predetermined type.

3. The method of claim 1 wherein querying the plurality of storage devices for an identification of a plurality of memory blocks that contain control information stored within the memory blocks occurs during start-up of the storage array controller.

4. The method of claim 1 further comprising:

receiving, by the array management module, an alert condition for a memory block in one or more of the plurality of storage devices; and

issuing a request to update the control information stored within one or more of the plurality of storage devices.

5. The method of claim 1 wherein the control information comprises at least one from a group consisting of an indication that a particular memory block has failed and should no longer be written to, an indication that a particular memory block contains boot code for a storage array controller, a number of program-erase cycles that have been performed on a particular memory block, an age of data stored in a particular memory block, and a type of data that is stored in a particular memory block.

6. The method of claim 1 wherein a particular memory block that contains control information is tagged with an identifier indicating that the memory block contains control information.

7. An apparatus for dynamically managing control information in a plurality of storage devices in a storage array of storage devices, the apparatus comprising a computer processor, a computer memory operatively coupled to the computer processor, the computer memory having disposed within it computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of:

querying, by a storage array controller using a data communications link coupling the storage array controller to the plurality of storage devices, the plurality of storage devices for an identification of a plurality of memory blocks that contain control information stored within the memory blocks, the control information describing the state of other memory blocks in the storage device, wherein querying the plurality of storage devices for an identification of a plurality of memory blocks that contain control information stored within the memory blocks comprises:

sending, from the storage array controller to at least one of the plurality of storage devices, a location discovery request instructing the at least one of the plurality of storage devices to determine locations of the control information stored on the at least one of the plurality of storage devices

wherein the control information is distributed across multiple memory blocks in the at least one of the plurality of storage devices, and

wherein the locations of the control information on the at least one of the plurality of storage devices are unknown to the storage array controller:

receiving, by the storage array controller from each of the plurality of storage devices, the identification of the plurality of memory blocks that contain control information stored within the memory blocks; and

issuing, by the storage array controller to the each of the plurality of storage devices, one or more read requests addressed to the memory blocks identified as containing control information stored within the memory blocks.

8. The apparatus of claim 7 wherein:

the plurality of storage devices include control information of a plurality of types; and

querying the plurality of storage devices for an identification of a plurality of memory blocks that contain control information stored within the memory blocks further comprises querying the plurality of storage devices for an identification of a plurality of memory blocks that contain control information-of a predetermined type.

9. The apparatus of claim 7 wherein querying the plurality of storage devices for an identification of a plurality of memory blocks that contain control information stored within the memory blocks-occurs during start-up of the storage array controller.

10. The apparatus of claim 7 further comprising computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the step of:

receiving, by the array management module, an alert condition for a memory block in one or more of the plurality of storage devices; and

issuing a request to update the control information stored within one or more of the plurality of storage devices.

11. The apparatus of claim 7 wherein the control information comprises at least one from a group consisting of an indication that a particular memory block has failed and should no longer be written to, an indication that a particular memory block contains boot code for a storage array controller, a number of program-erase cycles that have been performed on a particular memory block, an age of data stored in a particular memory block, and a type of data that is stored in a particular memory block.

12. The apparatus of claim 7 wherein a particular memory block is tagged with an identifier indicating that the memory block contains control information.

13. A computer program product for dynamically managing

control information in a plurality of storage devices in a storage array of storage devices, the computer program product disposed upon a non-transitory computer readable medium, the computer program product comprising computer program instructions that, when executed, cause a computer to carry out the steps of:

querying, by a storage array controller using a data communications link coupling the storage array controller to the plurality of storage devices, the plurality of storage devices for an identification of a plurality of memory blocks that contain control information stored within the memory blocks, the control information describing the state of other memory blocks in the storage device, wherein querying the plurality of storage devices for an identification of a plurality of memory blocks that contain control information stored within the memory blocks comprises:

sending, from the storage array controller to at least one of the plurality of storage devices, a location discovery request instructing the at least one of the plurality of storage devices to determine locations of the control information stored on the at least one of the plurality of storage devices

wherein the control information is distributed across multiple memory blocks in the at least one of the plurality of storage devices, and

wherein the locations of the control information on the at least one of the plurality of storage devices are unknown to the storage array controller:

receiving, by the storage array controller from each of the plurality of storage devices, the identification of the plurality of memory blocks that contain control information stored within the memory blocks; and

issuing, by the storage array controller to the each of the plurality of storage devices, one or more read requests addressed to the memory blocks identified as containing control information stored within the memory blocks.

14. The computer program product of claim 13 wherein:

the plurality of storage devices include control information of a plurality of types; and

querying the plurality of storage devices for an identification of a plurality of memory blocks that contain control information stored within the memory blocks further comprises querying the plurality of storage devices for an identification of a plurality of memory blocks that contain control information-of a predetermined type.

15. The computer program product of claim 13 wherein querying the plurality of storage devices for an identification of a plurality of memory blocks that contain control information stored within the memory blocks occurs during start-up of the storage array controller.

16. The computer program product of claim 13 further comprising computer program instructions that, when executed, cause the computer to carry out the step of:

receiving, by the array management module, an alert condition for a memory block in one or more of the plurality of storage devices; and

issuing a request to update the control information stored within one or more of the plurality of storage devices.

17. The computer program product of claim 13 wherein the control information comprises at least one from a group consisting of an indication that a particular memory block has failed and should no longer be written to, an indication that a particular memory block contains boot code for a storage array controller, a number of program-erase cycles that have been performed on a particular memory block, an age of data stored in a particular memory block, and a type of data that is stored in a particular memory block.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 10, 2015
From: SEPPANEN, ERIC D.
To: PURE STORAGE, INC.
Reel/Frame 035819/0466 →
Continuity (1)
Related Publication 20160364151A1 · Dec 15, 2016