Number of effective spindles in a RAID array

raid

Ok, simple question here. When doing performance calculations on RAID arrays that involve number of spindles (such as measuring disk queue length), how many "spindles" do I use?

The array in question is RAID 6. Should I use N-2 spindles? N-1 if it were RAID 5?

Best Answer

You can't simply subtract the number of parity disks from number of total spindles and end up with useful results if you're doing IOP transaction calculations. There's more going on behind the scenes:

RAID 10:

  • 1 frontend read translates into 1 backend IOP (d0 read)
  • 1 frontend write translates into 2 backend IOPS (d0 write, d1 write)

RAID 5:

  • 1 frontend read translates into 1 backend IOP (d0 read)
  • 1 frontend write translates into 4 backend IOPS (d0 read, parity read, d0 write, parity write)

RAID 6: (not 100% sure on these numbers - someone please correct me if they are off)

  • 1 frontend read translates into 1 backend IOP (d0 read)
  • 1 frontend write translates into 6 backend IOPS (d0 read, parity read, qarity read, d0 write, parity write, qarity write)

So for example in a RAID set with 8 disks:

  • RAID10: 100 frontend writes translates to 200 IOPS on the backend (or 25/drive)
  • RAID5: 100 frontend writes translates to 400 IOPS on the backend (or 50/drive)
  • RAID6: 100 frontend writes translates to 600 IOPS on the backend (or 75/drive)

Note that for the RAID10 calculations the method of "subtract number of parity spindles from total number of spindles" gives you the right answer. However, this falls over in RAID5/RAID6 calculations.