Configuring file-backed Venti stores
-as of Mon May 24 21:11:08 EDT 2010-
My first step was to create the index file. I have no idea how large this needs to be, mathematically, compared to the size of the Venti arena. I suppose it would be something like:
(arena_size / arena_block_size) / x
Where x is however large a Venti index datastructure is. I could find this if I read the paper or source, but I'm too lazy right now.
To create these files, I simply ran:
% dd -if /dev/zero -of isect0 -bs 8192 -count 10000 % dd -if /dev/zero -of arenas0 -bs 8192 -count 40000
When these completed, the following files were present:
--rw-rw-r-- M 8 dho dho 327680000 Apr 3 20:10 arenas0 --rw-rw-r-- M 8 dho dho 81920000 Apr 3 20:10 isect0
After this, I simply created a venti.conf file that was the same as the one in the manpage:
% cat > venti.conf index main isect /usr/dho/isect0 arenas /usr/dho/arenas0 %
Then I had the task of formatting these files. First I ran:
% venti/fmtisect isect0 isect0
This took a little while. In retrospect, I could have used -Z, since I created this file with /dev/zero. The -Z flag tells fmtisect and fmtarenas to not zero the ``partition'' first, which is superfluous since we created the files from zero.
After this, I ran:
% venti/fmtarenas arenas0 arenas0
I should have used -Z here as well. Hereafter,
% venti/fmtindex venti.conf
Yay, all's well, right?
% venti/venti -c /usr/dho/venti.conf % venti=127.0.0.1 % vac -f test.vac testfile
Instead of getting anything useful, I got some error about how I had no space in my arena. This didn't make much sense until I read the fmtarenas section of the manpage a few more times: Venti creates its arenas with a default size of 500MB. Mine's smaller, and since it didn't fulfill the size requirement, I didn't get _any_ Venti storage. Lame.
So, I went back through and ran:
% venti/fmtisect isect0 isect0 % venti/fmtarenas -a 327680000 arenas0 arenas0 % venti/fmtindex venti.conf
I didn't use -Z here, since the fmtindex actually writes to the index file. (And I wasn't sure if it wrote to the arenas file too). The -a flag specifies a size other than 512MB to use for the arena. Apparently this value should always be set to the size of the arena file or partition. (Fancy that!)
After this:
% vac -f test.vac test packet: 1/9 frag: 1/6 small mem: 1/1 big mem: 1/8 % ls -l d-rwxrwxr-x M 8 dho dho 0 Apr 3 19:15 test --rw-rw-r-- M 8 dho dho 45 Apr 3 20:10 test.vac % cat test.vac vac:d3d2b67810fb0fc289073c4b0c3ac6d9b01010fb
Hope that's useful to someone.
--dho
Does this procedure basically work on Plan 9 Port for Unix-like systems as well? (Dave Leimbach)