ZFS Data Recovery: A Guide to RAIDZ1, RAIDZ2, RAIDZ3 and Stripe
In this article we review procedures for data recovery from RAIDZ1, RAIDZ2, RAIDZ3 and ZFS Stripe arrays created in the TrueNAS SCALE operating system. We demonstrate the sequence of actions in case of a hardware failure of the server and the methodology for restoring access to the data pool when one or more drives fail or data is accidentally deleted from the array.

- TrueNAS SCALE capabilities
- Method 1. Automatic recovery of ZFS arrays
- Method 2. Recovering RAIDZ with missing drives
- Method 3. Recovering deleted files
- Conclusion
- Questions and answers
- Comments
In addition to hardware failures, we cover recovery after deletion of an entire dataset, pool corruption, a critical operating system failure, ZFS filesystem damage, errors while adding new disks, incorrect controller behavior, and accidental initialization of drives in another system.
Data recovery is performed on Linux Ubuntu, but it is also possible in Windows and macOS environments.
Data Recovery from ZFS RAIDZ1, RAIDZ2, RAIDZ3, and Stripe Arrays
TrueNAS SCALE capabilities
TrueNAS is an open operating system for building network storage, based on Linux and using the ZFS filesystem. It provides data protection, integrity verification, efficient disk management and supports running virtual machines.
The platform supports various RAID types, including RAIDZ, which combines performance and fault tolerance. TrueNAS SCALE enables horizontal scaling by combining multiple nodes into a cluster while preserving key ZFS features: self-healing, snapshots, compression, deduplication and encryption.

The system is compatible with SMB, NFS, iSCSI and S3 protocols and also enables running containers and Kubernetes, making it a versatile solution for storing and processing data in various environments.
RAIDZ is a redundant disk array in ZFS with distributed parity. The use of variable-length blocks optimizes writes and allows automatic error correction during reads.
When recovering a degraded array (resilvering), the load on the remaining disks increases significantly. Therefore, RAIDZ is best suited for environments with moderate fault-tolerance requirements or for smaller-capacity disks where array rebuild time is minimal.
| Category | Capabilities |
|---|---|
| System type | Open-source NAS / server based on Linux |
| File system | ZFS support |
| RAID | RAIDZ1, RAIDZ2, RAIDZ3, Stripe, Mirror |
| Scaling | Horizontal (Scale-out) |
| Virtualization | KVM support (virtual machines) |
| Containers | Kubernetes, Docker (via Apps) |
| Network protocols | SMB, NFS, FTP, iSCSI |
| Management | Web interface (GUI) |
| Security | Data encryption, access control, ACL |
| Backup | Snapshots, Replication, Rsync |
| Cloud services | Integration with AWS, Google Cloud, Azure |
| Monitoring | Alerting, logs, statistics |
| Plugins / Apps | Extensibility via application catalog |
| High availability | Cluster (HA) support |
| GPU support | Yes (for containers and VMs) |
Method 1. Automatic recovery of ZFS arrays
In case of failure of server hardware components (power supply, motherboard or disk controller), direct access to data from the operating system becomes impossible.
Such situations also occur when the server fails to boot due to a critical error during a TrueNAS SCALE update or when the system partition is damaged.
Even if files and disks are not physically damaged, access to a RAIDZ array may be lost and standard ZFS tools may not detect the drives or allow pool import. In these cases, specialized software, such as Hetman RAID Recovery, enables safe access to data and recovery of information.
In this example we demonstrate the automated recovery process on a computer running Ubuntu.
First power down the server and carefully remove all drives that were part of the array.

Connect them to a workstation: the optimal option is directly to the motherboard via SATA cables for maximum speed and stability of data transfer. If the motherboard lacks free ports, external USB dock stations or USB-to-drive adapters can be used.

Note that when connected through dock stations the scanning speed may be lower, so for large volumes of data it is preferable to use internal ports.
After connecting, verify that the drives appear in Ubuntu in the Disks utility, but do not initialize them if the system prompts this action.

Immediately after verification, launch Hetman RAID Recovery to perform automatic array assembly.
The key feature of Hetman RAID Recovery is deep analysis of ZFS metadata. The software does not require a functioning operating system or controller — it reads service information directly from the drives and automatically reconstructs the pool structure.
Since ZFS stores all critical array configuration data inside the pool itself, the logical integrity of files is preserved even if the server environment is completely unavailable. As a result, the user gains access to data in a familiar form without dependence on the original system.
This article demonstrates various array configurations:
- RAIDZ1 on three disks,
- RAIDZ2 on four,
- RAIDZ3 on five,
- and Stripe on two drives.

We will examine the recovery algorithm in detail for a three-disk RAIDZ1 array in a situation of complete server hardware failure or a critical error after updating TrueNAS SCALE.
It is important to note that this approach is universal and can also be applied to RAIDZ2, RAIDZ3 and Stripe configurations.
After launching Hetman RAID Recovery, it automatically scans all connected devices. The program reads ZFS service metadata, analyzes the configuration of virtual vdev groups and based on the obtained data reconstructs the correct RAIDZ1 model.
The working window displays detected drives and assembled logical structures — you can immediately continue working with them: perform detailed analysis, view the data structure or recover required files.

Select the required RAIDZ1 from the list of reconstructed arrays and start the Fast scan mode to quickly determine the data structure.

After the scan completes, the recovered filesystem with the full directory and file hierarchy will be displayed in the main window. Select the required objects and click Recovery.

In the next step, specify a folder to save the data — preferably on a separate media with sufficient free space.

Confirm starting the process, specify the final destination path and click Recovery again to begin copying. After the operation completes, click Finish.
As a result, data from the ZFS RAIDZ1 pool will be recovered and available for normal use.

Method 2. Recovering RAIDZ with missing drives
Now consider the case of one or more drive failures in a RAIDZ array.
The RAIDZ architecture provides fault tolerance depending on the array type:
- RAIDZ1 tolerates loss of one drive.
- RAIDZ2 tolerates loss of two drives.
- RAIDZ3 tolerates loss of three drives.
In the case of Stripe there is no redundancy, so failure of any drive leads to complete data loss.

If it is not possible to connect all drives, you can create an image of the missing drive and use it together with the other drives for further recovery.
Thanks to distributed parity mechanisms and data integrity checks, specialized software such as Hetman RAID Recovery can reconstruct lost blocks and restore access to information if the number of failed drives does not exceed the permissible level for the specific RAIDZ type.
If this threshold is exceeded, the array’s logical structure is disrupted and standard software methods become ineffective. In such situations, recovery is possible only using professional equipment in specialized laboratories.
Ensure the target media has sufficient free space to store recovered data and carefully remove the drives from the server and connect them to a computer via SATA ports or an external dock station. It is important to avoid any writes to these drives, as this may cause irreversible data loss.

Before starting, close all applications that might use these drives and temporarily disable automatic backups or synchronization. If the system does not mount the array, do not initialize the drives, create partitions or format them.
Leave them in their current state and proceed directly to the recovery procedure. Following these recommendations significantly increases the chances of successful and safe data recovery regardless of the RAIDZ type or Stripe configuration.
If your workstation architecture does not allow connecting all drives simultaneously, the optimal solution is to use virtual disk images. This method involves creating exact bit-by-bit copies of each drive for subsequent analysis.
After mounting the image of the missing drive, Hetman RAID Recovery will treat it as a full physical device and, combined with the available drives, automatically reconstruct the array structure. This approach allows starting data recovery even when connection ports are insufficient — preserving safety and data integrity at every stage.
We will review the recovery process using RAIDZ3 as an example, in which three drives failed simultaneously.
This array configuration provides the possibility of data return even in such a severe failure — we perform this using Hetman RAID Recovery.
Immediately after opening, the software automatically scans all connected drives, reads service information and on that basis reconstructs the original array structure. The working window displays all detected physical disks and formed virtual configurations, which can be used immediately. Select the found RAIDZ3 and enable Fast scan.

As soon as the check completes, the working window will display the complete structure of the reconstructed array with all directories and files.

Mark the required items and click Recovery. Then specify the folder for saving and confirm the operation by clicking Recovery again.

When copying completes — click Finish.
After completing all steps, recovered files from the RAIDZ3 array will be fully usable in normal operation.

Method 3. Recovering deleted files
Finally, we consider one of the most common scenarios — accidental deletion of files from a RAID array.
In this example we recover data from a Stripe created from two disks under the ZFS filesystem.
The characteristic of Stripe is that data is distributed across all drives without any redundancy. This means that no single drive contains complete files. For successful recovery all drives must be connected simultaneously and treated as a single logical structure. If one of the drives is missing or not connected, the software will not be able to read the data.

Before starting, ensure that all drives are physically connected to the computer — directly via SATA to the motherboard or using an external dock station.
It is important not to write new data to these drives or initialize them in the system to avoid overwriting lost files.

In Ubuntu launch Hetman RAID Recovery.
The software will automatically scan all connected drives, read ZFS metadata and reconstruct the logical Stripe structure accordingly. In the main window you will see the physical disks and the assembled array ready for work.

Next, select the Stripe from the list of detected arrays and start a Full Scan. A full scan is required because after file deletion in ZFS only a deep analysis allows assembling fragmented data and restoring the correct folder structure.

Additional settings are usually not required; just click Next and wait for the process to finish. After the scan completes, the main window will show the recovered array structure with all folders and files. If necessary, use the preview to check the contents of documents, images or other files.
Select the required files and folders and click Recovery.

Specify the destination for recovered data on a separate media with sufficient free space and confirm the start of the process by clicking Recovery again.
After copying completes click Finish.

As a result, all files will be recovered and available for normal use.
This process ensures data safety, enables file restoration even after accidental deletion and preserves the ZFS filesystem structure without risking damage to other data on the drives.
Conclusion
Data recovery from the ZFS filesystem and RAIDZ1, RAIDZ2, RAIDZ3 and Stripe arrays is complex but entirely feasible with the correct approach and understanding of these solutions’ architecture. Thanks to built-in data integrity and error-checking mechanisms, ZFS provides a high level of protection, especially in RAIDZ2 and RAIDZ3 configurations.
Nevertheless, even such reliable systems are not immune to data loss due to hardware failures, user errors or critical pool corruption. The least protected configuration remains Stripe, where the absence of redundancy means complete data loss if any drive fails.
Recovery success depends on many factors: RAID type, number of failed drives, filesystem condition and timeliness of actions. Key recommendations are to immediately stop writes to the affected array, perform correct diagnostics and use specialized software or professional services.
Therefore, to minimize the risk of data loss it is important not only to know how to recover data, but also to implement backup strategies in advance and choose the appropriate RAID level according to the criticality of the information.







