diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java index d32d85d843..3a25811eea 100644 --- a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java +++ b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java @@ -1022,6 +1022,12 @@ public class Config extends ConfigBase { @ConfField(mutable = true, masterOnly = true) public static boolean disable_disk_balance = false; + /** + * if set to false, TabletScheduler will not do disk balance for replica num = 1. + */ + @ConfField(mutable = true, masterOnly = true) + public static boolean enable_disk_balance_for_single_replica = false; + // if the number of scheduled tablets in TabletScheduler exceed max_scheduling_tablets // skip checking. @ConfField(mutable = true, masterOnly = true) diff --git a/fe/fe-core/src/main/java/org/apache/doris/clone/DiskRebalancer.java b/fe/fe-core/src/main/java/org/apache/doris/clone/DiskRebalancer.java index 36fcb2a4e2..631933b069 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/clone/DiskRebalancer.java +++ b/fe/fe-core/src/main/java/org/apache/doris/clone/DiskRebalancer.java @@ -27,6 +27,7 @@ import org.apache.doris.clone.SchedException.SubCode; import org.apache.doris.clone.TabletSchedCtx.BalanceType; import org.apache.doris.clone.TabletSchedCtx.Priority; import org.apache.doris.clone.TabletScheduler.PathSlot; +import org.apache.doris.common.Config; import org.apache.doris.common.FeConstants; import org.apache.doris.system.SystemInfoService; import org.apache.doris.thrift.TStorageMedium; @@ -210,6 +211,10 @@ public class DiskRebalancer extends Rebalancer { if (alternativeTabletIds.contains(tabletId)) { continue; } + if (!Config.enable_disk_balance_for_single_replica + && invertedIndex.getReplicasByTabletId(tabletId).size() <= 1) { + continue; + } Replica replica = invertedIndex.getReplica(tabletId, beStat.getBeId()); if (replica == null) { continue;