Method and system for rebalancing data stored in flash memory devices
First Claim
1. A method of managing a storage system that comprises a storage controller and a plurality of flash memory devices, each with a plurality of flash memory blocks, the method comprising:
- at the storage controller;
assigning a weight to each of the plurality of flash memory devices for a distribution algorithm, wherein each of the plurality of flash memory devices has a plurality of logical chunks, each logical chunk including one or more flash memory blocks, and wherein the weight is based on at least a number of available logical chunks for the respective flash memory device, the available logical chunks for the respective flash memory device including logical chunks that already store data and logical chunks able to store new data;
storing data in the plurality of logical chunks of the plurality of flash memory devices in accordance with the distribution algorithm;
detecting a predefined trigger condition with respect to a respective flash memory device of the plurality of flash memory devices; and
in response to detecting the predefined trigger condition;
decreasing the weight corresponding to the respective flash memory device, the decreased weight corresponding to a decreased number of the available logical chunks for the respective flash memory device;
updating the distribution algorithm to reflect the decreased weight of the respective flash memory device; and
rebalancing data stored in the plurality of flash memory devices in accordance with the updated distribution algorithm.
2 Assignments
0 Petitions
Accused Products
Abstract
The embodiments described herein include systems, methods and/or devices that may enhance the endurance of a storage system including a storage medium. The method includes: dividing a plurality of flash memory devices into logical chunks each logical chunk including one or more flash memory blocks; assigning a weight to each of the flash memory devices for a distribution algorithm, where the weight is based on at least a number of available logical chunks; and storing data in the logical chunks in accordance with the distribution algorithm. The method includes detecting a trigger condition for a respective flash memory device. In response to detecting the trigger condition, the method includes: decreasing the weight of the respective flash memory device; updating the distribution algorithm to reflect the decreased weight of the respective flash memory device; and rebalancing data stored in the plurality of flash memory devices in accordance with the updated distribution algorithm.
-
Citations
24 Claims
-
1. A method of managing a storage system that comprises a storage controller and a plurality of flash memory devices, each with a plurality of flash memory blocks, the method comprising:
at the storage controller; assigning a weight to each of the plurality of flash memory devices for a distribution algorithm, wherein each of the plurality of flash memory devices has a plurality of logical chunks, each logical chunk including one or more flash memory blocks, and wherein the weight is based on at least a number of available logical chunks for the respective flash memory device, the available logical chunks for the respective flash memory device including logical chunks that already store data and logical chunks able to store new data; storing data in the plurality of logical chunks of the plurality of flash memory devices in accordance with the distribution algorithm; detecting a predefined trigger condition with respect to a respective flash memory device of the plurality of flash memory devices; and in response to detecting the predefined trigger condition; decreasing the weight corresponding to the respective flash memory device, the decreased weight corresponding to a decreased number of the available logical chunks for the respective flash memory device; updating the distribution algorithm to reflect the decreased weight of the respective flash memory device; and rebalancing data stored in the plurality of flash memory devices in accordance with the updated distribution algorithm. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
13. A storage controller, comprising:
-
one or more processors; a host interface configured to couple the storage controller to a host; a storage medium interface configured to couple the storage controller to a storage medium including a plurality of flash memory devices, each with a plurality of flash memory blocks; a storage controller memory storing instructions, which, when executed by the one or more processors, causes the storage controller to perform operations comprising; assigning a weight to each of the plurality of flash memory devices for a distribution algorithm, wherein each of the plurality of flash memory devices has a plurality of logical chunks, each logical chunk including one or more flash memory blocks, and wherein the weight is based on at least a number of available logical chunks for the respective flash memory device, the available logical chunks for the respective flash memory device including logical chunks that already store data and logical chunks able to store new data; storing data in the plurality of logical chunks of the plurality of flash memory devices in accordance with the distribution algorithm; detecting a predefined trigger condition with respect to a respective flash memory device of the plurality of flash memory devices; and in response to detecting the predefined trigger condition; decreasing the weight corresponding to the respective flash memory device, the decreased weight corresponding to a decreased number of the available logical chunks for the respective flash memory device; updating the distribution algorithm to reflect the decreased weight of the respective flash memory device; and rebalancing data stored in the plurality of flash memory devices in accordance with the updated distribution algorithm. - View Dependent Claims (14, 15, 16, 17, 18)
-
-
19. A non-transitory computer readable storage medium, storing one or more programs for execution by one or more processors of a storage controller coupled to a storage medium including a plurality of flash memory devices, wherein each flash memory device includes a plurality of flash memory blocks, the one or more programs including instructions that when executed by the one or more processors cause the storage controller to:
-
assign a weight to each of the plurality of flash memory devices for a distribution algorithm, wherein each of the plurality of flash memory devices has a plurality of logical chunks, each logical chunk including one or more flash memory blocks, and wherein the weight is based on at least a number of available logical chunks for the respective flash memory device, the available logical chunks for the respective flash memory device including logical chunks that already store data and logical chunks able to store new data; store data in the plurality of logical chunks of the plurality of flash memory devices in accordance with the distribution algorithm; detect a predefined trigger condition with respect to a respective flash memory device of the plurality of flash memory devices; and in response to detecting the predefined trigger condition; decrease the weight corresponding to the respective flash memory device, the decreased weight corresponding to a decreased number of the available logical chunks for the respective flash memory device; update the distribution algorithm to reflect the decreased weight of the respective flash memory device; and rebalance data stored in the plurality of flash memory devices in accordance with the updated distribution algorithm. - View Dependent Claims (20, 21, 22, 23, 24)
-
Specification