docker中的“精简池”是什么意思?
我想这应该是非常基本的,但我试图谷歌它,我已经阅读了码头文件。 然而,我仍然无法理解“ 精简池 ”究竟是什么意思,以及它在码头世界扮演的角色。
短篇故事:
精简池是为存储空间提供按需分配的存储源。 它或多或少类似于虚拟内存,它为每个进程提供完整的地址空间。
很长的故事:
脂肪供应
传统的存储分配方法被称为“胖”或“厚”配置。
例如,用户声称使用10G存储空间。 然后,胖配置为该用户保留10G物理存储空间,即使他/她只使用1%。 没有人可以使用这个保留的空间。
精简配置
自动精简配置提供按需存储分配机制,允许用户申请比为该用户物理保留的更多存储空间。
换句话说,它可以实现存储空间的过度分配。 考虑RAM的过度提交功能。
精简池
精简池是一个概念性术语,代表精简配置使用的后备存储源。 精简配置从精简池分配虚拟存储块,而胖配置则从传统存储池分配物理存储块。
Docker中的精简池
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
。 它代表什么?
它指定精简池中GB的最小可用空间,以便新设备创建成功。 此检查适用于免费数据空间以及免费元数据空间。
如果精简池中的可用空间小于Thin Pool Minimum Free Space
可用空间中的值,则容器创建(在docker pull
或docker run
期间)会失败。 空间不足需要将更多存储添加到精简池中或清除未使用的映像。
链接: