We use /dev/loop0
as the physical media, backed by an empty, 8G image:
dd if=/dev/zero of=lvm-loop.img bs=100M count=80
losetup -fP lvm-loop.img
losetup -a
/dev/loop0: [0053]:4207657 (/home/samuel/devlp/containers/devicemapper/lvm-loop.img)
Then we tell Docker to use devmapper
as its graphdriver and to use /dev/loop0
as its physical media:
cat /etc/docker/daemon.json
{
"storage-driver": "devicemapper",
"storage-opts": [
"dm.directlvm_device=/dev/loop0",
"dm.thinp_percent=95",
"dm.thinp_metapercent=1",
"dm.thinp_autoextend_threshold=80",
"dm.thinp_autoextend_percent=20",
"dm.directlvm_device_force=false"
]
}
Docker creates 2 linear mappings (data and metadata) and then a thin-pool based on those 2 mappings.
docker-thinpool_tdata: 0 3883008 linear 7:0 2048
docker-thinpool_tmeta: 0 32768 linear 7:0 3885056
docker-thinpool: 0 3883008 thin-pool 253:0 253:1 1024 758 1 skip_block_zeroing
Name: docker-thinpool_tdata
State: ACTIVE
Read Ahead: 256
Tables present: LIVE
Open count: 1
Event number: 0
Major, minor: 253, 1
Number of targets: 1
UUID: LVM-nO4teWAf2fGFlNsg3brVr7dW1j0xqXIQyppUo1GgZe36hmzQJ8dVYId3mxutdqKG-tdata
Name: docker-thinpool_tmeta
State: ACTIVE
Read Ahead: 256
Tables present: LIVE
Open count: 1
Event number: 0
Major, minor: 253, 0
Number of targets: 1
UUID: LVM-nO4teWAf2fGFlNsg3brVr7dW1j0xqXIQmmK1ZIYJ5LCcpJSvsfTjoeABOUyN44so-tmeta
Name: docker-thinpool
State: ACTIVE
Read Ahead: 256
Tables present: LIVE
Open count: 1
Event number: 0
Major, minor: 253, 2
Number of targets: 1
UUID: LVM-nO4teWAf2fGFlNsg3brVr7dW1j0xqXIQKYDNg6ClB1K6jBCArffW2BTuObA72a2m-tpool
- The thin pool (
253:2
) is made of 2 linear mappings253:0
and253:1
on top of/dev/loop0
.