2

I'm setting up a Windows 11 machine using a storage spaces with two-way mirrored drives. As a test I've set this up in VMWare;

  1. I've added two drives (2x10GB) and created the two-way mirrored storage space.
  2. Then I've simulated extending the storage space with two additional drives (2x10GB).

The space now has double the room, as expected. But I have no clue what the actual setup is. Do I have 2 sets of 2 two-way mirrored drives: D1 mirrors with D2, and D3 mirrors with D4?

  1. as the next experiment I decommissioned one disk D3, so 3 disks are remaining.

How are the files distributed now? The storage space's size has not changed. That is confusing.

1 Answer 1

1

Do I have 2 sets of 2 two-way mirrored drives: D1 mirrors with D2, and D3 mirrors with D4?

Storage Spaces do not mirror whole drives in the first place – they allocate and mirror individual data slabs, more like Btrfs than RAID. You could have a few slabs mirrored between D1/D3, some between D2/D3, some between D1/D4, and so on.

The allocation is distributed proportionally according to disk sizes. (If I remember correctly, slabs are sized somewhere in the range of 256 MB or possibly 1 GB.)

See this TechNet article: Deep Dive: The Storage Pool in Storage Spaces Direct, it has good illustrations. (While it talks about server clusters, a 1-server "Spaces Direct" still works the same way as Spaces does on Win10.)

as the next experiment I decommissioned one disk D3, so 3 disks are remaining.

How are the files distributed now? The storage space's size has not changed. That is confusing.

All chunks from D3 were moved to other disks during the removal process.

The volume is now "thin provisioned", very much like a .vhd or .vmdk "dynamic disk" – because physical space is allocated on demand, the logical volume can appear larger than you can actually store, as long as you don't actually try to use all of it.

If the filesystem tried to write more sectors than Storage Spaces can physically allocate, it would probably start getting I/O errors, although Windows seems to have better integration for all types of thin-provisioned storage (Storage Spaces, .vmdk's, etc.) so I assume the filesystem itself would be informed of this and start refusing writes even before the physical pool runs out.

(Space can also be deallocated – the filesystem uses the same TRIM or UNMAP operation for thin volumes as it does for SSDs.)

2
  • Slabs. Ok! That makes sense. Up until now with mirroring or striping it is clear how data is physically stored. But here the underlying storage is always similar to RAID 5; data is distributed over disks in a for the user unknown way. The storage method only specifies how many copy blocks and how they are to be distributed. That also means that if I have 4 disks in a two-way mirror, I still have only 1 disk fault tolerance over all 4 disks? Since all disks contain all data. So I can just as well use parity instead of two-way?
    – tbeernot
    Commented Jan 29, 2022 at 7:41
  • Just as feedback for people reading this in the future: apparently storage space size cannot be decreased, even if you remove disks. It is just a fictive value (an intention). If the storage space is to be used completely, it needs the underlying diskspaces to be present. So you can have a 10TB storage, but if only 5TB worth of disks are present, only 5TB can be stored, even though the available space at the drive letters says otherwise.
    – tbeernot
    Commented Jan 29, 2022 at 8:15

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .