The rAlpine file system Mark Brown, Karen Kolling, Ed Taft XEROX PARC Outline of talk Motivation for top-level system requirements Key design decisions to meet these requirements More detail on requirements and design Current status and future plans (Using Cedar) The rAlpine File System June 1983 Motivation for top-level system requirements Cypress DBMS (SIGMOD '81): Data Model Implementation (Entities, Rel'ships) Access Methods (Records, B-Trees, Hashing) File System (Files, Pages) BeginTransaction: PROC [] -> [TransID] CreateFile: PROC [TransID, PageCount] -> [FileID] ReadPage: PROC [TransID, FileID, PageNumber] -> [PageValue] WritePage: PROC [TransID, FileID, PageNumber, PageValue] EndTransaction: PROC [TransID, {commit, abort}] -> [{committed, aborted}] Transaction: a unit of consistency concurrent access to shared files transaction executes as if no other transactions present soft failure (main store error) hard failure (disk head crash) committed transaction persists, aborted transaction vanishes The rAlpine File System June 1983 Evaluation of file-level transactions Potential advantages of file-level transactions Make use of powerful workstation (processing, data caching) configure three ways: all local, file server, database server Easy to write new access methods (no locking or recovery issues) support "nonstandard" database applications Easy to write applications that mix database and raw file access Potential disadvantages of file-level transactions Loss of concurrency due to physical locking (if a problem, fix by adding locking and recovery concerns to access methods -- underlying transactions may still help) Volume of communication is not minimal (if a problem, fix by configuring as database server) Fine-grained access control requires trusted workstation software (if a problem, fix by configuring as database server) The rAlpine File System June 1983 Xerox PARC File Servers (ca. 1981) IFS Alto (Bcpl) Alto OS volume format Pup FTP protocol Problems: No transactions, whole-file transfers only Performance mismatch with Dorado workstations XDFS (Juniper) Alto/Mesa Specialized volume format To support shadow pages, pair-redundant pages Specialized communication protocol To support page-level access Problems: Poor performance (BeginTransaction 500ms, WritePage 110ms) Frequent crashes, slow crash recovery (>1 hour for 600mbyte server) Very limited amount of random update under a single transaction (<64 pages for 5mbyte file) The rAlpine File System June 1983 Top-level Alpine requirements Support Cypress (replace XDFS) Support whole-file transfers (replace IFS) The rAlpine File System June 1983 Major design decisions Implement transactions using a log Use Cedar RPC (Andrew Birrell, Bruce Nelson) for communication The rAlpine File System June 1983 Shadow pages versus Logs Shadow pages: XDFS, Cambridge FS, Felix, Cerise, Lorie's FS (System R), ... Logs: IMS, System R (Surveys paper), ... The rAlpine File System June 1983 Example: Write 10 pages to existing file Shadow Page Processing: For each page, recoverably allocate new page write page data to buffer pool Before commit, force all buffered page writes to disk recoverably allocate and write shadow file map entries log "intend to replace file map with shadow" records log "commit" record, force log to disk After commit, perform "replace file map with shadow" actions (includes freeing old copies of updated pages) after updated pages reach disk, log "complete" record Log Processing: For each page, log "intend to write new value on page" update (volatile) log map Before commit, log "commit" record, force log to disk After commit, perform "write new value on page" actions (write page data to buffer pool) after updated pages reach disk, log "complete" record The rAlpine File System June 1983 Shadow pages versus Logs (continued) Advantages of Shadow pages Fewer I/O transfers Write data once Write updated file maps, but may get several data pages per file map page Support versions File map structure can be made more general The rAlpine File System June 1983 Shadow pages versus Logs (continued) Advantages of Logs Cheaper I/O transfers Log writes are sequential I/O bandwidth not limiting -- seek time is Less allocation overhead Log is preallocated, shadow pages are not Support backup Need two copies after commit Allows extent-based file structure File map is more compact, less I/O overhead Updates preserve file contiguity Reads are faster (many more reads than writes) Less work before commit Better response time Do work in background Can be layered on existing file implementation Avoid writing file map, allocation map, disk driver, formatter, scavenger, etc. Can improve performance by buying hardware Instead of changing algorithms The rAlpine File System June 1983 RPC versus streams, messages, ... Advantages of specialized protocols Reduce communication overhead by deferring or piggybacking acks, etc. Important for slow communication lines Provide parallelism Send message without waiting for response Advantages of standardized RPC Reduce communication overhead by optimizing standard case at all levels Clients want abstraction in terms of interfaces and procedures Obtain parallelism by forking lightweight processes Useful separation of concerns File system implementors concentrate on providing a clean file abstraction. To modify system during development, they change interface and recompile stubs RPC implementors write stub compiler, remote binding, authentication, encryption, packet transport, ... The rAlpine File System June 1983 More detail on requirements and design Included in Alpine Access control Disk space accounting Reliability, availability configure to survive any single hard failure recover from soft failure: < 5 minutes recover from hard failure: < 2 hours Configure as workstation file system Separate activites, closely related to Alpine Directory system (path name -> [volume ID, file ID]) Pup FTP access Archive system Longer-term follow ons Location- and replication-transparent file access Excluded Continuous availability Guaranteed real-time response The rAlpine File System June 1983 More detail on requirements and design (continued) File Runs of pages Accepts random/sequential access hint at open time Concurrent operations within a transaction High water mark optimization Backup Nondisruptive, driven from log Access control Per-file access lists Uses Grapevine registration database Transaction, Lock, Log System R style Two-phase commit, optimizations for readonly and local-only cases FilePageMgr Implements buffer pool Different buffer strategy for random/sequential files Accepts read-ahead hint, notices chances for write-behind Isolates rest of Alpine from underlying file system (to be tested soon) The rAlpine File System June 1983 Current status and plans Current Status Server in operation since March About 10 regular users Used primarily for electronic mail databases Simple directory system adequate for current use Real backup not implemented -- copy important files to IFS daily Size of implementation program modules: [47 + 18 stubs + 8 workstation support] interface modules: [66 + 6 stubs + 7 workstation support] Plans Support more users Implement "real" backup Implement "real" directory system, FTP protocol Replace one IFS server with an Alpine server this year Implement archive system next year The rAlpine File System June 1983 What Alpine learned about Cedar Garbage collection allows cleaner interfaces Property: TYPE = {byteLength, createTime, ... } PropertyValuePair: TYPE = RECORD [ SELECT property: Property FROM byteLength => [byteLength: ByteCount], createTime => [createTime: System.GreenwichMeanTime], ... ENDCASE]; ReadProperties: PROC [...] -> [properties: LIST OF PropertyValuePair] WriteProperties: PROC [... , properties: LIST OF PropertyValuePair] Garbage collection allows cleaner implementations You can say what you mean, without worrying about storage allocation or intermediate results (But not when you care a lot about performance) Garbage collection requires object finalization Volatile data structures, tied together with REFs High concurrency; new REFs being handed out all the time When do you throw an object away? The rAlpine File System June 1983 What Alpine learned about Cedar (continued) Lightweight processes are useful Each in-call is a new process Many background processes to manage resources Remote interfaces are nice, but a file is an object Clients want a handy way to pass around a file Package up "conversation", interface, open file The rAlpine File System June 1983 The rAlpine File System June 1983