Giter VIP home page Giter VIP logo

gdpfs's Introduction

GDPFS: Global Data Plane File System

The Global Data Plane (GDP) provides a secure, verifiable, append-only, single-writer log interface where logs are replicated across a range of possibly untrusted hosts. A major advantage of such a log interface is that it is possible to provide atomicity and consistent replication with little overhead, while scaling at a global level. However, expressing mutable objects in append-only logs, while simultaneously providing efficient access to data within those objects, is a nontrivial task. In this paper, we present the Global Data Plane File System (GDPFS), a distributed filesystem that expresses mutable files within append-only logs and provides efficient data access within files. Because it is built on top of the GDP, the GDPFS has the potential to scale very well and run securely on untrusted hardware. For more information, check out our poster or our report.

alt tag

gdpfs's People

Contributors

andrewmchen avatar paulbramsen avatar samkumar avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

gdpfs's Issues

GDP returns "half" entries

In supporting asynchronous writes, I added an optimization where a file that is newly created by a user always trusts its cache.

Consider the scenario where a user creates a file and writes bytes [1000, 1024]. Bytes in [0, 999] form a hole. Normally, reading any bytes in this hole would fall back to the log since they aren't cached. However, with the optimization, the read will be satisfied with zeros for a newly created file, since the cache is guaranteed to be up to date.

However, when we remove this optimization, then it is possible for a read in the range [0, 999] to reach the GDP concurrently with the request for write bytes [1000, 1024]. This isn't incorrect since the latest log entry technically isn't needed to satisfy the request, but I've observed the GDP providing a "ghost record" of length 0 in place of the one that is about to be appended. This is a bug that could inconvenience us later and that needs to be tracked down.

File creation doesn't work properly

File creation behavior is weird. It sometimes succeeds but usually this requires running stuff more than once. Directory creation fails completely.

Directories intermittently fail

When adding new entries to a directory, sometimes existing entries get overwritten. At other times, entries remain after unlinking.

Fix backwards reads race condition

Currently we read the log backwards using negative record numbers. If someone appends to the log during a read this could cause an inconsistent result.

Support multithreaded mode

Everything should work even if you don't run GDPFS with the -f and -s flags. This means we need to audit our code base and add locks to prevent any potential race conditions.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.