我猜这应该很基础,但我已经尝试过谷歌搜索并阅读了docker文档。然而,我仍然不能理解“Thin Pool”到底是什么以及它在docker世界中扮演的角色。
我猜这应该很基础,但我已经尝试过谷歌搜索并阅读了docker文档。然而,我仍然不能理解“Thin Pool”到底是什么以及它在docker世界中扮演的角色。
简述:
“薄型池”是一种提供按需分配存储空间的存储源。它与虚拟内存有些相似,可以为每个进程提供完整的地址空间。
详细描述:
传统的存储分配方法称为“厚”或“粗”配置。
例如,用户声称要使用10G的存储空间。 厚配置会为此用户保留10G的物理存储空间,即使他/她只使用其中的1%。 没有其他人可以使用此保留空间。
薄配置提供了一种按需存储分配机制,允许用户声明比为该用户预留的存储空间更多的存储空间。
换句话说,它支持存储空间的超额分配。想想RAM的过度承诺功能。
“薄型池”是一个概念性术语,指的是薄配置所使用的后备存储源。薄配置从薄型池中分配虚拟存储块,而厚配置从传统存储池中分配物理存储块。
Docker引擎可以配置为使用Device Mapper作为其存储驱动程序。这就是您处理薄配置的地方。 根据Docker的文档:
使用devicemapper存储驱动程序的生产主机必须使用direct-lvm模式。此模式使用块设备创建薄型池。
需要注意两个不同的薄型池空间:元数据空间(存储指针)和数据空间(存储实际数据)。在最开始时,元数据空间中的所有指针都不指向池中的任何实际块。只有当写入请求到达时才会真正分配数据空间中的块。如果您熟悉虚拟内存机制,这并不新奇。
让我们看一下 docker info
命令的输出:
Data Space Used: 11.8 MB
Data Space Total: 107.4 GB
Data Space Available: 7.44 GB
Metadata Space Used: 581.6 kB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.147 GB
Thin Pool Minimum Free Space: 10.74 GB
这里唯一让人困惑的是 Thin Pool Minimum Free Space
是什么意思?
它指定 thin pool 中需要为新设备创建成功保留的最小剩余空间(以 GB 为单位)。此检查适用于数据空间和元数据空间。
如果 thin pool 中的可用空间少于 Thin Pool Minimum Free Space
的值,则容器创建(在 docker pull
或 docker run
过程中)将失败。空间不足时需要向 thin pool 添加更多存储或清理未使用的镜像。
链接: