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 info
1
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。
如果显示不对,重启主机后再测试。
参考资料: