I may be wrong on this, but I'll attempt to clarify for CJ (correct me if I'm wrong).
I think what he is talking about is the fact that OS entities (Microsoft, Linux, Apple, BSD, etc...) have a disagreement about the definition of each of the size prefix k, M, G, T and so forth with the memory and hard drive manufacturers.
OS's see these prefixes as powers of 2 like so:
- kilo = 2^10 = 1024^1 = 1024
- Mega = 2^20 = 1024^2 = 1'048'576
- Giga = 2^30 = 1024^3 = 1'073'741'824
- Terra = 2^40 = 1024^4 = 1'099'511'627'776
Memory, hard drive, and communications (NIC, modems, etc.) manufacturers, on the other hand see those prefixes as exact powers of 10 like so:
- kilo = 10^3 = 1000^1 = 1000
- Mega = 10^6 = 1000^2 = 1'000'000
- Giga = 10^9 = 1000^3 = 1'000'000'000
- Terra = 10^12 = 1000^4 = 1'000'000'000'000
Hence, the discrepancies. Basically, the higher up you go in capacity, the more it will appear that you are "losing" capacity due to that rounding.
In your case, your "expected 32 TB" is really only seen by the OS as: 32'000'000'000'000 / 1024^4 ~ 29.1038 TB.
Furthermore, I believe you also lose some space incurred by the overhead of using the filesystem due to block size (not sure the exact formula for this, someone else can probably pitch in).
That being said, doesn't your number now make a lot more sense? BTW, this isn't specific to FreeNAS. You will observe this regardless of the filesystem or OS you use.