- Category
- Developer Tools
- Rank
- No. 1439Tools index
Previous survey · No. 1449 ·
- Pricing
- Open Source
- Type
- TOOL
- Builder
- tempoxyz
- GitHub
- 52 stars
- Date
About
Fast filesystem snapshot and rollback tool built in Rust for benchmarking workflows.
What it does
Schelk keeps a pristine block device beside a working device used for repeated benchmarks. A Linux write-tracking layer records which blocks change without redirecting normal reads or writes. Between runs, Schelk copies only those changed blocks from the pristine device. It can also promote the working state into a new baseline.
Why it's ranked here
Schelk solves a narrow measurement problem with a technically coherent design. Benchmarks run on a plain filesystem and real storage topology, while recovery work scales with changed data rather than total volume size. That precision comes with substantial hardware, privilege, and operational demands, so its value depends on whether storage-layer variance genuinely matters.
What's good
The tracking layer records writes without moving data, caching it, or redirecting input and output. Incremental restoration copies only changed block ranges, and promotion supports intentional baseline updates after migrations or snapshot loads. Schelk also checks block devices, metadata capacity, volume identity, concurrent operation locks, and destructive actions before proceeding.
Tradeoffs
It requires root access, two dedicated equal-size devices, a RAM disk, Linux device-mapper support, and several external utilities. A reboot or power loss destroys tracking metadata and forces a full copy. Workloads that rewrite most of the dataset gain little. It also cannot restore controller caches, flash mappings, wear leveling, or garbage collection state.
How to use it well
Use Schelk for Linux database or blockchain benchmarks with large baselines and relatively sparse writes, especially when snapshot overhead would obscure small performance changes. Reserve both devices, prevent outside mounts, and use promotion only for deliberate baseline changes. It does not replace drive preconditioning, warmups, steady-state measurement, or general-purpose storage snapshots.
Technical notes+
Cargo.toml defines a Rust 2024 CLI package with Tokio, Clap, nix, quick-xml, io-uring, SHA-256, and JSON state dependencies. src/cli.rs exposes initialization, full recovery, mount, incremental recovery, restore, promotion, and status commands. src/dmera.rs creates the dm-era mapping, checkpoints eras, invokes era_invalidate, and parses its XML block ranges. src/io/uring.rs implements direct, aligned, multiring copying with separate profiles for sequential and sparse work. src/state.rs persists JSON atomically with fsync and rename, while an exclusive flock prevents concurrent operations. src/main.rs ignores normal termination signals during volume-changing sequences to reduce inconsistent intermediate states.
Observed
- License
- MIT OR Apache-2.0
- Primary language
- Rust, using the 2024 edition
- Install surface
- Command-line tool installed from source with Cargo; no binary releases are provided
- Interface
- CLI with initialization, mount, recovery, restore, promotion, full recovery, and status commands
- Platform support
- Linux with device-mapper and the dm-era kernel target
- System dependencies
- Requires dmsetup, era_invalidate, and mkfs.ext4 for fresh ext4 initialization
Read from README.md, Cargo.toml, src/cli.rs, src/main.rs, src/cmd.rs, src/env.rs, src/dmera.rs, src/error.rs, src/mount.rs, src/state.rs, src/volume.rs, src/confirm.rs, src/ramdisk.rs, src/io/mod.rs, src/io/uring.rs.
What it can do
Create filesystem snapshots
Target directory or filesystem state → Snapshot of filesystem at point in time
Rollback filesystem to previous state
Previously created snapshot → Restored filesystem state
Capture baseline filesystem state for benchmarking
Filesystem before benchmark execution → Clean baseline snapshot for comparison
Reset filesystem between benchmark runs
Snapshot and modified filesystem → Filesystem restored to clean state
Compare filesystem states
Two filesystem snapshots → Differences between filesystem states
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.
