diff options
author | Alex Auvolat <alex@adnab.me> | 2023-09-07 13:44:11 +0200 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2023-09-07 13:44:11 +0200 |
commit | 6b008b5bd3843bb236f94a1b4472de11f5755f04 (patch) | |
tree | f9d2afe0e7a21b07bfa0f0e94a607a695f516e65 /src/garage | |
parent | 6595efd82fc849c97b964969b6ff935738e7d24a (diff) | |
download | garage-6b008b5bd3843bb236f94a1b4472de11f5755f04.tar.gz garage-6b008b5bd3843bb236f94a1b4472de11f5755f04.zip |
block manager: add rebalance operation to rebalance multi-hdd setups
Diffstat (limited to 'src/garage')
-rw-r--r-- | src/garage/cli/structs.rs | 3 | ||||
-rw-r--r-- | src/garage/repair/online.rs | 6 |
2 files changed, 9 insertions, 0 deletions
diff --git a/src/garage/cli/structs.rs b/src/garage/cli/structs.rs index 9ca4a059..fd37a24e 100644 --- a/src/garage/cli/structs.rs +++ b/src/garage/cli/structs.rs @@ -471,6 +471,9 @@ pub enum RepairWhat { #[structopt(subcommand)] cmd: ScrubCmd, }, + /// Rebalance data blocks among storage locations + #[structopt(name = "rebalance", version = garage_version())] + Rebalance, } #[derive(Serialize, Deserialize, StructOpt, Debug, Eq, PartialEq, Clone)] diff --git a/src/garage/repair/online.rs b/src/garage/repair/online.rs index abfaf9f9..9e4de873 100644 --- a/src/garage/repair/online.rs +++ b/src/garage/repair/online.rs @@ -70,6 +70,12 @@ pub async fn launch_online_repair( info!("Sending command to scrub worker: {:?}", cmd); garage.block_manager.send_scrub_command(cmd).await?; } + RepairWhat::Rebalance => { + info!("Rebalancing the stored blocks among storage locations"); + bg.spawn_worker(garage_block::repair::RebalanceWorker::new( + garage.block_manager.clone(), + )); + } } Ok(()) } |