Using model checking to find serious file system errors

被引:71
|
作者
Yang, Junfeng [1 ]
Twohey, Paul
Engler, Dawson
Musuvathi, Madanlal
机构
[1] Stanford Univ, Comp Syst Lab, Stanford, CA 94305 USA
[2] Microsoft Res, Redmond, WA 98052 USA
来源
ACM TRANSACTIONS ON COMPUTER SYSTEMS | 2006年 / 24卷 / 04期
关键词
reliability; verification; model checking; file system; journaling; crash; recovery;
D O I
10.1145/1189256.1189259
中图分类号
TP301 [理论、方法];
学科分类号
081202 ;
摘要
This article shows how to use model checking to find serious errors in file systems. Model checking is a formal verification technique tuned for finding corner-case errors by comprehensively exploring the state spaces defined by a system. File systems have two dynamics that make them attractive for such an approach. First, their errors are some of the most serious, since they can destroy persistent data and lead to unrecoverable corruption. Second, traditional testing needs an impractical, exponential number of test cases to check that the system will recover if it crashes at any point during execution. Model checking employs a variety of state-reducing techniques that allow it to explore such vast state spaces efficiently. We built a system, FiSC, for model checking file systems. We applied it to four widely-used, heavily-tested file systems: ext3, JFS, ReiserFS and XFS. We found serious bugs in all of them, 33 in total. Most have led to patches within a day of diagnosis. For each file system, FiSC found demonstrable events leading to the unrecoverable destruction of metadata and entire directories, including the file system root directory "/".
引用
收藏
页码:393 / 423
页数:31
相关论文
共 50 条
  • [31] A study on the errors and uncertainties of file system trace capture methods
    Pereira, Thiago Emmanuel
    Brasileiro, Francisco
    Sampaio, Livia
    PROCEEDINGS OF THE 9TH ACM INTERNATIONAL SYSTEMS AND STORAGE CONFERENCE (SYSTOR'16), 2016,
  • [32] EXPLODE: a lightweight, general system for finding serious storage system errors
    Yang, Junfeng
    Sar, Can
    Engler, Dawson
    USENIX ASSOCIATION 7TH USENIX SYMPOSIUM ON OPERATING SYSTEMS DESIGN AND IMPLEMENTATION, 2006, : 131 - +
  • [33] MINIMUM DISTANCE REGRESSION MODEL CHECKING WITH BERKSON MEASUREMENT ERRORS
    Koul, Hira L.
    Song, Weixing
    ANNALS OF STATISTICS, 2009, 37 (01): : 132 - 156
  • [34] Probabilistic model checking for human activity recognition in medical serious games
    L'Yvonnet, Thibaud
    De Maria, Elisabetta
    Moisan, Sabine
    Rigault, Jean-Paul
    SCIENCE OF COMPUTER PROGRAMMING, 2021, 206
  • [35] Symbolic Causality Checking Using Bounded Model Checking
    Beer, Adrian
    Heidinger, Stephan
    Kuehne, Uwe
    Leitner-Fischer, Florian
    Leue, Stefan
    MODEL CHECKING SOFTWARE, SPIN 2015, 2015, 9232 : 203 - 221
  • [36] Cross-checking Semantic Correctness: The Case of Finding File System Bugs
    Min, Changwoo
    Kashyap, Sanidhya
    Lee, Byoungyoung
    Song, Chengyu
    Kim, Taesoo
    SOSP'15: PROCEEDINGS OF THE TWENTY-FIFTH ACM SYMPOSIUM ON OPERATING SYSTEMS PRINCIPLES, 2015, : 361 - 377
  • [37] Using model checking to analyze the system behavior of the LHC production grid
    Remenska, Daniela
    Willemse, Tim A. C.
    Verstoep, Kees
    Templon, Jeff
    Bal, Henri
    FUTURE GENERATION COMPUTER SYSTEMS-THE INTERNATIONAL JOURNAL OF ESCIENCE, 2013, 29 (08): : 2239 - 2251
  • [38] Verification of Fault-Tolerant System Architectures Using Model Checking
    Lahtinen, Jussi
    COMPUTER SAFETY, RELIABILITY, AND SECURITY, 2014, 8696 : 195 - 206
  • [39] Optimal Task Scheduling in a Flexible Manufacturing System using Model Checking
    Malik, Robi
    Pena, Patricia N.
    IFAC PAPERSONLINE, 2018, 51 (07): : 230 - 235
  • [40] Stepwise Development and Model Checking of a Distributed Interlocking System - Using RAISE
    Geisler, Signe
    Haxthausen, Anne E.
    FORMAL METHODS, 2018, 10951 : 277 - 293