Introduction
EVE-OS supports redundant storage through the openZFS (ZFS) storage stack, starting with EVE-OS 8.0.0. You configure the RAID level at installation time using grub configuration parameters. After installation, you cannot migrate from one storage type to another without reinstalling EVE-OS. This procedure covers system requirements, RAID level options, installation procedures, and storage replacement. Use this when planning or installing EVE-OS on nodes that require fault-tolerant persistent storage.System Requirements
ZFS requires sufficient memory and disk resources. The following specifications are recommended for sustained performance, but not strictly required:
ZFS can be installed on configurations that do not meet these recommendations, but performance might be reduced. On devices that do not qualify, ext4-based storage is an alternative.
RAID Level Options
EVE-OS supports four ZFS RAID levels: none, raid1, raid5, and raid6.
For raid1, raid5, and raid6, EVE-OS must be installed on a dedicated disk that is separate from the pool disks. raid0 (none) supports sharing the install disk with the pool.
We recommend that all pool disks be the same type (NVMe, SSD, or HDD) and the same capacity. If disk capacities differ, the pool capacity is determined by the smallest disk in the pool, and the extra capacity on larger disks is wasted.
Storage Overhead
ZFS reserves approximately 20% of physical storage for internal use. Your usable storage before RAID is therefore about 80% of physical capacity. The following table uses 100 GB disks as an example and includes a typical 2:1 compression ratio for VM workloads:
ZFS compression ratios depend on workload. Database workloads typically achieve 2:1 compression, recovering the storage overhead from RAID. In a worst case (1:1 compression), available storage equals the post-RAID figure in the preceding table.
ZFS also reserves RAM for efficient storage stack operation:
Configure ZFS During Installation
The ZFS RAID level is set through grub configuration parameters in the EVE-OS installer image. You must include these parameters before installation. They cannot be applied to an existing installation.USB installation
To create a custom installer with ZFS configuration:-
Create an overrides directory on your computer:
-
Create a file named
grub.cfgin theeve-overridesdirectory. Seteve_install_zfs_with_raid_levelto your desired RAID level and specify the install and persist disks. The following example configures raid5 with EVE-OS on/dev/sdaand pool disks on/dev/sdb,/dev/sdc, and/dev/sdd: -
Build the custom installer image using Docker. Replace
VERSIONwith your EVE-OS version (for example,12.0.3-lts) andARCHwithamd64orarm64: On Linux or macOS:On Windows (PowerShell): -
Flash the resulting
installer.rawfile to a USB drive and boot the node from it.
iPXE installation
iPXE-based installation supports the same grub configuration parameters as USB installation.Example grub configurations by RAID level
For raid1, do not list the install disk in
eve_persist_disk. Including the install disk in the persist disk list for a raid1 configuration results in a single-disk pool (no mirroring) or a failed installation.
Upgrade Considerations
EVE-OS does not provide a non-disruptive migration path from ext4-based storage to ZFS. If an existing device is configured with ext4, upgrading EVE-OS preserves the ext4 storage. To switch to ZFS, back up your applications, then perform a fresh USB installation with the desired ZFS configuration and re-onboard the node. Upgrades from ZFS-based storage to a newer EVE-OS release are supported.Replace a Disk
Disk replacement requires SSH access to the EVE-OS device. The replacement disk must be the same size or larger than the original, and you must replace disks one at a time. Concurrent replacement of multiple disks is not supported. The following steps replace a failed or degraded disk in a raid5 pool:-
SSH to the node and enter the pillar namespace:
-
Check the pool status to identify the disk to replace:
-
Run the replace command. In this example,
/dev/sddis replaced with/dev/sdc: -
Enable automatic pool expansion so the replacement disk’s full capacity is used:
-
Verify the replacement:
The
zpool statusoutput should show the new disk in the pool configuration. Thezpool listoutput should show the updated pool size if the replacement disk is larger.
Next Steps
Expand ZFS Pools on Nodes
Add a disk to an existing pool on a node configured with raid level none.
Configure grub.cfg for EVE-OS Multidisk Installation
Control disk partitioning and ZFS pool layout at installation time.
Install EVE-OS
Install EVE-OS on a device with the prepared installer image.