I've read the docs and googled around, and I understand somewhat how pool layout would work. So for example, that the pool isn't redundant (only vdevs have redundancy); that data is striped or balanced across vdevs, that ZFS will attempt to even out its use of vdevs in some way or other (and data should therefore be balanced across vdevs); that ZFS can be manipulated via CLI but this may not always update FreeNAS internal knowledge of the pool; etc. What isn't clear to me is some of the detail:
- Suppose a 4TB pool is made up of a 3TB + 1TB drive: will the data always be striped "arbitrarily" across them, or is there a choice to keep files within a single disk in the pool (the files in the pool are held some on each drive, but individual files are held either on one drive or the other)
- Suppose a pool has 2 x 1TB and 2 x 2TB, is there any practical difference between configuring the pool as mirrored stripes vs striped mirrors? For example:
((1+1 mirrored) striped with (2+2 mirrored)), or
((1+3 striped) mirrored with (1+3 striped))
- When a new disk/vdev is added, the docs say that ZFS tries to balance across disks, and therefore unbalanced disks will be inefficient. But what exact metric is ZFS trying to balance out - its write activities, the amount of used space, or the amount of free space? This distinction would be important as a workload or stored data varies between mostly-reads and mostly-writes.
- If a server has multiple top-level volumes/pools, can a file system on one of them contain a symlink to a directory on another of them? If so, what issues might arise (if any)?