ZFS RAID size and reliability calculator

ZFS RAID size and reliability calculator 2017-05-17

I've developed a JS web app to calculate the exact usable space and the reliability specially for the ZFS RAID types. You can find it using the orange button above.

It's stupid-proof but not idiot-proof. For example you can put only one drive and select a mirror RAID (even if the app gives to you the minimum number of drives for the chosen RAID...). It's that way because I don't want to clutter the code with a ton of useless checks on the values, the user must know a minimum what he's doing :)

The app assumes ashift=12, recordsize=128k and no compression.

The app is released under the GPL license.


It supports striped mirrors (but not striped RAID-Zs). For example you can put 12 drives then select "3 Drives Mirror" and the result will be calculated for 4 striped 3 drives mirrors.

The blocks overhead is disabled for now. I can't find a lot of info on the exact value or on how to calculate it. I posted a thread so if someone knows the answer he is welcome :)

The parity and data spaces percentages are relative to the RAID total space. The overheads percentages are relative to the total data space. The minimum free and usable spaces percentages are relative to the total data space minus the total overhead.

The minimum recommended free space uses the 80% rule.

The usable data space is the total data space minus the total overhead and the minimum recommended free space.


The MTBF is asked in Mh which stands for Megahours to avoid the need to input many zeros. It's the only other field (the other one is the drive size field) where you can put a decimal number.

The MTTPR (Mean Time To Physical Replacement) is the time needed to detect and physically replace a failed drive.

The MTTR (Mean Time To Recovery) is the sum of the MTTPR and the usable data space divided by the rebuild speed (this is the worst case, if you have a 50% full pool for example the rebuild time will be lower). It's not displayed for a Stripe RAID for obvious reasons...

The MTTDL (Mean Time To Data Loss) is expressed with the scientific notation because it's easier to read and to compare for very large or small numbers. It's not displayed for striped mirrors because it's a pain in the *** to implement :p


If you don't need the reliability stats you can just fill the first 3 inputs.

If you don't need the size stats you need to fill all the inputs anyway (the reliability stats use them).

You can suggest me some improvements of course ;)


# Move the app to my website
# Integrate the manual to the app
# Add "Minimum recommended free space" % input field (so the user can change the default 80 %)
# Add RAM minimum size recommendation (add checkbox for dedup)
# Rename "Usable data space" to "Recommended usable data space"
# Rename "Minimum recommended free space" to "Recommended minimum free space"
# Rename "Drive size" to "Drive space" (in the results, not the input)
# Add the total data space minus the total overhead (label: Usable data space)
# Add the swap size input (in GB, before RAID type); add swap space after drive space; add drive space - swap space (label: Usable drive space); add total swap space before total parity and data spaces; correct total data space to be total data space - total swap space
# Add Number of vdevs (after RAID type)
# Change the display block/none to be in each RAID type functions instead of a global if() (to allow to temporary not implement the MTTDL, MTTR, ... calculus for a RAID type if too complex)
# Add the DL probability percentage because of URE during resilver (take into account thet for multiple parity it must be URE on the same sector of each drive)
# Add the NOMDL and BHL if possible
# Add the DL probability percentages (for 1, 2, 3, 5, 10, 15, 20 and 30 y)
# Calculate and display the MTTDL for striped mirrors
# Fix the blocks overhead
# Add the allocation overhead
# Display the MTTDL on a logarithmic scale (e.g. 10^x.yz)
First release
Last update
5.00 star(s) 5 ratings

Latest updates

  1. Attempted link fix, part two

    XenForo "helpfully" doesn't update the "download" link unless one enters a new version string.
  2. Attempted link fix

    This is an attempt at fixing the "download" link, which seems to be broken.
  3. Changelog as of 2017-05-12

    This resource was ported from its original thread. The changelog up until that time is included...

Latest reviews

Perfect for helping me deciding my new build.
helped a lot to decide on how to setup my new NAS which im migratting from. my older one is 2X2 mirror. now going for a raidz1 for 5x2TB drives.
Love it. I would love to see the RAM min size. Look forward to that being added on. It would be great to incorporate this into FreeNAS software as well once you are done. Great job.
ZFS Size and Reliability calc makes comparing different drive configurations quick and easy; yet, it requires some working knowledge, which is very important. In some ways it is a kind of test that the user knows what's going on. Also, for newbie's it is a great way to get some information in order to ask questions.
Very useful calculator! Friendly engineer no longer needed to choose storage layout.