Date: Wed, 23 Dec 2009 10:12:44 +0100 From: Patrick Proniewski <patpro@patpro.net> To: freebsd-fs@freebsd.org Subject: snapshot implementation Message-ID: <32CA2B73-3412-49DD-9401-4773CC73BED0@patpro.net>
next in thread | raw e-mail | index | archive | help
--Apple-Mail-1--215476577 Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Hello, I'm playing a little bit with freebsd snapshots (on UFS, freebsd 6.4). And I can't find the answer to one of my questions. If I understand correctly: - at time=0 a snapshot contains nothing but a bit/block map, and every block in the block map is either a pointer to "not used" or "not copied". The pointer to "not used" is used when the corresponding block on the live file system is empty. The pointer "not copied" is used when the corresponding block on the live FS has not changed since time=0. - at time>0 every non-empty block on the live FS that is to be modified, is first copied in the snapshot, and then, the pending modification is committed. The pointer in the snapshot's block map changes from "not copied" to the address of the copied block in the snapshot. But what about empty blocks? I can't find any information about them. It seems logical to me that empty blocks receiving new data on the live FS will stay as pointers to "not used" in the snapshot, instead of pointing to an empty block that would be copied in the snapshot and grow it's size. I've not found any piece of documentation that clarify this. By the way, I'm also interested in ZFS: is the snapshot technology available in ZFS the same as the one available in UFS? thanks, patpro --Apple-Mail-1--215476577--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?32CA2B73-3412-49DD-9401-4773CC73BED0>