我想这应该很基本,但是我已经尝试过搜索它,并且阅读了docker文档。但是,我仍然无法理解“ Thin Pool ”的确切含义以及它在docker世界中的作用。
短篇故事:
精简池是一种存储源,可按需分配存储空间。它或多或少类似于虚拟内存,它为每个进程提供完整的地址空间。
很长的故事:
传统的存储分配方法称为“胖”或“厚”配置。
例如,用户声称使用10G存储空间。胖配置然后为该用户保留10G物理存储空间,即使他/她仅使用其中的1%。没有其他人可以使用此保留的空间。
精简配置提供了按需存储分配机制,该机制允许用户声明比实际为该用户保留的存储空间更多的存储空间。
换句话说,它启用了存储空间的过度分配。考虑一下RAM的过量使用功能。
精简池是一个概念性术语,代表精简配置所使用的后备存储源。精简资源调配从精简池分配虚拟存储块,而胖资源调配从传统存储池分配物理存储块。
可以将Docker引擎配置为使用Device Mapper作为其存储驱动程序。这是您处理精简配置的地方。根据Docker的文档:
使用devicemapper存储驱动程序的生产主机必须使用Direct-LVM模式。此模式使用块设备创建精简池。
精简池的两个不同空间需要照顾:元数据空间(用于存储指针)和数据空间(用于存储实际数据)。在开始时,元数据空间中的所有指针都指向池中没有实际的块。直到写请求到达,才真正分配数据空间中的任何块。如果您熟悉虚拟内存机制,这并不是什么新鲜事物。
让我们看一下的输出docker info:
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 Minimum Free Space
它指定成功创建新设备所需的精简池中的最小可用空间(以GB为单位)。此检查适用于可用数据空间以及可用元数据空间。
如果精简池中的可用空间小于中的值,则容器创建(docker pull或期间docker run)将失败Thin Pool Minimum Free Space。空间不足需要将更多存储空间添加到精简池中或清除未使用的映像。
docker pull
docker run
链接: