docker 中的 "Thin Pool" 是什么意思?
What does "Thin Pool" in docker mean?
我想这应该是非常初级的,但我已经尝试 google 它并且我已经阅读了 docker documentation。但是,我仍然无法理解“Thin Pool”到底是什么意思,以及它在docker 世界中扮演的角色。
短篇小说:
精简池是为存储 space 提供 on-demand 分配的存储源。它或多或少类似于虚拟内存,它为每个进程提供完整地址space。
长话短说:
脂肪配置
传统的存储分配方法称为 "fat" 或 "thick" 配置。
例如,用户声称使用 10G 存储空间 space。 Fat 配置然后为该用户保留 10G 物理存储 space,即使 he/she 只使用了其中的 1%。没有其他人可以使用此保留 space.
精简配置
精简配置提供了一种 on-demand 存储分配机制,允许用户申请比为该用户物理保留更多的存储 space。
换句话说,它为存储space启用over-allocation。想想 RAM 的 over-commit 特性。
精简池
精简池是一个概念性术语,代表精简配置所使用的后备存储源。精简配置从精简池分配虚拟存储块,而胖配置从传统存储池分配物理存储块。
Docker
中的精简池
Docker 引擎可以配置为使用 Device Mapper 作为其存储驱动程序。这是您处理自动精简配置的地方。根据 Docker 的文档:
Production hosts using the devicemapper storage driver must use direct-lvm mode. This mode uses block devices to create the thin pool.
需要处理两个不同的space精简池:元数据space(存储指针)和数据space(存储真实数据) .一开始,Metadata space 中的所有指针都指向池中没有真正的块。在写入请求到达之前,数据 space 中的任何块都不会真正分配。如果您熟悉,这并不是什么新鲜事
虚拟内存机制。
我们来看看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
。它代表什么?
它指定了成功创建新设备所需的精简池中的最小空闲 space(以 GB 为单位)。此检查适用于免费数据 space 以及免费元数据 space.
如果精简池中的可用 space 小于 Thin Pool Minimum Free Space
中的值,则容器创建(在 docker pull
或 docker run
期间)将失败。不足 space 需要向精简池添加更多存储或清除未使用的图像。
链接:
我想这应该是非常初级的,但我已经尝试 google 它并且我已经阅读了 docker documentation。但是,我仍然无法理解“Thin Pool”到底是什么意思,以及它在docker 世界中扮演的角色。
短篇小说:
精简池是为存储 space 提供 on-demand 分配的存储源。它或多或少类似于虚拟内存,它为每个进程提供完整地址space。
长话短说:
脂肪配置
传统的存储分配方法称为 "fat" 或 "thick" 配置。
例如,用户声称使用 10G 存储空间 space。 Fat 配置然后为该用户保留 10G 物理存储 space,即使 he/she 只使用了其中的 1%。没有其他人可以使用此保留 space.
精简配置
精简配置提供了一种 on-demand 存储分配机制,允许用户申请比为该用户物理保留更多的存储 space。
换句话说,它为存储space启用over-allocation。想想 RAM 的 over-commit 特性。
精简池
精简池是一个概念性术语,代表精简配置所使用的后备存储源。精简配置从精简池分配虚拟存储块,而胖配置从传统存储池分配物理存储块。
Docker
中的精简池Docker 引擎可以配置为使用 Device Mapper 作为其存储驱动程序。这是您处理自动精简配置的地方。根据 Docker 的文档:
Production hosts using the devicemapper storage driver must use direct-lvm mode. This mode uses block devices to create the thin pool.
需要处理两个不同的space精简池:元数据space(存储指针)和数据space(存储真实数据) .一开始,Metadata space 中的所有指针都指向池中没有真正的块。在写入请求到达之前,数据 space 中的任何块都不会真正分配。如果您熟悉,这并不是什么新鲜事 虚拟内存机制。
我们来看看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
。它代表什么?
它指定了成功创建新设备所需的精简池中的最小空闲 space(以 GB 为单位)。此检查适用于免费数据 space 以及免费元数据 space.
如果精简池中的可用 space 小于 Thin Pool Minimum Free Space
中的值,则容器创建(在 docker pull
或 docker run
期间)将失败。不足 space 需要向精简池添加更多存储或清除未使用的图像。
链接: