Go to file
Sam Fredrickson cce2277b99
Build & Test / Main (push) Successful in 43s Details
Update dependencies; Go 1.22.
2024-05-05 01:22:45 -07:00
.gitea/workflows Update dependencies; Go 1.22. 2024-05-05 01:22:45 -07:00
.vscode go mod tidy 2023-12-04 13:53:09 -08:00
.gitignore Add Gitea Actions workflows. 2023-12-10 03:13:34 -08:00
.goreleaser.yaml Add Gitea Actions workflows. 2023-12-10 03:13:34 -08:00
Makefile Initial commit. 2023-12-04 01:11:04 -08:00
README.md Shorten the README; save the story for the blog post. 2023-12-06 18:33:26 -08:00
datashake.go Various improvements. 2023-12-06 18:26:41 -08:00
go.mod Update dependencies; Go 1.22. 2024-05-05 01:22:45 -07:00
go.sum Update dependencies; Go 1.22. 2024-05-05 01:22:45 -07:00

README.md

datashake - level out zpools by rewriting files

Background

See this blog post for the motivation behind this program. Basically, this program copies files back-and- forth between ZFS datasets to attempt to address unbalanced utilization among vdevs.

Usage

$ datashake --source /tank/stuff --temp /tank/temp --concurrency 2

Shortcomings

  • The way actions and errors are logged in-memory and only persisted at the end is not robust enough. Program crashes or system power loss can cause files to be lost in the temporary directory. In the meantime, the program still writes to stdout for each copy operation, so piping the output to tee should suffice for now.