现有集群部分 TiKV 节点 SSD、机械盘混用,PD 自动均衡后大量 Region 涌向高速盘,低配磁盘节点空闲,想问如何配置 label 约束副本位置?
没深入了解过。
是不是可以按照磁盘类型。
- 打标签:SSD 节点
disk-type=ssd、HDD 节点disk-type=hdd,滚动重启 TiKV 生效; - 开 Placement Rules,配置默认规则:全量数据副本限定
ssd节点,阻止 Region 涌入; - 冷数据单独建规则,指定归档库 / 表强制落在
hdd; - 调 PD 调度参数,限制跨盘 Region 迁移,实现 SSD 存热、HDD 存冷的磁盘隔离。
TiKV 的空间回收依赖于 MVCC 的 GC 机制,通过 raftstore 层的 GC worker 定期清理历史版本数据。如果 GC 推进慢,通常是因为存在长时间未提交的事务,或者某个 TiKV 节点 Raft 复制延迟导致 safepoint 停滞。
一台机器上:NVMe 盘 → 启动一个 TiKV(label: disk=nvme)
同一台机器上:SATA 盘 → 启动另一个 TiKV(label: disk=sata)
然后用 PD Label + Placement Rules 强制配置
通过为 TiKV 节点打磁盘类型标签(如 disk=nvme / disk=sata ),并配置 PD 的 location-labels 和副本放置规则(Placement Rules),可强制控制副本在 NVMe 与 SATA 盘间的分布,避免调度失衡。
给 TiKV 打disk=ssd/hdd标签,用Placement 规则约束:Leader 只放 SSD,Follower 只放 HDD,PD 就不会把所有 Region 都塞高速盘了。
PD 默认仅基于 store 容量、Region 数、Leader 数均衡,不感知磁盘性能差异;混用 NVMe/SATA 会导致 I/O 延迟不均、调度器误判负载
磁盘空间问题可以检查下有没有空 Region,用 pd-ctl region check empty-region 查看,手工 merge 掉。另外 GC 时间设置得太短也可能导致空间释放不及时。
这个看了没想到怎么弄,不好操作样的。
可通过并“放置规则”来精准管控和约束副本的分布位置。
- TiKV 打标签:各节点配置
server.labels.disk=ssd/hdd,滚动重启生效 - PD 注册标签层级:
pd-ctl config set replication.location-labels '["zone","rack","host","disk"]' - Placement Rules 控副本(
每个 TiKV 打上 disk=ssd/hdd 标签
placement-rule 约束副本数量分布在两类磁盘
配合 store 权重、leader 规则,不让全量 Region 堆 SSD
给不同磁盘类型 TiKV 节点打上 label 区分 ssd 和 hdd,配置 PD 副本调度规则限定副本分布,禁止跨标签调度,再手动迁移存量 Region 完成隔离
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。