При расчете IOPS для традиционных RAID-массивов можно использовать следующую формулу (заимствовано из «Ознакомления с IOPS v1.3 в Symantec Connect»):
Ieffective = (n * Isingle) / (READ% + (F * WRITE%))
Где:
- Ieffective - эффективное количество IOPS
- Isingle - это среднее число операций ввода-вывода в секунду на одном диске .
- n - количество дисков в массиве
- READ% - это доля операций чтения, полученных при профилировании диска.
- WRITE% - это доля записей, взятых из профилирования диска
F - штраф записи RAID :
RAID Level Write Penalty RAID-0 1 RAID-1 2 RAID-5 4 RAID-6 6 RAID-10 2 RAID-DP 2
Формула по существу является функцией:
- IOPS для каждого отдельного диска в массиве
- Количество дисков. Больше дисков означает больше IOPS
- Наказание RAID за каждую операцию записи.
- RAID5 и RAID6 требуют 4+ дисковых операций для каждой записи. Контроллер должен прочитать блок и затем прочитать данные контроля четности (две операции), вычислить новые данные контроля четности, а затем обновить блок контроля четности и обновить блок данных (еще две операции). RAID6 имеет два блока четности и поэтому требует три чтения и три записи. Таким образом, массивы RAID5 и RAID6 позволяют меньше операций ввода-вывода в секунду, чем RAID1.
- Для RAID1 и RAID10 требуется только 2 записи, по одной на каждый диск в зеркале.
И чтобы быть ясным, все это дает оценку теоретической эффективности. Различные контроллеры и методы RAID имеют хитрости, чтобы ускорить это.
ZFS эквивалентно RAID5 и RAID6 - это RAIDZ и RAIDZ2. При вычислении IOPS для массивов RAIDZ могу ли я использовать ту же формулу, что и для RAID5 и RAID6, или же в ZFS предусмотрены специальные приемы для уменьшения количества операций, необходимых для операций записи.
Есть ли другая формула для использования при расчете IOPS для массивов RAIDZ?