Venti Archival Server ===================== Extracting metadata from Venti ------------------------------ We might want to gather information about our venti setup from time to time. Here are some example commands for easy tweaking. These assume you have VHTTP set to something sensible; on Chicago, for example, we would use:: VHTTP=http://localhost:17035 Just extract a storage summary: ``wget -q -O- $VHTTP/storage``. Filter the index dump to have human readable dates instead of date stamps. (perl golfed a bit by as_df of #cslounge; credit where it's due):: wget -q -O - $VHTTP/index \ | perl -pe 's/(created|modified)=\K\d+/localtime$&/ge' Sorted list of differences between mutation and creation time of sealed arenas, in human-readable format:: wget -q -O - $VHTTP/index \ | perl -n -e 'if (/created=(\d+) modified=(\d+).*sealed.*/) { print $2-$1, "\n"; }' \ | sort -n \ | perl -p -e 'BEGIN{ use Time::Duration; } $_ = duration($_)."\n";' Sanity checking --------------- A simple way to validate a VAC file (if there's any output, be alarmed):: /usr/local/plan9/bin/venti/copy -m 'tcp!localhost!venti' 'tcp!localhost!venti' `cat $FILE` The contents of a vac file can be investigated with:: /usr/local/plan9/bin/unvac -h 'tcp!localhost!venti' -t -v $FILE (Though note that because we tend to dump rabinsplit AFS dumps into Venti, you're only going to get two levels of meaningful structure (YYYY/MMDD[.NTH]) before it's just a pile of numbers. Adding storage to Venti ----------------------- Because you're mucking about with the Venti archival store itself, please make sure that you have made off-machine backups AND an on-machine ZFS snapshot: "zfs snapshot z/venti/arenas@`date +%Y%m%D`" is so easy and you can always destroy it later (though its overhead is likely minimal!) Create a new arena file (the size here is somewhat arbitrary):: (cd arenas; dd if=/dev/zero of=${NEXT_ARENA_NUMBER} bs=1 count=0 seek=68719476736) (cd arenas; /usr/local/plan9/bin/venti/fmtarenas arenas${NEXT_ARENA_NUMBER} ${NEXT_ARENA_NUMBER} Stop the venti service, update the configuration, and rebuild the index in append mode:: sv stop /etc/service/venti echo "arenas /venti/arenas/${NEXT_ARENA_NUMBER}" >> venti.conf /usr/local/plan9/bin/venti/fmtindex -a venti.conf sv start /etc/service/venti sleep 5 sv stat /etc/service/venti Adding index space to Venti (or rebuilding the index) ----------------------------------------------------- This step will take notably longer than just adding storage. Add a new index section (try to keep the index ~10% of the storage):: (cd index; dd if=/dev/zero of=${NEXT_INDEX_NUMBER} bs=1 count=0 seek=5368709120) (cd index; /usr/local/plan9/bin/venti/fmtisect ${NEXT_INDEX_NUMBER} ${NEXT_INDEX_NUMBER}) Stop the venti service, update the configuration, and rebuild the index from scratch:: sv stop /etc/service/venti echo "isect ${NEXT_INDEX_NUMBER}" >> venti.conf for i in index/*; do /usr/local/plan9/bin/venti/fmtisect $i $i; done /usr/local/plan9/bin/venti/fmtindex venti.conf /usr/local/plan9/bin/venti/buildindex -b venti.conf sv start /etc/service/venti sleep 5 sv stat /etc/service/venti Growing the Bloom Filter ------------------------ Venti uses a bloom filter to help it quickly decide that a block is new, saving it a trip to the index. Occasionally, this bloom filter needs to grow and be re-computed. Something like this should be useful:: sv stop /etc/service/venti dd if=/dev/zero of=bloom bs=1024 count=${NEW_BLOOM_BLOCKS} /usr/local/plan9/bin/venti/fmtbloom bloom /usr/local/plan9/bin/venti/buildindex -b venti.conf sv start /etc/service/venti sleep 5 sv stat /etc/service/venti