__all_virtual_disk_stat的used_size不准?

生产环境 3.1.2-OceanBase CE 版本
问题现象:2-2-2三个zone的集群,__all_virtual_disk_stat.used_size统计used_size,不同zone使用容量差异较大

SELECT server.zone,disk_stat.total_size /(1024 * 1024 * 1024) as total_size_GB, disk_stat.used_size /(1024 * 1024 * 1024) as used_size_GB, disk_stat.free_size /(1024 * 1024 * 1024) as free_size_GB,
concat((disk_stat.used_size / disk_stat.total_size), ‘%’) as used_percent
FROM oceanbase.__all_virtual_disk_stat disk_stat,
oceanbase.__all_server server WHERE disk_stat.svr_ip = server.svr_ip and disk_stat.svr_port = server.svr_port
order by zone;

±------±--------------±-------------±-------------±-------------+
| zone | total_size_GB | used_size_GB | free_size_GB | used_percent |
±------±--------------±-------------±-------------±-------------+
| zone1 | 6078.7559 | 2464.0234 | 3614.7324 | 0.4053% |
| zone1 | 6078.7559 | 2346.3770 | 3732.3789 | 0.3860% |
| zone2 | 6078.7559 | 4924.4336 | 1154.3223 | 0.8101% |
| zone2 | 2613.9453 | 1811.6738 | 802.2715 | 0.6931% |
| zone3 | 6078.7559 | 2998.2617 | 3080.4941 | 0.4932% |
| zone3 | 2613.9453 | 1811.9238 | 802.0215 | 0.6932% |
±------±--------------±-------------±-------------±-------------+

select zone,round(sum(data_size)/1024/1024/1024,2) as table_size_gb from __all_virtual_meta_table group by zone;
±-------±--------------+
| zone | table_size_gb |
±-------±--------------+
| zone1 | 4742.79 |
| zone2 | 4742.79 |
| zone3 | 4742.79 |
±-------±--------------+

补充
1、 三个zone的partition数量是一致的,没有正在同步副本
2、每天有定时major freeze

问题:zone2 used_size_GB 相加在6.7TB,而其它两个Zone在4.7TB左右,相差了2个TB,不知怎么会产生这种差异? __all_virtual_disk_stat disk_stat的used_size_gb难道不准?

show parameters like ‘%datafile_%’;
可以查下这个看看吗

6台机器设置都为如下
datafile_disk_percentage | NULL | 85
datafile_size | NULL | 0

__all_virtual_meta_table 表 的data_size和required_size两个字段只统计了的基线(即,major sstable)的大小。

__all_virtual_disk_stat 表统计的是observer级磁盘使用情况,是实时的(包括,转储,基线,中间结果,迁移过程中副本等)。

谢谢解答, __all_virtual_disk_stat 多出来的2TB? 占用源来自哪,是否有排查办法呢?

根据磁盘占用分析(OceanBase 社区),
1、排除了多版本/宏块碎片的问题
2、major free之后最近一天数据没有变化,sstable统计2.9TB

补充:
问题发生在往 zone中新增了机器,感觉是老机器used_size没有被减掉,重启OBSERVER后已经恢复.

在zone中新增机器,那可能是迁移副本,常规负载均衡的过程,是新建partition,切换,最后才释放原来的partition

最准确的比较最好在合并以后对比看看

是几个月前新增机器,今天才发现这个问题,而且这期间major free每天都做的,不是在均衡副本的过程中哦.

最近看release note,确认在3.1.5版本已经修复.
https://github.com/oceanbase/oceanbase/releases)
(13)修复扩容 datafile_size 后,部分 server 不生效的问题.