PebbleFS is an experimental distributed storage engine written in Go.
Instead of relying on a single storage device, PebbleFS aggregates multiple storage devices (USB drives, HDDs, SSDs, flash drives, etc.) into a single logical storage pool.
Files are chunked, content-addressed using SHA-256, distributed across registered disks, and reconstructed transparently during reads.
PebbleDemo-small.mp4
PebbleFS is currently a storage engine. A FUSE filesystem interface and distributed clustering are planned for future releases.
- Multi-disk storage pooling
- Content-addressed storage (SHA-256)
- Automatic chunk deduplication
- Persistent disk registration
- Chunk directory sharding
- File upload
- File download
- File deletion
- File listing
- File information
- Storage statistics
- Service-oriented architecture
CLI
│
Service Layer
┌───────┼────────┐
Metadata Storage Chunk
(SQLite) Manager Engine
Each layer owns one responsibility.
Each registered disk contains:
.pebble/
disk.json
chunks/
7d/
4e/
7d4e9c...
Chunks are stored using deterministic directory sharding.
git clone ...
go build -o pebble ./cmd/pebbleRegister a disk
./pebble disk add /mnt/usbList disks
./pebble disk listUpload
./pebble put movie.mp4Download
./pebble get movie.mp4Download elsewhere
./pebble get movie.mp4 recovered.mp4List files
./pebble listFile info
./pebble info movie.mp4Delete
./pebble rm movie.mp4PebbleFS currently supports:
- Single node
- Multiple storage devices
- Persistent metadata
- Deduplicated chunk storage
- Verification
- Crash recovery
- WAL mode
- Garbage collection
- Resumable uploads
- Replication
- Background healing
- Automatic rebalancing
- Distributed cluster
- Networked nodes
- FUSE filesystem
- Full storage pool abstraction