This section contains detailed FrostFS Storage node configuration file description
including default config values and some tips to set up configurable values.
There are some custom types used for brevity:
duration -- string consisting of a number and a suffix. Suffix examples include s (seconds), m (minutes), ms (milliseconds).
size -- string consisting of a number and a suffix. Suffix examples include b (bytes, default), k (kibibytes), m (mebibytes), g (gibibytes).
file mode -- octal number. Usually, it starts with 0 and contain 3 digits, corresponding to file access permissions for user, group and others.
public key -- hex-encoded public key
hash160 -- hex-encoded 20-byte hash of a deployed contract.
Contains override values for FrostFS side-chain contract hashes. Most of the time contract
hashes are fetched from the NNS contract, so this section can be omitted.
Sidechain cache TTL value (min interval between similar calls). Negative value disables caching. Cached entities: containers, container lists, eACL tables.
Time interval between the attempts to connect to the highest priority RPC node if the connection is not established yet.
ape_chain_cache_size
int
10000
Size of the morph cache for APE chains.
rpc_endpoint subsection
Parameter
Type
Default value
Description
address
string
WebSocket N3 endpoint.
priority
int
1
Priority of an endpoint. Endpoint with a higher priority (lower configuration value) has more chance of being used. Endpoints with equal priority are iterated over randomly; a negative priority is interpreted as 1.
storage section
Local storage engine configuration.
Parameter
Type
Default value
Description
shard_pool_size
int
20
Pool size for shard workers. Limits the amount of concurrent PUT operations on each shard.
shard_ro_error_threshold
int
0
Maximum amount of storage errors to encounter before shard automatically moves to Degraded or ReadOnly mode.
low_mem
bool
false
Reduce memory consumption by reducing performance.
Contains configuration for each shard. Keys must be consecutive numbers starting from zero.
default subsection has the same format and specifies defaults for missing values.
The following table describes configuration for each shard.
Parameter
Type
Default value
Description
compress
bool
false
Flag to enable compression.
compression_exclude_content_types
[]string
List of content-types to disable compression for. Content-type is taken from Content-Type object attribute. Each element can contain a star * as a first (last) character, which matches any prefix (suffix).
compression_estimate_compressibility
bool
false
If true, then noramalized compressibility estimation is used to decide compress data or not.
compression_estimate_compressibility_threshold
float
0.1
Normilized compressibility estimate threshold: data will compress if estimation if greater than this value.
mode
string
read-write
Shard Mode. Possible values: read-write, read-only, degraded, degraded-read-only, disabled
Default permission for created files and directories.
fstree type options
Parameter
Type
Default value
Description
path
string
Path to the root of the blobstor.
perm
file mode
0660
Default permission for created files and directories.
depth
int
4
File-system tree depth.
blobovnicza type options
Parameter
Type
Default value
Description
path
string
Path to the root of the blobstor.
perm
file mode
0660
Default permission for created files and directories.
size
size
1 G
Maximum size of a single blobovnicza
depth
int
2
Blobovnicza tree depth.
width
int
16
Blobovnicza tree width.
opened_cache_capacity
int
16
Maximum number of simultaneously opened blobovniczas.
opened_cache_ttl
duration
0
TTL in cache for opened blobovniczas(disabled by default). In case of heavy random-read and 10 shards each with 10_000 databases and accessing 400 objects per-second we will access each db approximately once per ((10 * 10_000 / 400) = 250 seconds <= 300 seconds = 5 min). Also take in mind that in this scenario they will probably be closed earlier because of the cache capacity, so bigger values are likely to be of no use.
opened_cache_exp_interval
duration
15s
Cache cleanup interval for expired blobovnicza's.
init_worker_count
int
5
Maximum number of concurrent initialization workers.
rebuild_drop_timeout
duration
10s
Timeout before drop empty blobovnicza file during rebuild.
gc subsection
Contains garbage-collection service configuration. It iterates over the blobstor and removes object the node no longer needs.
Timeout for dialing connections to other storage or inner ring nodes.
stream_timeout
duration
15s
Timeout for individual operations in a streaming RPC.
reconnect_timeout
duration
30s
Time to wait before reconnecting to a failed node.
policer section
Configuration for the Policer service. It ensures that object is stored according to the intended policy.
policer:head_timeout:15s
Parameter
Type
Default value
Description
head_timeout
duration
5s
Timeout for performing the HEAD operation.
replicator section
Configuration for the Replicator service.
replicator:put_timeout:15spool_size:10
Parameter
Type
Default value
Description
put_timeout
duration
5s
Timeout for performing the PUT operation.
pool_size
int
Equal to object.put.remote_pool_size
Maximum amount of concurrent replications.
object section
Contains object-service related parameters.
object:put:remote_pool_size:100
Parameter
Type
Default value
Description
delete.tombstone_lifetime
int
5
Tombstone lifetime for removed objects in epochs.
put.remote_pool_size
int
10
Max pool size for performing remote PUT operations. Used by Policer and Replicator services.
put.local_pool_size
int
10
Max pool size for performing local PUT operations. Used by Policer and Replicator services.
runtime section
Contains runtime parameters.
runtime:soft_memory_limit:1GB
Parameter
Type
Default value
Description
soft_memory_limit
size
0
Soft memory limit for the runtime. Zero or no value stands for no limit. If GOMEMLIMIT environment variable is set, the value from the configuration file will be ignored.