The Handbook

    Theme
    • Guides
        • Check a system before installing FreeBSD
        • Orient a Linux administrator on FreeBSD
        • Supported FreeBSD releases
        • Choose a FreeBSD documentation and support channel
        • Move files safely without GNU mv -t
        • Update, upgrade, or update packages?
        • Upgrade 14.4 or 15.0 to FreeBSD 15.1
        • Choose packages, ports, or poudriere
        • Choose the quarterly or latest package branch
        • Choose a FreeBSD download or package mirror
        • Make a system setting persistent
        • Configure locale, keyboard, and time zone
        • Configure a serial console for recovery
        • Choose a custom kernel, module, or loader setting
        • Run a Linux binary with the compatibility layer
        • Check desktop and laptop hardware before installation
        • Choose and check a graphics driver
        • Choose Xorg or Wayland
        • Build a maintainable desktop baseline
        • Install and check a desktop browser
        • Check laptop Wi-Fi, power, and suspend
        • Check multimedia readiness
        • Choose and configure a printing stack
        • Run Windows applications with Wine
        • Snapshot and replicate a ZFS dataset
        • Choose a filesystem and storage layout
        • Operate ZFS without losing the recovery path
        • Restore files from a ZFS snapshot
        • Read ZFS pool health and run a scrub
        • Replace a failed device in a ZFS mirror
        • Replicate a ZFS dataset over SSH
        • Change PF safely on a remote host
        • Configure a narrow WireGuard tunnel
        • Plan a FreeBSD home server
        • Choose a mail server or an outgoing relay
        • Publish a network service safely
        • Choose a jail network model
        • Choose native jails or a jail manager
        • Choose a jail or a bhyve virtual machine
        • Establish a FreeBSD security baseline
        • Choose a MAC policy
        • Audit security-relevant activity
        • Start a DTrace performance investigation
    • Integrations
        • Create a first jail with Bastille
        • Compare jail managers and OCI tooling
        • Publish a Bastille service through PF
        • Mount a ZFS dataset in a Bastille jail
        • Update and upgrade Bastille jails
        • Back up and restore a Bastille jail
        • Prepare bhyve and vm-bhyve
        • Choose NFS or Samba for file sharing
        • Choose ZFS backup automation
        • Operate a signed poudriere repository
        • Manage FreeBSD configuration with Ansible or Salt
        • Run Motion with webcamd on FreeBSD
        • Design a reverse proxy, certificates, and monitoring
    • FAQ
    • Troubleshooting
        • Recover an interrupted freebsd-update run
        • Resolve a package repository or ABI mismatch
        • Diagnose the FreeBSD boot path
        • Recover with a ZFS boot environment
        • Diagnose DNS, routing, and firewall paths
        • Diagnose network mbuf exhaustion
        • Bind a service to a low port without running it as root
        • Diagnose audio output or input
        • Diagnose webcamd, cuse, and a webcam
        • Fix USB device permissions without opening every device
    • About this handbook
    • Synopsis
    • Choose from operational requirements
    • Make datasets follow policy
    • Make UFS filesystems follow recovery boundaries
    • Design redundancy and backup separately
    • Plan replacement before buying capacity
    • Primary references

    Choose a filesystem and storage layout

    Last reviewed
    13 August 2026
    Applies to
    15.1-RELEASE, 15.0-RELEASE, 14.4-RELEASE

    Synopsis #

    ZFS and UFS are both first-class FreeBSD filesystems, but they solve different operational problems. ZFS integrates checksums, datasets, snapshots, replication, compression, and pool management. UFS provides a smaller traditional filesystem boundary with mature repair and dump/restore tools.

    The useful choice is not which filesystem is universally better. It is which failure modes, recovery procedures, and administrative costs fit the host.

    Choose from operational requirements #

    Requirement Likely fit Qualification
    Checksummed data and metadata ZFS Redundancy is still needed to repair detected damage automatically.
    Frequent snapshots and replication ZFS Snapshots on the same pool are not independent backups.
    Separate properties or quotas for many workloads ZFS datasets Dataset boundaries should follow backup and delegation boundaries.
    Small, simple, or memory-constrained installation UFS may fit Measure the actual platform and workload rather than using a universal memory rule.
    Traditional full-filesystem dump and restore UFS dump operates on a filesystem, not an arbitrary directory tree.
    Boot environments ZFS Confirm the installed boot-environment tooling and preserve pool compatibility.

    Neither choice removes the need for backups, monitoring, capacity planning, and recovery practice.

    Make datasets follow policy #

    On ZFS, a dataset deserves to exist when it needs a distinct property or lifecycle, such as:

    • a separate snapshot or retention schedule;
    • a different mount point, quota, compression setting, or delegation boundary;
    • independent replication or restoration;
    • a jail, virtual machine, database, or user-data boundary.

    Avoid creating datasets merely to reproduce every directory. Excess boundaries increase snapshot, mount, and replication complexity without adding policy.

    Inspect the installed layout before adding one:

    $ zpool status
    $ zfs list -o name,mountpoint,used,available,compression
    

    Make UFS filesystems follow recovery boundaries #

    Separate UFS filesystems can limit space exhaustion and allow independent fsck, dump, and restore operations. They also create fixed allocation boundaries that are harder to change than a ZFS dataset quota.

    Inspect devices, partitions, and mounted filesystems before planning a change:

    $ gpart show
    $ mount
    $ df -h
    

    Do not infer an unmounted partition’s purpose from its device name. Record labels, partition types, /etc/fstab, and backups before formatting or resizing it.

    Design redundancy and backup separately #

    A ZFS mirror or RAIDZ vdev can keep a pool available after certain device failures. It does not protect against deletion, destructive administration, compromised credentials, fire, or loss of the entire host. A UFS filesystem on a hardware mirror has the same distinction.

    Define three separate controls:

    1. Availability: which device failures the local layout must survive.
    2. Recovery point: how far data may roll back after loss or corruption.
    3. Recovery location: which independent system or medium retains the copy.

    The ZFS operations hub separates snapshots, selected-file restoration, local and remote replication, integrity checks, and device replacement. Begin with snapshot and replication , then document selected-file restoration and an independent remote replication path .

    Plan replacement before buying capacity #

    Record device models, sizes, sector characteristics, controller paths, and the physical slot corresponding to each provider. Replacement is safer when the failed device can be identified without guessing from ada0 or da1 alone.

    For ZFS, inspect the topology rather than treating pool size as redundancy:

    $ zpool status -P
    $ zpool list
    

    Adding a second single-disk top-level vdev expands a striped pool; it does not turn the first disk into a mirror. Pool topology changes deserve their own reviewed procedure.

    Schedule pool-health and scrub review before a failure. The failed mirror-device procedure is intentionally limited to a simple topology; it is not a generic replacement recipe for RAIDZ, dRAID, special, or deduplication vdevs.

    Primary references #

    • FreeBSD Handbook: Storage
    • FreeBSD Handbook: The Z File System
    • zpoolconcepts(7)
    • zfsconcepts(7)
    • ufs(5)
    • gpart(8)
    • dump(8)

    Independent documentation. Not affiliated with or endorsed by the FreeBSD Project or the FreeBSD Foundation.

    Report a bug
    • Synopsis
    • Choose from operational requirements
    • Make datasets follow policy
    • Make UFS filesystems follow recovery boundaries
    • Design redundancy and backup separately
    • Plan replacement before buying capacity
    • Primary references