38

我想这应该是非常基本的,但我试图用谷歌搜索它并且我已经阅读了docker 文档。但是,我仍然无法理解“瘦池”究竟是什么意思,以及它在 docker 世界中所扮演的角色。

4

1 回答 1

52

短篇故事:

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

很长的故事:

脂肪供应

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

例如,某用户声称使用 10G 存储空间。Fat Provisioning 然后为该用户保留 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 为单位)。此检查适用于空闲数据空间和空闲元数据空间。

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


链接:

于 2018-03-28T10:50:33.770 回答