SOLVED Manual zfs replication issue

spgrvl

Dabbler
Joined
May 15, 2020
Messages
15
Hello. I have a small server running FreeNAS and for backups since I don't have another machine to replicate to, I do manual incremental zfs send to a big Usb drive once a month. On my machine I have 2 pools, both encrypted. One is running on HDDs and serves mostly media files, computer/phone backups etc, and the second one is running on SSDs and has Plugins, Jails and VMs.

While doing the manual incremental backup to the usb drive (via cli), the HDD pool gets updated normally. This is not the case with the SSD pool though, which fails every time I try to do incremental backups and for several months I have not found any solution so I have to delete the previous backed up and zfs send the pool from scratch.

The error I'm getting is:
Code:
cannot receive incremental stream: destination <...> has been modified
since most recent snapshot
warning: cannot send '<...>': signal received

My suspicion is that since iocage (jails and plugins) are on that pool, they get modified all the time so between the time i make the snapshot and try to zfs send it, there are modifications. I have tried turning off all of my running jails and plugins but I keep getting the same error.
I'm also baffled with the "destionation <...> has been modified" part of the error. How is that possible? The backup pool is imported on freenas UI so that it can get decrypted etc prior to the replication attempt, although it's jails/plugins/vms should not be running, and they are not shown in the freenas UI as being so...

Have anyone had the same issue? And is there a way to overcome it? I have seen the -F flag that forces a rollback in the sender's side but I'm afraid it might mess with the jails or freenas itself in an irreversible way...

Thank you
 

Patrick M. Hausen

Hall of Famer
Joined
Nov 25, 2013
Messages
7,776
You have to set the destination datasets to read-only ... if you use the Replication Tasks in the UI that is done by default,
Otherwise something as simple as viewing a directory or file will modify the access time, hence modify the pool at the block level.
 

spgrvl

Dabbler
Joined
May 15, 2020
Messages
15
You have to set the destination datasets to read-only ... if you use the Replication Tasks in the UI that is done by default,
Otherwise something as simple as viewing a directory or file will modify the access time, hence modify the pool at the block level.
Thank you very much, I always thought that the Replication Tasks in UI is for remote replication only.
Also I was just disabling my VMs and Jails before replicating which was not ideal and neither working properly, the read-only option makes much more sense!
Thanks again!
 
Top