From mboxrd@z Thu Jan 1 00:00:00 1970 To: weigelt@metux.de, 9fans@cse.psu.edu Subject: Re: [9fans] thoughs about venti+fossil From: "Russ Cox" Date: Wed, 5 Mar 2008 09:33:41 -0500 In-Reply-To: <20080305040019.GA13663@nibiru.local> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Message-Id: <20080305143425.5A0FE1E8C52@holo.morphisms.net> Cc: Topicbox-Message-UUID: 6f5bb878-ead3-11e9-9d60-3106f5b1d025 > 1. how stable is the keying ? sha-1 has only 160 bits, while > data blocks may be up to 56k long. so, the mapping is only > unique into one direction (not one-to-one). how can we be > *really sure*, that - even on very large storages (TB or > even PB) - data to each key is alway (one-to-one) unique ? if you change lump.c to say int verifywrites = 1; then venti will check every block as it is written to make sure there is no hash collision. this is not the default (anymore). the snippet that forsyth quoted only applies if the block is present in the in-memory cache. > 2. what approx. compression level could be assumed on large > storages by putting together equal data blocks (on several > kind of data, eg. typical office documents vs. media) ? i don't know of any studies that break it up by data type. the largest benefit is due to coalescing of exact files, and that simply depends on the duplicate rate. it's very workload dependent, and i don't know of any good studies to point you at. > 3. what happens on the space consumtion if venti is used as > storage for heavily rw filesystems for a longer time > (not as permanent archive) - how much space will be wasted ? > should we add some method for block expiry (eg. timeouts > of reference counters) ? no. venti is for archiving. if you don't want to use it for archiving, fine. but timeouts and reference counts would break it for the rest of us (neither is guaranteed correct -- what if a reference is written on a whiteboard or in a rarely-accessed safe-deposit box?). you can do snapshots in fossil instead of archives and those *can* be timed out. but they don't use venti and don't coalesce storage as much as venti does, which is why timeouts are possible. > 4. assuming #1 can be answered 100% yes - would it suit for > an very large (several PB) heavily distributed storage > (eg. for some kind of distributed, redundant filesystem) ? there are many systems that have been built using content-addressed storage, just not on top of venti. Here are a few. http://pdos.csail.mit.edu/pastwatch/ http://pdos.csail.mit.edu/ivy/ http://en.wikipedia.org/wiki/Distributed_hash_table russ