Windows x64 prototype · initial v6 format

PoolFS: member images as one Windows drive.

PoolFS combines 1–16 member images of equal or different sizes into one mounted Windows drive. It is an experimental filesystem built with C++20 and WinFsp. Name a pool in its config, and choose password encryption when creating it.

Prototype build · November 13, 2026 · Windows x64

About the prototype

How the pooled filesystem works

Member files can live on separate formatted volumes. PoolFS presents their combined capacity through a new drive letter; files already on the host volumes remain outside that drive.

Member images can move between drive letters and Windows machines. Every member in the pool must be present to mount it; the images may live on one or several host partitions or drives.

To expand an existing pool, unmount it and choose Grow images in the manager. PoolFS creates and verifies new copies of every member and saves a new config. The originals stay intact; growth needs room for all copies. Shrinking and changing the member count are not supported.

A pool name saved in JSON appears as its mounted Windows drive label. Keep that config with the images when moving them; the name is not stored inside member images.

V6 checks file data as it is read and uses copy-on-write checksum pages. The mounted filesystem supports nested, case-sensitive directories and persists basic file attributes and timestamps. Replacing an existing file through a rename is committed atomically.

Password-encrypted pools require an unlock at each mount. The member images protect files while unmounted; a small public header remains for member discovery. Existing unencrypted pools need a fresh encrypted pool and a file copy.

Downloads

Windows x64 binaries

The ZIP contains the Python/Qt manager, its native bridge, command-line tools, documentation, and a JSON config example. Install the WinFsp runtime before mounting a pool.

ZIP PACKAGE

PoolFS prototype bundle

Qt desktop manager plus format, mount, inspect, and scrub tools in one download.

Download ZIP
Individual tools and support files
  • poolfs-manager.exeQt desktop app; use the ZIP to get its required companion files togetherDownload
  • poolfs-gui-native.dllRequired native PoolFS bridge for the Qt managerDownload
  • poolfs-partitions.ps1Partition helper required beside the manager for storage changesDownload
  • poolfs-format.exeCreate image-backed poolsDownload
  • poolfs-mount.exeMount a pool as a Windows driveDownload
  • poolfsctl.exeDiscover members and manage mountsDownload
  • poolfs-scrub.exeCheck file data while unmountedDownload
  • poolfs-check.exeInspect pool metadata offlineDownload

Quick start

Create and mount a PoolFS drive

On Windows, install the WinFsp runtime, extract the ZIP, and open poolfs-manager.exe. In Storage, tick one or more host volumes and add them to the pool. On Pool, enter a name, set each image size with the capacity-aware slider or exact MiB entry, and choose whether to encrypt before creating it. The manager starts unencrypted. Keep the ZIP's files together. The command-line steps below remain available.

01

Format two new images

The example allocates 384 MiB per member without encryption.

.\poolfs-format.exe 384 .\member-a.img .\member-b.img
02

Mount the pool

The controller finds the other image and keeps the drive mounted after it exits.

$env:PATH = 'C:\Program Files (x86)\WinFsp\bin;' + $env:PATH
.\poolfsctl.exe mount R: .\member-a.img
03

Unmount before checking

Stop the managed mount, then run the offline scrub.

.\poolfsctl.exe unmount R:
.\poolfs-scrub.exe .\member-a.img .\member-b.img
04

Grow images offline

Open the saved config in the manager, unmount the drive, and choose Grow images. Enter larger sizes for the members you want to expand. PoolFS verifies the new copies before switching to their new config.

For one member, use .\poolfs-format.exe 384 .\member.img. For different sizes, use .\poolfs-format.exe --sized 384 .\member-a.img 768 .\member-b.img. To protect the images, choose encryption in the manager or use --encrypted or --encrypted-sized in the formatter. AES-XTS protects confidentiality but does not authenticate encrypted file data against deliberate changes.

The ZIP includes mount-config.example.json. Edit its pool name, drive letter, and complete member list, then run .\poolfsctl.exe mount-config .\mount-config.example.json. Relative paths follow the JSON file when you move it with the member images; encrypted pools request their password at mount time.