tikv在磁盘使用率达到很高的时候,会完全限制数据写入该节点吗?

【 TiDB 使用环境】测试
【 TiDB 版本】 v6.5.9
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
1、 reserve-space的默认值为5G,看了一些文章,说是小于5G的时候会限制部分写操作,这个限制部分写操作的原则是?
2、当 TiKV 启动时,会根据 reserve-space 配置项预留一定比例的磁盘空间。这个预留空间分为两部分:80% 用于在磁盘空间不足时进行运维操作所需要的额外磁盘空间,剩余的 20% 为磁盘临时文件 space_placeholder_file,我这reserve-space=5G,但space_placeholder_file为1.6G,大于20%,这个临时文件会根据其他一些条件进行动态调整?
3、tidb集群当空间小于5G时候,是限制部分写操作,那么tidb是否有某个tikv节点使用率达到多少之后,就会触发该tikv节点完全停止写入的机制?还是不会这样限制,直到tikv全部空间耗尽之后被迫下线,然后启动的时候删除space_placeholder_file这个文件,让tikv被迫下线后可以正常启动起来?

可以参考一下https://asktug.com/t/topic/1032129/17这个问题大佬们的回答

第一个我觉得是不会写入leader数据或者region数据了,毕竟磁盘满了,再把关键是数据写入会有问题。
第二个应该是因为预留空间是二者取其高,不一定是5G。所以你说的这种情况是存在的。

1 个赞

1、 我们这边测试环境中触发过类似问题,当时是业务完全不可写入,不能算是部分限制。
2、官方文档中提到,reserve-space的默认值是"5GB",实际预留的空间是磁盘容量的5%和reserve-space配置值中的较大者。那么实际环境中reserve-space的绝对值大部分情况是大于5GB的。
3、控制磁盘写入这块至少是有2个参数,low-space-ratio、reserve-space。当磁盘空间开始不足时,low-space-ratio首先发挥作用,阻止更多数据被调度到该节点。如果空间继续减少,达到reserve-space的阈值,TiKV会直接限制写操作。

2 个赞

这里有监控指标,可以帮助识别的

然后,磁盘空间的策略是有两种的,避免出现识别差异,磁盘空间的场景也很复杂的。
留一些空间了,是为了满足 compact 的操作,不然,空间就无法释放和回收了。

空间耗尽,不会下线,就是写不进去,只会提供读服务。最好不要让这种情况发生,会比较被动。

养成巡检和告警优先级,对解决这个问题会比较有效。

:thinking:应该还是可以删除数据吧

tidb的删除也需要写tikv。

不可写入,这应该是算保护机制吧,此时应该属于只提供只读服务的集群