问题 docker中的“Thin Pool”是什么意思?


我想这应该是相当基本但我已经尝试谷歌它,我已经阅读了 码头文件。但是,我仍然无法掌握究竟是什么“薄池“它意味着它在码头工人世界中扮演的角色。


10249
2018-03-28 09:59


起源

我很少支持这么短的问题,但在这种情况下,官方文档并不明显,我不能轻易找到任何其他明确的解释,所以我认为这是一个很好的问题 堆栈溢出。 - Anthony Geoghegan


答案:


短篇故事:

精简池是一种存储源,可为存储空间提供按需分配。它或多或少类似于虚拟内存,它为每个进程提供完整的地址空间。

很长的故事:

脂肪供应

传统的存储分配方法称为“胖”或“厚”配置。

例如,用户声称使用10G存储空间。然后,胖配置为该用户保留10G物理存储空间,即使他/她仅使用其1%。没有其他人可以使用这个预留空间。

精简配置

精简配置提供按需存储分配机制,允许用户声明比为该用户物理保留的存储空间更多的存储空间。

换句话说,它可以实现存储空间的过度分配。想想RAM的过度提交功能。

薄池

精简池是一个概念术语,代表精简配置使用的后备存储源。精简配置从精简池分配虚拟存储块,而胖配置从传统存储池分配物理存储块。

Docker中的精简池

Docker Engine可以配置为使用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的最小可用空间,以便成功创建新设备。此检查适用于可用数据空间以及可用元数据空间。

容器创造(期间) docker pull 要么 docker run如果精简池中的可用空间小于中的值,则失败 Thin Pool Minimum Free Space。空间不足需要在精简池中添加更多存储空间或清除未使用的映像。


链接:


10
2018-03-28 10:50



感谢@Yuakun对此有了更多的了解,但这仍然是如何为docker发挥作用的?每当docker说“瘦池最小可用空间”是XGB时,它是否意味着docker需要精简池才能从池中留下至少XGB才能运行?或者这实际上是将池大小增加到最小XGB? (这意味着可以使用更多的块来供docker使用) - Antonio Gomez Alvarado
添加了“Docker中的精简池”部分。 - Yuankun
那么“精简池最小可用空间:10.74 GB”实际上是“数据空间总数:107.4 GB”的10%?说'整个池'实际上是数据空间总量是否正确? - Antonio Gomez Alvarado
不,整个池=数据空间+元数据空间。在这种情况下, Thin Pool Minimum Free Space 仅代表数据空间。实际上有一个 Thin Pool Minimum Free Metadata Space 这是“元数据空间总计:2.147 GB”的10%。创建容器时将检查这两个限制。但是在哪里呢 10% 来自?它是Docker引擎的可调选项, dm.min_free_space,单位是百分位数。 - Yuankun
感谢Yuankun - 这现在更有意义了! - Antonio Gomez Alvarado