问题背景
线上某etcd集群,采用的是snapshot save的方式每15分钟备份一次,某天磁盘告警,检查发现备份文件特别大.
如上图,发现etcd备份文件竟然有1个多G
如上图,检查etcd的数据目录/var/lib/etcd,发现db文件很大.
问题排查
1.排查发现etcd备份文件从某天忽然彪高,从原来的20多M一下子升到1个多G
2.排查这期间,k8s集群使用未有大的变动,etcd数据空间应该不会有这么大的变动.最后从一个运维排查得知etcd集群用check perf做过性能压测,但是运维说清理了压测数据.
如山图,用bash 命令历史看出,压测后确实删除了压测创建的对应keys,但是为啥空间占用还是这么大.
问题解决
调研得知为etcd文件碎片引起,通过etcdctl compaction; etcd defrag操作,可以释放数据目录空间.
如上图,defrag之后,db数据文件减小为7点多M.