TiKV升级到5.0.0之后空间的占用疑问

【TiDB 版本】
5.0.0
【问题描述】
从4.0.5升级到5.0.0后,有好几个tikv节点因为空间满了导致退出,查看空间占用,

{
  "store": {
    "id": 5289483,
    "address": "192.168.99.18:20160",
    "version": "5.0.0",
    "status_address": "127.0.0.1:20180",
    "git_hash": "2099c7b004b8b8cec635a64172e3f3076f2e0416",
    "start_timestamp": 1618824441,
    "deploy_path": "/home/tidb",
    "last_heartbeat": 1618825487378942399,
    "state_name": "Up"
  },
  "status": {
    "capacity": "472.3GiB",
    "available": "21.81GiB",
    "used_size": "145.7GiB",
    "leader_count": 29,
    "leader_weight": 1,
    "leader_score": 29,
    "leader_size": 1373,
    "region_count": 11365,
    "region_weight": 1,
    "region_score": 1073719494.609375,
    "region_size": 567600,
    "sending_snap_count": 1,
    "start_ts": "2021-04-19T17:27:21+08:00",
    "last_heartbeat_ts": "2021-04-19T17:44:47.378942399+08:00",
    "uptime": "17m26.378942399s"
  }
}

从节点信息看,“used_size”: “145.7GiB”,
但是

$ du -sch /home/tidb/tidb-kv/
432G	/home/tidb/tidb-kv/

145.7GB vs 432G 差的有点多,是因为空间没有回收吗?

根据这里的提示https://github.com/tikv/tikv/issues/3188
似乎tikv重启应该会触发compaction?
因为这个节点因为空间满导致进程退出几次,所以重启了好几次了,但是没有看到空间有回收的迹象。

尝试执行: tikv-ctl --host 192.168.99.18:20160 compact -d kv, 执行过程中空间又满了,导致失败

停止进程后执行 tikv-ctl --db /home/tidb/tidb-kv/db compact -d kv 执行成功了

du的输出:

du -sch /home/tidb/tidb-kv/
314G    /home/tidb/tidb-kv/

还是有100G的差异。

可能相关:https://github.com/tikv/tikv/issues/10027

看下是不是都是 data 数据占用的空间
还是说有 log 日志占用的空间

都是sst文件占的空间,手动compact后运行了几个小时空间又要差不多满了:

$ du -sch /home/tidb/tidb-kv/*/*.sst
337G
  "status": {
    "capacity": "472.3GiB",
    "available": "74.05GiB",
    "used_size": "92.6GiB",
    "leader_count": 267,
    "leader_weight": 1,
    "leader_score": 267,
    "leader_size": 12971,
    "region_count": 8280,
    "region_weight": 1,
    "region_score": 1073666000.3632812,
    "region_size": 402480,
    "start_ts": "2021-04-19T20:08:47+08:00",
    "last_heartbeat_ts": "2021-04-19T22:07:13.436397954+08:00",
    "uptime": "1h58m26.436397954s"
  }

实际sst文件占了337G,但是 “used_size”: “92.6GiB”, 差的更多了。。

https://metricstool.pingcap.com/

导出一下最近 3 个小时的 Overview/PD/TiKV-Details 监控面板的信息我们看下。

导出监控步骤:

  1. 打开监控面板,选择监控时间
  2. 打开 Grafana 监控面板(先按 d 再按 E 可将所有 Rows 的 Panels 打开,需等待一段时间待页面加载完成)
  3. https://metricstool.pingcap.com/ 使用工具导出 Grafana 数据为快照

尝试把节点删了,重新在同一台机器上重建节点,运行了一天之后空间又告急了

{
  "store": {
    "id": 20979569,
    "address": "192.168.99.18:20160",
    "version": "5.0.0",
    "status_address": "192.168.99.18:20180",
    "git_hash": "2099c7b004b8b8cec635a64172e3f3076f2e0416",
    "start_timestamp": 1619059574,
    "deploy_path": "/home/tidb",
    "last_heartbeat": 1619063587113042032,
    "state_name": "Up"
  },
  "status": {
    "capacity": "472.3GiB",
    "available": "99.05GiB",
    "used_size": "85.95GiB",
    "leader_count": 144,
    "leader_weight": 1,
    "leader_score": 144,
    "leader_size": 7941,
    "region_count": 9325,
    "region_weight": 1,
    "region_score": 1021623019.5210453,
    "region_size": 483030,
    "start_ts": "2021-04-22T10:46:14+08:00",
    "last_heartbeat_ts": "2021-04-22T11:53:07.113042032+08:00",
    "uptime": "1h6m53.113042032s"
  }
}

数据目录的大小:

323G db
12K import
20K last_tikv.toml
0 LOCK
171M raft
2.4M raftdb.info
3.7M raftdb.info.2021-04-21-22:46:56.920846648
27M rocksdb.info
23M rocksdb.info.2021-04-21-22:46:56.949351855
4.0K snap
24G space_placeholder_file
347G total

TiKV-Details_2021-04-22T03_42_20.358Z.json.zip (25.4 KB)

我们复查了一下,发现这个节点是运行在VMwareESX/ESXi上的虚拟机,数据磁盘用了VMwareESX/ESXi 精简置备(thin), 怀疑是不是跟这个有关?

其他正常节点使用的磁盘不是这个么?
是否可以更换下磁盘确认一下?

导出的监控中没有数据,应该是没有等待数据加载完成就导出了。

可能的问题是用的操作系统CentOS6系统太旧了

相关的问题: https://github.com/facebook/rocksdb/issues/579


官方推荐使用 7 以上的操作系统