|
|
1.1 root 1: % run this through SLiTeX with the appropriate wrapper
2:
3: \begin{bwslide}
4: \part {ISSUES IN IMPLEMENTING THE VIRTUAL FILESTORE}
5:
6: \begin{nrtc}\bf
7: \item A VIRTUAL FILESTORE FOR UNIX: TWO APPROACHES
8:
9: \item MAPPING THE NATIVE FILESYSTEM TO THE VIRTUAL FILESTORE
10: \end{nrtc}
11: \end{bwslide}
12:
13:
14: \begin{note}\em
15: one reason that the file protocol is relatively simple to implement
16: is that it is unconcerned with how the virtual filestore maps to the
17: realstore
18:
19: this is the problem of the file service responder, which uses the file
20: service to transmit filestore abstractions, but must use the realstore
21: to ``emulate'' the virtual filestore
22:
23: deciding on how to perform these mappings is perhaps the hardest part
24: of implementing ftam on a real system:
25: \begin{quote}
26: very difficult to transfer non-trivial file structures
27:
28: but, the virtual filestore should make the problem $N$ rather than $N*N$
29: \end{quote}
30: \end{note}
31:
32:
33: \begin{bwslide}
34: \ctitle {DIGRESSION: THE FTAM LIBRARY}
35:
36: \begin{nrtc}
37: \item APPROXIMATE LINES OF CODE (FOR THOSE WHO CARE)
38: \begin{nrtc}
39: \item C: 23000
40:
41: \item ASN.1: 2100 (COMPILED TO 11000 LINES OF C)
42: \end{nrtc}
43:
44: \item SUPPORTS BOTH INITIATOR AND RESPONDER
45:
46: \item SERVICE LEVEL: RELIABLE
47:
48: \item SERVICE CLASSES: TRANSFER, ACCESS, MANAGEMENT, TRANSFER AND MANAGEMENT
49:
50: \item FUNCTIONAL UNITS: KERNEL, READ, WRITE, ACCESS, LIMITED FILE MANAGEMENT,
51: ENHANCED FILE MANAGEMENT, GROUPING
52: \begin{nrtc}
53: \item RESTRICTION: GROUPING IS REQUIRED
54: \end{nrtc}
55:
56: \item ATTRIBUTE GROUPS: KERNEL, STORAGE AND SECURITY
57: \end{nrtc}
58: \end{bwslide}
59:
60:
61: \begin{bwslide}
62: \ctitle {IMPLEMENTATION NOTES}
63:
64: \begin{nrtc}
65: \item PROCEDURE CALLS USED FOR SERVICE INTERFACE
66: \begin{nrtc}
67: \item CONFIRMED SERVICES BLOCK UNTIL RESPONSE RECEIVED
68:
69: \item F-WAIT (PSEUDO) SERVICE ADDED TO WAIT FOR .INDICATIONs
70: \end{nrtc}
71:
72: \item LIBRARY SUPPORTS MULTIPLE ASSOCIATIONS
73: \end{nrtc}
74: \end{bwslide}
75:
76:
77: \begin{bwslide}
78: \ctitle {AUTOMATIC TOOLS IN SUPPORT OF ASN.1}
79:
80: \begin{nrtc}
81: \item BECAUSE ASN.1 IS A ``FORMAL'' LANGUAGE, IT IS POSSIBLE TO WRITE
82: PROGRAMS WHICH UNDERSTAND ASN.1 DESCRIPTIONS
83:
84: \item ONE EXAMPLE OF SUCH A PROGRAM IS ``PEPY'', AN ASN.1--COMPILER THAT
85: PRODUCES ENCODERS, DECODERS, AND PRETTY-PRINTERS OF DATA STRUCTURES
86: DEFINED BY ASN.1
87:
88: \item PEPY IS SUFFICIENTLY POWERFUL TO PRODUCE A DECODER OF THE FULL FPDU
89: AND FADU SPECIFICATION (IT WAS USED EXTENSIVELY FOR THIS PURPOSE)
90:
91: \item PEPY HAS BEEN USED IN OTHER PROJECTS AND HAS PROVEN USEFUL IN
92: FINDING ERRORS IN THE PDU SPECIFICATIONS
93: \end{nrtc}
94: \end{bwslide}
95:
96:
97: \begin{note}\em
98: actually, there is one *small* part of the FPDU specification that PEPY
99: doesn't support
100: \end{note}
101:
102:
103: \begin{bwslide}
104: \part* {A VIRTUAL FILESTORE\\ FOR UNIX:\\ TWO APPROACHES}\bf
105:
106: \begin{nrtc}
107: \item REGARDLESS OF THE NUMBER OF DIFFERENT LOCALSTORES THAT EXIST,
108: IT SHOULDN'T BE SURPRISING THAT THERE IS MORE THAN ONE WAY TO MAP A
109: VIRTUAL FILESTORE ONTO A LOCALSTORE
110:
111: \item LET'S CONSIDER THE UNIX LOCALSTORE (BECAUSE OF ITS SIMPLICITY) AND
112: CONSIDER TWO DIFFERENT WAYS OF IMPLEMENTING THE VIRTUAL FILESTORE
113: \end{nrtc}
114: \end{bwslide}
115:
116:
117: \begin{bwslide}
118: \ctitle {REVIEW: THE UNIX LOCALSTORE}
119:
120: \begin{nrtc}
121: \item FILES IN UNIX ARE BYTE STREAMS, WITHOUT ANY INHERENT STRUCTURING
122: INFORMATION (e.g., RECORD LENGTHS, FORMATS, etc.)
123:
124: \item TWO TYPES OF FILES ARE OF INTEREST
125: \begin{nrtc}
126: \item REGULAR FILES WHICH CONTAIN DATA
127:
128: \item DIRECTORY FILES WHICH CONTAIN POINTERS TO OTHER FILES
129: \end{nrtc}
130:
131: \item THE FILESYSTEM IS HIERARCHICAL (TREE-LIKE)
132:
133: \item THERE ARE RELATIVELY FEW OPERATIONS
134: \begin{nrtc}
135: \item OPEN, READ, WRITE, CLOSE: MANIPULATE REGULAR FILES
136:
137: \item LINK, UNLINK: MANIPULATE DIRECTORY FILES
138:
139: \item CHOWN, CHMOD, UTIMES: CHANGE FILE ATTRIBUTES
140:
141: \item STAT: RETURN INFORMATION ABOUT A FILE
142: \end{nrtc}
143: \end{nrtc}
144: \end{bwslide}
145:
146:
147: \begin{bwslide}
148: \ctitle {THE ``ALTERNATE FILESYSTEM'' APPROACH}
149:
150: \begin{nrtc}
151: \item OBSERVATION: THE UNIX LOCALSTORE ISN'T POWERFUL ENOUGH TO PERMIT
152: A DIRECT MAPPING TO THE FILESTORE
153:
154: \item SOLUTION: ``PARTITION OFF'' A PART OF THE LOCAL FILESYSTEM,
155: INACCESSIBLE TO MOST USERS, AND GIVE THE FTAM RESPONDER FULL REIGN
156: THERE
157: \end{nrtc}
158: \end{bwslide}
159:
160:
161: \begin{bwslide}
162: \ctitle {MAPPINGS}
163:
164: \begin{nrtc}
165: \item START WITH A ``TOP-LEVEL'' DIRECTORY
166:
167: \item TREAT EACH FILE IN THE VIRTUAL FILESTORE AS A UNIX DIRECTORY
168: \begin{nrtc}
169: \item SINCE A FTAM FILENAME IS A SEQUENCE OF GraphicString's,
170: USE A DIRECTORY FOR EACH STRING IN THE SEQUENCE
171: \end{nrtc}
172:
173: \item IN THE FILE'S DIRECTORY
174: \begin{nrtc}
175: \item HAVE A UNIX FILE \verb"attributes" WHICH CONTAINS
176: DEFINITIONS FOR ALL OF THE FILE'S ATTRIBUTES
177:
178: \item HAVE UNIX FILES CALLED \verb"descriptor" AND \verb"DU"
179: WHICH DESCRIBE THE ROOT FADU
180:
181: \item FOR EACH CHILD OF THE ROOT, HAVE A DIRECTORY
182: (NAMED \verb"1", \verb"2", etc.)
183: \end{nrtc}
184: \end{nrtc}
185: \end{bwslide}
186:
187:
188: \begin{bwslide}
189: \ctitle {EXAMPLE: THE ``ALTERNATE FILESYSTEM'' APPROACH}
190:
191: \vskip.5in
192: \diagram[p]{figure4}
193: \end{bwslide}
194:
195:
196: \begin{bwslide}
197: \diagram[p]{figure8}
198: \end{bwslide}
199:
200:
201: \begin{bwslide}
202: \ctitle {BENEFITS OF THE ``ALTERNATE FILESYSTEM'' APPROACH}
203:
204: \begin{nrtc}
205: \item THE UNIX FILESYSTEM CAN HOST A DATABASE WHICH IS POWERFUL ENOUGH TO
206: MODEL THE FULL STRUCTURE OF FILES IN THE VIRTUAL FILESTORE
207:
208: \item BY DISTINGUISHING BETWEEN FTAM ATTRIBUTES AND UNIX ATTRIBUTES,
209: THE FULL SET OF FTAM ATTRIBUTES CAN POTENTIALLY BE SUPPORTED
210: \end{nrtc}
211: \end{bwslide}
212:
213:
214: \begin{bwslide}
215: \ctitle {DISADVANTAGES OF\\ THE ``ALTERNATE FILESYSTEM'' APPROACH}
216:
217: \begin{nrtc}
218: \item NOT A ``INTEGRATED'' APPROACH
219: \begin{nrtc}
220: \item USERS WISHING TO ACCESS FILES RESIDING IN THE LOCAL VIRTUAL
221: FILESTORE MUST STILL USE FTAM (SLOW AND REDUNDANT)
222: \end{nrtc}
223:
224: \item NOT VERY EFFICIENT USE OF UNIX RESOURCES
225:
226: \item REQUIRES SOME RE-INVENTING OF THE WHEEL
227: \end{nrtc}
228: \end{bwslide}
229:
230:
231: \begin{bwslide}
232: \ctitle {THE ``INTEGRATED'' APPROACH}
233:
234: \begin{nrtc}
235: \item IS THERE A WAY TO MAP UNIX FILE STRUCTURE AND ATTRIBUTES DIRECTLY
236: TO THE VIRTUAL FILESTORE?
237:
238: \item CAUTION:
239: \begin{quote}\em
240: SOMETIMES WHEN YOU TRY TO TURN AN APPLE INTO AN ORANGE YOU GET BACK A
241: LEMON!
242: \end{quote}
243: \end{nrtc}
244: \end{bwslide}
245:
246:
247: \begin{bwslide}
248: \part* {MAPPING THE NATIVE FILESYSTEM TO THE VIRTUAL FILESTORE}\bf
249:
250: \begin{nrtc}
251: \item QUESTION: CAN AN ARBITRARY UNIX FILE APPEAR TO BE A FILE IN
252: THE VIRTUAL FILESTORE?
253:
254: \item IMPLICATIONS
255: \begin{nrtc}
256: \item THE UNIX FILE CONTENTS MAP TO AN FTAM FILE STRUCTURE
257:
258: \item THE UNIX FILESYSTEM ATTRIBUTES MAP TO VIRTUAL FILESYSTEM
259: ATTRIBUTES
260: \end{nrtc}
261: \end{nrtc}
262: \end{bwslide}
263:
264:
265: \begin{bwslide}
266: \ctitle {MAPPINGS}
267:
268: \begin{nrtc}
269: \item INITIALLY, CONSIDER ONLY
270: \begin{nrtc}
271: \item UNSTRUCTURED BINARY FILES (FTAM-3)
272:
273: \item UNSTRUCTURED TEXT FILES (NBS-2)
274:
275: \item FILE DIRECTORY FILES (NBS-9)
276: \end{nrtc}
277:
278: \item AUTHENTICATION
279: \begin{nrtc}
280: \item FTAM INITIATOR MAPS TO USER ENTRY IN THE UNIX PASSWORD FILE
281:
282: \item ``ANON'' INITIATOR PROVIDED FOR GUEST (RESTRICTED) ACCESS
283: \end{nrtc}
284:
285: \item MAPPING BETWEEN USER/GROUP IDs (UIDs/GIDs) AND FTAM ENTITIES
286: \begin{nrtc}
287: \item PASSWORD OR GROUP FILE USED TO MAP NUMBER TO NAME
288:
289: \item IF ENTRY NOT FOUND, NUMBER CONVERTED TO STRING
290: \end{nrtc}
291:
292: \item MAPPING BETWEEN UNIX TIME AND FTAM DATE/TIMES
293: \begin{nrtc}
294: \item STRAIGHT-FORWARD (AT LAST)
295: \end{nrtc}
296: \end{nrtc}
297: \end{bwslide}
298:
299:
300: \begin{bwslide}
301: \ctitle {ATTRIBUTE MAPPINGS}
302:
303: \begin{nrtc}
304: \item FILENAME
305: \begin{nrtc}
306: \item A SINGLE STRING (WHAT MOST PROFILES SPECIFY ANYWAY)
307:
308: \item INTERPRETED RELATIVE TO THE USER'S HOME DIRECTORY
309:
310: \item CHANGING THIS ATTRIBUTE RENAMES THE FILE
311: \end{nrtc}
312:
313: \item CONTENTS TYPE
314: \begin{nrtc}
315: \item BASED ON FILE TYPE (MORE DETAIL LATER)
316: \end{nrtc}
317:
318: \item ACCOUNT
319: \begin{nrtc}
320: \item THE FILE'S GID (GROUP ID) ATTRIBUTE
321: \end{nrtc}
322:
323: \item DATES AND TIMES
324: \begin{nrtc}\small
325: \item OF CREATION AND LAST MODIFICATION: THE FILE'S LAST MODIFICATION
326: TIME
327:
328: \item OF LAST READ ACCESS: THE FILE'S LAST ACCESS TIME
329:
330: \item OF LAST ATTRIBUTE MODIFICATION: THE INODE'S LAST CHANGE TIME
331:
332: \item NOT STRICTLY ACCURATE SINCE WRITING TO A FILE CHANGES EACH
333: \end{nrtc}
334: \end{nrtc}
335: \end{bwslide}
336:
337:
338: \begin{bwslide}
339: \ctitle {ATTRIBUTE MAPPINGS (cont.)}
340:
341: \begin{nrtc}
342: \item IDENTITIES:
343: \begin{nrtc}
344: \item OF CREATOR: THE FILE'S OWNER
345:
346: \item OF OTHERS: DEPENDS ON THE FILE'S MODE, OTHERWISE UNAVAILABLE
347: \end{nrtc}
348:
349: \item FILE-AVAILABILITY
350: \begin{nrtc}
351: \item IMMEDIATE
352: \end{nrtc}
353:
354: \item PERMITTED ACTIONS
355: \begin{nrtc}
356: \item DEPENDS ON THE FILE'S MODE
357:
358: \item READ, WRITE: BASED ON INITIATOR'S PERMISSIONS
359:
360: \item READ ATTRIBUTES: ALWAYS
361:
362: \item CHANGE ATTRIBUTES: ONLY IF OWNER OF FILE
363:
364: \item DELETE: BASED ON WRITABILITY OF PARENT DIRECTORY
365: \end{nrtc}
366:
367: \item FILESIZE
368: \begin{nrtc}
369: \item THE FILE'S SIZE
370: \end{nrtc}
371: \end{nrtc}
372: \end{bwslide}
373:
374:
375: \begin{bwslide}
376: \ctitle {UNAVAILABLE ATTRIBUTES}
377:
378: \begin{nrtc}
379: \item FUTURE FILESIZE
380:
381: \item ACCESS CONTROL
382:
383: \item ENCRYPTION NAME
384:
385: \item LEGAL QUALIFICATIONS
386:
387: \item PRIVATE USE
388: \end{nrtc}
389: \end{bwslide}
390:
391:
392: \begin{bwslide}
393: \ctitle {UNSTRUCTURED BINARY FILES}
394:
395: \begin{nrtc}
396: \item SEMANTICS: THE DOCUMENT CONSISTS OF A SINGLE DATA UNIT
397: \begin{nrtc}
398: \item THE DATA UNIT CONSISTS OF AN UNBOUNDED SEQUENCE OF DATA
399: ELEMENTS
400:
401: \item EACH DATA ELEMENT IS AN OCTET STRING
402:
403: \item TRANSFER SYNTAX IS NOT SELF-DELIMITING
404: \end{nrtc}
405:
406: \item CONSTRAINT SET: UNSTRUCTURED
407:
408: \item THIS IS SIMPLY A REGULAR UNIX FILE, NO STRUCTURE MAPPING IS REQUIRED
409: \end{nrtc}
410: \end{bwslide}
411:
412:
413: \begin{bwslide}
414: \ctitle {EFFICIENCY CONSIDERATIONS}
415:
416: \begin{nrtc}
417: \item NEED TO DETERMINE HOW FADUs MAP TO SSDUs
418:
419: \item IDEALLY, WISH TO CONFIGURE DATA TRANSFER SUCH THAT EACH PARTIAL
420: FADU SENT MAPS TO EXACTLY ONE SSDU!
421:
422: \item THIS IS (ARGUABLY) A HORRIBLE VIOLATION OF THE LAYERING PHILOSOPHY
423: \end{nrtc}
424: \end{bwslide}
425:
426:
427: \begin{bwslide}
428: \ctitle {UNSTRUCTURED TEXT FILES (VARCRLF)}
429:
430: \begin{nrtc}
431: \item SEMANTICS: THE DOCUMENT CONSISTS OF A SINGLE DATA UNIT
432: \begin{nrtc}
433: \item THE DATA UNIT CONSISTS OF AN UNBOUNDED SEQUENCE OF DATA
434: ELEMENTS
435:
436: \item EACH DATA ELEMENT IS AN IA5String, TERMINATED BY CR-LF,
437: AND NEITHER CR NOR LF MAY APPEAR ANYWHERE ELSE IN THE STRING
438:
439: \item TRANSFER SYNTAX IS NOT SELF-DELIMITING
440: \end{nrtc}
441:
442: \item CONSTRAINT SET: UNSTRUCTURED
443:
444: \item HOW TO DETERMINE IF REGULAR FILE IS BINARY OR TEXT
445: \begin{nrtc}
446: \item USE A HEURISTIC (AND ALL THAT IMPLIES)
447: \end{nrtc}
448:
449: \item OTHERWISE, GIVEN CR-LF VS. NEWLINE HANDLING, STRAIGHT-FORWARD TO
450: HANDLE
451: \end{nrtc}
452: \end{bwslide}
453:
454:
455: \begin{bwslide}
456: \ctitle {FILE DIRECTORY FILES}
457:
458: \begin{nrtc}
459: \item ALTHOUGH THE VIRTUAL FILESTORE DOESN'T SUPPORT A ``DIRECTORY''
460: CONCEPT, WE CAN EMULATE IT
461:
462: \item EXPERIENCE WITH OTHER NETWORK FILE SERVICES HAS SHOWN THIS TO BE
463: VERY USEFUL
464: \end{nrtc}
465: \end{bwslide}
466:
467:
468: \begin{bwslide}
469: \ctitle {FILE DIRECTORY FILES (cont.)}
470:
471: \begin{nrtc}
472: \item SEMANTICS: THE DOCUMENT CONSISTS OF AN UNBOUNDED SEQUENCE OF DATA UNITS
473: \begin{nrtc}
474: \item EACH DATA UNIT CONSISTS OF EXACTLY ONE DATA ELEMENT OF
475: TYPE FileDirectoryEntry
476:
477: \item THE TRANSFER SYNTAX IS SELF-DELIMITING
478: \end{nrtc}
479:
480: \item CONSTRAINT SET: SEQUENTIAL FLAT
481:
482: \item QUESTION: WHAT FILENAME TO REPORT IN EACH ENTRY?
483:
484: \item EFFICIENCY CONCERN: ``BUFFER'' DATA ELEMENTS FOR F-DATA SERVICE
485: \end{nrtc}
486: \end{bwslide}
487:
488:
489: \begin{bwslide}
490: \ctitle {EXAMPLE: FILE DIRECTORY FILE}\small
491:
492: \begin{tgrind}
493: \let\linebox=\relax
494: \input figure9\relax
495: \end{tgrind}
496: \end{bwslide}
497:
498:
499: \begin{bwslide}
500: \ctitle {COMPARISON OF THE TWO APPROACHES}
501:
502: \begin{nrtc}
503: \item ``PURITY'' OF VIRTUAL FILESTORE MAPPINGS
504: \begin{nrtc}
505: \item ALTERNATE: ALL MAPPINGS CAN BE PERFORMED
506:
507: \item INTEGRATED: MOST MAPPINGS ARE DIRECT, SOME ARE STRAINED, OTHERS
508: ARE IMPOSSIBLE
509: \end{nrtc}
510:
511: \item INTEGRATED: TIGHT INTERACTION WITH LOCAL ENVIRONMENT YIELDING
512: SIMPLICITY OF IMPLEMENTATION
513: \begin{nrtc}
514: \item ABOUT 3500 LINES OF C CODE
515: \end{nrtc}
516:
517: \item EFFICIENCY OF IMPLEMENTATION
518: \begin{nrtc}
519: \item ALTERNATE: EFFICIENT FOR VIRTUAL FILESTORE
520:
521: \item INTEGRATED: EFFICIENT USE OF UNIX RESOURCES
522: \end{nrtc}
523: \end{nrtc}
524: \end{bwslide}
525:
526:
527: \begin{note}\em
528: the responder, per se, currently runs on berkeley or at\&t unix
529: (although only the berkeley version has been extensively tested)
530:
531: it was inspired, a bit, by the berkeley unix ftp server
532:
533: the library, of course, just needs a decent C compiler, unix isn't an issue
534: \end{note}
535:
536:
537: \begin{bwslide}
538: \ctitle {COMPARISON OF THE TWO APPROACHES (cont.)}
539:
540: \begin{nrtc}
541: \item FOR SIMPLE APPLICATIONS, THE ``INTEGRATED'' APPROACH IS PROBABLY
542: SUPERIOR
543:
544: \item IT IS INSUFFICIENT FOR ADVANCED APPLICATIONS HOWEVER
545:
546: \item THIS SUGGESTS THAT IMPLEMENTATIONS IN THE LONG-TERM WILL PROBABLY
547: EVOLVE TOWARD A HYBRID APPROACH
548:
549: \item PERHAPS THE NEXT GENERATION LOCALSTORE SHOULD BE DESIGNED WITH FTAM
550: IN MIND?
551: \end{nrtc}
552: \end{bwslide}
553:
554:
555: \begin{note}\em
556: not discussed due to time constraints:
557:
558: managing multiple associations at the file store
559: (needed: reasonable file-level locking facilities in the realstore)
560: \end{note}
561:
562:
563: \begin{bwslide}
564: \part* {SUMMARY}\bf
565:
566: \begin{nrtc}
567: \item THE FILE PROTOCOL IS TRIVIAL COMPARED TO IMPLEMENTING A GOOD MAPPING
568: OF THE VIRTUAL FILESTORE
569:
570: \item THE ``ALTERNATE FILESYSTEM'' APPROACH CAN BE USED TO PROVIDE FULL
571: VIRTUAL FILESTORE SERVICES
572:
573: \item THE ``INTEGRATED'' APPROACH, WHILE NOT AS CAPABLE, IS ACCEPTABLE FOR
574: MOST APPLICATIONS
575: \end{nrtc}
576: \end{bwslide}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.