All Projects → anaskhan96 → Litfs

anaskhan96 / Litfs

Licence: mit
A FUSE file system in Go extended with persistent file storage

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Litfs

fs-fuse
Export any Node.js `fs`-like object as a FUSE filesystem
Stars: ✭ 32 (-72.41%)
Mutual labels:  fuse, filesystem, fs
Python Diskcache
Python disk-backed cache (Django-compatible). Faster than Redis and Memcached. Pure-Python.
Stars: ✭ 992 (+755.17%)
Mutual labels:  persistence, filesystem
Memfs
In-memory filesystem with Node's API
Stars: ✭ 854 (+636.21%)
Mutual labels:  fs, filesystem
Fast Glob
🚀 It's a very fast and efficient glob library for Node.js
Stars: ✭ 1,150 (+891.38%)
Mutual labels:  fs, filesystem
Node Ntfs
Windows NT File System (NTFS) file system driver
Stars: ✭ 18 (-84.48%)
Mutual labels:  fs, filesystem
Fuse Copyfs
CopyFS is the copy-on-write (COW) versioned filesystem for FUSE. Years ago I added features to CopyFS 1.0, then 1.0.1 came out and I never bothered to forward-port my changes. Now I have. Master is 1.3.1M, which is CopyFS 1.0.1 + 1.3M
Stars: ✭ 24 (-79.31%)
Mutual labels:  fuse, filesystem
Kaitai fs
KaitaiFS: mount any filesystem specified with a .ksy as a real file system
Stars: ✭ 45 (-61.21%)
Mutual labels:  fuse, filesystem
Fuse Rs
Rust library for filesystems in userspace (FUSE)
Stars: ✭ 735 (+533.62%)
Mutual labels:  fuse, filesystem
Zbox
Zero-details, privacy-focused in-app file system.
Stars: ✭ 1,185 (+921.55%)
Mutual labels:  fs, filesystem
Polyfuse
A FUSE (Filesystem in Userspace) library for Rust
Stars: ✭ 76 (-34.48%)
Mutual labels:  fuse, filesystem
Go Fuse
FUSE bindings for Go
Stars: ✭ 1,267 (+992.24%)
Mutual labels:  fuse, filesystem
Fuse Ts
Stars: ✭ 6 (-94.83%)
Mutual labels:  fuse, filesystem
Distribyted
📂 ➡️ 📺 🎶 🎮 Torrent client with on-demand file downloading as a filesystem.
Stars: ✭ 791 (+581.9%)
Mutual labels:  fuse, filesystem
Fusell Seed
FUSE (the low-level interface) file system boilerplate 📂 🔌 💾
Stars: ✭ 9 (-92.24%)
Mutual labels:  fuse, filesystem
Fdir
⚡ The fastest directory crawler & globbing library for NodeJS. Crawls 1m files in < 1s
Stars: ✭ 777 (+569.83%)
Mutual labels:  fs, filesystem
Moosefs
MooseFS – Open Source, Petabyte, Fault-Tolerant, Highly Performing, Scalable Network Distributed File System (Software-Defined Storage)
Stars: ✭ 1,025 (+783.62%)
Mutual labels:  fuse, filesystem
Flint
Fast and configurable filesystem (file and directory names) linter
Stars: ✭ 115 (-0.86%)
Mutual labels:  fs, filesystem
S3fs Fuse
FUSE-based file system backed by Amazon S3
Stars: ✭ 5,733 (+4842.24%)
Mutual labels:  fuse, filesystem
Dbxfs
User-space file system for Dropbox
Stars: ✭ 673 (+480.17%)
Mutual labels:  fuse, filesystem
Onedrive Fuse Fs
Script to mount Microsoft OneDrive (formerly known as SkyDrive) folder as a FUSE filesystem
Stars: ✭ 68 (-41.38%)
Mutual labels:  fuse, filesystem

litfs

Image of litfs at work

This FUSE filesystem, apart from providing the normal file I/O operations, implements persistence by emulating a single binary Unix file as disk and performing read/writes on it.

Build and Run

go get github.com/anaskhan96/litfs
cd $GOPATH/src/github.com/anaskhan96/litfs
go run main.go data # data/ is the directory on which to mount the filesystem on

Run umount <path-to-directory> to unmount the filesystem.

File System Characteristics

  • Create, remove a directory
  • Create, remove, read from, and write to files inside a directory
  • Copy, move the contents of a file to another, across directories

Persistence Implementation

disklib/sda is the created binary file emulating a disk. Keeping a block size of 4096 bytes:

  • A serialized form of the tree representation of the filesystem is stored in the first block
  • A structure containing two components - a bitmap indicating free and allocated blocks in the filesystem and an integer containing the lowest free block at the moment - is serialized and stored in the second block
  • File data is stored from the third block onwards, with a block as a whole being allocated to/deallocated from the file

This project was built under the course Unix Systems Programming at PES University.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].