Btrfs · RAID1 · RAID10 · RAID5 · RAID6 · write hole · degraded · chunk tree · Unraid · parity · parity2 · XFS per disk · mover
Btrfs and Unraid array recovery. A file system that stripes itself, and an array that keeps every disk readable on its own.
Btrfs manages its own devices: a volume can spread data and metadata across drives in single, RAID 1, RAID 10, RAID 5 or RAID 6 profiles, with the chunk tree recording where each chunk lives. Its RAID 5 and 6 profiles carry a write hole the kernel still warns about: Debian's patch, current in March 2024, prints that btrfs RAID5/6 is experimental and has known data-loss bugs, and the Btrfs 6.2 pull request of December 2022 said it had fixed destructive read-modify-write for RAID 5 data while RAID 6 still needed work. Unraid is different again: a dedicated parity disk, or two, over data disks that each carry their own XFS or Btrfs file system, so that a lost data disk is reconstructed from parity and a lost parity disk costs nothing but protection. Unraid's usual arrival is parity errors after an unclean shutdown, or two data disks gone with one parity. A set of two to four members is £500 + VAT upwards after the free look, fixed in writing.
Rather talk it through? An engineer answers the bench line
0800 6890668
Models and versions we see.
Which level is it →| Family | Models or versions | Metadata, defaults and notes |
|---|---|---|
| Btrfs RAID 1 and 10 | Two copies of data and metadata | Recoverable from any surviving copy |
| Btrfs RAID 5 and 6 | Parity profiles; write hole | Kernel still warns; assembled from images |
| Unraid | 6.x; parity, parity2 | Per-disk XFS; parity reconstructs a lost disk |
What tends to go wrong on Btrfs or Unraid.
Btrfs and Unraid symptoms, and how long each gives you.
Not listed? Describe it on the form →What the message means on Btrfs or Unraid.
Describe yours to us →| What you see | The usual reason | Where that leaves you |
|---|---|---|
| Degraded | A member out; still readable | Image the weak member before any resync or resilver |
| Will not assemble or import | Too few current members, or metadata damaged | Metadata read from images; assembled in software |
| Read-only or suspended | Errors stopped I/O | Read-only on images at the newest consistent state |
| Command already run | --create, -F, chkdsk, fsck | Assessed for what was written |
From the parcel arriving to your files going back.
Work we have closed →Logged the day it lands, and the first look costs nothing Free
A case number goes on the parcel and a number on every member the day it is opened, matched to the slot you wrote on it. Each member goes on the imager its interface needs, never on a controller, and its metadata is read before a sector is: the level, the order, the stripe size, the event counts that say which member is current and which dropped out first. An engineer settles what has happened to the set and how much of it can honestly be read back. Back to you come two things together: a straight note of what is liftable and what is not, plus one figure, fixed and written down. Accept it, or decline and owe us nothing.
Every member imaged, including the one that failed first
Every drive in the set is imaged sector by sector, weak areas last, on hardware that controls every retry, with a map of what could not be read kept for each. Members with failed heads go to the clean bench first; that is the drive site's work and the same bench does it. The drive that dropped out first is imaged too, because it still holds every stripe written before it dropped, and a rebuild that stalled part-way never reached them.
The geometry, from the metadata or from the parity
Where the controller's metadata survives on the members, the order, stripe size, parity rotation and data offset are read from it. Where it was cleared or overwritten, they are recovered from the data: parity across the members at the same offset should XOR to zero on a consistent stripe, which confirms the level and finds the stale member; where parity lands says the rotation; entropy at stripe edges and the file system's own anchors give the stripe size, the order and the start.
Assembled in software, and repaired on the virtual volume
The set is put together from the images in software, with nothing written to any of them: the current members in, the stale member used only to fill holes a survivor could not give. The file system is checked and repaired on a copy of the virtual volume, VMFS and CSV volumes opened and the virtual machines' disks extracted, databases repaired where they need it. The originals are not touched again.
You see the file list before you pay
What was recovered is listed for you first, and only then does a bill exist. Approve the list and it is invoiced; turn it down and it is not — and where nothing has come back, most jobs carry no charge at all. Recovered data travels home on fresh media bought in for your job, with the postage at our end. Your case is not closed until you have opened the files on a machine of your own.
From the bench
- Copy out the read-only diagnostics first: --examine, zpool status, Get-VirtualDisk, dmesg. They are the case.
- The forum's fix writes. --create, --assemble --force, zpool import -F, chkdsk and fsck all belong on images.
- Say the version. mdadm, OpenZFS and Windows all changed their on-disk formats, and the tools follow.
What helps, and what harms.
Do this much first
- Copy out the read-only diagnostics
- Power down and label the members
- Send every member, and any cache, log or witness device
- Tell us the version and every command that was run
What sets us back
- mdadm --create or --assemble --force
- zpool import -F, -X or -T
- chkdsk or fsck on a degraded or mis-assembled volume
- Resetting or recreating the pool
Questions answered before you commit.
Unraid says my parity is invalid after a power cut. Is the data gone?
Usually not. The data disks each hold their own file system and are readable on their own; parity is recomputed from them. If a data disk has also failed, it is imaged and reconstructed from the parity image.
Do I send the controller or the unit?
The controller only if it was replaced and the set is now foreign, or if it holds an encryption key. A NAS or DAS unit, only if its bridge holds the layout; the pages say which.
What does it cost?
A set of two to four members is £500 + VAT upwards after the free look; larger sets from £1,250 + VAT, fixed in writing.
How long does it take?
5–10 days at the bench for a set of two to four; 10–15 days at the bench for larger sets.
Begin here if yours is doing the same thing.
Nothing gets worse while it is powered down.
Looking at it is free. Back comes a list of what opened and what did not, together with a single price to finish, set down in writing while you are still free to say no. On most jobs an invoice only follows the data. Until that list reaches you, leave the server off and the drives in their slots.