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