Help with ZFS send backups

Hey guys I am using Xubuntu with it’s root on ZFS install feature. I also have a RAID 10 ZFS pool configured and mounted on the same machine. I have done ZFS snapshots of the root pool and sent them to the second pool, however the second pool is not occupying nearly enough space to store the entire backup. I know how incremental backups and compression and all that work and that is not the issue here. The root pool is 14.6GB and the second pool is only using 2.41MB. Clearly it is not holding the whole thing. Do I need to clone it first or something? I want to be able to use it as a backup if this root gets corrupted or fails so I can just install Xubuntu on a new system, mount the second pool, and receive the snapshot. What did I do wrong?

1 Like

Can you look through the CLI history and post the command you used?
Also, have you looked in the mounted backup pool and see what it contains?

My guess is you only sent an almost/completely empty dataset.

3 Likes

Not wanting to be a dick, but are you sure you sent all the datasets?
Like, the rpool, and the bpool and such?
I have not run zfs root, but IIRC, it makes a few different sets of data, for different tasks.

You are right, it would need several gigs of storage if done correctly, even on the same machine.

Did you do a recursive send? or just a newest snapshot send?

There is a tool in the repo, Syncoid, in JR-S’s “Sanoid” package that can simplify sending snapshots, but it’s dangerous if you mess up source and target. I guess the same as typing the base command is not using the tool.
But it does give a nice progress and stuff.
It is not needed, I just like the way it can do local, or remote, and simpler one-liner. But you can of course just use the direct zfs send|receive command without it.

But mostly, I would check you a- got all datasets, and b- all children, recursively

To be more specific - it’s easy to send the top-most zfs file system, when most/all data is held by child file systems.

e.g. if there is a file system structure like:
tank
tank/data1
tank/data2

only sending tank does not by default include tank/data1 nor tank/data2.

1 Like

Log knows very well. I think he just neglected to include it in his initial advice.

The dude is like, Very knowledgeable about zfs. Uses it a lot

2 Likes

Yeah, was just a terse combination of “fuck I should already be in bed” and “I’ll hold off on vomiting text until I get some information”, I just wanted him to have a reply so my intention to help didn’t evaporate into the lost mists of my brain forever.

2 Likes

Probably not using syncoid :slight_smile:

1 Like

Just wanted to say I figured it out. I wasn’t specifying recursion in the send command or using an entire directory in the receive command. Thanks for the replies guys.

3 Likes