of the output. The number is expressed in 512-k sectors. A 100G file has
209715200 512-k sectors. If you double this number to 200G, you get
419430400 512-k sectors.
d. Reload the thin pool with the new sector number, using the following
three `dmsetup` commands.
```console
$ sudo dmsetup suspend docker-8:1-123141-pool
$ sudo dmsetup reload docker-8:1-123141-pool --table '0 419430400 thin-pool 7:1 7:0 128 32768 1 skip_block_zeroing'
$ sudo dmsetup resume docker-8:1-123141-pool
```
#### Resize a direct-lvm thin pool
To extend a `direct-lvm` thin pool, you need to first attach a new block device
to the Docker host, and make note of the name assigned to it by the kernel. In
this example, the new block device is `/dev/xvdg`.
Follow this procedure to extend a `direct-lvm` thin pool, substituting your
block device and other parameters to suit your situation.
1. Gather information about your volume group.
Use the `pvdisplay` command to find the physical block devices currently in
use by your thin pool, and the volume group's name.
```console
$ sudo pvdisplay |grep 'VG Name'
PV Name /dev/xvdf
VG Name docker
```
In the following steps, substitute your block device or volume group name as
appropriate.
2. Extend the volume group, using the `vgextend` command with the `VG Name`
from the previous step, and the name of your **new** block device.
```console
$ sudo vgextend docker /dev/xvdg
Physical volume "/dev/xvdg" successfully created.
Volume group "docker" successfully extended
```
3. Extend the `docker/thinpool` logical volume. This command uses 100% of the
volume right away, without auto-extend. To extend the metadata thinpool
instead, use `docker/thinpool_tmeta`.
```console
$ sudo lvextend -l+100%FREE -n docker/thinpool
Size of logical volume docker/thinpool_tdata changed from 95.00 GiB (24319 extents) to 198.00 GiB (50688 extents).
Logical volume docker/thinpool_tdata successfully resized.
```
4. Verify the new thin pool size using the `Data Space Available` field in the
output of `docker info`. If you extended the `docker/thinpool_tmeta` logical
volume instead, look for `Metadata Space Available`.
```bash
Storage Driver: devicemapper
Pool Name: docker-thinpool
Pool Blocksize: 524.3 kB
Base Device Size: 10.74 GB
Backing Filesystem: xfs
Data file:
Metadata file:
Data Space Used: 212.3 MB
Data Space Total: 212.6 GB
Data Space Available: 212.4 GB
Metadata Space Used: 286.7 kB
Metadata Space Total: 1.07 GB
Metadata Space Available: 1.069 GB
<...>
```
### Activate the `devicemapper` after reboot
If you reboot the host and find that the `docker` service failed to start,
look for the error, "Non existing device". You need to re-activate the
logical volumes with this command:
```console
$ sudo lvchange -ay docker/thinpool
```
## How the `devicemapper` storage driver works
> [!WARNING]
> Do not directly manipulate any files or directories within
> `/var/lib/docker/`. These files and directories are managed by Docker.
Use the `lsblk` command to see the devices and their pools, from the operating
system's point of view:
```console
$ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 100G 0 disk
├─docker-thinpool_tmeta 253:0 0 1020M 0 lvm
│ └─docker-thinpool 253:2 0 95G 0 lvm
└─docker-thinpool_tdata 253:1 0 95G 0 lvm
└─docker-thinpool 253:2 0 95G 0 lvm
```
Use the `mount` command to see the mount-point Docker is using:
```console
$ mount |grep devicemapper
/dev/xvda1 on /var/lib/docker/devicemapper type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
```
When you use `devicemapper`, Docker stores image and layer contents in the