So if my pool shows “73 GiB available space remaining”, I could still save a 103-GiB video file, if I wanted to.
Don’t ask how! Something to do with parity, calculations, block-striping, vdev width, new vs old math, “compression” (for a video file, of all things), and… good ol’ ZFS magic!
this is all because zfs does not want to recalculate parity data (which I forced it to do with the funny script anyhow)… so zfs has to use old values for calculating available storage, so my pool is left in a zombie state where who knows how much space is taken up by anything.
Then it sounds like “RAIDZ expansion” isn’t a fleshed out feature. It does what it’s meant to do… and that’s it. It stops there. From a developer’s and engineer’s perspective, the work is finished. No followup on real-world usage.
From an end-user’s perspective, it’s important (and expected) to be able to intuitively and pragmatically understand how much space is being consumed by a file, how large the pool’s total capacity is, and how much free space is available.
Right, but as I said elsewhere, this is the first release with this feature and I wouldn’t personally use it until a few zfs versions later to let the bugs be fleshed out. Same reason I won’t install Eel 24.10.0. It is not surprising at all to me there may be issues, possibly even data loss. Just my opinion.
Yep exactly, making a ZFS target with cheap SAS drives, replicate over just the data I actually care about, destroy 5-wide and make an 8-wide, replicate the other way.
Between replication and burn in it took about 2 weeks.
The raidz expansion looks more comfortable, and doesn’t need a second system to replicate to. If / when the display oddities can be fixed, it should be solid. Another 3 years?
If there was data loss with basic usage of the system at this point in the development I would be very concerned. For me it’s more of an annoyance that the storage usage and availability isn’t reporting correctly. As long as 24.10.0 or 1-2 iterations later fixes the issue for me the tradeoff is worth it to get the extra space with RAIDZ expansion. Yes it is annoying that it appears that there’s less space available, but unless it’s a production system I’m not worried about it.
If I had the drive space to do this with ~15TB I would have done it this way. That being said I’m not buying extra drives just to temporarily copy a bunch of data to them before recreating the new pool. This becomes even tougher as data usage increases.
Also, please be MUCH less than 3 years😅
I don’t work in tech, but if I reported that something using X amount of something but I knew it was actually using Y amount and it caused a negative outcome I’d expect to get fired.
OTOH, the reality is that no boss of mine would ever figure what had gone wrong so
So… what ya do, is you work out how many raidz stripes are filled… then you multiply that by the original raidz width… and now you know the apparent size.
Or something dumb like that.
Does ZFS not know the parity ratio of every file written since the expansion finished enough to enable the new parity ratio?
Should not the new parity ratio be used when working out available size?
It’s actually not that complicated. There’s a quick formula you can use to demystify how much total capacity you actually have and how much space is available.
The correct implementation in Truenas should have been to expand the vdev, run the scrub, and then immediately run the rebalance script, not as a random user, but as part of the expansion process and then force the recalculation of pool size.
Now someone will come along as say “but we couldn’t do that”. This might be a ZFS expansion issue, but it’s solvable for the appliance OS that iX is building.
And if the rebalance script (or an implementation created by iX) still has this capacity error issue, then I think iX have a big problem with a major part of this Scale release from a marketing perspective.
Regarding “allocation size” in samba: this is what is happening. ZFS gets count of 512 byte blocks for specified object and returns as st_blocks in stat(2) output. Samba and other applications multiply this by 512 to determine the “allocation size” as opposed to st_size.