To my knowledge ZFS as a filesystem checks for data errors during each access to the data.

I would therefore assume that it actually performs something like a scrub before sending the data thereby ensuring the integrity of the sent data.

My question is: Does it really? And if not what additional benefit do I get from performing a zfs scrub before a zfs send regarding that particular dataset.

  • Interesting question. I would think that at least newly written data must be read first, so the question is if existing data is also read (I assume it is). To test this, you could create two files with mkfile and then use these files as vdevs for your new test pools. After adding some files and syncing with send/recv, you could then add new files, overwrite the data of those files in the source pool with dd and then continue sending the whole source pool, comparing zpool status output before and after.
    – user121391
    May 24, 2016 at 10:00

1 Answer 1


Yes, every time you read a block of data into ram, assuming checksumming is enabled, ZFS calculates and a checksum of that data and compares it to the checksum that was calculated before that block of data was written to the disk.

ZFS does not perform a scrub automatically prior to a zfs send operation. The main advantage of you doing this prior to the send would be to maximize the likelihood that the send operation will proceed without error.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .