Skip to main content

📁 Virtual Pools

Virtual Pools allow you to combine multiple existing directories or storage paths into a single logical pool using mergerfs. Unlike regular storage pools that require dedicated physical disks, Virtual Pools use paths that already exist on mounted pools or other storage locations.

This is useful for consolidating data spread across multiple pools, shares, or mount points into a single unified view — without reformatting or moving any data.

Pools Overview

The Pools page with the option to create a regular pool or a Virtual Pool.


📦 Accessing Virtual Pools

Virtual Pools are managed from the Pools page.

  1. Navigate to Pools in the sidebar
  2. Click the + (floating action button) in the bottom-right corner
  3. Select Create Virtual Pool
info

Regular pools (Create pool) and Virtual Pools (Create Virtual Pool) are separate creation flows. Regular pools use physical disks, while Virtual Pools use existing directory paths.


➕ Creating a Virtual Pool

Create Virtual Pool Dialog

The Create Virtual Pool dialog with default values.

Configuration Fields

FieldTypeDefaultDescription
NameTextName of the Virtual Pool. Used for the mount point (e.g., vpool/mnt/vpool).
PathsText + AddOne or more existing directory paths to combine (e.g., /mnt/main, /mnt/media). Click Add to add multiple paths.
CommentTextmspmfsOptional comment or description for the pool.
Create PolicyDropdownmspmfsmergerfs policy for distributing new files across paths — see Create Policies.
Search PolicyDropdownffmergerfs policy for finding existing files across paths — see Search Policies.
AutomountToggleOnAutomatically mount the Virtual Pool during system startup.
SharedToggleOnMake the pool available as a network share.
Cancel / CreateButtonCancel or create the Virtual Pool.

Paths

The Paths field is the core of a Virtual Pool. You add existing directories that should be combined:

  1. Enter a path (e.g., /mnt/main)
  2. Click Add to add it to the list
  3. Repeat for additional paths (e.g., /mnt/media, /mnt/backup)

All files from all added paths will appear as a single unified directory structure under the Virtual Pool mount point.

tip

You can add paths from different physical pools. For example, combine /mnt/main/media and /mnt/backup/media into a single Virtual Pool for a unified media directory.


📋 Policies

mergerfs uses policies to determine how files are distributed and found across the configured paths. MOS exposes two policy categories for Virtual Pools:

Create Policy Options

The Create Policy dropdown with all available mergerfs policies.

Create Policy

The Create Policy determines which path receives a new file when it is written to the Virtual Pool. MOS offers 20 policies, including:

  • Non-path-preserving (pfrd, rand, mfs, ff, lfs, lup, lus, all, newest) — consider all paths regardless of existing directory structure
  • Path-preserving (msp) (msppfrd, mspmfs, msplfs, msplus) — prefer paths where the target directory already exists
  • Existing path (ep) (eppfrd, epmfs, eprand, epff, eplfs, eplus, epall) — strictly require the target directory to exist on a path

Default: mspmfs (Most Similar Path, Most Free Space)

Search Policy

The Search Policy determines which copy of an existing file is read when the file exists on multiple paths. MOS offers 5 policies:

PolicyFull NameDescription
ffFirst FoundReturns the first path where the file exists (in configured order). Default.
lfsLeast Free SpacePicks the copy on the path with the least free space.
lusLeast Used SpacePicks the copy on the path with the least used space.
allAllReturns all paths where the file exists. Used for action operations.
newestNewestPicks the copy with the most recent modification time.

Default: ff (First Found)

Full Policy Reference

For a complete description of all available mergerfs policies, their behavior, and when to use each one, see the official mergerfs documentation:

👉 mergerfs – Policy Descriptions

Policy Recommendations

Use CaseRecommended PolicyWhy
General usepfrdEven distribution, no path overload
Keep related files togethermspmfs (default)Path-preserving + most free space
Maximize capacitymfsAlways uses the path with most space
Simple, predictableffFirst path in order
Balance fill levelslfsFills paths sequentially
tip

If unsure, use the default mspmfs. It keeps directory structures together on the same path while distributing new files to the path with the most free space.


🧠 How Virtual Pools Work

Architecture

Virtual Pool: /mnt/vpool

├── mergerfs (merges paths transparently)

├── Path 1: /mnt/main (xfs, 931 GB)
├── Path 2: /mnt/media (mergerfs, 60 TB)
└── Path 3: /mnt/backup (xfs, 12 TB)

Result: All files from all 3 paths appear under /mnt/vpool/

Read/Write Behavior

  • Writing new files: The Create Policy decides which path receives the file
  • Reading existing files: The Search Policy decides which copy is read (if duplicates exist)
  • Directory listing: All files from all paths are merged into a single view
  • No data movement: Existing files stay where they are — no data is moved or copied

Difference from Regular mergerfs Pools

FeatureRegular mergerfs PoolVirtual Pool
UsesPhysical disksExisting directory paths
Disks requiredYes — dedicated disksNo — uses existing mounts
PathsDisk mount pointsAny existing directory
FilesystemFormatted on creationUses existing filesystems
FlexibilityOne pool per set of disksCombine paths from multiple pools
Use caseNew storage from disksConsolidate existing storage

⚡ When to Use Virtual Pools

ScenarioRecommended?Why
Combine media from multiple pools✅ YesUnified media directory without moving files
Consolidate shares✅ YesMultiple shares appear as one
Migrate data gradually✅ YesAdd new pool path, files distribute automatically
Mixed disk sizes✅ Yesmergerfs handles different sizes natively
Need redundancy⚠️ With SnapRAIDVirtual Pools don't provide parity — use SnapRAID separately
Need ZFS features❌ NoUse a ZFS pool instead
Need block storage❌ NoVirtual Pools are file-level (mergerfs), not block-level

⚠️ Important Notes

warning

Virtual Pools do not provide data redundancy. If a path fails, all files stored on that path are lost. Use SnapRAID or external backups for data protection.

  • No data duplication — Virtual Pools merge views, they don't mirror data
  • Path order matters — For ff (First Found) policies, the order of paths affects which copy is used
  • Existing files stay — Creating a Virtual Pool does not move or copy any existing files
  • Removal is safe — Removing a Virtual Pool unmounts it but does not delete underlying data
  • mergerfs overhead — Virtual Pools add a small overhead for file operations due to the FUSE layer

📚 Best Practices

  • Use meaningful names — Name Virtual Pools clearly (e.g., media-vpool, archive-vpool)
  • Start with default policiesmspmfs (Create) and ff (Search) work well for most use cases
  • Add paths from different pools — Combine paths from separate physical pools for maximum flexibility
  • Enable Automount — Ensure the Virtual Pool mounts automatically after reboot
  • Use SnapRAID for parity — If data protection is needed, configure SnapRAID separately
  • Monitor path usage — Check individual path usage regularly to avoid filling up one path
  • Order paths deliberately — For ff policies, put faster storage first for better read performance

✅ Summary

Virtual Pools provide a flexible way to combine existing storage paths into a single logical pool using mergerfs.

Key points:

  • No dedicated disks needed — uses existing directory paths
  • 20 Create Policies — control how new files are distributed (default: mspmfs)
  • 5 Search Policies — control how existing files are found (default: ff)
  • No data movement — files stay where they are, only the view is merged
  • Automount and Sharing — toggle on for automatic startup and network access
  • No redundancy — use SnapRAID or backups for data protection
  • Ideal for consolidating — combine media, shares, or data from multiple pools

Virtual Pools are perfect for homelab and server setups where storage is spread across multiple pools and needs to be presented as a single unified directory.


Parts of this documentation were created with the assistance of AI tools. All AI-generated content has undergone review, but it may still contain inaccuracies, omissions, or outdated information.