为什么“数据空间已用”+“数据空间可用”!=“数据空间总计”在docker?

我的系统上的docke info命令输出如下:

 # docker info Containers: 0 Images: 0 Storage Driver: devicemapper ..... Data Space Used: 1.821 GB Data Space Total: 107.4 GB Data Space Available: 32.92 GB Metadata Space Used: 1.479 MB Metadata Space Total: 2.147 GB Metadata Space Available: 2.146 GB ...... 

Metadata Space Used ”+“ Metadata Space Available ”= Metadata Space Total ,但为什么“ Data Space Used ”+“ Data Space Available ”!=“ Data Space Total ”?

如果devicemapper使用loop-lvmconfiguration,则使用“稀疏”存储设备。 您可以使用任意大小指定该设备的大小,但永远不能使用比机器上实际可用的更多的存储空间。

报告为“ Data Space Total的大小是为“稀疏”设备指定的大小(本例中为100 GB)。 “可用数据空间”显示系统上实际可用的空间量。

例如,下面,我创build了一个具有200GB的设备,具有40GB的实际存储空间(使用-s devicemapper --storage-opt dm.loopdatasize=200G守护进程选项)。

 Storage Driver: devicemapper Pool Name: docker-253:1-138480-pool Pool Blocksize: 65.54 kB Base Device Size: 10.74 GB Backing Filesystem: ext4 Data file: /dev/loop0 Metadata file: /dev/loop1 Data Space Used: 305.7 MB Data Space Total: 214.7 GB Data Space Available: 39.79 GB Metadata Space Used: 1.147 MB Metadata Space Total: 2.147 GB Metadata Space Available: 2.146 GB Udev Sync Supported: true Deferred Removal Enabled: false Deferred Deletion Enabled: false Deferred Deleted Device Count: 0 

您可以看到它报告的Data Space Total: 214.7 GB (200GB),但是显示39.79 GB可用(系统上的空闲空间)

请注意,当物理空间耗尽时,您将得到数据损坏,并且可能无法从中恢复,所以值得监视剩下多less空间。

有关configurationdevicemapper(也用于生产 ,使用direct-lvm)的更多信息,请参阅https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/