-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
hot/cold blockstore segregation (aka. splitstore) #4992
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Initial sweep; need to delve into the migration logic proper.
@vyzo @raulk from a conversation elsewhere I have the following requirement for this:
|
we can simply add a config option that disables gc -- you will still use the splitstore, but persist all objects without deleting unreachable ones. |
RIPed the freecache stuff and rebased directly to master; will fix conflicts. |
For the specific case I need this for this is not relevant: both underlying blockstores need to be exchangeable with a single 3rd party one, in order to allow for synchronous-ish storage. This is why I focus on "keep the interface close enough", as "no code changes" and "use 2 stores" is not an option in my case either way. |
Not sure I follow -- what do you want to exchange? You can simply use the coldstore. |
Also the blockstore interface is not changing. |
rebased on #5695 |
… objects objects written after that are retained anyway.
rebased on next and fixed conflict. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(test lgtm too)
garbage collect hotstore after compaction
tune badger gc to repeatedly gc the value log until there is no rewrite
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Broadly makes sense, and running well on my node for a few days
Fixes #4753.
This is the implementation of splitstore, a hot/cold segregated blockstore that can be enabled with a feature flag.
On top of #5695
How to enable:
In
.lotus/config.toml
add the following section:TODO:
Follow up:
implement BatchDelete in Blockstores-- done in add DeleteMany to Blockstore interface #5703