Force update checksum on zfs?

Solution 1:

To change the properties (be it compresson, deduplication or checksumming) of already written data, the zfs approach is to run the data through a zfs send | zfs receive sequence. Obviously, you do not need to offline the system for that, but you will need

  1. enough resources in your zpool / on the system to hold two dedup'ed copies of the data set in question
  2. downtime for the data set as you either would need to destroy it or rename it in the procedure
  3. enough time and patience for the operation to complete

As you already are using deduplication for the zpool, running a zfs send | zfs receive with the destination on the same pool as the source would only use space needed for the newly-written metadata blocks. But be prepared for the copy to take a while - dedup can be awfully slow, especially if you do not have enough RAM to hold the entire dedup table in RAM.

You obvisouly would need to cease all write operations to create the final, authoritative copy of the data set, but could minimize the downtime by copying off a snapshot first, stoping all writes and doing incremental zfs send -i | zfs receive as the final step.