Docker ストレージ (dm.thinpooldev) に LVM シンプールを使用していますが、これまでにメタ データ プールのスペースが不足したことが何度かありました。大きなメタデータを使用してシンプールを再作成するだけで済むので、戦うのは簡単ですが、それをどれだけ大きくするかを推測しているだけです (おそらく推測しすぎです)。
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}