StorNext performance: Allocation fill or round robin?
There are many ways to configure and optimize your file system under StorNext, and one option that makes (or can make) a difference is the allocation strategy. Which setting to use depends on your storage and the type of content you create. For the media and entertainment world we talk about unstructured data.
For the sake of this example, I create an imaginary setup with a StorNext based MDC and one 24bay RAID (dual controller) with 2 x 24bay expansion chassis. As a basic configuration, most people might create 1 RAID6 set per enclosure and would be done with it. However, this might not be sufficient, as the performance of both controllers cannot be leverage simultaneously using only 1 RAID set. Splitting the array into 2 logical volumes/partitions provides the opportunity to map each LUN to a dedicated controller for more performance. But you still share all the disks in that single array, and you will have no control over read and write requests.
A better design would be to create 2 RAID sets per enclosure and trade in disk space to increase performance (still using RAID6) and map each LUN to a dedicated controller.
After configuring the setup that way, we will see 6 LUN’s on the host bus which will give us 2 most common options for building the file system.
- A: Putting all 6 LUN’s into a single stripe group (defines a set of the disks used in one group). This article would end here as there is no allocation strategy to choose from. (As a side note: Every controller has performance limitations, and it might be already maxed out with 24 disks. Putting 72 disks into a single stripe group might not be the smartest move.)
- B: Creating a stripe group for each enclosure. We will end up with 3 stripe groups containing 2 LUNs each.
FILL or ROUND-ROBIN
StorNext supports 2 allocation strategies: FILL or ROUND-ROBIN
For the reader who doesn’t know the difference:
- Allocation strategy fill: Each stripe group will be filled before the next one will be addressed.
- Allocation strategy round-robin: The created content will be written either block based or file based in a rotating manner to the stripe groups. All stripe groups will be filled equally.
For our setup it means in detail:
Fill: Every stripe group will be filled and therefore we are working on a single enclosure only, no matter which stripe group is being used and performance will be limited to the 2 LUNs.
Round-robin: As mentioned, the data will be written in a rotating manner and all 3 enclosures and their 6 LUNs will be utilized continuously. Due to the fact that we do not read/write to a single stripe group and we utilize all available disks, the performance will increase compared to the fill strategy. How much is depending on the RAID controller but the load is spread more evenly for sure.
I don’t necessarily recommend round-robin over fill, as there are some disadvantages to the round-robin strategy in terms of maintenance or precise file allocation with affinities (Affinities can be used to segregate files onto their own stripe groups.).
First, the option that would take away the whole meaning of round robin is assigning affinities to certain stripe groups (storage pools). For example, you can’t choose audio files go to a SATA pool while the rest of the content will live on a SAS based pool in the same file system for the reason that the stripe groups won’t be filled equally.
Secondly, and this is more for maintenance and future plans: StorNext supports the replacement of a whole stripe group. If for example your expansion enclosure starts to fail and you want to replace it before you lose all the data, you can either deactivate the whole volume or replace the enclosure underneath the affected stripe group.
Either you back up all data, swap the enclosure, remake the file system and restore …. The particular file system can be seen as inactive or down for this time. Or you can move content from one stripe group to another using the build-in tool snfsdefrag. Once the targeted stripe group has been cleaned (all content has been moved to another stripe group), the stripe group can be set to read-only, the hardware can be exchanged underneath, LUNs labeled and brought active (read/write) again. The file system hasn’t been down at all and was usable during the time of the hardware replacement. In that regard the strategy “fill” seems to be the better way.
The third and last disadvantage I can think of regarding round robin concerns the data integrity. If a RAID set dies while losing more than 2 disks on a RAID-5 set, it can be considered a data loss of 100%, as each file or sequence is spread across all available RAID sets. With the “Fill” strategy, there is a likelihood of saving more than 50% of your data, which reduces the time to restore. Or in case of no backup you don’t lose everything.