3 venti \- an archival block storage server
41 is a block storage server intended for archival data.
43 the SHA1 hash of a block's contents acts as the block
44 identifier for read and write operations.
45 This approach enforces a write-once policy, preventing accidental or
46 malicious destruction of data. In addition, duplicate copies of a
47 block are coalesced, reducing the consumption of storage and
48 simplifying the implementation of clients.
52 consists of a data log and an index, both of which
53 can be spread across multiple files.
54 The files containing the data log are themselves divided into self-contained sections called arenas.
55 Each arena contains a large number of data blocks and is sized to
56 facilitate operations such as copying to removable media.
57 The index provides a mapping between the a Sha1 fingerprint and
58 the location of the corresponding block in the data log.
60 The index and data log are typically stored on raw disk partitions.
61 To improve the robustness, the data log should be stored on
62 a device that provides RAID functionality. The index does
63 not require such protection, since if necessary, it can
64 can be regenerated from the data log.
67 is typically limited to the random access performance
68 of the index. This performance can be improved by spreading the
69 index accross multiple disks.
82 ties the index sections and data arenas together.
85 server is accessed via an undocumented network protocol.
86 Two client applications are included in this distribution:
91 copies files from a Plan 9 file system to Venti, creating an
92 archive and returning the fingerprint of the root.
93 This archive can be mounted in Plan 9 using
95 These two commands enable a rudimentary backup system.
96 A future release will include a Plan 9 file system that uses
97 Venti as a replacement for the WORM device of
102 server provides rudimentary status information via
103 a built-in http server. The URL files it serves are:
106 Various internal statistics.
109 An enumeration of the index sections and all non empty arenas, including various statistics.
112 A summary of the state of the data log.
115 An enumeration of the index sections and all non empty arenas, in XML format.
117 Several auxiliary utilities (see
119 aid in maintaining the storage for Venti.
120 With the exception of
122 these utilities should generally be run after killing the
128 Check the integrity, and optionally fix, Venti arenas.
131 Check the integrity, and optionally fix, a Venti index.
134 Rebuild a Venti index from scratch.
137 Extract a Venti arena and write to standard output.
144 .BI -a " ventiaddress
145 The network address on which the server listens for incoming connections.
149 .BI -B " blockcachesize
150 The size, in bytes, of memory allocated to caching raw disk blocks.
160 The size, in bytes, of memory allocated to caching
165 Produce various debugging information on standard error.
168 The network address of Venti's built-in
175 The size, in bytes, of memory allocated to caching the index mapping fingerprints
181 Do not run in the background.
183 the foreground process will exit once the Venti server
184 is initialized and ready for connections.
187 Enable write buffering. This option increase the performance of writes to
189 at the cost of returning success to the client application before the
190 data has been written to disk.
191 The server implements a
193 rpc that waits for completion of all the writes buffered at the time
194 the rpc was received.
199 command described below
200 use this rpc to make sure that the data is correctly written to disk.
201 Use of this option is recommended.
204 The units for the various cache sizes above can be specified by appending a
209 to indicate kilobytes, megabytes, or gigabytes respectively.
210 The command line options override options found in the
215 connects to a running Venti server and executes a sync rpc
219 If sync exits successfully, it means that all writes buffered at the
220 time the command was issued are now on disk.
222 .B /sys/src/cmd/venti
229 Sean Quinlan and Sean Dorward,
230 ``Venti: a new approach to archival storage'',
231 .I "Usenix Conference on File and Storage Technologies" ,