There's a definite confusion
I think that is the understatement of the day
LSFS needs more space to run compared to FLAT because it does Redirect-on-Write (every new block is written to a new place and never overwritten).
V6 did work in exactly the same way: also Redirect-on-Write
Is that phrase totally accurate? It seems to contradict itself. To me the phrase "every new block" means a block # that has never been written to the disk before? A newly formatted Windows disk will have used (say) the first 100 blocks. Block #101 has never been written. So the thin-provisioned bit is that the disk currently uses 100 blocks on disk. When block #101 is written, the thin-provisioned disk grows by a block and the new block is added to the end. Correct so far?
Same growth occurs when block #102 is written etc. This is part of the reason that thin-provisioned is lower performance than flat - the disk has to have the logic to keep growing.
PS. I'm talking about v6 implementation here - I realise that LSFS is radically different.
So on v6, what happens is block #101 is re-written? My understanding was that it overwrote the existing block? But you're inferring that the block is "never overwritten". That means for something like a SQL database (where blocks are routinely re-written) then the thin-provisioned disk will keep growing and growing, filling more and more with old blocks. So eventually, the thin-provisioned disk will end up way, way bigger than the flat equivalent? If this is the case, then there was a big hole in my understanding of thin-provisioned disks in StarWind.
But I am a little confused on LSFS still. I realise that in order to try and convert random writes into sequential writes, any writes whether they are a new block or a re-write of an existing block are always new writes. I can appreciate how this attempts to iron out expensive random IO. However, on it's own, it means that over time you'll run out of disk space as old blocks are never overwritten. However, you seem to be inferring there is some kind of cleanup operation that is carried out to recover those replaced blocks. Is that right?
Cheers, Rob.