Test program
Before vdo
[root@hssl ~]# docker run -d nginx
ee6c23a404067e4eee97e4a8546f32b6c5a0495b58ea5cb71241fde35f94741f
[root@hssl ~]#
[root@hssl ~]# docker run -d nginx
c471511ad707250331675786cc098cd5e22c56ff53613eb7ed6bc86e22f37274
[root@hssl ~]#
[root@hssl ~]# docker run -d nginx
4a19f3d3510203a9f091d83c21acab9b851ff21fd1796b9ca8263c2b7d06a25a
[root@hssl ~]#
[root@hssl ~]# docker run -d nginx
760f7a90b2707826c40f249879a147d3e8cd1b73c55992c1917df0302d3c79b7
[root@hssl ~]#
[root@hssl ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
760f7a90b270 nginx "/docker-entrypoint.…" 2 seconds ago Up 1 second 80/tcp vigilant_moser
4a19f3d35102 nginx "/docker-entrypoint.…" 3 seconds ago Up 3 seconds 80/tcp sad_ritchie
c471511ad707 nginx "/docker-entrypoint.…" 5 seconds ago Up 4 seconds 80/tcp charming_benz
ee6c23a40406 nginx "/docker-entrypoint.…" 7 seconds ago Up 7 seconds 80/tcp laughing_hellman
c6c8886f7bc1 nginx "/docker-entrypoint.…" 20 minutes ago Up 20 minutes 80/tcp wonderful_engelbart
[root@hssl ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 1 1 197.7MB 0B (0%)
Containers 5 5 5.475kB 0B (0%)
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
After VDO
[root@hssl ~]# pvcreate /dev/nvme0n2p1
Physical volume "/dev/nvme0n2p1" successfully created.
[root@hssl ~]# vgcreate dockervg /dev/nvme0n2p1
Volume group "dockervg" successfully created
[root@hssl ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p3 cs lvm2 a-- 18.41g 0
/dev/nvme0n2p1 dockervg lvm2 a-- <20.00g <20.00g
[root@hssl ~]# vgs
VG #PV #LV #SN Attr VSize VFree
cs 1 2 0 wz--n- 18.41g 0
dockervg 1 0 0 wz--n- <20.00g <20.00g
[root@hssl ~]# lvcreate --type vdo -n vdodocker -L 100G --virtualsize 100G dockervg
Volume group "dockervg" has insufficient free space (5119 extents): 25600 required.
[root@hssl ~]#
[root@hssl ~]# lvcreate --type vdo -n vdodocker -L 15G --virtualsize 100G dockervg
The VDO volume can address 12 GB in 6 data slabs, each 2 GB.
It can grow to address at most 16 TB of physical storage in 8192 slabs.
If a larger maximum size might be needed, use bigger slabs.
Logical volume "vdodocker" created.
[root@hssl ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
dockervg-vpool0-vpool 15.0G 3.0G 12.0G 20% 0%
[root@hssl overlay2]# mkfs.xfs -K /dev/mapper/dockervg-vdodocker
meta-data=/dev/mapper/dockervg-vdodocker isize=512 agcount=4, agsize=6553600 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=26214400, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@hssl overlay2]# mount /dev/mapper/dockervg-vdodocker /var/lib/docker-vdo
[root@hssl overlay2]# mount | grep dockervg-vdodocker
/dev/mapper/dockervg-vdodocker on /var/lib/docker-vdo type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota)
[root@hssl lib]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 1024M 0 rom
nvme0n1 259:0 0 50G 0 disk
├─nvme0n1p1 259:1 0 600M 0 part /boot/efi
├─nvme0n1p2 259:2 0 1G 0 part /boot
└─nvme0n1p3 259:3 0 18.4G 0 part
├─cs-root 253:0 0 16.4G 0 lvm /
└─cs-swap 253:1 0 2G 0 lvm [SWAP]
nvme0n2 259:4 0 20G 0 disk
└─nvme0n2p1 259:6 0 20G 0 part
└─dockervg-vpool0_vdata 253:2 0 15G 0 lvm
└─dockervg-vpool0-vpool 253:3 0 100G 0 lvm
└─dockervg-vdodocker 253:4 0 100G 0 lvm /var/lib/docker-vdo
[root@hssl ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
943331d8a9a9: Pull complete
67ef22056282: Pull complete
844fa86a5e03: Pull complete
4e82158dafdd: Pull complete
e1242a59b7fa: Pull complete
ff2745aabaf7: Pull complete
a53cddf3d9ee: Pull complete
Digest: sha256:c15da6c91de8d2f436196f3a768483ad32c258ed4e1beb3d367a27ed67253e66
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@hssl ~]#
[root@hssl ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 1 0 197.7MB 197.7MB (100%)
Containers 0 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
[root@hssl ~]#
[root@hssl ~]# ./create-container.sh
f18249ec7c2be6d05efcd2da3d8e3097ebf2f73e6e0d98e1b0491b6807cccc4d
fd75e90fb45a7ec6f7cd47ee44d56cbf6d699e11b0910cdf3b8ff6c299a40369
b3e118703ee9dbb62f041159f899445a33f2344280255a0a30a7b817a6c22236
a4114ae5e2383389088863439a72d8f68900f2cc820c1a1395ddf775914ca4ff
95f48110a77d80b78102f25fa64cdf934c864ad84a5d88f86d8c724eebbfd6fe
[root@hssl ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 1 1 197.7MB 0B (0%)
Containers 5 5 5.475kB 0B (0%)
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
[root@hssl ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
dockervg-vpool0-vpool 15.0G 3.1G 11.9G 21% 64%
ALPine image , after vdo
[root@hssl ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
adb403a5cc79 alpine "sh -c 'dd if=/dev/z…" 2 minutes ago Up 2 minutes test-5
7ad8cb042907 alpine "sh -c 'dd if=/dev/z…" 2 minutes ago Up 2 minutes test-4
e8f40baa3600 alpine "sh -c 'dd if=/dev/z…" 2 minutes ago Up 2 minutes test-3
67b328276353 alpine "sh -c 'dd if=/dev/z…" 2 minutes ago Up 2 minutes test-2
989770a7fc12 alpine "sh -c 'dd if=/dev/z…" 2 minutes ago Up 2 minutes test-1
[root@hssl ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine latest 8d591b0b7dea 2 months ago 8.17MB
[root@hssl ~]# df -h /var/lib/docker-vdo
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/dockervg-vdodocker 100G 3.2G 97G 4% /var/lib/docker-vdo
[root@hssl ~]# sudo vdostats --human-readable
Device Size Used Available Use% Space saving%
dockervg-vpool0-vpool 15.0G 3.1G 11.9G 21% 95%
[root@hssl ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 1 1 8.175MB 0B (0%)
Containers 5 5 2.621GB 0B (0%)
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
Without VDO
[root@hssl ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 1 1 8.175MB 0B (0%)
Containers 5 5 2.621GB 0B (0%)
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
[root@hssl ~]# df -h /var/lib/docker
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cs-root 17G 9.3G 7.1G 57% /
With VDO
[root@hssl docker]# docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
6e771e15690e: Pull complete
Digest: sha256:a8560b36e8b8210634f77d9f7f9efd7ffa463e380b75e2e74aff4511df3ef88c
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest
[root@hssl docker]#
[root@hssl docker]#
[root@hssl docker]# cd
[root@hssl ~]# ./create-container.sh
9f6f3a7e964fbacd59398e3b24f97cbd9b46502e53afa5cdd58ea768a2136757
81b811138ce78e560046e2882bfd3ab30823071487ee3e33daff812c00bc223d
bcec1b5c42b8fb77d9d7db22a82aaded5aa95f476b7ed71b70ba04388367abc2
d398cfc1b5d71736a0a4109716c211bb5cddef4896954b5e930bd2be575fd50c
515de3a22782392a7bc83c68152068887faf9c42e4e37394495ee4621fe05620
[root@hssl ~]#
[root@hssl ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 1 1 8.175MB 0B (0%)
Containers 5 5 2.621GB 0B (0%)
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
[root@hssl ~]#
[root@hssl ~]# cat /etc/docker/daemon.json
{
"insecure-registries": ["localhost:5001"],
"data-root": "/var/lib/docker-vdo"
}
[root@hssl ~]#
[root@hssl ~]# df -h /var/lib/docker-vdo/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/dockervg-vdodocker 100G 3.2G 97G 4% /var/lib/docker-vdo
-------------------------------------------------------------------------
[root@hssl ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 1024M 0 rom
nvme0n1 259:0 0 50G 0 disk
├─nvme0n1p1 259:1 0 600M 0 part /boot/efi
├─nvme0n1p2 259:2 0 1G 0 part /boot
└─nvme0n1p3 259:3 0 18.4G 0 part
├─cs-root 253:0 0 16.4G 0 lvm /
└─cs-swap 253:1 0 2G 0 lvm [SWAP]
nvme0n2 259:4 0 20G 0 disk
├─nvme0n2p1 259:5 0 10G 0 part
└─nvme0n2p2 259:8 0 10G 0 part
WITH VDO
[root@hssl ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 1024M 0 rom
nvme0n1 259:0 0 50G 0 disk
├─nvme0n1p1 259:1 0 600M 0 part /boot/efi
├─nvme0n1p2 259:2 0 1G 0 part /boot
└─nvme0n1p3 259:3 0 18.4G 0 part
├─cs-root 253:0 0 16.4G 0 lvm /
└─cs-swap 253:1 0 2G 0 lvm [SWAP]
nvme0n2 259:4 0 20G 0 disk
├─nvme0n2p1 259:5 0 10G 0 part
│ └─dockervg-vpool0_vdata 253:2 0 10G 0 lvm
│ └─dockervg-vpool0-vpool 253:3 0 20G 0 lvm
│ └─dockervg-vdodocker 253:4 0 20G 0 lvm /var/lib/docker-vdo
└─nvme0n2p2 259:8 0 10G 0 part /var/lib/docker-normal
[root@hssl ~]#
[root@hssl ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 2.7G 0 2.7G 0% /dev/shm
tmpfs 1.1G 9.2M 1.1G 1% /run
efivarfs 256K 32K 225K 13% /sys/firmware/efi/efivars
/dev/mapper/cs-root 17G 6.9G 9.5G 42% /
/dev/nvme0n1p2 960M 485M 476M 51% /boot
/dev/nvme0n1p1 599M 7.0M 592M 2% /boot/efi
tmpfs 545M 36K 545M 1% /run/user/0
/dev/nvme0n2p2 10G 104M 9.9G 2% /var/lib/docker-normal
/dev/mapper/dockervg-vdodocker 20G 175M 20G 1% /var/lib/docker-vdo
[root@hssl ~]#
[root@hssl ~]# vim /etc/docker/daemon.json
[root@hssl ~]# cat /etc/docker/daemon.json
{
"insecure-registries": ["localhost:5001"],
"data-root": "/var/lib/docker-vdo"
}
[root@hssl ~]# systemctl restart docker
[root@hssl ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
dockervg-vpool0-vpool 10.0G 4.0G 6.0G 40% 99%
[root@hssl ~]# docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
6e771e15690e: Pull complete
Digest: sha256:a8560b36e8b8210634f77d9f7f9efd7ffa463e380b75e2e74aff4511df3ef88c
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest
[root@hssl ~]# ./create-container.sh
3450d556262ecbf1c086da3ce76cd4be7189e5f8c6c728fc7b49f4f6b44cc823
a94d9b6c3f8e763064050583e46d0a36945abe51073ea23113993db21f9c8545
a37c135957f32087b6d8c71512fbea4c56a39a62bd5901b599e05590b17cde51
7e9cdb8f57d10d7fb9e75338d8de0d611ae39147aa07d77fc077b6a8ea6402eb
9fd60630c0f419ab006cdf1127ac7113b92bb4752b55fd175b135e8619f5733a
[root@hssl ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
dockervg-vpool0-vpool 10.0G 4.0G 6.0G 40% 99%
[root@hssl ~]# df -h /var/lib/docker-vdo/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/dockervg-vdodocker 20G 2.7G 18G 14% /var/lib/docker-vdo
[root@hssl ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 1024M 0 rom
nvme0n1 259:0 0 50G 0 disk
├─nvme0n1p1 259:1 0 600M 0 part /boot/efi
├─nvme0n1p2 259:2 0 1G 0 part /boot
└─nvme0n1p3 259:3 0 18.4G 0 part
├─cs-root 253:0 0 16.4G 0 lvm /
└─cs-swap 253:1 0 2G 0 lvm [SWAP]
nvme0n2 259:4 0 20G 0 disk
├─nvme0n2p1 259:5 0 10G 0 part
│ └─dockervg-vpool0_vdata 253:2 0 10G 0 lvm
│ └─dockervg-vpool0-vpool 253:3 0 20G 0 lvm
│ └─dockervg-vdodocker 253:4 0 20G 0 lvm /var/lib/docker-vdo
└─nvme0n2p2 259:8 0 10G 0 part /var/lib/docker-normal
[root@hssl ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 2.7G 0 2.7G 0% /dev/shm
tmpfs 1.1G 9.6M 1.1G 1% /run
efivarfs 256K 32K 225K 13% /sys/firmware/efi/efivars
/dev/mapper/cs-root 17G 6.9G 9.5G 42% /
/dev/nvme0n1p2 960M 485M 476M 51% /boot
/dev/nvme0n1p1 599M 7.0M 592M 2% /boot/efi
tmpfs 545M 36K 545M 1% /run/user/0
/dev/nvme0n2p2 10G 104M 9.9G 2% /var/lib/docker-normal
/dev/mapper/dockervg-vdodocker 20G 2.7G 18G 14% /var/lib/docker-vdo
overlay 20G 2.7G 18G 14% /var/lib/docker-vdo/overlay2/a28d8b39d67ab0b8bf668d0a87b14f4a360b919c31afcad2d3281f0974754b28/merged
overlay 20G 2.7G 18G 14% /var/lib/docker-vdo/overlay2/83fb0aeff158f044b8d92a5b563fc4ac532628d0740b98979f6ac60adbf3de17/merged
overlay 20G 2.7G 18G 14% /var/lib/docker-vdo/overlay2/c9b82167e8c5a38daf01c7094f24fdde8ba7708193317ff165a9d641aa06f059/merged
overlay 20G 2.7G 18G 14% /var/lib/docker-vdo/overlay2/ac2a39bacefc444be6dd288bc9583f78395b73c24df60c55ed4a8404cc58015c/merged
overlay 20G 2.7G 18G 14% /var/lib/docker-vdo/overlay2/6bb3f5437544a08a75e15caaa71df6075bfe071cd2d03e93b768c4be9856416b/merged
[root@hssl ~]#
WITHOUT VDO
[root@hssl ~]# docker rm -f $(docker ps -aq)
9fd60630c0f4
7e9cdb8f57d1
a37c135957f3
a94d9b6c3f8e
3450d556262e
[root@hssl ~]# docker rmi alpine
Untagged: alpine:latest
Untagged: alpine@sha256:a8560b36e8b8210634f77d9f7f9efd7ffa463e380b75e2e74aff4511df3ef88c
Deleted: sha256:8d591b0b7dea080ea3be9e12ae563eebf9869168ffced1cb25b2470a3d9fe15e
Deleted: sha256:a16e98724c05975ee8c40d8fe389c3481373d34ab20a1cf52ea2accc43f71f4c
[root@hssl ~]#
[root@hssl ~]#
[root@hssl ~]# vim /etc/docker/daemon.json
[root@hssl ~]# systemctl restart docker
[root@hssl ~]# docker system prune -a
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B
[root@hssl ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 1024M 0 rom
nvme0n1 259:0 0 50G 0 disk
├─nvme0n1p1 259:1 0 600M 0 part /boot/efi
├─nvme0n1p2 259:2 0 1G 0 part /boot
└─nvme0n1p3 259:3 0 18.4G 0 part
├─cs-root 253:0 0 16.4G 0 lvm /
└─cs-swap 253:1 0 2G 0 lvm [SWAP]
nvme0n2 259:4 0 20G 0 disk
├─nvme0n2p1 259:5 0 10G 0 part
│ └─dockervg-vpool0_vdata 253:2 0 10G 0 lvm
│ └─dockervg-vpool0-vpool 253:3 0 20G 0 lvm
│ └─dockervg-vdodocker 253:4 0 20G 0 lvm /var/lib/docker-vdo
└─nvme0n2p2 259:8 0 10G 0 part /var/lib/docker-normal
[root@hssl ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 2.7G 0 2.7G 0% /dev/shm
tmpfs 1.1G 9.2M 1.1G 1% /run
efivarfs 256K 32K 225K 13% /sys/firmware/efi/efivars
/dev/mapper/cs-root 17G 6.9G 9.5G 42% /
/dev/nvme0n1p2 960M 485M 476M 51% /boot
/dev/nvme0n1p1 599M 7.0M 592M 2% /boot/efi
tmpfs 545M 36K 545M 1% /run/user/0
/dev/nvme0n2p2 10G 104M 9.9G 2% /var/lib/docker-normal
/dev/mapper/dockervg-vdodocker 20G 176M 20G 1% /var/lib/docker-vdo
[root@hssl ~]#
[root@hssl ~]# docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
6e771e15690e: Pull complete
Digest: sha256:a8560b36e8b8210634f77d9f7f9efd7ffa463e380b75e2e74aff4511df3ef88c
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest
[root@hssl ~]# ./create-container.sh
5f4347e03c83abe4e6ca5659e4ddc5aa590d493d892908b557b5f43779b583c2
0b563e5cb79efc2469010e43b55c02dad39c2a1b417b22b6b9cfd7fa898bd576
b7162b432279aa73fc7100c2abe7ae93d3d60ea89a960f133c89f2c3c23bb6c3
70a549f55cc6252c0dfa5d4b7c6b9a399cacea0e5465742df4054bca1fd531f7
d11c5adfcbd5380c87727016144e801e8e9aa8827586c94c65c855550179547f
[root@hssl ~]# df -h /var/lib/docker-normal/
Filesystem Size Used Avail Use% Mounted on
/dev/nvme0n2p2 10G 2.6G 7.4G 26% /var/lib/docker-normal
[root@hssl ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 1024M 0 rom
nvme0n1 259:0 0 50G 0 disk
├─nvme0n1p1 259:1 0 600M 0 part /boot/efi
├─nvme0n1p2 259:2 0 1G 0 part /boot
└─nvme0n1p3 259:3 0 18.4G 0 part
├─cs-root 253:0 0 16.4G 0 lvm /
└─cs-swap 253:1 0 2G 0 lvm [SWAP]
nvme0n2 259:4 0 20G 0 disk
├─nvme0n2p1 259:5 0 10G 0 part
│ └─dockervg-vpool0_vdata 253:2 0 10G 0 lvm
│ └─dockervg-vpool0-vpool 253:3 0 20G 0 lvm
│ └─dockervg-vdodocker 253:4 0 20G 0 lvm /var/lib/docker-vdo
└─nvme0n2p2 259:8 0 10G 0 part /var/lib/docker-normal
[root@hssl ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 2.7G 0 2.7G 0% /dev/shm
tmpfs 1.1G 9.6M 1.1G 1% /run
efivarfs 256K 32K 225K 13% /sys/firmware/efi/efivars
/dev/mapper/cs-root 17G 6.9G 9.5G 42% /
/dev/nvme0n1p2 960M 485M 476M 51% /boot
/dev/nvme0n1p1 599M 7.0M 592M 2% /boot/efi
tmpfs 545M 36K 545M 1% /run/user/0
/dev/nvme0n2p2 10G 2.6G 7.4G 26% /var/lib/docker-normal
/dev/mapper/dockervg-vdodocker 20G 176M 20G 1% /var/lib/docker-vdo
overlay 10G 2.6G 7.4G 26% /var/lib/docker-normal/overlay2/03e22d7e538ce49e90564a97642fb2faaec1466913d4112ce6edb78ceac423eb/merged
overlay 10G 2.6G 7.4G 26% /var/lib/docker-normal/overlay2/010b084fe2619f70c059ec20e9aca7d50bba8c41895898abdf505cf885337422/merged
overlay 10G 2.6G 7.4G 26% /var/lib/docker-normal/overlay2/00c8507d02cc7f5653be90c300073ae2998b313d35ad26ffa2da0f8feae1e847/merged
overlay 10G 2.6G 7.4G 26% /var/lib/docker-normal/overlay2/3b0fa0a6c9664cb12bff5190a63521f938b403b8e07b04b599f2c8438766d2b1/merged
overlay 10G 2.6G 7.4G 26% /var/lib/docker-normal/overlay2/abb357777a2b0c2f3f52681b1da6351837e0cfd19a7761b4853f68aa64313353/merged
[root@hssl ~]#
[root@hssl ~]# df -h /var/lib/docker-normal Filesystem Size Used Avail Use% Mounted on /dev/nvme0n2p2 10G 137M 9.9G 2% /var/lib/docker-normal
Final test
[root@lab ~]# lvcreate --type vdo -n docker-vdo -L 14G --virtualsize 50G dockervg/nvme0n2p2 --compression y --deduplication y
[root@lab ~]# mkfs.xfs /dev/dockervg/docker-vdo
[root@lab ~]# mkdir -p /var/lib/docker-vdo
[root@lab ~]# mount /dev/dockervg/docker-vdo /var/lib/docker-vdo
[root@lab docker]# cat daemon.json
{
"data-root": "/var/lib/docker-vdo"
}
[root@lab docker]# systemctl restart docker
[root@lab docker]# cd /var/lib/docker-vdo/
[root@lab docker-vdo]# ls
buildkit containers engine-id image network overlay2 plugins runtimes swarm tmp volumes
Checking with vdo
# Check Status before pull
[root@lab ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
dockervg-nvme0n2p2-vpool 14.0G 4.0G 10.0G 29% 99%
[root@lab ~]# du -sh /var/lib/docker-normal /var/lib/docker-vdo
0 /var/lib/docker-normal
160K /var/lib/docker-vdo
# Pull Images
[root@lab ~]# docker pull ubuntu:20.04
[root@lab ~]# docker pull ubuntu:22.04
[root@lab ~]# docker pull ubuntu:latest
[root@lab ~]# docker pull debian:buster
[root@lab ~]# docker pull debian:bullseye
# Check Status
[root@lab ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
dockervg-nvme0n2p2-vpool 14.0G 4.3G 9.7G 31% 45%
[root@lab ~]# du -sh /var/lib/docker-normal /var/lib/docker-vdo
0 /var/lib/docker-normal
492M /var/lib/docker-vdo
# Create container
[root@lab container-script]# vim create-container-vdo.sh
[root@lab container-script]# cat create-container-vdo.sh
for i in {1..10}; do docker run -d ubuntu:20.04 sleep infinity; done
[root@lab container-script]# chmod +x create-container-vdo.sh
[root@lab container-script]# ./create-container-vdo.sh
3a4fdffc0c39c91b68a7559ff758ede92350f98ef62336ba64faf8e3dd26d311
149bb377dcf5f2d93a5901deea9679b3349ead7d74e1efda6e8afbd4f78cf3c9
47dc0c206f6b9ec5e2fd417b793627596382c8daa2a3083c2f02539bf789c829
202dffb8418c6b0d47bc8efa830b8f4f8e869f50c777f75f6043dbf43df30d6f
569a3759a690b7a7e4d013eace4687fc595a64412380af767d13dc361334447c
641b57a38f2b1315a6b7ce6e969c96d77936330888c395411e1186687b0fe263
9c540f05d9ff898926a71a8feb50487dca21e60714e3fa28219f9e3c5e472278
d4b3bd6f9c53141530ba78e882000a509de41b5fc46cbb9b12c1364ac87b6320
a05084ddba42bcb5090d721eba3f8b771829157479144b69cba1845e69579143
43f78a6a0e2dfba7a031fd2921eef09452cd52ecf70e627026658a7a0e255d74
[root@lab ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
dockervg-nvme0n2p2-vpool 14.0G 4.3G 9.7G 31% 45%
Without VDO
[root@lab ~]# vim /etc/docker/daemon.json
[root@lab ~]# cat /etc/docker/daemon.json
{
"data-root": "/var/lib/docker-normal"
}
[root@lab ~]# systemctl restart docker
[root@lab ~]# docker info | grep "Docker Root Dir"
Docker Root Dir: /var/lib/docker-normal
[root@lab ~]#
[root@lab ~]# docker pull ubuntu:20.04
20.04: Pulling from library/ubuntu
ecd83b6c3544: Pull complete
Digest: sha256:8feb4d8ca5354def3d8fce243717141ce31e2c428701f6682bd2fafe15388214
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04
[root@lab ~]# docker pull ubuntu:22.04
22.04: Pulling from library/ubuntu
67b06617bd6b: Pull complete
Digest: sha256:67cadaff1dca187079fce41360d5a7eb6f7dcd3745e53c79ad5efd8563118240
Status: Downloaded newer image for ubuntu:22.04
docker.io/library/ubuntu:22.04
[root@lab ~]# docker pull ubuntu:latest
latest: Pulling from library/ubuntu
2f074dc76c5d: Pull complete
Digest: sha256:6015f66923d7afbc53558d7ccffd325d43b4e249f41a6e93eef074c9505d2233
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
[root@lab ~]# docker pull debian:buster
buster: Pulling from library/debian
6fd6935d93f4: Pull complete
Digest: sha256:58ce6f1271ae1c8a2006ff7d3e54e9874d839f573d8009c20154ad0f2fb0a225
Status: Downloaded newer image for debian:buster
docker.io/library/debian:buster
[root@lab ~]# docker pull debian:bullseye
bullseye: Pulling from library/debian
9ce0153b823c: Pull complete
Digest: sha256:2a7f95bcf104c8410bf4d3b13c52f6e0e4334bb2edf8d80c7f9881e49447effe
Status: Downloaded newer image for debian:bullseye
docker.io/library/debian:bullseye
[root@lab ~]# cd container-script/
[root@lab container-script]# cat create-container-normal.sh
for i in {1..10}; do docker run -d ubuntu:20.04 sleep infinity; done
[root@lab container-script]# ./create-container-normal.sh
696d74996ea7135f58b4088f64243e73932b14382741b6ab040ebd2c5d24539e
47703070d700a81e429d60dc8d7423d8ebad6e813787a05172436ace139bffb1
fbc48da9d5643cbf2c3dab6bce4dfca87462a02eb756dba0072655c920664bfe
a3069697050b0818f2c8ef8d04926bf51cff10d7d14b795bf7088a6c79601508
e91bcadc9dcba310da2493e0792780d9d8dab4526bfa9fcba0588954c052e293
961f77f49a7c1f9926dd408ad8287145fd853f8ed41f1dca248d87af2cefde39
456987c60882c39b42f1833e64db93e5887a32b4cb5e0bf49914f22e7e3ab314
d899c72c9b55c4c3cfe0162dadae3754e51e2b2d9610dff585e05d6202778dfc
4cda1a643e2acb0e8605909b7a56c5b794998e3bc3e4181020b828af94452f4d
d1cad7ef023b980ee38c50408da6ef1b0520c8d6ea80498368c6922ac84a6fea
[root@lab container-script]#
[root@lab container-script]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d1cad7ef023b ubuntu:20.04 "sleep infinity" 3 seconds ago Up 2 seconds gifted_wozniak
4cda1a643e2a ubuntu:20.04 "sleep infinity" 3 seconds ago Up 2 seconds recursing_gould
d899c72c9b55 ubuntu:20.04 "sleep infinity" 3 seconds ago Up 2 seconds suspicious_easley
456987c60882 ubuntu:20.04 "sleep infinity" 3 seconds ago Up 2 seconds gracious_euler
961f77f49a7c ubuntu:20.04 "sleep infinity" 3 seconds ago Up 2 seconds nifty_allen
e91bcadc9dcb ubuntu:20.04 "sleep infinity" 3 seconds ago Up 2 seconds hopeful_sinoussi
a3069697050b ubuntu:20.04 "sleep infinity" 4 seconds ago Up 3 seconds optimistic_turing
fbc48da9d564 ubuntu:20.04 "sleep infinity" 4 seconds ago Up 3 seconds naughty_einstein
47703070d700 ubuntu:20.04 "sleep infinity" 4 seconds ago Up 3 seconds vigorous_morse
696d74996ea7 ubuntu:20.04 "sleep infinity" 4 seconds ago Up 3 seconds admiring_boyd
[root@lab container-script]#
[root@lab container-script]# df -h /var/lib/docker-normal
Filesystem Size Used Avail Use% Mounted on
/dev/nvme0n2p1 15G 644M 15G 5% /var/lib/docker-normal
[root@lab container-script]# du -sh /var/lib/docker-normal/*
96K /var/lib/docker-normal/buildkit
284K /var/lib/docker-normal/containers
4.0K /var/lib/docker-normal/engine-id
1.6M /var/lib/docker-normal/image
76K /var/lib/docker-normal/network
1.2G /var/lib/docker-normal/overlay2
0 /var/lib/docker-normal/plugins
0 /var/lib/docker-normal/runtimes
0 /var/lib/docker-normal/swarm
0 /var/lib/docker-normal/tmp
24K /var/lib/docker-normal/volumes
Comparision
[root@lab ~]# du -sh /var/lib/docker-normal /var/lib/docker-vdo
1.2G /var/lib/docker-normal
493M /var/lib/docker-vdo
[root@lab ~]# du -sh /var/lib/docker-normal /var/lib/docker-vdo
493M /var/lib/docker-normal
1.2G /var/lib/docker-vdo
[root@lab ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
dockervg-nvme0n2p2-vpool 14.0G 4.3G 9.7G 31% 44%
25 May
[root@lab2 ~]# lvcreate --type vdo -n vdodocker -L 14.9G --virtualsize 100G dockervg
[root@lab2 lib]# cat /etc/docker/daemon.json
{
"data-root": "/var/lib/docker-vdo"
}
[root@lab2 lib]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 1024M 0 rom
nvme0n1 259:0 0 25G 0 disk
├─nvme0n1p1 259:1 0 600M 0 part /boot/efi
├─nvme0n1p2 259:2 0 1G 0 part /boot
└─nvme0n1p3 259:3 0 18.4G 0 part
├─cs-root 253:0 0 16.4G 0 lvm /
└─cs-swap 253:1 0 2G 0 lvm [SWAP]
nvme0n2 259:4 0 15G 0 disk
└─nvme0n2p1 259:6 0 15G 0 part
└─dockervg-vpool0_vdata 253:2 0 14.9G 0 lvm
└─dockervg-vpool0-vpool 253:3 0 100G 0 lvm
└─dockervg-vdodocker 253:4 0 100G 0 lvm
[root@lab2 lib]# mkfs.xfs -K /dev/dockervg/vdodocker
meta-data=/dev/dockervg/vdodocker isize=512 agcount=4, agsize=6553600 blks
= sectsz=4096 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
data = bsize=4096 blocks=26214400, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=16384, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@lab2 ~]# tail -1 /etc/fstab
/dev/dockervg/vdodocker /var/lib/docker-vdo xfs defaults 0 0
[root@lab2 ~]# mount -a
mount: (hint) your fstab has been modified, but systemd still uses
the old version; use 'systemctl daemon-reload' to reload.
[root@lab2 ~]# systemctl daemon-reload
[root@lab2 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 1024M 0 rom
nvme0n1 259:0 0 25G 0 disk
├─nvme0n1p1 259:1 0 600M 0 part /boot/efi
├─nvme0n1p2 259:2 0 1G 0 part /boot
└─nvme0n1p3 259:3 0 18.4G 0 part
├─cs-root 253:0 0 16.4G 0 lvm /
└─cs-swap 253:1 0 2G 0 lvm [SWAP]
nvme0n2 259:4 0 15G 0 disk
└─nvme0n2p1 259:6 0 15G 0 part
└─dockervg-vpool0_vdata 253:2 0 14.9G 0 lvm
└─dockervg-vpool0-vpool 253:3 0 100G 0 lvm
└─dockervg-vdodocker 253:4 0 100G 0 lvm /var/lib/docker-vdo