1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-10-25 03:33:16 +03:00

config: add allocation/pvmove_max_segment_size_mb

Introduce a new configuration setting `allocation/pvmove_max_segment_size_mb`
that limits the maximum size (in MiB) of a segment mirrored at once during
pvmove.
This commit is contained in:
Zdenek Kabelac
2025-10-08 16:05:57 +02:00
parent a813ef476e
commit fd13a02f4e
3 changed files with 22 additions and 0 deletions

View File

@@ -579,6 +579,17 @@ allocation {
# Using cache pool with more chunks may degrade cache performance.
# This configuration option does not have a default value defined.
# Configuration option allocation/pvmove_max_segment_size_mb.
# Maximum size in MiB of segments to mirror at once during pvmove.
# When pvmove needs to move large segments, it will split them into
# smaller chunks of this size, mirror each chunk, and update metadata
# between chunks. This prevents mirroring excessively large amounts
# of data at once. A value of 0 (default) means no limit - the entire
# segment will be mirrored at once. Setting this to e.g. 10240 will
# limit each mirroring operation to 10GiB chunks.
# This configuration option has an automatic default value.
# pvmove_max_segment_size_mb = 0
# Configuration option allocation/thin_pool_metadata_require_separate_pvs.
# Thin pool metadata and data will always use different PVs.
# This configuration option has an automatic default value.

View File

@@ -676,6 +676,15 @@ cfg(allocation_cache_pool_max_chunks_CFG, "cache_pool_max_chunks", allocation_CF
"For cache target v1.9 the recommended maximum is 1000000 chunks.\n"
"Using cache pool with more chunks may degrade cache performance.\n")
cfg(allocation_pvmove_max_segment_size_mb_CFG, "pvmove_max_segment_size_mb", allocation_CFG_SECTION, CFG_DEFAULT_COMMENTED, CFG_TYPE_INT, DEFAULT_PVMOVE_MAX_SEGMENT_SIZE_MB, vsn(2, 3, 36), NULL, 0, NULL,
"Maximum size in MiB of segments to mirror at once during pvmove.\n"
"When pvmove needs to move large segments, it will split them into\n"
"smaller chunks of this size, mirror each chunk, and update metadata\n"
"between chunks. This prevents mirroring excessively large amounts\n"
"of data at once. A value of 0 (default) means no limit - the entire\n"
"segment will be mirrored at once. Setting this to e.g. 10240 will\n"
"limit each mirroring operation to 10GiB chunks.\n")
cfg(allocation_thin_pool_metadata_require_separate_pvs_CFG, "thin_pool_metadata_require_separate_pvs", allocation_CFG_SECTION, CFG_DEFAULT_COMMENTED, CFG_TYPE_BOOL, DEFAULT_THIN_POOL_METADATA_REQUIRE_SEPARATE_PVS, vsn(2, 2, 89), NULL, 0, NULL,
"Thin pool metadata and data will always use different PVs.\n")

View File

@@ -161,6 +161,8 @@
#define DEFAULT_CACHE_METADATA_FORMAT CACHE_METADATA_FORMAT_UNSELECTED /* Autodetect */
#define DEFAULT_CACHE_MODE "writethrough"
#define DEFAULT_PVMOVE_MAX_SEGMENT_SIZE_MB 0
/* VDO defaults */
#define DEFAULT_VDO_USE_COMPRESSION (true)