Khi tính toán IOPS cho mảng RAID truyền thống, người ta có thể sử dụng công thức sau (Mượn từ Nhận Hang IOPS v1.3 trên Symantec Connect):
Ieffective = (n * Isingle) / (READ% + (F * WRITE%))
Ở đâu:
- Hiệu quả là số IOPS hiệu quả
- Isingle là IOPS trung bình của một ổ đĩa .
- n là số lượng đĩa trong mảng
- READ% là phần đọc được lấy từ hồ sơ đĩa
- WRITE% là phần ghi được lấy từ hồ sơ đĩa
F là hình phạt ghi RAID :
RAID Level Write Penalty RAID-0 1 RAID-1 2 RAID-5 4 RAID-6 6 RAID-10 2 RAID-DP 2
Công thức về cơ bản là một chức năng của:
- IOPS cho mỗi ổ riêng lẻ trong mảng
- Số lượng đĩa. Nhiều đĩa hơn có nghĩa là nhiều IOPS hơn
- Các hình phạt RAID cho mỗi hoạt động ghi.
- RAID5 & RAID6 yêu cầu hơn 4 thao tác đĩa cho mỗi lần ghi. Bộ điều khiển phải đọc khối và sau đó đọc dữ liệu chẵn lẻ (hai thao tác), tính toán dữ liệu chẵn lẻ mới và sau đó cập nhật khối chẵn lẻ và cập nhật khối dữ liệu (Hai thao tác nữa). RAID6 có hai khối chẵn lẻ và do đó yêu cầu ba lần đọc và ba lần ghi. Do đó, mảng RAID5 & RAID6 có khả năng ít IOPS hơn RAID1.
- RAID1 & RAID10 chỉ cần 2 lần ghi, một cho mỗi đĩa trong gương.
Và để rõ ràng, tất cả điều này cung cấp một ước tính về hiệu suất lý thuyết. Các bộ điều khiển và phương thức RAID khác nhau có các thủ thuật để tăng tốc một số điều này.
Tương đương với RAID5 & RAID6 của ZFS là RAIDZ và RAIDZ2. Khi tính toán IOPS cho mảng RAIDZ, tôi có thể sử dụng cùng một công thức mà tôi sử dụng cho RAID5 & RAID6 không, hoặc ZFS có các thủ thuật đặc biệt để giảm số lượng thao tác cần thiết cho hoạt động ghi.
Có một công thức khác để sử dụng khi tính toán IOPS cho mảng RAIDZ không?