A crash course on some recent bug finding tricks.
|
|
|
- Derek McGee
- 10 years ago
- Views:
Transcription
1 A crash course on some recent bug finding tricks. Junfeng Yang, Can Sar, Cristian Cadar, Paul Twohey Dawson Engler Stanford
2 Background Lineage Thesis work at MIT building a new OS (exokernel) Spent last 7 years developing methods to find bugs in them (and anything else big and interesting) Goal: find as many serious bugs as possible. Agnostic on technique: system-specific static analysis, implementation-level model checking, symbolic execution. Our only religion: results. Works? Good. No work? Bad. This talk explode: model-checking to find storage system bugs. EXE: symbolic execution to generate inputs of death Maybe: weird things that happen(ed) when academics try to commercialize static checking.
3 EXPLODE: a Lightweight, General System for Finding Serious Storage System Errors Junfeng Yang, Can Sar, Dawson Engler Stanford University
4 The problem Many storage systems, one main contract You give it data. It does not lose or corrupt data. File systems, RAID, databases, version control,... Simple interface, difficult implementation: failure Wonderful tension for bug finding Some of the most serious errors possible. Very difficult to test: system must *always* recover to a valid state after any crash Typical: inspection (erratic), bug reports (users mad), pull power plug (advanced, not systematic) Goal: comprehensively check many storage systems with little work
5 EXPLODE summary Comprehensive: uses ideas from model checking Fast, easy Check new storage system: 200 lines of C++ code Port to new OS: 1 device driver + optional instrumentation General, real: check live systems. Can run (on Linux, BSD), can check, even w/o source code Effective checked 10 Linux FS, 3 version control software, Berkeley DB, Linux RAID, NFS, VMware GSX 3.2/Linux Bugs in all, 36 in total, mostly data loss This work [OSDI 06] subsumes our old work FiSC [OSDI 04]
6 Checking complicated stacks All real subversion checker ok? Stack of storage systems subversion: an open-source version control software User-written checker on top loopback subversion NFS client NFS server JFS software RAID1 crash %svnadm.recover %fsck.jfs %mdadm --assemble --run --force --update=resync %mdadm -a Recovery tools run after EXPLODEsimulated crashes checking disk checking disk crash disk crash disk
7 Outline Core idea Checking interface Implementation Results Related work, conclusion and future work
8 The two core explode principles Expose all choice: When execution reaches a point in program that can do one of N different actions, fork execution and in first child do first action, in second do second, etc. Exhaust states: Do every possible action to a state before exploring another. Result of systematic state exhaustion: Makes low-probability events as common as highprobability ones. Quickly hit tricky corner cases.
9 Core idea: explore all choices Bugs are often triggered by corner cases How to find: drive execution down to these tricky corner cases When execution reaches a point in program that can do one of N different actions, fork execution and in first child do first action, in second do second, etc.
10 External choices Fork and do every possible operation /root a b c creat link unlink mkdir rmdir Explore generated states as well Speed hack: hash states, discard if seen, prioritize interesting ones.
11 Internal choices Fork and explore all internal choices /root creat kmalloc returns NULL a c b Buffer cache misses
12 How to expose choices To explore N-choice point, users instrument code using choose(n) choose(n): N-way fork, return K in K th kid void* kmalloc(size s) { if(choose(2) == 0) return NULL; // normal memory allocation } We instrumented 7 kernel functions in Linux
13 Crashes Dirty blocks can be written in any order, crash at any point /root creat buffer cache Users write code to check recovered FS a c b Write all subsets fsck fsck check check fsck check
14 Outline Core idea: exhaustively do all verbs to a state. external choices X internal choices X crashes. This is the main thing we d take from model checking Surprised when don t find errors. Checking interface What EXPLODE provides What users do to check their storage system Implementation Results Related work, conclusion and future work
15 What EXPLODE provides choose(n): conceptual N-way fork, return K in K th child execution check_crash_now(): check all crashes that can happen at the current moment Paper talks about more ways for checking crashes Users embed non-crash checks in their code. EXPLODE amplifies them error(): record trace for deterministic replay
16 What users do Example: ext3 on RAID FS checker Ext3 Raid RAM Disk RAM Disk checker: drive ext3 to do something: mutate(), then verify what ext3 did was correct: check() storage component: set up, repair and tear down ext3, RAID. Write once per system assemble a checking stack
17 FS Checker mutate ext3 Component Stack choose(4) creat file rm file mkdir rmdir sync fsync / /
18 FS Checker check ext3 Component Check file exists Check file contents match Stack Even trivial checkers work:finds JFS fsync bug which causes lost file. Checkers can be simple (50 lines) or very complex(5,000 lines) Whatever you can express in C++, you can check
19 FS Checker ext3 Component storage component: initialize, repair, set up, and tear down your system Mostly wrappers to existing utilities. mkfs, fsck, mount, umount threads(): returns list of kernel thread IDs for deterministic error replay Stack Write once per system, reuse to form stacks Real code on next slide
20 FS Checker ext3 Component Stack
21 FS Checker assemble a checking stack ext3 Component Ext3 Stack Raid Let EXPLODE know how subsystems are connected together, so it can initialize, set up, tear down, and repair the entire stack RAM Disk RAM Disk Real code on next slide
22 FS Checker ext3 Component Ext3 Stack Raid RAM Disk RAM Disk
23 Outline Core idea: explore all choices Checking interface: 200 lines of C++ to check a system Implementation Checkpoint and restore states Deterministic replay Checking process Checking crashes Checking soft application crashes Results Related work, conclusion and future work
24 Recall: core idea Fork at decision point to explore all choices state: a snapshot of the checked system
25 How to checkpoint live system? Hard to checkpoint live kernel memory VM checkpoint heavy-weight checkpoint: record all choose() returns from S0 S0 2 restore: umount, restore S0, re-run code, make K th choose() return K th recorded values S S = S0 + redo choices (2, 3) 3 Key to EXPLODE approach
26 Deterministic replay Need it to recreate states, diagnose bugs Sources of non-determinism Kernel choose() can be called by other code Fix: filter by thread IDs. No choose() in interrupt Kernel scheduler can schedule any thread Opportunistic hack: setting priorities. Worked well Can t use lock: deadlock. A holds lock, then yield to B Other requirements in paper Worst case: non-repeatable error. Automatic detect and ignore
27 EXPLODE: put it all together EXPLODE Runtime Model Checking Loop EKM? void* kmalloc (size_t s, int fl) { if(fl & GFP_NOFAIL) if(choose(2) == 0) return NULL;.? Buffer Cache FS Checker Ext3 Component Raid Component RAM Disk Ext 3 Raid RAM Disk Checking Stack Modified Linux Kernel Hardware EXPLODE User code EKM = EXPLODE device driver
28 Outline Core idea: explore all choices Checking interface: 200 lines of C++ to check a system Implementation Results Lines of code Errors found Related work, conclusion and future work
29 EXPLODE core lines of code Lines of code Kernel patch Linux FreeBSD 1,915 (+ 2,194 generated) 1,210 User-level code 6,323 3 kernels: Linux , , FreeBSD 6.0. FreeBSD patch doesn t have all functionality yet
30 Checkers lines of code, errors found Storage System Checked Component Checker Bugs 10 file systems 744/10 5, CVS Storage applications Subversion EXPENSIVE Berkeley DB RAID 144 FS Transparent subsystems NFS VMware GSX/Linux FS FS 4 1 Total 1,115 6,008 36
31 Outline Core idea: explore all choices Checking interface: 200 lines of C++ to check new storage system Implementation Results Lines of code Errors found Related work, conclusion and future work
32 FS Sync checking results indicates a failed check App rely on sync operations, yet they are broken
33 ext2 fsync bug Events to trigger bug truncate A creat B write B fsync B crash! fsck.ext2 A Mem Disk A Indirect block B B Bug is fundamental due to ext2 asynchrony
34 Classic: mishandle crash during recovery ext3, JFS, reiserfs: All had this bug Result: can lose directories (e.g., / ) Root cause: the same journalling mistake. To do a file system operation: Record effects of operation in log ( intent ) Apply operation to in-memory copy of FS data Flush log (so know how to fix on-disk data). wait() Flush data. All get this right. To recover after crash Replay log to fix FS. Flush FS changes to disk. wait() Clear log. Flush to disk.
35 ext3 Recovery Bug recover_ext3_journal( ) { // retval = -journal_recover(journal) // // clear the journal e2fsck_journal_release( ) // } // Error! Empty macro, doesn t sync data! #define fsync_no_super(dev) do {} while (0) Code was directly adapted from the kernel But, fsync_no_super was defined as NOP journal_recover( ) { // replay the journal // // sync modifications to disk fsync_no_super ( ) }
36 Many subsystems intend to invisibly augment storage Easy checking: checker run with and without = equivalent. Sync-checker on NFS, RAID or VMM should be same as not Ran it. All are broken. Linux RAID: NFS: Does not reconstruct bad sectors: marks disk as faulty, removes from RAID, returns error. Two bad sectors, two disks: almost all reconstruct fail write file, then read through hardlink = different result. GSX/Linux: Easy checking of transparent subsystems No matter how you configure: guest OS gets lied to about
37 Even simple test drivers find bugs Version control: cvs, subversion, ExPENsive Test: create repository with single file, checkout, modify, commit, use explode to crash. All do careful atomic rename, but don t do fsync! Result: all lose commited data. Bonus: crash during expensive merge = completely wasted repo BerkeleyDB: Test: loop does transaction, choose() to abort or commit. After crash: all (and only) commited transactions in DB. Result: commited get lost on ext2, crash on ext3 can leave DB in unrecoverable state, uncommited can appear after crash on ext2, ext3, jfs.
38 Classic app mistake: atomic rename All three version control app. made this mistake Atomically update file A to avoid corruption fd = creat(a_tmp, ); write(fd, ); fsync(fd); // missing! close(fd); rename(a_tmp, A); Problem: rename guarantees nothing abt. Data
39 Outline Core idea: explore all choices Checking interface: 200 lines of C++ to check a system Implementation Results: checked many systems, found many bugs Related work, conclusion and future work
40 Related work FS testing IRON Static analysis Traditional software model checking Theorem proving Other techniques
41 Conclusion and future work EXPLODE Easy: need 1 device driver. simple user interface General: can run, can check, without source Effective: checked many systems, 36 bugs Current work: Making explode open source Junfeng on academic job market. Future work: Work closely with storage system implementers to check more systems and more properties Smart search Automatic diagnosis Automatically inferring choice points Approach is general, applicable to distributed systems, secure systems,
42 Automatically Generating Malicious Disks using Symbolic Execution Junfeng Yang, Can Sar, Paul Twohey, Cristian Cadar and Dawson Engler Stanford University
43 Trend: mount untrusted disks Removable device (USB stick, CD, DVD) Let untrusted user mount files as disk images
44 File systems vulnerable to malicious disks Privileged, run in kernel Not designed to handle malicious disks. FS folks not paranoid (v.s. networking) Complex structures (40 if statements in ext2 mount) many corner cases. Hard to sanitize, test Result: easy exploits
45 Generated disk of death (JFS, Linux , , ) Create 64K file, set 64 th sector to above. Mount. And PANIC your kernel!
46 FS security holes are hard to test Manual audit/test: labor, miss errors Random test: automatic. can t go far Unlikely to hit narrow input range. Blind to structures int fake_mount(char* disk) { struct super_block *sb = disk; if(sb->magic!= 0xEF53) //hard to pass using random return -1; // sb->foo is unsigned, therefore >= 0 if(sb->foo > 8192) return -1; x = y/sb->foo; //potential division-by-zero return 0; }
47 Soln: let FS generate its own disks EXE: Execution generated Executions [Cadar and Engler, SPIN 05] [Cadar et al Stanford TR2006-1] Run code on symbolic input, initial value = anything As code observes input, it tells us values input can be At conditional branch that uses symbolic input, explore both On true branch, add constraint input satisfies check On false that it does not exit() or error: solve constraints for input. To find FS security holes, set disk symbolic
48 Key enabler: STP constraint solver Handles: All of C (except floating point) Memory, arrays, pointers, updates, bitoperations. Full bit-level accurate precision. No approximations. One caveat: **p, where p is symbolic. Written by David Dill and Vijay Ganesh. Destroy s previous CVCL system x faster, 6x smaller. Much simpler, more robust
49 A galactic view 1 User-Mode- Linux ext3 Unmodified Linux EXE-cc instrumented
50 Outline How EXE works Apply EXE to Linux file systems Results
51 The toy example int fake_mount(char* disk) { struct super_block *sb = disk; if(sb->magic!= 0xEF53) //hard to pass using random return -1; // sb->foo is unsigned, therefore >= 0 if(sb->foo > 8192) return -1; x = y/sb->foo; //potential division-by-zero return 0; }
52 Concrete v.s. symbolic execution Concrete: sb->magic = 0xEF53, sb->foo = 9000 sb->magic!= 0xEF53 return -1 sb->foo > 8192 return -1 x=y/sb->foo return 0
53 Concrete v.s. symbolic execution Symbolic: sb->magic and sb->foo unconstrained sb->magic!= 0xEF53 return -1 sb->magic!= 0xEF53 sb->foo > 8192 return -1 x=y/sb->foo return 0 sb->magic == 0xEF53 sb->foo > 8192 sb->magic == 0xEF53 sb->foo < 8192 x == y/sb->foo
54 The toy example: instrumentation int fake_mount(char* disk) { struct super_block *sb = disk; if(sb->magic!= 0xEF53) return -1; if(sb->foo > 8192) return -1; x = y/sb->foo; return 0; int fake_mount_exe(char* disk) { struct super_block *sb = disk; if(fork() == child) { constraint(sb->magic!= 0xEF53); return -1; } else constraint(sb->magic == 0xEF53); if(fork() == child) { constraint(sb->foo > 8192); return -1; } else constraint(sb->foo <= 8192); check_symbolic_div_by_zero(sb->foo); x=y/sb->foo; return 0;
55 How to use EXE Mark disk blocks as symbolic void make_symbolic(void* disk_block, unsigned size) Compile with EXE-cc (based on CIL) Insert checks around every expression: if operands all concrete, run as normal. Otherwise, add as constraint Insert fork when symbolic could cause multiple acts Run: forks at each decision point. When path terminates, solve constraints and generate disk images Terminates when: (1) exit, (2) crash, (3) error Rerun concrete through uninstrumented Linux
56 Why generate disks and rerun? Ease of diagnosis. No false positive One disk, check many versions Increases path coverage, helps correctness testing
57 Mixed execution Too many symbolic var, too many constraints constraint solver dies Mixed execution: don t run everything symbolically Example: x = y+z; if y, z both concrete, run as in uninstrumented Otherwise set x == y + z, record x = symbolic. Small set of symbolic values disk blocks (make_symbolic) and derived Result: most code runs concretely, small slice deals w/ symbolics, small # of constraints Perhaps why worked on Linux mounts, sym on demand
58 Symbolic checks int fake_mount(char* disk) { struct super_block *sb = disk; if(sb->magic!= 0xEF53) return -1; if(sb->foo > 8192) return -1; int fake_mount_exe(char* disk) { struct super_block *sb = disk; if(fork() == child) { constraint(sb->magic!= 0xEF53); return -1; } else constraint(sb->magic == 0xEF53); if(fork() == child) { constraint(sb->foo > 8192); return -1; } else check_symbolic_div_by_zero(sb->foo); constraint(sb->foo <= 8192); x = y/sb->foo; return 0; x=y/sb->foo; return 0;
59 Symbolic checks Key: Symbolic reasons about many possible values simultaneously. Concrete about just current ones (e.g. Purify). Symbolic checks: When reach dangerous op, EXE checks if any input exists that could cause blow up. Builtin: x/0, x%0, NULL deref, mem overflow, arithmetic overflow, symbolic assertion
60 Check symbolic div-by-0: x/y, y symbolic Found 2 bugs in ext2, copied to ext3 void check_sym_div_by_zero (y) { if(query(y==0) == satisfiable) if(fork() == child) { constraint(y!= 0); return; } else { constraint(y == 0); solve_and_generate_disk(); error( divided by 0! ) } }
61 More on EXE ([CCS 06]) Handling C constructs Casts: untyped memory Bitfield Symbolic pointer, array index: disjunctions Limitations Constraint solving NP Uninstrumented functions Symbolic double dereference: concretize Symbolic loop: heuristic search
62 Outline How EXE works Apply EXE to Linux file systems Results
63 Results Checked ext2, ext3, and JFS mounts Ext2: four bugs. One buffer overflow read and write arbitrary kernel memory (next slide) Two div/mod by 0 One kernel crash Ext3: four bugs (copied from ext2) JFS: one NULL pointer dereference Extremely easy-to-diagnose: just mount!
64 Simplified: ext2 r/w kernel memory block is symbolic block + count can overflow and becomes negative! Pass block to bar block_group is symbolic block can be large! Symbolic read off bound Symbolic write off bound int ext2_overflow(int block, unsigned count) { if(block < lower_bound (block+count) > higher_bound) return -1; while(count--) bar(block++); } void bar(int block) { // B = power of 2 int block_group = (block-a)/b; //array length is 8 = array[block_group] array[block_group] = }
65 Related Work FS testing Mostly stress test for functionality bugs Linux ISO9660 FS handling flaw, Mar 2005 ( Static analysis Model checking Symbolic model checking Input generation Using symbolic execution to generate testcases
66 BPF, Linux packet filters We ll never find bugs in that heavily audited, well written open source Mark filter & packet as symbolic. Symbolic = turn check into generator Safe filter check: generates all valid filters of length N. BPF Interpreter: will produce all valid filter programs that pass check of length N. Filter on message: generates all packets that accept, reject.
67 Results: BPF, trivial exploit.
68 Linux Filter Generated filter: offset=s[0].k passed in; len=2,4
69 Conclusion [Oakland 06, CCS 06] Automatic all-path execution, all-value checking Make input symbolic. Run code. If operation concrete, do it. If symbolic, track constraints. Generate concrete solution at end (or on way), feed back to code. Finds bugs in real code. Zero false positives.
70 Exponential forking? Only fork on symbolic branch Mixed execution: to reduce # of symbolic var, don t run everything symbolically. Mix concrete execution and symbolic execution Example: x = y+z; if y, z both concrete, run as in uninstrumented Otherwise set x == y + z, record x = symbolic. Small set of symbolic values disk blocks (make_symbolic) and derived Result: most code runs concretely, small slice deals w/ symbolics, small # of constraints Perhaps why worked on Linux mounts, sym on demand
EXPLODE: a Lightweight, General System for Finding Serious Storage System Errors
EXPLODE: a Lightweight, General System for Finding Serious Storage System Errors Junfeng Yang Joint work with Can Sar, Paul Twohey, Ben Pfaff, Dawson Engler and Madan Musuvathi Mom, Google Ate My GMail!
EXPLODE: A Lightweight, General Approach to Finding Serious Errors in Storage Systems
EXPLODE: A Lightweight, General Approach to Finding Serious Errors in Storage Systems Junfeng Yang, Paul Twohey, Ben Pfaff, Can Sar, Dawson Engler Computer Systems Laboratory Stanford University Stanford,
COS 318: Operating Systems
COS 318: Operating Systems File Performance and Reliability Andy Bavier Computer Science Department Princeton University http://www.cs.princeton.edu/courses/archive/fall10/cos318/ Topics File buffer cache
CS3210: Crash consistency. Taesoo Kim
1 CS3210: Crash consistency Taesoo Kim 2 Administrivia Quiz #2. Lab4-5, Ch 3-6 (read "xv6 book") Open laptop/book, no Internet 3:05pm ~ 4:25-30pm (sharp) NOTE Lab6: 10% bonus, a single lab (bump up your
Using Model Checking to Find Serious File System Errors
Using Model Checking to Find Serious File System Errors Junfeng Yang, Paul Twohey, Dawson Engler {junfeng, twohey, engler}@cs.stanford.edu Computer Systems Laboratory Stanford University Stanford, CA 94305,
UNIX File Management (continued)
UNIX File Management (continued) OS storage stack (recap) Application FD table OF table VFS FS Buffer cache Disk scheduler Device driver 2 Virtual File System (VFS) Application FD table OF table VFS FS
Department of Electrical Engineering and Computer Science MASSACHUSETTS INSTITUTE OF TECHNOLOGY. 6.828 Operating System Engineering: Fall 2005
Department of Electrical Engineering and Computer Science MASSACHUSETTS INSTITUTE OF TECHNOLOGY 6.828 Operating System Engineering: Fall 2005 Quiz II Solutions Average 84, median 83, standard deviation
Outline. Failure Types
Outline Database Management and Tuning Johann Gamper Free University of Bozen-Bolzano Faculty of Computer Science IDSE Unit 11 1 2 Conclusion Acknowledgements: The slides are provided by Nikolaus Augsten
Lecture 18: Reliable Storage
CS 422/522 Design & Implementation of Operating Systems Lecture 18: Reliable Storage Zhong Shao Dept. of Computer Science Yale University Acknowledgement: some slides are taken from previous versions of
File Systems Management and Examples
File Systems Management and Examples Today! Efficiency, performance, recovery! Examples Next! Distributed systems Disk space management! Once decided to store a file as sequence of blocks What s the size
CS 416: Opera-ng Systems Design
Question 1 Explain the major difference between a file system that supports journaling (e.g., Linux ext4) versus a log-structured file system (e.g., YAFFS2). Operating Systems 2015 Exam 3 Review Paul Krzyzanowski
Using Git for Project Management with µvision
MDK Version 5 Tutorial AN279, Spring 2015, V 1.0 Abstract Teamwork is the basis of many modern microcontroller development projects. Often teams are distributed all over the world and over various time
Microkernels & Database OSs. Recovery Management in QuickSilver. DB folks: Stonebraker81. Very different philosophies
Microkernels & Database OSs Recovery Management in QuickSilver. Haskin88: Roger Haskin, Yoni Malachi, Wayne Sawdon, Gregory Chan, ACM Trans. On Computer Systems, vol 6, no 1, Feb 1988. Stonebraker81 OS/FS
Linux Kernel. Security Report
Linux Kernel Security Report September 25 Authors: Andy Chou, Bryan Fulton and Seth Hallem Coverity has combined two years of analysis work carried out in a commercial setting at Coverity with four years
Linux Driver Devices. Why, When, Which, How?
Bertrand Mermet Sylvain Ract Linux Driver Devices. Why, When, Which, How? Since its creation in the early 1990 s Linux has been installed on millions of computers or embedded systems. These systems may
DualFS: A New Journaling File System for Linux
2007 Linux Storage & Filesystem Workshop February 12-13, 13, 2007, San Jose, CA DualFS: A New Journaling File System for Linux Juan Piernas SDM Project Pacific Northwest National
Practical Online Filesystem Checking and Repair
Practical Online Filesystem Checking and Repair Daniel Phillips Samsung Research America (Silicon Valley) [email protected] 1 2013 SAMSUNG Electronics Co. Why we want online checking: Fsck
Static Analysis. Find the Bug! 15-654: Analysis of Software Artifacts. Jonathan Aldrich. disable interrupts. ERROR: returning with interrupts disabled
Static Analysis 15-654: Analysis of Software Artifacts Jonathan Aldrich 1 Find the Bug! Source: Engler et al., Checking System Rules Using System-Specific, Programmer-Written Compiler Extensions, OSDI
CSC 2405: Computer Systems II
CSC 2405: Computer Systems II Spring 2013 (TR 8:30-9:45 in G86) Mirela Damian http://www.csc.villanova.edu/~mdamian/csc2405/ Introductions Mirela Damian Room 167A in the Mendel Science Building [email protected]
Using Model Checking to Find Serious File System Errors
Using Model Checking to Find Serious File System Errors Junfeng Yang, Paul Twohey, Dawson Engler {junfeng, twohey, engler}@cs.stanford.edu Computer Systems Laboratory Stanford University Stanford, CA 94305,
Transparent Monitoring of a Process Self in a Virtual Environment
Transparent Monitoring of a Process Self in a Virtual Environment PhD Lunchtime Seminar Università di Pisa 24 Giugno 2008 Outline Background Process Self Attacks Against the Self Dynamic and Static Analysis
Virtualization. Explain how today s virtualization movement is actually a reinvention
Virtualization Learning Objectives Explain how today s virtualization movement is actually a reinvention of the past. Explain how virtualization works. Discuss the technical challenges to virtualization.
Review and Exploit Neglected Attack Surface in ios 8. Tielei Wang, Hao Xu, Xiaobo Chen of TEAM PANGU
Review and Exploit Neglected Attack Surface in ios 8 Tielei Wang, Hao Xu, Xiaobo Chen of TEAM PANGU BlackHat 2015 Agenda ios Security Background Review of Attack Surfaces Fuzz More IOKit and MIG System
Last Class Carnegie Mellon Univ. Dept. of Computer Science 15-415/615 - DB Applications
Last Class Carnegie Mellon Univ. Dept. of Computer Science 15-415/615 - DB Applications C. Faloutsos A. Pavlo Lecture#23: Crash Recovery Part 2 (R&G ch. 18) Write-Ahead Log Checkpoints Logging Schemes
Chapter 12 File Management. Roadmap
Operating Systems: Internals and Design Principles, 6/E William Stallings Chapter 12 File Management Dave Bremer Otago Polytechnic, N.Z. 2008, Prentice Hall Overview Roadmap File organisation and Access
Chapter 12 File Management
Operating Systems: Internals and Design Principles, 6/E William Stallings Chapter 12 File Management Dave Bremer Otago Polytechnic, N.Z. 2008, Prentice Hall Roadmap Overview File organisation and Access
How do Users and Processes interact with the Operating System? Services for Processes. OS Structure with Services. Services for the OS Itself
How do Users and Processes interact with the Operating System? Users interact indirectly through a collection of system programs that make up the operating system interface. The interface could be: A GUI,
Secure Software Programming and Vulnerability Analysis
Secure Software Programming and Vulnerability Analysis Christopher Kruegel [email protected] http://www.auto.tuwien.ac.at/~chris Testing and Source Code Auditing Secure Software Programming 2 Overview
Virtualization. Dr. Yingwu Zhu
Virtualization Dr. Yingwu Zhu What is virtualization? Virtualization allows one computer to do the job of multiple computers. Virtual environments let one computer host multiple operating systems at the
COS 318: Operating Systems. Virtual Machine Monitors
COS 318: Operating Systems Virtual Machine Monitors Andy Bavier Computer Science Department Princeton University http://www.cs.princeton.edu/courses/archive/fall10/cos318/ Introduction Have been around
Virtual Private Systems for FreeBSD
Virtual Private Systems for FreeBSD Klaus P. Ohrhallinger 06. June 2010 Abstract Virtual Private Systems for FreeBSD (VPS) is a novel virtualization implementation which is based on the operating system
Taking Linux File and Storage Systems into the Future. Ric Wheeler Director Kernel File and Storage Team Red Hat, Incorporated
Taking Linux File and Storage Systems into the Future Ric Wheeler Director Kernel File and Storage Team Red Hat, Incorporated 1 Overview Going Bigger Going Faster Support for New Hardware Current Areas
CS 377: Operating Systems. Outline. A review of what you ve learned, and how it applies to a real operating system. Lecture 25 - Linux Case Study
CS 377: Operating Systems Lecture 25 - Linux Case Study Guest Lecturer: Tim Wood Outline Linux History Design Principles System Overview Process Scheduling Memory Management File Systems A review of what
Recovery and the ACID properties CMPUT 391: Implementing Durability Recovery Manager Atomicity Durability
Database Management Systems Winter 2004 CMPUT 391: Implementing Durability Dr. Osmar R. Zaïane University of Alberta Lecture 9 Chapter 25 of Textbook Based on slides by Lewis, Bernstein and Kifer. University
Network Attached Storage. Jinfeng Yang Oct/19/2015
Network Attached Storage Jinfeng Yang Oct/19/2015 Outline Part A 1. What is the Network Attached Storage (NAS)? 2. What are the applications of NAS? 3. The benefits of NAS. 4. NAS s performance (Reliability
Application-Level Crash Consistency
Application-Level Crash Consistency Thanumalayan Sankaranarayana Pillai, Ramnatthan Alagappan, Vijay Chidambaram, Samer Al-Kiswany, Andrea Arpaci-Dusseau, Remzi Arpaci-Dusseau File System Crash Consistency
6.828 Operating System Engineering: Fall 2003. Quiz II Solutions THIS IS AN OPEN BOOK, OPEN NOTES QUIZ.
Department of Electrical Engineering and Computer Science MASSACHUSETTS INSTITUTE OF TECHNOLOGY 6.828 Operating System Engineering: Fall 2003 Quiz II Solutions All problems are open-ended questions. In
Replication on Virtual Machines
Replication on Virtual Machines Siggi Cherem CS 717 November 23rd, 2004 Outline 1 Introduction The Java Virtual Machine 2 Napper, Alvisi, Vin - DSN 2003 Introduction JVM as state machine Addressing non-determinism
Applying Clang Static Analyzer to Linux Kernel
Applying Clang Static Analyzer to Linux Kernel 2012/6/7 FUJITSU COMPUTER TECHNOLOGIES LIMITED Hiroo MATSUMOTO 管 理 番 号 1154ka1 Copyright 2012 FUJITSU COMPUTER TECHNOLOGIES LIMITED Abstract Now there are
Transactions and Recovery. Database Systems Lecture 15 Natasha Alechina
Database Systems Lecture 15 Natasha Alechina In This Lecture Transactions Recovery System and Media Failures Concurrency Concurrency problems For more information Connolly and Begg chapter 20 Ullmanand
Journal-guided Resynchronization for Software RAID
Journal-guided Resynchronization for Software RAID Timothy E. Denehy, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau Department of Computer Sciences, University of Wisconsin, Madison Abstract We
PSM/SAK Event Log Error Codes
PSM Error Codes PSM/SAK Event Log Error Codes If you experience a problem using Persistent Storage Manager, the following list of event log messages can be used to troubleshoot. Error codes are logged
Network File System (NFS) Pradipta De [email protected]
Network File System (NFS) Pradipta De [email protected] Today s Topic Network File System Type of Distributed file system NFS protocol NFS cache consistency issue CSE506: Ext Filesystem 2 NFS
File System Reliability (part 2)
File System Reliability (part 2) Main Points Approaches to reliability Careful sequencing of file system opera@ons Copy- on- write (WAFL, ZFS) Journalling (NTFS, linux ext4) Log structure (flash storage)
Windows NT File System. Outline. Hardware Basics. Ausgewählte Betriebssysteme Institut Betriebssysteme Fakultät Informatik
Windows Ausgewählte Betriebssysteme Institut Betriebssysteme Fakultät Informatik Outline NTFS File System Formats File System Driver Architecture Advanced Features NTFS Driver On-Disk Structure (MFT,...)
Chapter 14: Recovery System
Chapter 14: Recovery System Chapter 14: Recovery System Failure Classification Storage Structure Recovery and Atomicity Log-Based Recovery Remote Backup Systems Failure Classification Transaction failure
Introduction to Git. Markus Kötter [email protected]. Notes. Leinelab Workshop July 28, 2015
Introduction to Git Markus Kötter [email protected] Leinelab Workshop July 28, 2015 Motivation - Why use version control? Versions in file names: does this look familiar? $ ls file file.2 file.
Storage and File Systems. Chester Rebeiro IIT Madras
Storage and File Systems Chester Rebeiro IIT Madras 1 Two views of a file system system calls protection rwx attributes Application View Look & Feel File system Hardware view 2 Magnetic Disks Chester Rebeiro
SIDN Server Measurements
SIDN Server Measurements Yuri Schaeffer 1, NLnet Labs NLnet Labs document 2010-003 July 19, 2010 1 Introduction For future capacity planning SIDN would like to have an insight on the required resources
Chapter 14 Virtual Machines
Operating Systems: Internals and Design Principles Chapter 14 Virtual Machines Eighth Edition By William Stallings Virtual Machines (VM) Virtualization technology enables a single PC or server to simultaneously
Outline. Windows NT File System. Hardware Basics. Win2K File System Formats. NTFS Cluster Sizes NTFS
Windows Ausgewählte Betriebssysteme Institut Betriebssysteme Fakultät Informatik 2 Hardware Basics Win2K File System Formats Sector: addressable block on storage medium usually 512 bytes (x86 disks) Cluster:
CEN 559 Selected Topics in Computer Engineering. Dr. Mostafa H. Dahshan KSU CCIS [email protected]
CEN 559 Selected Topics in Computer Engineering Dr. Mostafa H. Dahshan KSU CCIS [email protected] Access Control Access Control Which principals have access to which resources files they can read
CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)
Today: Source code control CPSC 491 Source Code (Version) Control Exercise: 1. Pretend like you don t have a version control system (e. g., no git, subversion, cvs, etc.) 2. How would you manage your source
UBIFS file system. Adrian Hunter (Адриан Хантер) Artem Bityutskiy (Битюцкий Артём)
UBIFS file system Adrian Hunter (Адриан Хантер) Artem Bityutskiy (Битюцкий Артём) Plan Introduction (Artem) MTD and UBI (Artem) UBIFS (Adrian) 2 UBIFS scope UBIFS stands for UBI file system (argh...) UBIFS
A Test Suite for Basic CWE Effectiveness. Paul E. Black. [email protected]. http://samate.nist.gov/
A Test Suite for Basic CWE Effectiveness Paul E. Black [email protected] http://samate.nist.gov/ Static Analysis Tool Exposition (SATE V) News l We choose test cases by end of May l Tool output uploaded
COS 318: Operating Systems
COS 318: Operating Systems OS Structures and System Calls Andy Bavier Computer Science Department Princeton University http://www.cs.princeton.edu/courses/archive/fall10/cos318/ Outline Protection mechanisms
1 Storage Devices Summary
Chapter 1 Storage Devices Summary Dependability is vital Suitable measures Latency how long to the first bit arrives Bandwidth/throughput how fast does stuff come through after the latency period Obvious
Application Intrusion Detection
Application Intrusion Detection Drew Miller Black Hat Consulting Application Intrusion Detection Introduction Mitigating Exposures Monitoring Exposures Response Times Proactive Risk Analysis Summary Introduction
Oracle Cluster File System on Linux Version 2. Kurt Hackel Señor Software Developer Oracle Corporation
Oracle Cluster File System on Linux Version 2 Kurt Hackel Señor Software Developer Oracle Corporation What is OCFS? GPL'd Extent Based Cluster File System Is a shared disk clustered file system Allows
Be Very Afraid. Christophe Pettus PostgreSQL Experts Logical Decoding & Backup Conference Europe 2014
Be Very Afraid Christophe Pettus PostgreSQL Experts Logical Decoding & Backup Conference Europe 2014 You possess only whatever will not be lost in a shipwreck. Al-Ghazali Hi. Christophe Pettus Consultant
Backup & Disaster Recovery Appliance User Guide
Built on the Intel Hybrid Cloud Platform Backup & Disaster Recovery Appliance User Guide Order Number: G68664-001 Rev 1.0 June 22, 2012 Contents Registering the BDR Appliance... 4 Step 1: Register the
File Management. Chapter 12
Chapter 12 File Management File is the basic element of most of the applications, since the input to an application, as well as its output, is usually a file. They also typically outlive the execution
Virtual Servers. Virtual machines. Virtualization. Design of IBM s VM. Virtual machine systems can give everyone the OS (and hardware) that they want.
Virtual machines Virtual machine systems can give everyone the OS (and hardware) that they want. IBM s VM provided an exact copy of the hardware to the user. Virtual Servers Virtual machines are very widespread.
Network File System (NFS)
Network File System (NFS) Brad Karp UCL Computer Science CS GZ03 / M030 10 th October 2011 NFS Is Relevant Original paper from 1985 Very successful, still widely used today Early result; much subsequent
ViewBox: Integrating Local File System with Cloud Storage Service
ViewBox: Integrating Local File System with Cloud Storage Service FAST 2014 Yupu Zhang +, Chris Dragga +*, Andrea Arpaci-Dusseau +, RemziArpaci-Dusseau + University of Wisconsin-Madison 1 Outline Introduction
Kernel Intrusion Detection System
Kernel Intrusion Detection System Rodrigo Rubira Branco [email protected] [email protected] Monica's Team!! Brazilian famous H.Q. story Amazon Forest Yeah, Brazilian country! Soccer Brazilian
Raima Database Manager Version 14.0 In-memory Database Engine
+ Raima Database Manager Version 14.0 In-memory Database Engine By Jeffrey R. Parsons, Senior Engineer January 2016 Abstract Raima Database Manager (RDM) v14.0 contains an all new data storage engine optimized
Cloud Computing. Up until now
Cloud Computing Lecture 11 Virtualization 2011-2012 Up until now Introduction. Definition of Cloud Computing Grid Computing Content Distribution Networks Map Reduce Cycle-Sharing 1 Process Virtual Machines
Operating Systems CSE 410, Spring 2004. File Management. Stephen Wagner Michigan State University
Operating Systems CSE 410, Spring 2004 File Management Stephen Wagner Michigan State University File Management File management system has traditionally been considered part of the operating system. Applications
Dynamic VM Monitoring using Hypervisor Probes
Dynamic VM Monitoring using Hypervisor Probes Z. J. Estrada, C. Pham, F. Deng, L. Yan, Z. Kalbarczyk, R. K. Iyer European Dependable Computing Conference 2015-09-09 1 Dynamic VM Monitoring Goal On-demand
How to handle Out-of-Memory issue
How to handle Out-of-Memory issue Overview Memory Usage Architecture Memory accumulation 32-bit application memory limitation Common Issues Encountered Too many cameras recording, or bitrate too high Too
Linux Kernel Architecture
Linux Kernel Architecture Amir Hossein Payberah [email protected] Contents What is Kernel? Kernel Architecture Overview User Space Kernel Space Kernel Functional Overview File System Process Management
EMC DATA DOMAIN DATA INVULNERABILITY ARCHITECTURE: ENHANCING DATA INTEGRITY AND RECOVERABILITY
White Paper EMC DATA DOMAIN DATA INVULNERABILITY ARCHITECTURE: ENHANCING DATA INTEGRITY AND RECOVERABILITY A Detailed Review Abstract No single mechanism is sufficient to ensure data integrity in a storage
Physical Data Organization
Physical Data Organization Database design using logical model of the database - appropriate level for users to focus on - user independence from implementation details Performance - other major factor
MySQL Backup and Recovery: Tools and Techniques. Presented by: René Cannaò @rene_cannao Senior Operational DBA www.palominodb.com
MySQL Backup and Recovery: Tools and Techniques Presented by: René Cannaò @rene_cannao Senior Operational DBA www.palominodb.com EXPERIENCE WITH BACKUP How many of you consider yourself beginners? How
Microkernels, virtualization, exokernels. Tutorial 1 CSC469
Microkernels, virtualization, exokernels Tutorial 1 CSC469 Monolithic kernel vs Microkernel Monolithic OS kernel Application VFS System call User mode What was the main idea? What were the problems? IPC,
Chapter 16: Recovery System
Chapter 16: Recovery System Failure Classification Failure Classification Transaction failure : Logical errors: transaction cannot complete due to some internal error condition System errors: the database
Chapter 12 File Management
Operating Systems: Internals and Design Principles Chapter 12 File Management Eighth Edition By William Stallings Files Data collections created by users The File System is one of the most important parts
Benchmarking FreeBSD. Ivan Voras <[email protected]>
Benchmarking FreeBSD Ivan Voras What and why? Everyone likes a nice benchmark graph :) And it's nice to keep track of these things The previous major run comparing FreeBSD to Linux
Survey of Filesystems for Embedded Linux. Presented by Gene Sally CELF
Survey of Filesystems for Embedded Linux Presented by Gene Sally CELF Presentation Filesystems In Summary What is a filesystem Kernel and User space filesystems Picking a root filesystem Filesystem Round-up
Two Best Practices for Scientific Computing
Two Best Practices for Scientific Computing Version Control Systems & Automated Code Testing David Love Software Interest Group University of Arizona February 18, 2013 How This Talk Happened Applied alumnus,
Lecture 25 Symbian OS
CS 423 Operating Systems Design Lecture 25 Symbian OS Klara Nahrstedt Fall 2011 Based on slides from Andrew S. Tanenbaum textbook and other web-material (see acknowledgements) cs423 Fall 2011 1 Overview
Chapter 5 Cloud Resource Virtualization
Chapter 5 Cloud Resource Virtualization Contents Virtualization. Layering and virtualization. Virtual machine monitor. Virtual machine. Performance and security isolation. Architectural support for virtualization.
Ingres Backup and Recovery. Bruno Bompar Senior Manager Customer Support
Ingres Backup and Recovery Bruno Bompar Senior Manager Customer Support 1 Abstract Proper backup is crucial in any production DBMS installation, and Ingres is no exception. And backups are useless unless
Chip Coldwell Senior Software Engineer, Red Hat
Chip Coldwell Senior Software Engineer, Red Hat Classical Storage Stack: the top layer File system examples: ext3, NFS, GFS built on Linux VFS ( Virtual File System abstraction) defines on-disk structure:
1 Introduction. Abstract
MODIST: Transparent Model Checking of Unmodified Distributed Systems Junfeng Yang, Tisheng Chen, Ming Wu, Zhilei Xu, Xuezheng Liu Haoxiang Lin, Mao Yang, Fan Long, Lintao Zhang, Lidong Zhou Columbia University,
Crash Consistency: FSCK and Journaling
42 Crash Consistency: FSCK and ing As we ve seen thus far, the file system manages a set of data structures to implement the expected abstractions: files, directories, and all of the other metadata needed
Introduction to Static Analysis for Assurance
Introduction to Static Analysis for Assurance John Rushby Computer Science Laboratory SRI International Menlo Park CA USA John Rushby Static Analysis for Assurance: 1 Overview What is static analysis?
Practical Mac OS X Insecurity. Security Concepts, Problems and Exploits on your Mac
Practical Mac OS X Insecurity Security Concepts, Problems and Exploits on your Mac Who am I? Student of physics, mathematics and astronomy in Bonn Mac user since 1995 I love Macs Mac evangelist Intentions
NEDARC POSITION PAPER
Which Database Will Serve Your Needs? National EMSC Data Analysis Resource Center Central to any EMS, public health, or large healthcare organization is the collection, storage, retrieval, and analysis
View CPU, Memory, Disk, and Network Usage in Activity Monitor.
Identify and quit applications that have become nonresponsive. Identify support options customized for your Mac. View CPU, Memory, Disk, and Network Usage in Activity Monitor. 98_9780789753939_ch5online.indd
Where is the memory going? Memory usage in the 2.6 kernel
Where is the memory going? Memory usage in the 2.6 kernel Sep 2006 Andi Kleen, SUSE Labs [email protected] Why save memory Weaker reasons "I ve got 1GB of memory. Why should I care about memory?" Old machines
Oracle Solaris Studio Code Analyzer
Oracle Solaris Studio Code Analyzer The Oracle Solaris Studio Code Analyzer ensures application reliability and security by detecting application vulnerabilities, including memory leaks and memory access
Chapter 13 File and Database Systems
Chapter 13 File and Database Systems Outline 13.1 Introduction 13.2 Data Hierarchy 13.3 Files 13.4 File Systems 13.4.1 Directories 13.4. Metadata 13.4. Mounting 13.5 File Organization 13.6 File Allocation
Chapter 13 File and Database Systems
Chapter 13 File and Database Systems Outline 13.1 Introduction 13.2 Data Hierarchy 13.3 Files 13.4 File Systems 13.4.1 Directories 13.4. Metadata 13.4. Mounting 13.5 File Organization 13.6 File Allocation
GDB Tutorial. A Walkthrough with Examples. CMSC 212 - Spring 2009. Last modified March 22, 2009. GDB Tutorial
A Walkthrough with Examples CMSC 212 - Spring 2009 Last modified March 22, 2009 What is gdb? GNU Debugger A debugger for several languages, including C and C++ It allows you to inspect what the program
