CPC G06F 3/064 (2013.01) [G06F 3/0604 (2013.01); G06F 3/0652 (2013.01); G06F 3/0689 (2013.01); G06F 12/0253 (2013.01); G06F 2212/7205 (2013.01)] | 14 Claims |
1. A method for use in a storage processor, the method comprising:
receiving, by the storage processor, a write request, the write request including a request to store user data in a storage array that includes a plurality of solid-state drives (SSDs), the storage array the storage processor being part of a storage system;
reserving, by using an allocation layer that is executed by the storage processor, one or more physical logical blocks (PLBs), each of the reserved PLBs being part of a respective one of a plurality of stripes;
executing the write request by: identifying metadata that is associated with the write request, and writing, by the storage processor, the user data and the metadata to different data streams that are opened on the plurality of SSDs, wherein writing the user data and the metadata to different data streams causes: (i) the user data to be stored in one or more first erase units that are part of any of the plurality of SSDs, and (ii) the metadata to be stored in one or more second erase units that are part of any of the plurality of SSDs, such that no part of the metadata is stored on any of the first erase units, and no part of the user data is stored on any of the second erase units, the first and second erase units being part of a plurality of erase units that are mapped to the reserved PLBs;
wherein the storage array is a Redundant Array of Independent Disks (RAID) array,
wherein the allocation layer is configured to allocate only PLBs that are part of active stripes, and
wherein a maximum number of stripes that are present in the in the storage system at any given time is determined in accordance with the equation of:
Sm=(Ndrives×Nstripes)/N_raid_drives
wherein Sm is the maximum number of stripes, Ndrives is a count of SSDs in the RAID array, and N_raid_drives is a count of drives in an uber of RAID array.
|