TL;DR
The author tests building a home NAS on vanilla FreeBSD in a VM, planning UFS for the OS on NVMe and a ZFS RAID1 mirror on two SATA SSDs. The post walks through SSH-based installation, LiveCD workarounds to enable SSH, disk partitioning, and creating a ZFS mirror pool named 'tank' with lz4 compression.
What happened
The author set up a virtual test of a planned FreeBSD-based home NAS before buying hardware. They chose FreeBSD 14.3 for the trial and performed a remote installation over SSH from the LiveCD. Because the LiveCD filesystem is read-only, they mounted a tmpfs over /etc to allow changing SSH settings, set a root password, enabled PermitRootLogin, and started sshd to continue the install remotely with bsdinstall. The system disk (ada0) was partitioned with GPT and populated with a 512K freebsd-boot slice, a 2GB swap slice, and a 14GB UFS root. Two additional disks (ada1 and ada2) were prepared with GPT and freebsd-zfs partitions, then combined into a mirrored ZFS pool using zpool create tank mirror ada1p1 ada2p1. The pool mounted under /tank by default; the mountpoint was changed to /data and compression was enabled with compression=lz4.
Why it matters
- ZFS provides integrated pooling and RAID features so no separate RAID or LVM tools are needed.
- Doing the install manually on vanilla FreeBSD gives finer control than using appliance distributions like TrueNAS.
- Using UFS for the system reduces complexity and conserves RAM compared with running the OS on ZFS (per the author’s initial choice).
- Enabling lz4 compression can improve storage efficiency on a NAS without heavy CPU cost.
Key facts
- Planned hardware: Lenovo ThinkCentre M720s SFF with space for 2 SATA III SSDs and one M.2 NVMe (source author’s planned build).
- Test environment: virtual machine with three 16GB virtual disks to mirror the intended physical layout.
- Installer: FreeBSD 14.3 installed over SSH using bsdinstall and LiveCD mode.
- LiveCD workaround: mounted a tmpfs over /etc to allow editing sshd_config and setting a root password while running from the read-only ISO.
- System disk (ada0) partitioning used GPT with freebsd-boot (512K), freebsd-swap (2GB), and freebsd-ufs (14GB) for root.
- Two disks (ada1, ada2) were initialized with GPT and a single freebsd-zfs partition each for ZFS use.
- ZFS pool creation command used: zpool create tank mirror ada1p1 ada2p1, which created a RAID1 mirror named 'tank'.
- Default ZFS mountpoint was /tank; it was changed to /data with zfs set mountpoint=/data tank.
- Compression was enabled on the pool using zfs set compression=lz4 tank.
What to watch next
- FreeBSD: Home NAS, part 2 — introduction to Packet Filter (PF) firewall (next in the series).
- FreeBSD: Home NAS, part 3 — WireGuard VPN, Linux peer, and routing.
- FreeBSD: Home NAS, part 4 — Local DNS with Unbound; parts on ZFS datasets, snapshots, monitoring, and Samba follow.
Quick glossary
- ZFS: A combined file system and logical volume manager that provides pooled storage, data integrity, snapshots, and built-in RAID capabilities.
- zpool: The command‑line utility used to create and manage ZFS storage pools composed of one or more devices or vdevs.
- RAID1 (mirror): A redundancy configuration that keeps identical copies of data on two or more disks, providing protection against a single disk failure.
- UFS: The Unix File System, a traditional BSD file system often used for OS partitions; generally simpler and less memory‑intensive than ZFS.
- LiveCD: A bootable installation medium that runs the OS from read-only media, often used to install or repair systems.
Reader FAQ
Why did the author choose vanilla FreeBSD instead of TrueNAS?
The author wanted to perform all configuration manually on vanilla FreeBSD rather than using the appliance-style automation of TrueNAS.
Was the system installed on ZFS or UFS?
In this test the system was installed on UFS for the root partition, although the author noted they later considered using ZFS for the system disk.
How was SSH enabled from the LiveCD to allow remote installation?
The author copied /etc into a tmpfs, mounted tmpfs over /etc to allow editing sshd_config, set a root password, enabled PermitRootLogin, and started sshd before running bsdinstall.
How much RAM is required to run ZFS effectively?
not confirmed in the source

FreeBSD: Home NAS, part 1 – configuring ZFS mirror (RAID1) 0 (0) By setevoy | 12/23/2025 0 Comments Click to rate this post! [Total: 0 Average: 0] I have an…
Sources
- FreeBSD: Home NAS, part 1 – configuring ZFS mirror (RAID1)
- Home NAS, part 1 – configuring ZFS mirror (RAID1)
- How to Configure RAID1 (Mirroring) with ZFS on FreeBSD …
Related posts
- Round the tree, yes, but not round the squirrel — a Perelman paradox
- Y2K duty postponed one honeymoon by 17 years — more millennial IT tales
- Your Real Biological Clock: Mortality Shapes When People Become Parents