Что означает "тонкий бассейн" в докере?

Я предполагаю, что это должно быть довольно элементарно, но я попытался гуглить это, и я прочитал документацию докера. Однако я до сих пор не могу понять, что именно означает "тонкий бассейн" и какую роль он играет в мире докеров.

1 ответ

Решение

Короткий рассказ:

Тонкий пул - это источник хранения, который обеспечивает выделение пространства для хранения по требованию. Это более или менее похоже на виртуальную память, которая обеспечивает полное адресное пространство для каждого процесса.

Длинная история:

Обеспечение жира

Традиционный метод распределения памяти называется "жирным" или "толстым" обеспечением.

Например, пользователь утверждает, что использует 10G памяти. Затем Fat Provisioning резервирует 10G физической памяти для этого пользователя, хотя он / она использует только 1%. Никто другой не может использовать это зарезервированное пространство.

Тонкая подготовка

Тонкая подготовка обеспечивает механизм выделения памяти по требованию, который позволяет пользователю требовать больше места для хранения, чем было физически зарезервировано для этого пользователя.

Другими словами, это позволяет перераспределить пространство для хранения. Подумайте о возможности чрезмерной фиксации ОЗУ.

Тонкий бассейн

Тонкий пул - это концептуальный термин, который обозначает резервный источник хранения, используемый тонкой подготовкой. Тонкая подготовка выделяет виртуальные порции хранилища из тонкого пула, тогда как полная подготовка выделяет физические блоки хранения из традиционного пула хранения.

Тонкий бассейн в докере

Docker Engine можно настроить на использование Device Mapper в качестве драйвера хранилища. Вот где вы имеете дело с тонкой подготовкой. Согласно документации Докера:

Производственные хосты, использующие драйвер хранилища 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, Что это значит?

Он определяет минимальное свободное пространство в ГБ в тонком пуле, необходимое для успешного создания нового устройства. Эта проверка применяется как к свободному пространству данных, так и к свободному пространству метаданных.

Создание контейнера (во время docker pull или же docker run) происходит сбой, если свободное место в тонком пуле меньше значения в Thin Pool Minimum Free Space, Недостаточно места требует либо добавления большего объема памяти в тонкий пул, либо очистки неиспользуемых изображений.


Ссылки:

Другие вопросы по тегам