Optimizing block allocation in a data storage system
One or more performance parameters associated with data stored at a storage device of a plurality of storage devices are received by a storage controller. A first number of blocks of the storage device to a high resiliency portion and a second number of blocks of the storage device to a low resiliency portion of the storage device are allocated based on the one or more performance parameters.
1. A system comprising:
a plurality of storage devices; and
a storage controller operatively coupled to the plurality of storage devices, the storage controller comprising a processing device, the processing device configured to:
determine program/erase cycle values, based on program/erase cycles for a plurality of programming modes, for blocks of a storage device of the plurality of storage devices; and
allocate a first number of blocks of the storage device to a first portion of the storage device and a second number of blocks of the storage device to a second portion of the storage device based on the program/erase cycle values.
2. The system of claim 1 , wherein the plurality of programming modes comprises single level cell (SLC) mode and at least one additional programming mode.
3. The system of claim 1 , wherein data programmed to the first portion is programmed using the single-level cell (SLC) mode and data programmed to the second portion is programmed using a quad-level cell (QLC) mode.
4. The system of claim 1 , wherein the first portion of the storage device has a higher resiliency than the second portion of the storage device.
5. The system of claim 1 , wherein the processing device is further to:
receive one or more performance parameters associated with data stored at the storage device of the plurality of storage devices, wherein the first number of blocks is allocated further based on the one or more performance parameters.
6. The system of claim 5 , wherein the processing device is further to:
modify the first number of blocks allocated to the first portion and the second number of blocks allocated to the first portion upon receiving a modification to the one or more performance parameters.
7. The system of claim 1 , wherein the processing device is further to:
allocate one or more blocks of the storage device to the first portion of the storage device upon determining that a number of program/erase cycles to program data to the one or more blocks exceeds a threshold.
8. The system of claim 1 , wherein the processing device is further to:
rotate which blocks of the storage device are allocated to the first portion and the second portion based on a number of program/erase cycles performed on each of the blocks.
9. The method of claim 1 , wherein data programmed to the first portion is programmed using the single-level cell (SLC) mode and data programmed to the second portion is programmed using a quad-level cell (QLC) mode.
10. A method, comprising:
determining program/erase cycle values, based on program/erase cycles for a plurality of programming modes, for blocks of a storage device of a plurality of storage devices; and
allocating a first number of blocks of the storage device to a first portion of the storage device and a second number of blocks of the storage device to a second portion of the storage device based on the program/erase cycle values.
11. The method of claim 10 , wherein data programmed to the first portion is programmed using the single-level cell (SLC) mode and data programmed to the second portion is programmed using a quad-level cell (QLC) mode.
12. The method of claim 10 , wherein the first portion of the storage device has a higher resiliency than the second portion of the storage device.
13. The method of claim 10 , further comprising:
receiving one or more performance parameters associated with data stored at the storage device of the plurality of storage devices, wherein the first number of blocks is allocated further based on the one or more performance parameters.
14. The method of claim 13 , further comprising:
modifying the first number of blocks allocated to the first portion and the second number of blocks allocated to the first portion upon receiving a modification to the one or more performance parameters.
15. The method of claim 10 , further comprising:
allocating one or more blocks of the storage device to the first portion of the storage device upon determining that a number of program/erase cycles to program data to the one or more blocks exceeds a threshold.
16. The method of claim 10 , further comprising:
rotating which blocks of the storage device are allocated to the first portion and the second portion based on a number of program/erase cycles performed on each of the blocks.
17. A non-transitory computer readable storage medium storing instructions, which when executed, cause a processing device of a storage controller configured to:
determine program/erase cycle values, based on program/erase cycles for a plurality of programming modes, for blocks of a storage device of a plurality of storage devices; and
allocate a first number of blocks of the storage device to a first portion of the storage device and a second number of blocks of the storage device to a second portion of the storage device based on the program/erase cycle values.
18. The non-transitory computer readable storage medium of claim 17 , wherein the plurality of programming modes comprises single level cell (SLC) mode and at least one additional programming mode.
19. The non-transitory computer readable storage medium of claim 17 , wherein the first portion of the storage device has a higher resiliency than the second portion of the storage device.
20. The non-transitory computer readable storage medium of claim 17 , wherein the processing device is further to:
receive one or more performance parameters associated with data stored at the storage device of the plurality of storage devices, wherein the first number of blocks is allocated further based on the one or more performance parameters.