我使用LVM thinpool进行docker存储(dm.thinpooldev),到目前为止我已经在元数据池上用完了几次空间。它很容易打击,因为我可以重新创建具有大型元数据的精简池,但我只是猜测(并且可能过度猜测)它有多大。
有没有人对Docker的元数据的相对大小有任何建议?看起来lvcreate中的默认值不够:
- poolmetadatasize MetadataVolumeSize [bBsSkKmMgG] 设置池的元数据逻辑卷的大小。对于精简池,支持的值介于2MiB和16GiB之间, 和高达16GiB的缓存池。 最小值是根据池的数据大小计算的。精简池的默认值为(Pool_LV_size / Pool_LV_chunk_size * 64B)。默认单位是 兆字节。
我使用的基本命令是:
DISK=/dev/xvdf
VG=docker_vg
LV=docker_pool
pvcreate $DISK
vgcreate $VG $DISK
lvcreate -l 100%FREE --thinpool $LV $VG
或替换任意元数据大小
lvcreate -l 100%FREE --poolmetadatasize 200M --thinpool $LV $VG
[编辑] 好吧,没有回应,所以我现在只用1%。到目前为止,这对我们有用,尽管可能仍然过度配置。
DISK=/dev/xvdf
VG=docker_vg
LV=docker_pool
DOCKER_POOL_METADATA_PERCENTAGE=1
DISK_SIZE=$(blockdev --getsize64 ${DISK})
META_DATA_SIZE=$(echo "scale=0;${DISK_SIZE}*${DOCKER_POOL_METADATA_PERCENTAGE}/100" | bc)
pvcreate ${DISK}
vgcreate ${DOCKER_VG} ${DISK}
# This metadata sizing is in k because bytes doesn't seem to translate properly
lvcreate -l 100%FREE --poolmetadatasize $((${META_DATA_SIZE}/1024))k --thinpool ${DOCKER_POOL} ${DOCKER_VG}