The application I/O size and the number of I/Os the application generates are two important measures affecting disk performance and response time. Consequently, the storage design and layout for an application commences with the following:
- Analyzing the number of I/Os generated at peak workload
- Documenting the application I/O size or block size
Storage requirements for an application are specified in terms of both capacity and the IOPS that should be met for the application. If an application needs 200GB of disk space, then this capacity could currently be provided with a single disk. However, if the application I/O demands are high, then it will result in performance degradation because one disk cannot provide the required response time for I/O operations. The total number of disks required (N) for an application is computed as follows:
If C is the number of disks required to meet the capacity and I is the number of disks required for meeting IOPS, then N = Max (C, I), Now
For example, an application specifies a requirement of 500 GB to host a database and other files. It also specifies that the storage environment should support 2,000 IOPS during its peak processing cycle. The disks based on vendor specification is a 146 GB, 15,000-rpm drive which is capable of a maximum of 180 IOPS.
In this example, the number of disks required to meet the capacity requirements will be only 500 GB / 146 GB = 4 disks. To meet 2,000 IOPS, 12 disks will be required (2,000 / 180). As a result, the number of disks required to meet the application demand will be Max (4, 12) = 12 disks.
What about the raid group?
When deciding the number of disks required for an application, it is important to consider the impact of RAID based on IOPS generated by the application. The total disk load should be computed by considering the type of RAID configuration and the ratio of read compared to write from the host. The following example illustrates the method of computing the disk load in different types of RAID.
Functional IOPS = (Raw IOPS * Write % / RAID Penalty) + (RAW IOPS * Read %)
Consider the above example that application generates 2,000 IOPS, with 70 percent of them being reads. The disk load in RAID 5 is calculated as follows:
RAID 5 disk load = 0.7 × 2,000 + 4 (Write Penalty) × (0.3 × 2,000)
= 1,400 + 4 × 600
= 1,400 + 3,200
= 4,600 IOPS
The disk load in RAID 1 is calculated as follows:
RAID 1 disk load = 0.7 × 2,000 + 2 (Write Penalty) × (0.3 × 2,000)
= 1,400 + 2 × 600
= 1,400 + 1,200
= 2,600 IOPS
The number of disks required to meet the workload for the RAID configuration would be as follows:
- RAID 5: 4,600 / 180 = 26 disks
- RAID 1: 2,600 / 180 = 16 disks (15 is not acceptable)