wake-up-neo.com

Was bedeutet "Thin Pool" in Docker?

Ich denke, das sollte ziemlich einfach sein, aber ich habe versucht, es zu googeln, und ich habe die Docker-Dokumentation gelesen. Ich kann jedoch immer noch nicht verstehen, was genau " Thin Pool " bedeutet und welche Rolle es in der Docker-Welt spielt.

Kurzgeschichte:

Ein Thin Pool ist eine Speicherquelle, die Speicherplatz nach Bedarf zuweist. Es ähnelt mehr oder weniger dem virtuellen Speicher, der jedem Prozess den vollen Adressraum zur Verfügung stellt.

Lange Geschichte:

Fettversorgung

Die herkömmliche Speicherzuweisungsmethode wird als "Fat" - oder "Thick" -Bereitstellung bezeichnet.

Beispielsweise gibt ein Benutzer an, 10G Speicherplatz zu verwenden. Die Fettversorgung reserviert dann 10 GB physischen Speicherplatz für diesen Benutzer, obwohl er nur 1% davon verwendet. Niemand sonst kann diesen reservierten Platz nutzen.

Thin Provisioning

Thin Provisioning bietet einen Mechanismus für die Speicherzuweisung bei Bedarf, mit dem ein Benutzer mehr Speicherplatz beanspruchen kann, als für diesen Benutzer physisch reserviert wurde.

Mit anderen Worten, es wird eine Überbelegung des Speicherplatzes ermöglicht. Denken Sie an die Überfestschreibungsfunktion von RAM.

Dünner Pool

Thin Pool ist ein Begriff, der für die Sicherungsspeicherquelle steht, die von Thin Provisioning verwendet wird. Beim Thin Provisioning werden virtuelle Speicherblöcke aus dem Thin Pool zugewiesen, während beim Fat Provisioning physische Speicherblöcke aus dem herkömmlichen Speicherpool zugewiesen werden.

Dünner Pool in Docker

Die Docker Engine kann so konfiguriert werden, dass Device Mapper als Speichertreiber verwendet wird. Hier beschäftigen Sie sich mit Thin Provisioning. Laut Docker-Dokumentation:

Produktionshosts, die den Devicemapper-Speichertreiber verwenden, müssen den Direct-Lvm-Modus verwenden. In diesem Modus werden Blockgeräte zum Erstellen des Thin Pools verwendet.

Es müssen zwei verschiedene Bereiche des Thin Pools berücksichtigt werden: der Metadatenbereich (in dem Zeiger gespeichert sind) und der Datenbereich (in dem die realen Daten gespeichert sind). Zu Beginn verweisen alle Zeiger im Metadatenraum auf keine echten Blöcke im Pool. Erst wenn eine Schreibanforderung eingeht, wird wirklich ein Teil des Datenraums zugewiesen. Dies ist nichts Neues, wenn Sie mit dem Mechanismus des virtuellen Speichers vertraut sind.

Werfen wir einen Blick auf die Ausgabe von 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

Hier ist das einzig Verwirrende das Thin Pool Minimum Free Space. Für was steht das?

Es gibt den minimalen freien Speicherplatz in GB in einem Thin Pool an, der für eine erfolgreiche Erstellung eines neuen Geräts erforderlich ist. Diese Prüfung gilt sowohl für den freien Datenraum als auch für den freien Metadatenraum.

Containererstellung (während docker pull oder docker run) schlägt fehl, wenn der freie Speicherplatz im Thin Pool kleiner ist als der Wert in Thin Pool Minimum Free Space. Für unzureichenden Speicherplatz muss entweder mehr Speicher in den Thin Pool eingefügt oder nicht verwendete Bilder gelöscht werden.


Links:

31
Yuankun