123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404 |
- .TH VENTI-FMT 8
- .SH NAME
- buildindex,
- checkarenas,
- checkindex,
- conf,
- fmtarenas,
- fmtbloom,
- fmtindex,
- fmtisect,
- syncindex \- prepare and maintain a venti server
- .SH SYNOPSIS
- .PP
- .B venti/fmtarenas
- [
- .B -Z
- ]
- [
- .B -a
- .I arenasize
- ]
- [
- .B -b
- .I blocksize
- ]
- .I name
- .I file
- .PP
- .B venti/fmtisect
- [
- .B -1Z
- ]
- [
- .B -b
- .I blocksize
- ]
- .I name
- .I file
- .PP
- .B venti/fmtbloom
- [
- .B -n
- .I nblocks
- |
- .B -N
- .I nhash
- ]
- [
- .B -s
- .I size
- ]
- .I file
- .PP
- .B venti/fmtindex
- [
- .B -a
- ]
- .I venti.conf
- .PP
- .B venti/conf
- [
- .B -w
- ]
- .I partition
- [
- .I configfile
- ]
- .if t .sp 0.5
- .PP
- .B venti/buildindex
- [
- .B -bd
- ] [
- .B -i
- .I isect
- ] ... [
- .B -M
- .I imemsize
- ]
- .I venti.conf
- .PP
- .B venti/checkindex
- [
- .B -f
- ]
- [
- .B -B
- .I blockcachesize
- ]
- .I venti.conf
- .I tmp
- .PP
- .B venti/checkarenas
- [
- .B -afv
- ]
- .I file
- .SH DESCRIPTION
- These commands aid in the setup, maintenance, and debugging of
- venti servers.
- See
- .IR venti (6)
- for an overview of the venti system and
- .IR venti (8)
- for an overview of the data structures used by the venti server.
- .PP
- Note that the units for the various sizes in the following
- commands can be specified by appending
- .LR k ,
- .LR m ,
- or
- .LR g
- to indicate kilobytes, megabytes, or gigabytes respectively.
- .SS Formatting
- To prepare a server for its initial use, the arena partitions and
- the index sections must be formatted individually, with
- .I fmtarenas
- and
- .IR fmtisect .
- Then the
- collection of index sections must be combined into a venti
- index with
- .IR fmtindex .
- .PP
- .I Fmtarenas
- formats the given
- .IR file ,
- typically a disk partition, into an arena partition.
- The arenas in the partition are given names of the form
- .IR name%d ,
- where
- .I %d
- is replaced with a sequential number starting at 0.
- .PP
- Options to
- .I fmtarenas
- are:
- .TP
- .BI -a " arenasize
- The arenas are of
- .I arenasize
- bytes. The default is
- .BR 512M ,
- which was selected to provide a balance
- between the number of arenas and the ability to copy an arena to external
- media such as recordable CDs and tapes.
- .TP
- .BI -b " blocksize
- The size, in bytes, for read and write operations to the file.
- The size is recorded in the file, and is used by applications that access the arenas.
- The default is
- .BR 8k .
- .TP
- .B -4
- Create a `version 4' arena partition for backwards compatibility with old servers.
- The default is version 5, used by the current venti server.
- .TP
- .B -Z
- Do not zero the data sections of the arenas.
- Using this option reduces the formatting time
- but should only be used when it is known that the file was already zeroed.
- (Version 4 only; version 5 sections are not and do not need to be zeroed.)
- .PD
- .PP
- .I Fmtisect
- formats the given
- .IR file ,
- typically a disk partition, as a venti index section with the specified
- .IR name .
- Each of the index sections in a venti configuration must have a unique name.
- .PP
- Options to
- .I fmtisect
- are:
- .TP
- .BI -b " bucketsize
- The size of an index bucket, in bytes.
- All the index sections within a index must have the same bucket size.
- The default is
- .BR 8k .
- .TP
- .B -1
- Create a `version 1' index section for backwards compatibility with old servers.
- The default is version 2, used by the current venti server.
- .TP
- .B -Z
- Do not zero the index.
- Using this option reduces the formatting time
- but should only be used when it is known that the file was already zeroed.
- (Version 1 only; version 2 sections are not and do not need to be zeroed.)
- .PD
- .PP
- .I Fmtbloom
- formats the given
- .I file
- as a bloom filter
- (see
- .IR venti (6)).
- The options are:
- .TP
- .BI -n " nblock \fR| " -N " nhash
- The number of blocks expected to be indexed by the filter
- or the number of hash functions to use.
- If the
- .B -n
- option
- is given, it is used, along with the total size of the filter,
- to compute an appropriate
- .IR nhash .
- .TP
- .BI -s " size
- The size of the bloom filter. The default is the total size of the file.
- In either case,
- .I size
- is rounded down to a power of two.
- .PD
- .PP
- The
- .I file
- argument in the commands above can be of the form
- .IB file : lo - hi
- to specify a range of the file.
- .I Lo
- and
- .I hi
- are specified in bytes but can have the usual
- .BI k ,
- .BI m ,
- or
- .B g
- suffixes.
- Either
- .I lo
- or
- .I hi
- may be omitted.
- This notation eliminates the need to
- partition raw disks on non-Plan 9 systems.
- .PP
- .I Fmtindex
- reads the configuration file
- .I venti.conf
- and initializes the index sections to form a usable index structure.
- The arena files and index sections must have previously been formatted
- using
- .I fmtarenas
- and
- .I fmtisect
- respectively.
- .PP
- The function of a venti index is to map a SHA1 fingerprint to a location
- in the data section of one of the arenas. The index is composed of
- blocks, each of which contains the mapping for a fixed range of possible
- fingerprint values.
- .I Fmtindex
- determines the mapping between SHA1 values and the blocks
- of the collection of index sections. Once this mapping has been determined,
- it cannot be changed without rebuilding the index.
- The basic assumption in the current implementation is that the index
- structure is sufficiently empty that individual blocks of the index will rarely
- overflow. The total size of the index should be about 2% to 10% of
- the total size of the arenas, but the exact percentage depends both on the
- index block size and the compressed size of blocks stored.
- See the discussion in
- .IR venti (8)
- for more.
- .PP
- .I Fmtindex
- also computes a mapping between a linear address space and
- the data section of the collection of arenas. The
- .B -a
- option can be used to add additional arenas to an index.
- To use this feature,
- add the new arenas to
- .I venti.conf
- after the existing arenas and then run
- .I fmtindex
- .BR -a .
- .PP
- A copy of the above mappings is stored in the header for each of the index sections.
- These copies enable
- .I buildindex
- to restore a single index section without rebuilding the entire index.
- .PP
- To make it easier to bootstrap servers, the configuration
- file can be stored in otherwise empty space
- at the beginning of any venti partitions using
- .IR conf .
- A partition so branded with a configuration file can
- be used in place of a configuration file when invoking any
- of the venti commands.
- By default,
- .I conf
- prints the configuration stored in
- .IR partition .
- When invoked with the
- .B -w
- flag,
- .I conf
- reads a configuration file from
- .I configfile
- (or else standard input)
- and stores it in
- .IR partition .
- .SS Checking and Rebuilding
- .PP
- .I Buildindex
- populates the index for the Venti system described in
- .IR venti.conf .
- The index must have previously been formatted using
- .IR fmtindex .
- This command is typically used to build a new index for a Venti
- system when the old index becomes too small, or to rebuild
- an index after media failure.
- Small errors in an index can usually be fixed with
- .IR checkindex ,
- but
- .I checkindex
- requires a large temporary workspace and
- .I buildindex
- does not.
- .PP
- Options to
- .I buildindex
- are:
- .TP
- .B -b
- Reinitialise the Bloom filter, if any.
- .TP
- .B -d
- `Dumb' mode; run all three passes.
- .TP
- .BI -i " isect
- Only rebuild index section
- .IR isect ;
- may be repeated to rebuild multiple sections.
- The name
- .L none
- is special and just reads the arenas.
- .TP
- .BI -M " imemsize
- The amount of memory, in bytes, to use for caching raw disk accesses while running
- .IR buildindex .
- (This is not a property of the created index.)
- The usual suffices apply.
- The default is 256M.
- .PD
- .PP
- .I Checkindex
- examines the Venti index described in
- .IR venti.conf .
- The program detects various error conditions including:
- blocks that are not indexed, index entries for blocks that do not exist,
- and duplicate index entries.
- If requested, an attempt can be made to fix errors that are found.
- .PP
- The
- .I tmp
- file, usually a disk partition, must be large enough to store a copy of the index.
- This temporary space is used to perform a merge sort of index entries
- generated by reading the arenas.
- .PP
- Options to
- .I checkindex
- are:
- .TP
- .BI -B " blockcachesize
- The amount of memory, in bytes, to use for caching raw disk accesses while running
- .IR checkindex .
- The default is 8k.
- .TP
- .B -f
- Attempt to fix any errors that are found.
- .PD
- .PP
- .I Checkarenas
- examines the Venti arenas contained in the given
- .IR file .
- The program detects various error conditions, and optionally attempts
- to fix any errors that are found.
- .PP
- Options to
- .I checkarenas
- are:
- .TP
- .B -a
- For each arena, scan the entire data section.
- If this option is omitted, only the end section of
- the arena is examined.
- .TP
- .B -f
- Attempt to fix any errors that are found.
- .TP
- .B -v
- Increase the verbosity of output.
- .PD
- .SH SOURCE
- .B /sys/src/cmd/venti/srv
- .SH SEE ALSO
- .IR venti (6),
- .IR venti (8)
- .SH BUGS
- .I Buildindex
- should allow an individual index section to be rebuilt.
|