Argosy: Verifying Layered Storage Systems with Recovery Refinement

被引:8
作者
Chajed, Tej [1 ]
Tassarotti, Joseph [1 ]
Kaashoek, M. Frans [1 ]
Zeldovich, Nickolai [1 ]
机构
[1] MIT, CSAIL, Cambridge, MA 02139 USA
来源
PROCEEDINGS OF THE 40TH ACM SIGPLAN CONFERENCE ON PROGRAMMING LANGUAGE DESIGN AND IMPLEMENTATION (PLDI '19) | 2019年
关键词
Kleene Algebra; Refinement;
D O I
10.1145/3314221.3314585
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Storage systems make persistence guarantees even if the system crashes at any time, which they achieve using recovery procedures that run after a crash. We present Argosy, a framework for machine-checked proofs of storage systems that supports layered recovery implementations with modular proofs. Reasoning about layered recovery procedures is especially challenging because the system can crash in the middle of a more abstract layer's recovery procedure and must start over with the lowest-level recovery procedure. This paper introduces recovery refinement, a set of conditions that ensure proper implementation of an interface with a recovery procedure. Argosy includes a proof that recovery refinements compose, using Kleene algebra for concise definitions and metatheory. We implemented Crash Hoare Logic, the program logic used by FSCQ [8], to prove recovery refinement, and demonstrated the whole system by verifying an example of layered recovery featuring a write-ahead log running on top of a disk replication system. The metatheory of the framework, the soundness of the program logic, and these examples are all verified in the Coq proof assistant.
引用
收藏
页码:1054 / 1068
页数:15
相关论文
共 30 条
  • [1] NetKAT: Semantic Foundations for Networks
    Anderson, Carolyn Jane
    Foster, Nate
    Guha, Arjun
    Jeannin, Jean-Baptiste
    Kozen, Dexter
    Schlesinger, Cole
    Walker, David
    [J]. ACM SIGPLAN NOTICES, 2014, 49 (01) : 113 - 126
  • [2] [Anonymous], 2016, thesis
  • [3] Parameterised notions of computation
    Atkey, Robert
    [J]. JOURNAL OF FUNCTIONAL PROGRAMMING, 2009, 19 : 335 - 376
  • [4] Beckett R, 2016, ACM SIGPLAN NOTICES, V51, P386, DOI [10.1145/2908080.2908108, 10.1145/2980983.2908108]
  • [5] Beckett Ryan, 2017, ARXIVCSPL170702894
  • [6] DECIDING KLEENE ALGEBRAS IN COQ
    Braibant, Thomas
    Pous, Damien
    [J]. LOGICAL METHODS IN COMPUTER SCIENCE, 2012, 8 (01)
  • [7] Verifying a high-performance crash-safe file system using a tree specification
    Chen, Haogang
    Chajed, Tej
    Konradi, Alex
    Wang, Stephanie
    Ileri, Atalay
    Chlipala, Adam
    Kaashoek, M. Frans
    Zeldovich, Nickolai
    [J]. PROCEEDINGS OF THE TWENTY-SIXTH ACM SYMPOSIUM ON OPERATING SYSTEMS PRINCIPLES (SOSP '17), 2017, : 270 - 286
  • [8] Using Crash Hoare Logic for Certifying the FSCQ File System
    Chen, Haogang
    Ziegler, Daniel
    Chajed, Tej
    Chlipala, Adam
    Kaashoek, M. Frans
    Zeldovich, Nickolai
    [J]. SOSP'15: PROCEEDINGS OF THE TWENTY-FIFTH ACM SYMPOSIUM ON OPERATING SYSTEMS PRINCIPLES, 2015, : 18 - 37
  • [9] Cohen Ernie, 1994, LAZY CACHING KLEENE
  • [10] Modular, crash-safe refinement for ASMs with submachines
    Ernst, Gidon
    Pfaehler, Joerg
    Schellhorn, Gerhard
    Reif, Wolfgang
    [J]. SCIENCE OF COMPUTER PROGRAMMING, 2016, 131 : 3 - 21