2012-01-16 23:14, Matthew Ahrens пишет:
On Thu, Jan 12, 2012 at 5:00 PM, Jim Klimov <[email protected] <mailto:[email protected]>> wrote:While reading about zfs on-disk formats, I wondered once again why is it not possible to create a snapshot on existing data, not of the current TXG but of some older point-in-time? It is not possible because the older data may no longer exist on-disk. For example, you want to take a snapshot from 10 txg's ago. But since then we have created a new file, which modified the containing directory. So we freed the directory block from 10 txg's ago. That freed block is then a candidate for reallocation. Existence of old uberblocks in the ring buffer does not indicate that the data they reference is still valid. This is the reason that "zpool import -F" does not always work.
Hmmm... the way I got it (but again have no prooflinks handy) was that ZFS "recently" got a deferred-reuse feature to just guarantee those rollbacks, basically. I am not sure which builds or distros that might be included in. If you authoritatively say it's not there (or not in illumos), I'm going to trust you ;) What about injecting snapshots into static data - before at least one existing snapshot? Is that possible? I do get your point about missing older directory data and possible invalidity of the snapshot as a ZPL dataset (and probably a bad basis for a writeable clone)... but let's call them checkpoints then, and limit use for zfs send and fencing of erred ranges ;) Is that technically possible or logically reasonable? Thanks, //Jim _______________________________________________ zfs-discuss mailing list [email protected] http://mail.opensolaris.org/mailman/listinfo/zfs-discuss
