码头工人的"瘦池"是什么意思?

Ant*_*ado 28 storage docker block-storage

我想这应该是相当基本但我已经尝试谷歌它,我已经阅读了docker文档.但是,我仍然无法理解" 精简池 " 究竟是什么意思以及它在码头工人世界中所扮演的角色.

Yua*_*kun 36

短篇故事:

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

很长的故事:

脂肪供应

传统的存储分配方法称为"胖"或"厚"配置.

例如,用户声称使用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
Run Code Online (Sandbox Code Playgroud)

在这里,唯一令人困惑的是Thin Pool Minimum Free Space.它代表什么?

它指定新设备创建成功所需的精简池中GB的最小可用空间.此检查适用于可用数据空间以及可用元数据空间.

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


链接:

  • 不,整个池=数据空间+元数据空间。在这种情况下,“瘦池最小可用空间”仅代表数据空间。实际上,有一个“精简池最小可用元数据空间”,它是“元数据空间总计:2.147 GB”的10%。创建容器时将同时检查这两个限制。但是“ 10%”来自哪里?它是Docker引擎dm.min_free_space的可调选项,单位为百分位。 (2认同)