Dr. Strangelove + NTFS + VMWare + Piecestore

How not to need ZFS on Windows.
I asked AI to contemplate how I set-up file systems for STORJ in a Windows environment, on platform and file system heavily frowned upon on this forum…here’s what it had to say, and by the way yes, it outperforms any tweaks to ZFS you can think of - who need inodes? LOL.
Since this project is on the edge, and they have almost finished converting to hash log stuff, and my business contract is over, I’m happy to share this information, on how AI sees it, it’s actually very accurate compared to my real world results; this is useful for a lot of applications, and I have never seen such an implementation in the wild previously shared on the internet. Excuse whatever garbage formatting it emitted (cuz I can’t be bothered, but go through it you will learn something very advantageous):

Combining a pre-allocated NVMe MFT with a 4-way striped vSAN hybrid capacity layer delivers 10x to 30x faster small-file I/O compared to a single mechanical HDD, while metadata-heavy operations like directory scans, file listing, and Storj node audits run 50x to 100x faster.

This architecture resolves both major performance bottlenecks of spinning disks simultaneously: metadata seek latency and single-spindle queue congestion.

Why This Architecture Outperforms a Single HDD

1. File Creation & Ingress (15x to 30x Faster)

  • Single HDD: Writing a new 164 KB file requires 3 separate physical head movements on the same disk:

    1. Seek to locate/update the $MFT record.

    2. Seek to update the $INDEX_ALLOCATION ($I30 B-tree).

    3. Seek to write the 164 KB payload data clusters.

      At ~12.5 ms per random mechanical seek, a single HDD maxes out at 25–35 file creations per second (latencies around 30–40 ms per file).

  • Your Setup:

    • Steps 1 & 2 (Metadata): Executed in microseconds on the NVMe-pinned MFT/Index structures.

    • Step 3 (Data Payload): Hits the vSAN SSD Write Buffer first (sub-millisecond ACK back to Windows) and is later destaged in parallel across 4 separate vSAN disk groups/spindles.

    • Result: Ingress latency drops to 1–2 ms per file, allowing sustained creation speeds of 500–1,500+ files per second.

2. Cold Random Reads & Egress (4x to 10x Faster)

  • Single HDD: Reading a cold file requires 2 sequential mechanical seeks (1 for the MFT record to get the LCN data run map + 1 for the file payload), yielding ~50–60 random read IOPS total.

  • Your Setup:

    • The MFT lookup is 100% offloaded to NVMe (0.1 ms latency).

    • The 164 KB payload read is distributed across 4 physical vSAN disk groups. Because vSAN striping (Stripe Width = 4) splits/interleaves data across 4 independent mechanical drives (and utilizes vSAN read cache), 4 physical drive heads can satisfy incoming I/O requests concurrently.

    • Result: Random read latency drops from ~25 ms down to ~3–5 ms, increasing aggregate read throughput to 300–600+ random IOPS (or thousands if payload hits vSAN cache).

3. Directory Audits & File Scanning (50x to 100x Faster)

Storj nodes periodically execute heavy directory walks, garbage collection, and file audits across millions of pieces.

  • Single HDD: The drive head must jump back and forth continuously across the disk platter to read $I30 directory B-trees and MFT records. Scanning 24 million files on a single HDD can take 24 to 48+ hours, grinding node performance to a halt.

  • Your Setup: Because the entire $MFT and directory index layout (~132 GiB) sits on NVMe, Windows traverses the entire 24-million-file directory tree purely at flash memory speeds. The physical HDDs are never touched during metadata-only scans.

    • Result: A full 24-million-file directory scan finishes in minutes to an hour instead of days.

4. Queue Depth Handling & Parallelism

A single HDD can only service 1 I/O operation at a time (Queue Depth = 1). When Storj sends concurrent multi-threaded requests, the disk head thrashing causes latency spikes exceeding 500+ ms.

In your setup:

  • Storage Spaces: Treats the underlying vSAN virtual disk as a fast NVMe-backed volume for metadata.

  • vSAN Layer: Converts Windows block I/O into 4 parallel I/O streams across distinct ESXi hosts and disk groups, effectively elevating usable Queue Depth from 1 to 64+.

Quantitative Metric Comparison

Performance Metric Standard Single 7200 RPM HDD Your Setup (NVMe MFT + 4-Way vSAN Stripe) Performance Gain
MFT Lookup Latency 8.5 ms – 15.0 ms 0.05 ms – 0.2 ms (NVMe) ~100x Faster
164 KB File Creation Latency 30 ms – 40 ms 1 ms – 2 ms (vSAN Cache ACK) ~20x Faster
Max File Ingress Rate ~30 files/sec (~5 MB/s) ~800–1,500+ files/sec (~130–240 MB/s) ~30x–50x Higher
Cold Random Read Latency 20 ms – 25 ms 3 ms – 5 ms ~5x–8x Faster
Random Read IOPS (164 KB) ~50 IOPS 300 – 600+ IOPS (Uncached) ~6x–12x Higher
24M File Directory Walk / Scan 24 – 48 Hours 15 – 45 Minutes ~50x–100x Faster

25 cents,
Julio

That is clever! And you’re right to compare it to ZFS: it’s the Windows-equivalent of metadata-on-SSD (special metadata), and also checkpointing-writes-on-SSD (intent log).

If I’m reading the “my business contract is over” language correctly… is this also you saying Goodbye to being a SNO? Please stick it out until the end :smiling_face_with_three_hearts:

Thankfully, we no longer need many inodes with hashstore either.

This is fun

Your Linux setup operates on a fundamentally different performance tier compared to the Windows vSAN architecture detailed in the forum post.

While the Windows user has engineered a clever workaround for NTFS’s mechanical limitations using a tiered hybrid vSAN architecture (pinning the Master File Table ($MFT) to NVMe and striping the payload over HDDs via an SSD write buffer), your

It goes on a while. Just remember these LLM are tilted toward praise somewhat

So wait is this really a setup you had in production? And was it engineered this way primarily for storj or for other “real” uses?