| tnew man pages - plan9port - [fork] Plan 9 from user space | |
| git clone git://src.adamsgaard.dk/plan9port | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit bdf5b5cde1d463ce11b1e62eba68dab25f5b7422 | |
| parent df03d60c047a3010f800b26883763764be8d5744 | |
| Author: rsc <devnull@localhost> | |
| Date: Wed, 13 Jul 2005 13:23:47 +0000 | |
| new man pages | |
| Diffstat: | |
| A man/man8/venti-backup.8 | 106 ++++++++++++++++++++++++++++++ | |
| A man/man8/venti-fmt.8 | 346 +++++++++++++++++++++++++++++… | |
| A man/man8/venti.8 | 431 +++++++++++++++++++++++++++++… | |
| 3 files changed, 883 insertions(+), 0 deletions(-) | |
| --- | |
| diff --git a/man/man8/venti-backup.8 b/man/man8/venti-backup.8 | |
| t@@ -0,0 +1,106 @@ | |
| +.TH VENTI-BACKUP 8 | |
| +.SH NAME | |
| +rdarena, wrarena \- copy arenas between venti servers | |
| +.SH SYNOPSIS | |
| +.PP | |
| +.B venti/rdarena | |
| +[ | |
| +.B -v | |
| +] | |
| +.I arenapart | |
| +.I arenaname | |
| +.PP | |
| +.B venti/wrarena | |
| +[ | |
| +.B -o | |
| +.I fileoffset | |
| +] | |
| +[ | |
| +.B -h | |
| +.I host | |
| +] | |
| +.I arenafile | |
| +[ | |
| +.I clumpoffset | |
| +] | |
| +.SH DESCRIPTION | |
| +.PP | |
| +.I Rdarena | |
| +extracts the named | |
| +.I arena | |
| +from the arena partition | |
| +.I arenapart | |
| +and writes this arena to standard output. | |
| +This command is typically used to back up an arena to external media. | |
| +The | |
| +.B -v | |
| +option generates more verbose output on standard error. | |
| +.PP | |
| +.I Wrarena | |
| +writes the blocks contained in the arena | |
| +.I arenafile | |
| +(typically, the output of | |
| +.IR rdarena ) | |
| +to a Venti server. | |
| +It is typically used to reinitialize a Venti server from backups of the arenas. | |
| +For example, | |
| +.IP | |
| +.EX | |
| +venti/rdarena /dev/sdC0/arenas arena.0 >external.media | |
| +venti/wrarena -h venti2 external.media | |
| +.EE | |
| +.LP | |
| +writes the blocks contained in | |
| +.B arena.0 | |
| +to the Venti server | |
| +.B venti2 | |
| +(typically not the one using | |
| +.BR /dev/sdC0/arenas ). | |
| +.PP | |
| +The | |
| +.B -o | |
| +option specifies that the arena starts at byte | |
| +.I fileoffset | |
| +(default | |
| +.BR 0 ) | |
| +in | |
| +.I arenafile . | |
| +This is useful for reading directly from | |
| +the Venti arena partition: | |
| +.IP | |
| +.EX | |
| +venti/wrarena -h venti2 -o 335872 /dev/sdC0/arenas | |
| +.EE | |
| +.LP | |
| +(In this example, 335872 is the offset shown in the Venti | |
| +server's index list (344064) minus one block (8192). | |
| +You will need to substitute your own arena offsets | |
| +and block size.) | |
| +.PP | |
| +Finally, the optional | |
| +.I offset | |
| +argument specifies that the writing should begin with the | |
| +clump starting at | |
| +.I offset | |
| +within the arena. | |
| +.I Wrarena | |
| +prints the offset it stopped at (because there were no more data blocks). | |
| +This could be used to incrementally back up a Venti server | |
| +to another Venti server: | |
| +.IP | |
| +.EX | |
| +last=`{cat last} | |
| +venti/wrarena -h venti2 -o 335872 /dev/sdC0/arenas $last >output | |
| +awk '/^end offset/ { print $3 }' offset >last | |
| +.EE | |
| +.LP | |
| +Of course, one would need to add wrapper code to keep track | |
| +of which arenas have been processed. | |
| +See | |
| +.B /sys/src/cmd/venti/backup.example | |
| +for a version that does this. | |
| +.SH SOURCE | |
| +.B \*9/src/cmd/venti/srv | |
| +.SH SEE ALSO | |
| +.IR venti (7), | |
| +.IR venti (8) | |
| diff --git a/man/man8/venti-fmt.8 b/man/man8/venti-fmt.8 | |
| t@@ -0,0 +1,346 @@ | |
| +.TH VENTI-FMT 8 | |
| +.SH NAME | |
| +buildindex, | |
| +checkarenas, | |
| +checkindex, | |
| +conf, | |
| +fmtarenas, | |
| +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/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 … | |
| +The default is | |
| +.BR 8k . | |
| +.TP | |
| +.B -4 | |
| +Create a `version 4' arena partition for backwards compatibility with old serv… | |
| +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 server… | |
| +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 | |
| +.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 sec… | |
| +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 in… | |
| +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 run… | |
| +.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 ze… | |
| +(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 in… | |
| +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 run… | |
| +.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. | |
| diff --git a/man/man8/venti.8 b/man/man8/venti.8 | |
| t@@ -0,0 +1,431 @@ | |
| +.TH VENTI 8 | |
| +.SH NAME | |
| +venti.conf \- venti configuration | |
| +.SH DESCRIPTION | |
| +Venti is a SHA1-addressed archival storage server. | |
| +See | |
| +.IR venti (7) | |
| +for a full introduction to the system. | |
| +This page documents the structure and operation of the server. | |
| +.PP | |
| +A venti server requires multiple disks or disk partitions, | |
| +each of which must be properly formatted before the server | |
| +can be run. | |
| +.SS Disk | |
| +The venti server maintains three disk structures, typically | |
| +stored on raw disk partitions: | |
| +the append-only | |
| +.IR "data log" , | |
| +which holds, in sequential order, | |
| +the contents of every block written to the server; | |
| +the | |
| +.IR index , | |
| +which helps locate a block in the data log given its score; | |
| +and optionally the | |
| +.IR "bloom filter" , | |
| +a concise summary of which scores are present in the index. | |
| +The data log is the primary storage. | |
| +To improve the robustness, it should be stored on | |
| +a device that provides RAID functionality. | |
| +The index and the bloom filter are optimizations | |
| +employed to access the data log efficiently and can be rebuilt | |
| +if lost or damaged. | |
| +.PP | |
| +The data log is logically split into sections called | |
| +.IR arenas , | |
| +typically sized for easy offline backup | |
| +(e.g., 500MB). | |
| +A data log may comprise many disks, each storing | |
| +one or more arenas. | |
| +Such disks are called | |
| +.IR "arena partitions" . | |
| +Arena partitions are filled in the order given in the configuration. | |
| +.PP | |
| +The index is logically split into block-sized pieces called | |
| +.IR buckets , | |
| +each of which is responsible for a particular range of scores. | |
| +An index may be split across many disks, each storing many buckets. | |
| +Such disks are called | |
| +.IR "index sections" . | |
| +.PP | |
| +The index must be sized so that no bucket is full. | |
| +When a bucket fills, the server must be shut down and | |
| +the index made larger. | |
| +Since scores appear random, each bucket will contain | |
| +approximately the same number of entries. | |
| +Index entries are 40 bytes long. Assuming that a typical block | |
| +being written to the server is 8192 bytes and compresses to 4096 | |
| +bytes, the active index is expected to be about 1% of | |
| +the active data log. | |
| +Storing smaller blocks increases the relative index footprint; | |
| +storing larger blocks decreases it. | |
| +To allow variation in both block size and the random distribution | |
| +of scores to buckets, the suggested index size is 5% of | |
| +the active data log. | |
| +.PP | |
| +The (optional) bloom filter is a large bitmap that is stored on disk but | |
| +also kept completely in memory while the venti server runs. | |
| +It helps the venti server efficiently detect scores that are | |
| +.I not | |
| +already stored in the index. | |
| +The bloom filter starts out zeroed. | |
| +Each score recorded in the bloom filter is hashed to choose | |
| +.I nhash | |
| +bits to set in the bloom filter. | |
| +A score is definitely not stored in the index of any of its | |
| +.I nhash | |
| +bits are not set. | |
| +The bloom filter thus has two parameters: | |
| +.I nhash | |
| +(maximum 32) | |
| +and the total bitmap size | |
| +(maximum 512MB, 2\s-2\u32\d\s+2 bits). | |
| +.PP | |
| +The bloom filter should be sized so that | |
| +.I nhash | |
| +\(ti | |
| +.I nblock | |
| +\(ti | |
| +0.7 | |
| +\(<= | |
| +0.7 \(ti | |
| +.IR b , | |
| +where | |
| +.I nblock | |
| +is the expected number of blocks stored on the server | |
| +and | |
| +.I b | |
| +is the bitmap size in bits. | |
| +The false positive rate of the bloom filter when sized | |
| +this way is approximately 2\s-2\u\-\fInblock\fR\d\s+2. | |
| +.I Nhash | |
| +less than 10 are not very useful; | |
| +.I nhash | |
| +greater than 24 are probably a waste of memory. | |
| +.I Fmtbloom | |
| +(see | |
| +.IR venti-fmt (8)) | |
| +can be given either | |
| +.I nhash | |
| +or | |
| +.IR nblock ; | |
| +if given | |
| +.IR nblock , | |
| +it will derive an appropriate | |
| +.IR nhash . | |
| +.SS Memory | |
| +Venti can make effective use of large amounts of memory | |
| +for various caches. | |
| +.PP | |
| +The | |
| +.I "lump cache | |
| +holds recently-accessed venti data blocks, which the server refers to as | |
| +.IR lumps . | |
| +The lump cache should be at least 1MB but can profitably be much larger. | |
| +The lump cache can be thought of as the level-1 cache: | |
| +read requests handled by the lump cache can | |
| +be served instantly. | |
| +.PP | |
| +The | |
| +.I "block cache | |
| +holds recently-accessed | |
| +.I disk | |
| +blocks from the arena partitions. | |
| +The block cache needs to be able to simultaneously hold two blocks | |
| +from each arena plus four blocks for the currently-filling arena. | |
| +The block cache can be thought of as the level-2 cache: | |
| +read requests handled by the block cache are slower than those | |
| +handled by the lump cache, since the lump data must be extracted | |
| +from the raw disk blocks and possibly decompressed, but no | |
| +disk accesses are necessary. | |
| +.PP | |
| +The | |
| +.I "index cache | |
| +holds recently-accessed or prefetched | |
| +index entries. | |
| +The index cache needs to be able to hold index entries | |
| +for three or four arenas, at least, in order for prefetching | |
| +to work properly. Each index entry is 50 bytes. | |
| +Assuming 500MB arenas of | |
| +128,000 blocks that are 4096 bytes each after compression, | |
| +the minimum index cache size is about 6MB. | |
| +The index cache can be thought of as the level-3 cache: | |
| +read requests handled by the index cache must still go | |
| +to disk to fetch the arena blocks, but the costly random | |
| +access to the index is avoided. | |
| +.PP | |
| +The size of the index cache determines how long venti | |
| +can sustain its `burst' write throughput, during which time | |
| +the only disk accesses on the critical path | |
| +are sequential writes to the arena partitions. | |
| +For example, if you want to be able to sustain 10MB/s | |
| +for an hour, you need enough index cache to hold entries | |
| +for 36GB of blocks. Assuming 8192-byte blocks, | |
| +you need room for almost five million index entries. | |
| +Since index entries are 50 bytes each, you need 250MB | |
| +of index cache. | |
| +If the background index update process can make a single | |
| +pass through the index in an hour, which is possible, | |
| +then you can sustain the 10MB/s indefinitely (at least until | |
| +the arenas are all filled). | |
| +.PP | |
| +The | |
| +.I "bloom filter | |
| +requires memory equal to its size on disk, | |
| +as discussed above. | |
| +.PP | |
| +A reasonable starting allocation is to | |
| +divide memory equally (in thirds) between | |
| +the bloom filter, the index cache, and the lump and block caches; | |
| +the third of memory allocated to the lump and block caches | |
| +should be split unevenly, with more (say, two thirds) | |
| +going to the block cache. | |
| +.SS Network | |
| +The venti server announces two network services, one | |
| +(conventionally TCP port | |
| +.BR venti , | |
| +17034) serving | |
| +the venti protocol as described in | |
| +.IR venti (7), | |
| +and one serving HTTP | |
| +(conventionally TCP port | |
| +.BR venti , | |
| +80). | |
| +.PP | |
| +The venti web server provides the following | |
| +URLs for accessing status information: | |
| +.TP | |
| +.B /index | |
| +A summary of the usage of the arenas and index sections. | |
| +.TP | |
| +.B /xindex | |
| +An XML version of | |
| +.BR /index . | |
| +.TP | |
| +.B /storage | |
| +Brief storage totals. | |
| +.TP | |
| +.BI /set/ variable | |
| +The current integer value of | |
| +.IR variable . | |
| +Variables are: | |
| +.BR compress , | |
| +whether or not to compress blocks | |
| +(for debugging); | |
| +.BR logging , | |
| +whether to write entries to the debugging logs; | |
| +.BR stats , | |
| +whether to collect run-time statistics; | |
| +.BR icachesleeptime , | |
| +the time in milliseconds between successive updates | |
| +of megabytes of the index cache; | |
| +.BR arenasumsleeptime , | |
| +the time in milliseconds between reads while | |
| +checksumming an arena in the background. | |
| +The two sleep times should be (but are not) managed by venti; | |
| +they exist to provide more experience with their effects. | |
| +The other variables exist only for debugging and | |
| +performance measurement. | |
| +.TP | |
| +.BI /set/ variable / value | |
| +Set | |
| +.I variable | |
| +to | |
| +.IR value . | |
| +.TP | |
| +.BI /graph/ name / param / param / \fR... | |
| +A PNG image graphing the named run-time statistic over time. | |
| +The details of names and parameters are undocumented; | |
| +see | |
| +.B httpd.c | |
| +in the venti sources. | |
| +.TP | |
| +.B /log | |
| +A list of all debugging logs present in the server's memory. | |
| +.TP | |
| +.BI /log/ name | |
| +The contents of the debugging log with the given | |
| +.IR name . | |
| +.TP | |
| +.B /flushicache | |
| +Force venti to begin flushing the index cache to disk. | |
| +The request response will not be sent until the flush | |
| +has completed. | |
| +.TP | |
| +.B /flushdcache | |
| +Force venti to begin flushing the arena block cache to disk. | |
| +The request response will not be sent until the flush | |
| +has completed. | |
| +.PD | |
| +.PP | |
| +Requests for other files are served by consulting a | |
| +directory named in the configuration file | |
| +(see | |
| +.B webroot | |
| +below). | |
| +.SS Configuration File | |
| +A venti configuration file | |
| +enumerates the various index sections and | |
| +arenas that constitute a venti system. | |
| +The components are indicated by the name of the file, typically | |
| +a disk partition, in which they reside. The configuration | |
| +file is the only location that file names are used. Internally, | |
| +venti uses the names assigned when the components were formatted | |
| +with | |
| +.I fmtarenas | |
| +or | |
| +.I fmtisect | |
| +(see | |
| +.IR venti-fmt (8)). | |
| +In particular, only the configuration needs to be | |
| +changed if a component is moved to a different file. | |
| +.PP | |
| +The configuration file consists of lines in the form described below. | |
| +Lines starting with | |
| +.B # | |
| +are comments. | |
| +.TP | |
| +.BI index " name | |
| +Names the index for the system. | |
| +.TP | |
| +.BI arenas " file | |
| +.I File | |
| +is an arena partition, formatted using | |
| +.IR fmtarenas . | |
| +.TP | |
| +.BI isect " file | |
| +.I File | |
| +is an index section, formatted using | |
| +.IR fmtisect . | |
| +.PP | |
| +After formatting a venti system using | |
| +.IR fmtindex , | |
| +the order of arenas and index sections should not be changed. | |
| +Additional arenas can be appended to the configuration; | |
| +run | |
| +.I fmtindex | |
| +with the | |
| +.B -a | |
| +flag to update the index. | |
| +.PP | |
| +The configuration file also holds configuration parameters | |
| +for the venti server itself. | |
| +These are: | |
| +.TF httpaddr netaddr | |
| +.TP | |
| +.BI mem " size | |
| +lump cache size | |
| +.TP | |
| +.BI bcmem " size | |
| +block cache size | |
| +.TP | |
| +.BI icmem " size | |
| +index cache size | |
| +.TP | |
| +.BI addr " netaddr | |
| +network address to announce venti service | |
| +(default | |
| +.BR tcp!*!venti ) | |
| +.TP | |
| +.BI httpaddr " netaddr | |
| +network address to announce HTTP service | |
| +(default | |
| +.BR tcp!*!http ) | |
| +.TP | |
| +.B queuewrites | |
| +queue writes in memory | |
| +(default is not to queue) | |
| +.TP | |
| +.BI webroot " dir | |
| +directory tree containing files for HTTP server | |
| +to consult for unrecognized URLs | |
| +.PD | |
| +.PP | |
| +The units for the various cache sizes above can be specified by appending a | |
| +.LR k , | |
| +.LR m , | |
| +or | |
| +.LR g | |
| +(case-insensitive) | |
| +to indicate kilobytes, megabytes, or gigabytes respectively. | |
| +.SS Command Line | |
| +Options to | |
| +.I venti | |
| +are: | |
| +.TP | |
| +.BI -c " config | |
| +The server configuration file | |
| +(default | |
| +.BR venti.conf ) | |
| +.TP | |
| +.BI -o " line | |
| +Set a server parameter, using the same syntax | |
| +as in the configuration file. | |
| +The | |
| +.B -o | |
| +options override the configuration file. | |
| +.TP | |
| +.B -d | |
| +Produce various debugging information on standard error. | |
| +Implies | |
| +.BR -s . | |
| +.TP | |
| +.B -L | |
| +Enable logging. By default all logging is disabled. | |
| +Logging slows server operation considerably. | |
| +.TP | |
| +.B -s | |
| +Do not run in the background. | |
| +Normally, | |
| +the foreground process will exit once the Venti server | |
| +is initialized and ready for connections. | |
| +.PD | |
| +.SH EXAMPLE | |
| +A simple configuration: | |
| +.IP | |
| +.EX | |
| +% cat venti.conf | |
| +index main | |
| +isect /tmp/disks/isect0 | |
| +isect /tmp/disks/isect1 | |
| +arenas /tmp/disks/arenas | |
| +mem 10M | |
| +bcmem 20M | |
| +icmem 30M | |
| +% | |
| +.EE | |
| +.PP | |
| +Format the index sections, the arena partition, and | |
| +finally the main index: | |
| +.IP | |
| +.EX | |
| +% venti/fmtisect isect0. /tmp/disks/isect0 & | |
| +% venti/fmtisect isect1. /tmp/disks/isect1 & | |
| +% venti/fmtarenas arenas0. /tmp/disks/arenas & | |
| +% wait | |
| +% venti/fmtindex venti.conf | |
| +% | |
| +.EE | |
| +.PP | |
| +Start the server and check the storage statistics: | |
| +.IP | |
| +.EX | |
| +% venti/venti | |
| +% hget http://$sysname/storage | |
| +.EE | |
| +.SH "SEE ALSO" | |
| +.IR venti (1), | |
| +.IR venti (3), | |
| +.IR venti (7), | |
| +.IR venti-backup (8) | |
| +.IR venti-fmt (8) | |
| +.br | |
| +Sean Quinlan and Sean Dorward, | |
| +``Venti: a new approach to archival storage'', | |
| +.I "Usenix Conference on File and Storage Technologies" , | |
| +2002. | |
| +.SH BUGS | |
| +Setting up a venti server is too complicated. | |
| +.PP | |
| +Venti should not require the user to decide how to | |
| +partition its memory usage. |