diff --git a/cmd/frostfs-node/config.go b/cmd/frostfs-node/config.go index 935aefe7f..45ddeec83 100644 --- a/cmd/frostfs-node/config.go +++ b/cmd/frostfs-node/config.go @@ -174,6 +174,7 @@ type subStorageCfg struct { // blobovnicza-specific size uint64 width uint64 + leafWidth uint64 openedCacheSize int } @@ -288,6 +289,7 @@ func (a *applicationConfiguration) setShardStorageConfig(newConfig *shardCfg, ol sCfg.size = sub.Size() sCfg.depth = sub.ShallowDepth() sCfg.width = sub.ShallowWidth() + sCfg.leafWidth = sub.LeafWidth() sCfg.openedCacheSize = sub.OpenedCacheSize() case fstree.Type: sub := fstreeconfig.From((*config.Config)(storagesCfg[i])) diff --git a/cmd/frostfs-node/config/engine/config_test.go b/cmd/frostfs-node/config/engine/config_test.go index acf8c2a60..b8e95db6d 100644 --- a/cmd/frostfs-node/config/engine/config_test.go +++ b/cmd/frostfs-node/config/engine/config_test.go @@ -94,6 +94,7 @@ func TestEngineSection(t *testing.T) { require.EqualValues(t, 1, blz.ShallowDepth()) require.EqualValues(t, 4, blz.ShallowWidth()) require.EqualValues(t, 50, blz.OpenedCacheSize()) + require.EqualValues(t, 10, blz.LeafWidth()) require.Equal(t, "tmp/0/blob", ss[1].Path()) require.EqualValues(t, 0644, ss[1].Perm()) @@ -142,6 +143,7 @@ func TestEngineSection(t *testing.T) { require.EqualValues(t, 1, blz.ShallowDepth()) require.EqualValues(t, 4, blz.ShallowWidth()) require.EqualValues(t, 50, blz.OpenedCacheSize()) + require.EqualValues(t, 10, blz.LeafWidth()) require.Equal(t, "tmp/1/blob", ss[1].Path()) require.EqualValues(t, 0644, ss[1].Perm()) diff --git a/cmd/frostfs-node/config/engine/shard/blobstor/blobovnicza/config.go b/cmd/frostfs-node/config/engine/shard/blobstor/blobovnicza/config.go index 5595f10bb..a780ea927 100644 --- a/cmd/frostfs-node/config/engine/shard/blobstor/blobovnicza/config.go +++ b/cmd/frostfs-node/config/engine/shard/blobstor/blobovnicza/config.go @@ -102,3 +102,13 @@ func (x *Config) OpenedCacheSize() int { func (x *Config) BoltDB() *boltdbconfig.Config { return (*boltdbconfig.Config)(x) } + +// LeafWidth returns the value of "leaf_width" config parameter. +// +// Returns 0 if the value is not a positive number. +func (x *Config) LeafWidth() uint64 { + return config.UintSafe( + (*config.Config)(x), + "leaf_width", + ) +} diff --git a/config/example/node.env b/config/example/node.env index 3abb744be..7ed818ef9 100644 --- a/config/example/node.env +++ b/config/example/node.env @@ -121,6 +121,7 @@ FROSTFS_STORAGE_SHARD_0_BLOBSTOR_0_SIZE=4194304 FROSTFS_STORAGE_SHARD_0_BLOBSTOR_0_DEPTH=1 FROSTFS_STORAGE_SHARD_0_BLOBSTOR_0_WIDTH=4 FROSTFS_STORAGE_SHARD_0_BLOBSTOR_0_OPENED_CACHE_CAPACITY=50 +FROSTFS_STORAGE_SHARD_0_BLOBSTOR_0_LEAF_WIDTH=10 ### FSTree config FROSTFS_STORAGE_SHARD_0_BLOBSTOR_1_TYPE=fstree FROSTFS_STORAGE_SHARD_0_BLOBSTOR_1_PATH=tmp/0/blob @@ -167,6 +168,7 @@ FROSTFS_STORAGE_SHARD_1_BLOBSTOR_0_SIZE=4194304 FROSTFS_STORAGE_SHARD_1_BLOBSTOR_0_DEPTH=1 FROSTFS_STORAGE_SHARD_1_BLOBSTOR_0_WIDTH=4 FROSTFS_STORAGE_SHARD_1_BLOBSTOR_0_OPENED_CACHE_CAPACITY=50 +FROSTFS_STORAGE_SHARD_1_BLOBSTOR_0_LEAF_WIDTH=10 ### FSTree config FROSTFS_STORAGE_SHARD_1_BLOBSTOR_1_TYPE=fstree FROSTFS_STORAGE_SHARD_1_BLOBSTOR_1_PATH=tmp/1/blob diff --git a/config/example/node.json b/config/example/node.json index 6e995112e..a480c4a0e 100644 --- a/config/example/node.json +++ b/config/example/node.json @@ -168,7 +168,8 @@ "size": 4194304, "depth": 1, "width": 4, - "opened_cache_capacity": 50 + "opened_cache_capacity": 50, + "leaf_width": 10 }, { "type": "fstree", @@ -218,7 +219,8 @@ "size": 4194304, "depth": 1, "width": 4, - "opened_cache_capacity": 50 + "opened_cache_capacity": 50, + "leaf_width": 10 }, { "type": "fstree", diff --git a/config/example/node.yaml b/config/example/node.yaml index acce3741a..39fb7714d 100644 --- a/config/example/node.yaml +++ b/config/example/node.yaml @@ -145,6 +145,7 @@ storage: depth: 1 # max depth of object tree storage in key-value DB width: 4 # max width of object tree storage in key-value DB opened_cache_capacity: 50 # maximum number of opened database files + leaf_width: 10 # max count of key-value DB on leafs of object tree storage - perm: 0644 # permissions for blobstor files(directories: +x for current user and group) depth: 5 # max depth of object tree storage in FS