Hello all. I am looking to be able to verify my zfs backups in the most minimal way, ie without having to md5 the whole volume. Is there a way to get a checksum for a snapshot and compare it to another zfs volume, containing all the same blocks and verify they contain the same information? Even when I destroy the snapshot on the source? kind of like: zfs create tank/myfs dd if=/dev/urandom bs=128k count=1000 of=/tank/myfs/TESTFILE zfs snapshot tank/myfs at snapA zfs send tank/myfs at snapA | zfs recv tank/myfs_BACKUP zfs destroy tank/myfs at snapA zfs snapshot tank/myfs at snapB someCheckSumVodooFunc(tank/myfs) someCheckSumVodooFunc(tank/myfs_BACKUP) is there some zdb hackery which results in a metadata checksum usable in this scenario? Thank you all! Asa zfs worshiper Berkeley, CA
Not at present, but it''s a good RFE. Unfortunately it won''t be quite as simple as just adding an ioctl to report the dnode checksum. To see why, consider a file with one level of indirection: that is, it consists of a dnode, a single indirect block, and several data blocks. The indirect block contains the checksums of all the data blocks -- handy. The dnode contains the checksum of the indirect block -- but that''s not so handy, because the indirect block contains more than just checksums; it also contains pointers to blocks, which are specific to the physical layout of the data on your machine. If you did remote replication using zfs send | ssh elsewhere zfs recv, the dnode checksum on ''elsewhere'' would not be the same. Jeff On Tue, Apr 08, 2008 at 01:45:16PM -0700, asa wrote:> Hello all. I am looking to be able to verify my zfs backups in the > most minimal way, ie without having to md5 the whole volume. > > Is there a way to get a checksum for a snapshot and compare it to > another zfs volume, containing all the same blocks and verify they > contain the same information? Even when I destroy the snapshot on the > source? > > kind of like: > > zfs create tank/myfs > dd if=/dev/urandom bs=128k count=1000 of=/tank/myfs/TESTFILE > zfs snapshot tank/myfs at snapA > zfs send tank/myfs at snapA | zfs recv tank/myfs_BACKUP > > zfs destroy tank/myfs at snapA > > zfs snapshot tank/myfs at snapB > > > someCheckSumVodooFunc(tank/myfs) > someCheckSumVodooFunc(tank/myfs_BACKUP) > > is there some zdb hackery which results in a metadata checksum usable > in this scenario? > > Thank you all! > > Asa > zfs worshiper > Berkeley, CA > _______________________________________________ > zfs-discuss mailing list > zfs-discuss at opensolaris.org > http://mail.opensolaris.org/mailman/listinfo/zfs-discuss
thank you. this is exactly what I was looking for. This is for remote replication so it looks like I am out of luck. bummer. Asa On Apr 14, 2008, at 4:09 PM, Jeff Bonwick wrote:> Not at present, but it''s a good RFE. Unfortunately it won''t be > quite as simple as just adding an ioctl to report the dnode checksum. > To see why, consider a file with one level of indirection: that is, > it consists of a dnode, a single indirect block, and several data > blocks. > The indirect block contains the checksums of all the data blocks -- > handy. > The dnode contains the checksum of the indirect block -- but that''s > not > so handy, because the indirect block contains more than just > checksums; > it also contains pointers to blocks, which are specific to the > physical > layout of the data on your machine. If you did remote replication > using > zfs send | ssh elsewhere zfs recv, the dnode checksum on ''elsewhere'' > would not be the same. > > Jeff > > On Tue, Apr 08, 2008 at 01:45:16PM -0700, asa wrote: >> Hello all. I am looking to be able to verify my zfs backups in the >> most minimal way, ie without having to md5 the whole volume. >> >> Is there a way to get a checksum for a snapshot and compare it to >> another zfs volume, containing all the same blocks and verify they >> contain the same information? Even when I destroy the snapshot on the >> source? >> >> kind of like: >> >> zfs create tank/myfs >> dd if=/dev/urandom bs=128k count=1000 of=/tank/myfs/TESTFILE >> zfs snapshot tank/myfs at snapA >> zfs send tank/myfs at snapA | zfs recv tank/myfs_BACKUP >> >> zfs destroy tank/myfs at snapA >> >> zfs snapshot tank/myfs at snapB >> >> >> someCheckSumVodooFunc(tank/myfs) >> someCheckSumVodooFunc(tank/myfs_BACKUP) >> >> is there some zdb hackery which results in a metadata checksum usable >> in this scenario? >> >> Thank you all! >> >> Asa >> zfs worshiper >> Berkeley, CA >> _______________________________________________ >> zfs-discuss mailing list >> zfs-discuss at opensolaris.org >> http://mail.opensolaris.org/mailman/listinfo/zfs-discuss