我正在尝试了解如何扩展我的 Prometheus 并查看其存储机制。
让我们假设以下情况:
- Prometheus数据存储目录:大小为20GB
- 快照数量:3
- 快照大小:每个 18GB
问题:如果没有符号链接,每个快照大小的总和为何会大于目录的总大小?如何确保拍摄的快照包含所需的所有数据?
我假设 Prometheus 的存储机制将存储引用而不是真实数据。但这里究竟是什么系统在起作用,我试图找出这背后的机制。
也欢迎指点正确方向。我至少想了解一下原理。
答案1
Prometheus 快照使用难的链接在 v2.1 及更高版本中。这解释了 OP 观察到的文件系统使用行为。
快照由现有块的硬链接和当前打开块的转储组成。由于硬链接正在使用中,这意味着旧块的快照不占用额外的磁盘空间,因为磁盘上只保留一个副本,但是如果您更改它们、它们的权限或它们的用户/组,可能会破坏 Prometheus。完成后,您可以 rm -rf 快照目录,因为虽然快照最初占用的额外磁盘空间很少,但一旦原始块被删除/压缩,快照就会保持该磁盘空间的使用。
来源:https://www.robustperception.io/taking-snapshots-of-prometheus-data/