|  | .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 -B | 
|  | .I blockcachesize | 
|  | ] | 
|  | [ | 
|  | .B -Z | 
|  | ] | 
|  | .I venti.conf | 
|  | .I tmp | 
|  | .PP | 
|  | .B venti/checkindex | 
|  | [ | 
|  | .B -f | 
|  | ] | 
|  | [ | 
|  | .B -B | 
|  | .I blockcachesize | 
|  | ] | 
|  | .I venti.conf | 
|  | .I tmp | 
|  | .PP | 
|  | .B venti/checkarenas | 
|  | [ | 
|  | .B -afv | 
|  | ] | 
|  | .I file | 
|  | .PP | 
|  | .B venti/copy | 
|  | [ | 
|  | .B -f | 
|  | ] | 
|  | .I src | 
|  | .I dst | 
|  | .I score | 
|  | [ | 
|  | .I type | 
|  | ] | 
|  | .SH DESCRIPTION | 
|  | These commands aid in the setup, maintenance, and debugging of | 
|  | venti servers. | 
|  | See | 
|  | .IR venti (7) | 
|  | 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 (7)). | 
|  | 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 . | 
|  | .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 buildindex | 
|  | are: | 
|  | .TP | 
|  | .BI -B " blockcachesize | 
|  | 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 default is 8k. | 
|  | .TP | 
|  | .B -Z | 
|  | Do not zero the index. | 
|  | This option should only be used when it is known that the index was already zeroed. | 
|  | (Version 1 indexes only; see the discussion in | 
|  | .I fmtindex | 
|  | above.) | 
|  | .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 \*9/src/cmd/venti/srv | 
|  | .SH SEE ALSO | 
|  | .IR venti (7), | 
|  | .IR venti (8) | 
|  | .SH BUGS | 
|  | .I Buildindex | 
|  | should allow an individual index section to be rebuilt. | 
|  | The merge sort could be performed in the space used to store the | 
|  | index rather than requiring a temporary file. |