This article can also be found in the Premium Editorial Download "Storage magazine: What to do when storage capacity keeps growing."
Download it now to read this article plus other related content.
Scaling with disk
One basic principle of economics is that want generates demand, and it applies equally well to storage scaling. Consider a well-designed storage system that's still performing well within its optimum range, but whose hosted apps are running out of room. Additional disks appear to be the solution, but you also need to ensure that the additional storage presented to the hosts preserves the I/O balance: controller capacity, fan-out ratios, spindle contention and so forth.
All vendors publish best practices on adding more disk capacity without causing a performance imbalance. These guidelines may include the recommended size of a RAID group and volume, stripe element sizes, offsets and so on. Most vendors also provide some basic performance monitoring tools for their storage arrays that can be used to predict a system's growth and anticipated performance degradation. Tools such as EMC Corp.'s Navisphere Analyzer for Clariion can provide a good deal of information.
Scaling beyond disk
Maintaining an array is like taking care of a car--it needs gas, of course, and oil periodically, but you also have to keep an eye on other things to keep it running smoothly. For a storage array, you need to ensure that the load on the array subsystem
is monitored and tuned as needed. Some of the variables (and hardware items) that bear watching include front-end host ports (for fan-out ratios and host traffic), the cache subsystem (for memory management), back-end disk processors, back-end I/O paths, and array or RAID processors. For well-balanced growth, all of these subsystems need to operate within healthy limits.
Viewing a storage array as an entire system, rather than as just the disks, has its benefits. First, you can control which aspects of the system need to grow right away and which ones can wait for the next budget cycle. Second, performance issues can be hedged by moving things around. For example, if your write cache is being hammered and your read cache is lightly used, some arrays let you change the ratio to provide more write cache on the fly. In the long term, you may need to add more cache (if the array allows), but a short-term fix can provide some relief while you determine the best way to grow the array.
Arrays have architectural limitations, so the initial design and array configuration will determine just how much growth flexibility you'll have. Critical architectural decisions such as modular vs. monolithic, crossbar vs. switched, and the number of host and back-end ports will play a key role in defining the array's scalability.
This was first published in June 2006