====== Docker & LVM ======
https://docs.docker.com/storage/storagedriver/device-mapper-driver/#configure-direct-lvm-mode-for-production
===== Install prerequisites =====
apt-get install -y lvm2 thin-provisioning-tools && reboot
===== Set variables =====
export device=/dev/xvdf
export vgname=docker
export lvname=thinpool
===== Create physical Volume =====
pvcreate $device
===== Create volume group =====
vgcreate $vgname $device
=====
Create logical volumes =====
lvcreate --wipesignatures y -n ${lvname} ${vgname} -l 95%VG
lvcreate --wipesignatures y -n ${lvname}meta ${vgname} -l 1%VG
===== Convert logical volumes to thinpools =====
sudo lvconvert -y --zero n -c 512K --thinpool ${vgname}/${lvname} --poolmetadata ${vgname}/${lvname}meta
===== Create thinpool monitoring policy =====
mkdir -p /etc/lvm/profile/
tee /etc/lvm/profile/${vgname}-${lvname}.profile << EOF
activation {
thin_pool_autoextend_threshold=80
thin_pool_autoextend_percent=20
}
EOF
lvchange --metadataprofile ${vgname}-${lvname} ${vgname}/${lvname}
lvs -o+seg_monitor
===== Add Storage Options to /etc/docker/daemon.json =====
Adding "-tpool" to dm.tinpooldev is important on debian systems.
{
"storage-driver": "devicemapper",
"storage-opts": [
"dm.thinpooldev=/dev/mapper/docker-thinpool-tpool",
"dm.use_deferred_removal=true",
"dm.use_deferred_deletion=true",
"dm.mountopt=mand"
]
}
{{tag>kb linux docker}}