ZFS on OSX and Windows

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

gea

Well-Known Member
Dec 31, 2010
3,644
1,444
113
DE
OpenZFS on Windows 2.4.1 rc7 is no longer a Pre Release but Latest. While still not the final release edition, the devs are confident enough to suggest this edition if you want to try OpenZFS on Windows. Especially in combination with hd + nvme hybrid pools you should use OpenZFS 2.4. Especially the blake3 fix (propably not a Windows but a OpenZFS issue is welcome, you want it for Fast(est) Dedup)

Releases · openzfsonwindows/openzfs
openzfsonwindows/openzfs

** rc7

  • Fix blake3 BSOD
  • Internal: automatically populate symstore for builds
  • Internal: fix github CI for minimal build, disable spdxcheck
The multi-OS, multi-server web-gui napp-it cs supports the new features
 

gea

Well-Known Member
Dec 31, 2010
3,644
1,444
113
DE
A Windows NAS with web-gui for Storage Spaces and ZFS Pools in 3 steps

Required hardware: X86-64 system with Windows 11 or Windows Server 2019 or later
(the cheap Essentials version is great, as it supports AD and SMB Direct)
Min. 8GB RAM and 64GB+ boot drive
Min. 1 data drive (HDD, NVMe, Hybrid is fine, redundancy recommended), USB drive for backup

Step 1. Install OpenZFS Installer:
Releases · openzfsonwindows/openzfs

Step 2. Download Web-GUI (copy and run, no installation required),
https://napp-it.org/doc/downloads/xampp.zip

unzip xampp -> c:\xampp start web-gui: run "C:\xampp__start_zfs-gui_as_admin.bat" as admin

The napp-it web-gui (https://localhost) consists of a frontend (Xampp Apache webserver + web-gui) and a minimal backend service. The backend service uses barely more than 50k RAM and can also remotely manage a 2GB ZFS NAS (Raspberry). The frontend and backend run on FreeBSD, Illumos, Linux, OSX, Solaris, and Windows. The frontend can manage multiple servers, something like vSphere for storage.

Step 3: there is no step 3
Getting started:
Create ZFS (Storage Spaces) pool, also possible as RAID over SMB (vhdx files).
Shares, ACLs, and users are managed via Windows. ZFS Replication: any to any (any OS)
Encrypted datasets with 2/3-way key split (key parts: local, frontend, https1, https2)
All ZFS properties up to OpenZFS 2.4 (RAID-Z Expansion, Fast Dedup, Hybrid Pool etc.)

https://napp-it.org/doc/downloads/windows-aio.pdf
 

gea

Well-Known Member
Dec 31, 2010
3,644
1,444
113
DE
zfs-windows-2.4.1rc8 Latest

** rc8

Fix thread priority BSOD on large multicore systems in KiAddThreadToPrcbQueue()
Correct potential arm64 disk IO race in completion.
Speedup dirlisting, avoid memory fragmentation
OpenZVOL driver unload fix
Fix double free of MDL in write path (CrystalDiskMark)

The remaining bugs are more and more very special and depend on rare environments
like Win10 and many cores cores. For many systems OpenZFS on Windows works well.
 

gea

Well-Known Member
Dec 31, 2010
3,644
1,444
113
DE
New release candidate 10 for OpenZFS on Windows 2.4.1


** rc10
  • Add FileCompressionInformation to enable query of on-disk compressed size
  • Do some performance fixes to make things faster
  • Hardlink deletion would hide all other hardlinks
  • Fix deadlock in write path
  • Prioritise HarddiskXPartitionY paths over hack path
  • Add import --fix-gpt to correct NumPartitions=9 to NumPartitions=128.
  • Fix up condvar and mutex
  • Use User credentials, enabling zfs allow to work. Mix Unix and Windows permissions and hope for the best
  • OpenZVOL unload bug fixes
  • Fix spl_panic() call print and stack
So with Unix created GPT partitions, they use gpt.NumPartitions=9, this Windows does not accept, and Windows
computes gpt.checksum "as if" gpt.Numpartitions==128. So checksum mismatches, and partition table is ignored.
This is why OpenZFS uses path encoding of #partition_offset#partition_length#/path/to/device, saved into vdev->vdev_physpath.
This continues to work.
We added a new zpool import --fix-gpt which will rewrite gpt.NumPartitions=128, and recompute gpt.checksum. Since libefi already reads in the full GPT partition, we need not change anything else, and write it back out. This is left as a user option, as there could be partition usage I am unaware of. Who know if some legacy archs can only use fewer partitions? Or store microcode in the backhalf.
If GPT is written with gpt.NumPartitions=128, Windows will recognise the partitions, and create //?/HarddiskXPartitionY device objects, so we can import those directly, no need for special path. Success. We prioritise //?/HarddiskXPartitionY over #partition_offset#partition_length#/path/to/device - but it will try both.
Let's check for regression in this release.

Evaluate and report issues