I've written a little python script to give us some insight:
def meh(i):
cluster_size_in_byte = i[0] * 1024
cluster_size_divisible_volume_size = 15794682880 - 15794682880 % cluster_size_in_byte
unknown_taken_up_size_in_byte = cluster_size_divisible_volume_size - i[1]
unknown_taken_up_size_in_cluster = unknown_taken_up_size_in_byte / cluster_size_in_byte
print((i[0], unknown_taken_up_size_in_byte, unknown_taken_up_size_in_cluster))
print("exfat:")
for i in [
(64, 15792537600),
(128, 15792472064),
(256, 15792340992),
(512, 15792078848),
(1024, 15791554560),
(2048, 15789457408),
(4096, 15783165952)
]:
meh(i)
print("ntfs:")
for i in [
(4, 15794679808),
(8, 15794675712),
(16, 15794667520),
(32, 15794667520),
(64, 15794634752),
(128, 15794569216),
(256, 15794438144)
]:
meh(i)
And here's the output:
exfat:
(64, 2097152, 32.0)
(128, 2097152, 16.0)
(256, 2097152, 8.0)
(512, 2097152, 4.0)
(1024, 2097152, 2.0)
(2048, 4194304, 2.0)
(4096, 8388608, 2.0)
ntfs:
(4, 0, 0.0)
(8, 0, 0.0)
(16, 0, 0.0)
(32, 0, 0.0)
(64, 0, 0.0)
(128, 0, 0.0)
(256, 0, 0.0)
The answer for the case of NTFS is simple: when the cluster size gets bigger, the unusable / "non-clusterable" "remainder" of the partition gets bigger.
For the exFAT case, that is one of the reasons as well, but it is more complicated since as per the reported capacity you got, at least 2MiB would been taken up for unknown purpose, and it gets even more complicated as, apparently, that taken up part would be at least 2-cluster big.
I'm not familiar with the internals of exFAT though, so I have no info about that 2MiB / 2-cluster taken up part to offer.
According to some research and tests I have done (with exfatprogs), it seems that the 2MiB is a choice for "Cluster Heap Offset", which consists of a half-size "FAT Offset". (Basically, 1MiB-alignment, which is consistent with the partitioning behavior in Windows.)
Also, apparently "FAT Length" is often the same size as the cluster size, and Microsoft seems to have chosen to make sure that "FAT Offset" is always half of "Cluster Heap Offset", so when cluster size and in turn "FAT Length" exceeds 1MiB, "FAT Offset" will be equated to "FAT Length", which results in the "Cluster Heap Offset" becoming 2-cluster big. (The behavior is NOT observed / the default in exfatprogs' mkfs.exfat
.)
EDIT: As I had thought of but not written, instead of having "FAT Offset" being half of "Cluster Heap Offset", "FAT Offset" can be 1-MiB all / most of the time, i.e., the remaining padding / gap, if any, in "Cluster Heap Offset" resides after the FAT instead of before.
I haven't really check the formations produced in Windows with dump.exfat
in exfatprogs though. In case you want to know the exact and confirmed details, you can try the program yourself in a Linux environment (maybe even, WSL).
By the way, to state the obvious, the reported capacities in your tables are cluster size * number of clusters
. In other words, (sizes of the) data and metadata in any of the cluster are irrelevant to the numbers.