|
|
1.1 root 1: .TH WORM 8 "wild"
2: .CT 1 sa_nonmortals
3: .SH NAME
4: worm, jukebox \- optical disk utilities
5: .SH SYNOPSIS
6: .B "worm mkfs"
7: [
8: .BI -f device
9: ] [
10: .BI -c comments
11: ] [
12: .BI -b blksz
13: ] [
14: .BI -n nblks
15: ] [
16: .BI -v newvol_id
17: ]
18: .I vol_id
19: .PP
20: .B "worm stat"
21: [
22: .BI -f device
23: ] [
24: .BI -F n
25: ] [
26: .B -v
27: ] [
28: .I vol_id
29: ]
30: .PP
31: .B "worm ls"
32: [
33: .BI -f device
34: ] [
35: .B -l
36: ] [
37: .I file ...
38: ]
39: .PP
40: .B "worm rm"
41: [
42: .BI -f device
43: ]
44: .I vol_id
45: [
46: .I file ...
47: ]
48: .PP
49: .B "worm mv"
50: [
51: .BI -f device
52: ]
53: .I vol_id
54: .I "src dest"
55: .PP
56: .B "worm write"
57: [
58: .BI -f device
59: ]
60: .I vol_id
61: [
62: .I file ...
63: ]
64: .PP
65: .B "worm read"
66: [
67: .BI -f device
68: ] [
69: .B -d
70: ]
71: .I vol_id
72: [
73: .I file ...
74: ]
75: .PP
76: .B "worm cat"
77: [
78: .BI -f device
79: ]
80: .I vol_id
81: .I file
82: .PP
83: .B "worm offline"
84: [
85: .BI -f device
86: ]
87: .PP
88: .B "worm btree"
89: [
90: .BI -f device
91: ]
92: .I vol_id
93: .PP
94: .B "worm dir"
95: [
96: .BI -f device
97: ]
98: .I vol_id
99: .PP
100: .B "worm tmpdir"
101: [
102: .BI -f device
103: ]
104: .I vol_id
105: .PP
106: .B "worm mount"
107: [
108: .BI -w secs
109: ] [
110: .I vol_id
111: ]
112: .PP
113: .B "jukebox"
114: [
115: .B -aemprsuU
116: ] [
117: .BI -w secs
118: ] [
119: .I vol_id
120: ]
121: .SH DESCRIPTION
122: The
123: .I worm
124: programs manipulate arbitrary files.
125: They are intended for use with the raw device associated
126: with a Write-Once Read-Many (WORM) optical disk.
127: The default device is
128: .FR /dev/worm0 .
129: Other devices are specified by
130: .BI -f device
131: and a device name of a single digit
132: .I n
133: is taken as an abbreviation for
134: .FR /dev/worm \f2n\fP.
135: Most of the commands implement a simple file system.
136: Programs just wanting a raw device should still use
137: .B "worm mkfs"
138: so that the disk is properly labeled.
139: The
140: .IR vol_id ,
141: or label,
142: should be unique and by convention, the vol_id's
143: for the A and B sides of a disk should be the same string suffixed by
144: a lowercase
145: .B a
146: and
147: .B b
148: respectively.
149: .PP
150: .I "Worm mkfs"
151: labels an optical disk.
152: The
153: .I comments
154: field is limited to 256 chars.
155: It is purely descriptive and is printed by
156: .IR "worm stat \-v" .
157: The (default) blocksize is 1024 for our SONY disks.
158: The number of blocks on a disk can be found by
159: .IR ra (4)
160: or
161: .IR scsish (8);
162: the default size
163: (1,600,000 for single density, 3,250,000 for double density)
164: sets aside 30MB or so as a hedge against oversights.
165: If the disk has already been initialised, its vol_id must match
166: .IR vol_id .
167: A new vol_id can be set with
168: .BR -v .
169: .PP
170: .I "Worm stat"
171: prints out labeling information
172: including the amount of free space left on the disk.
173: Option
174: .I vol_id
175: turns off all output except exit status: zero if
176: .I vol_id
177: matches that of the disk,
178: one otherwise.
179: Option
180: .B -F
181: similarly exits with status zero if the disk has more than
182: .I n
183: free blocks, otherwise three.
184: Option
185: .B -v
186: produces more output.
187: .PP
188: .I "Worm ls"
189: simulates an emasculated
190: .IR ls (1).
191: .PP
192: .I "Worm rm"
193: makes the specifed files unavailable to the rest of the
194: .I worm
195: commands.
196: .PP
197: .I "Worm mv"
198: renames
199: .I src
200: to
201: .IR dest .
202: .PP
203: .I "Worm write"
204: copies files onto the WORM.
205: If no file arguments are given,
206: filenames are read one per line from standard input.
207: The total number of files and bytes is printed on standard output.
208: .PP
209: .I "Worm read"
210: restores files from the WORM.
211: If no file arguments are given,
212: filenames are read one per line from standard input.
213: Option
214: .B -d
215: causes directories to be created as needed.
216: .PP
217: .I "Worm cat"
218: copies the named file from the WORM to the standard output.
219: .PP
220: .I "Worm offline"
221: makes the WORM go offline, ready for ejecting.
222: This command is harmless;
223: accessing an offline drive will cause it to spin up and go online
224: without operator intervention.
225: .I "Worm offline"
226: only takes effect after the last close of the WORM
227: and as a bonus, applies to any MSCP device such as an RA81.
228: .PP
229: .I "Worm tmpdir"
230: saves a copy of the directory in
231: .BI /usr/worm/tmp/ vol_id
232: if the directory
233: .F /usr/worm/tmp
234: exists.
235: This will speed up subsequent access substantially,
236: although it will still be slower than
237: .I "worm btree"
238: below.
239: On the other hand,
240: .I worm tmpdir
241: typically takes 5 minutes to run (on a VAX 11/750)
242: whereas
243: .I worm btree
244: takes about 45 minutes.
245: .PP
246: .I "Worm btree"
247: constructs a new directory for the whole disk (in the form of a
248: .IR cbt (1)
249: database).
250: The new superblock is at zero.
251: All the worm commands go faster with such an index but it is intended to be done
252: just once, after the disk is complete.
253: The directory occupies of the order of 10MB but may be more.
254: If you really have to add more files to the disk,
255: you need to write zeros on the first 1K block of the WORM before using
256: .IR "worm write" .
257: .PP
258: .I "Worm dir"
259: takes the btree directory from the disk and stores in
260: .FR /usr/worm/dirs .
261: Future uses of the disk will be much faster.
262: .PP
263: .I "Worm mount"
264: returns the device on which the disk labelled
265: .I vol_id
266: is mounted.
267: If the drive(s) are busy and you have a jukebox, the
268: .BI -w s
269: option tells how many seconds to wait before failing.
270: The default is wait forever.
271: If no
272: .I vol_id
273: is given, print the drive status.
274: .PP
275: .I "Jukebox"
276: manages the disks in the SONY jukebox.
277: There are several options (default is
278: .BR -s ):
279: .TP 10
280: .B -a
281: Allocate a blank disk and label it
282: .IR vol_id .
283: Use
284: .I "worm mkfs"
285: to change any fields from their default value.
286: .TP
287: .B -e
288: Eject the disk labeled
289: .I vol_id.
290: To physically retrieve the disk,
291: press the
292: .B OUT
293: button (the
294: .B "OUT READY"
295: light should be on).
296: Repeat until the
297: .B "IN READY"
298: light goes on.
299: .TP
300: .B -m
301: Mount the disk labelled
302: .I vol_id
303: in some drive and print the drive number on standard output.
304: .TP
305: .B -p
306: Print the list of disks in the jukebox.
307: .TP
308: .B -r
309: Rebuild the list of disks by examining each disk in the jukebox.
310: Do not do this unless you are sure you need to.
311: If
312: .I vol_id
313: is given, it should be one of the following letters and governs
314: how disks are assigned shelf numbers.
315: The default is to leave the shelf number unchanged.
316: Other options (mainly useful for demos) are
317: .B c
318: (compresses the disks in the jukebox towards the bottom or lower numbered shelves),
319: .B r
320: (distributes the disks randomly), and
321: .B s
322: (sorts the disks by vol_id).
323: .TP
324: .B -s
325: Print the status of the jukebox.
326: .TP
327: .B -u
328: Unload offline disks back onto their shelves.
329: .TP
330: .B -U
331: Unload all disks (offline or not) back onto their shelves.
332: .TP
333: .BI -w secs
334: This option only affects the behavior of
335: .BR -m .
336: If all drives are busy, try again for
337: .I secs
338: seconds before failing.
339: .PP
340: To load a disk into the jukebox, press the
341: .B IN
342: button on the jukebox when the
343: .B "IN READY"
344: light is on.
345: After the shutter opens, push the disk in firmly.
346: The disk (blank or initialised) is not examined immediately but on demand.
347: .SS Etiquette
348: Vol_ids should be unique as discussed above.
349: The file
350: .F /n/wild/usr/worm/vol_ids
351: contains known vol_ids.
352: The commands for reading and writing require vol_id's
353: to guard against accessing the wrong disk.
354: .PP
355: The recommended protocol for changing disks is
356: if no one appears to be using the drive
357: (by using
358: .IR ps (1)),
359: execute
360: .I "worm offline"
361: and go to the drive.
362: If, and only if, the drive has the DRIVE OFF (middle) light on,
363: hit the EJECT button and change disks.
364: If the light is not on, then
365: someone is still using the disk and you should wait until they are done
366: before hitting EJECT.
367: .SS Programming considerations
368: Programs should not depend on writing any block more than once; however,
369: our SONY optical disks implement a small number of multiple writes
370: via bad block replacement.
371: A
372: .IR read (2)
373: of an unwritten block returns with an errno of
374: .BR ENXIO .
375: On Vaxes, the WORM is an MSCP device;
376: thus geometry information can be fetched as in
377: .IR ra (4).
378: .PP
379: For maximum speed, read and write in large blocks (preferably 63K)
380: and avoid seeks.
381: A seek across the whole disk takes about 1 second.
382: .PP
383: The device
384: .F /dev/worm?
385: is simply an appropriate raw
386: .IR ra (4)
387: device, partition 7 (the whole disk).
388: .SH EXAMPLES
389: .EX
390: worm mkfs -c"512x512x24 movies" tdmoviesa
391: worm write tdmoviesa < filenames
392: worm read -d tdmoviesa bumblebee/act2/frame1
393: .EE
394: .SH FILES
395: .F /dev/worm?
396: .br
397: .F /n/wild/usr/worm/vol_ids
398: .br
399: .F /n/wild/usr/worm/jukedir
400: .SH SEE ALSO
401: .IR backup (8),
402: .IR scsish (8),
403: .IR backup (1)
404: .SH BUGS
405: The output of
406: .I "worm ls"
407: is not necessarily sorted.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.