Device mapper direct-lvm 配置
文章目录
本文只介绍Device mapper direct-lvm模式的配置,关于容器的其他知识在后续博客中会有介绍。
以下过程将创建配置为thin pool的logical volume,以用作存储池的备份。 现在假定在/dev/sda3上有一个备用块设备,并具有足够的可用空间来完成任务。该过程还假定Docker守护进程处于stopped状态。
1. 确定要使用的块设备
确保/dev/sda3有足够的空闲空间,同时确认/dev/sda3是空闲分区。
2. Stop Docker
systemctl stop docker
且需要删除所有镜像和容器,有重要资料,请做好备份:rm -rf /var/lib/docker/*
3. 创建 physical volume
 pvcreate /dev/sda3
4. 创建docker volume group
vgcreate docker /dev/sda3
5. 创建能够组成thin-pool的两个logical volume
lvcreate --wipesignatures y -n thinpool docker -l 95%VG
lvcreate --wipesignatures y -n thinpoolmeta docker -l 1%VG
6. 创建thin-pool
lvconvert -y --zero n -c 64K --thinpool docker/thinpool --poolmetadata docker/thinpoolmeta
7. 配置thin-pool的自动扩展
修改lvm配置文件vim /etc/lvm/profile/docker-thinpool.profile
内容如下:1
2
3
4activation{
   thin_pool_autoextend_threshold=80
   thin_pool_autoextend_percent=20
}
8. 激活配置文件
lvchange --metadataprofiledocker-thinpool docker/thinpool
9. 启用对主机上 logical volume的监视
lvs -o+seg_monitor
10. 使用脚本配置devicemapper storage driver
vim /etc/docker/daemon.json
内容如下:1
2
3
4
5
6
7
8
9{
    "storage-driver": "devicemapper",
    "storage-opts": [
    "dm.thinpooldev=/dev/mapper/docker-thinpool",
    "dm.use_deferred_removal=true",
    "dm.use_deferred_deletion=true",
    "dm.fs=ext4"
    ]
}
11. 开启Docker
service docker start
12. 验证Docker是否正在使用新的配置
docker info1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 17.03.1-ce
Storage Driver: devicemapper
 Pool Name: docker-thinpool
 Pool Blocksize: 524.3 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: ext4
 Data file:
 Metadata file:
 Data Space Used: 19.92 MB
 Data Space Total: 102 GB
 Data Space Available: 102 GB
 Metadata Space Used: 147.5 kB
 Metadata Space Total: 1.07 GB
 Metadata Space Available: 1.069 GB
 Thin Pool Minimum Free Space: 10.2 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: true
 Deferred Deletion Enabled: true
 Deferred Deleted Device Count: 0
 Library Version: 1.02.135-RHEL7 (2016-11-16)
如果Docker配置正确,Data file和Metadata file将是空白的,pool name将是docker-thinpool。
如果显示不对,重启主机后再测试。
参考资料: