4

我正在使用 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}
4

0 回答 0