LEIL-CHUNKSERVER.CFG(5)
π¦π LEIL-CHUNKSERVER.CFG(5) π π¦
β¨ NAME β¨
leil-chunkserver.cfgβ the main configuration file for leil-chunkserver π«Ά
πΈ DESCRIPTION πΈ
Okay so bestie, leil-chunkserver.cfg is the file that contains the configuration of the LeilFS chunkserver process. Thatβs the whole vibe. π
π SYNTAX π
The syntax is literally this:
OPTION = VALUE
Lines starting with # character are ignored. Yes, queen, comments are free. π
π OPTIONS π
Configuration options, coming at you one by one, no skips:
DATA_PATHβ where to store files with usage statistics and the daemon lock file ποΈLABELβ the label of this chunkserver, for tiering π·οΈWORKING_USERβ user to run daemon as π€WORKING_GROUPβ group to run daemon as. Itβs optional β if empty, then the default user group will be used π«ΆSYSLOG_IDENTβ name of process to place in syslog messages. Default isleil-chunkserverπLOCK_MEMORYβ whether to performmlockall()to avoid swapping out theleil-chunkserverprocess. Default is0, i.e. no πLIMIT_GLIBC_MALLOC_ARENASβ Linux only: limit glibc malloc arenas to the given value β prevents using a huge amount of virtual memory. This can influence performance by reducing memory fragmentation and improving cache locality, but it may also lead to contention and reduced parallelism in multi-threaded applications. Use it in constrained memory environments; recommended values are4or8. Default is0: disabled or let glibc decide π§MALLOC_TRIM_INTERVALβ interval in seconds at which the chunkserver will attempt to release unused memory back to the OS usingmalloc_trim(). This can help reduce the processβs memory footprint by returning free memory to the system more frequently. Set to0to disable memory trimming entirely. Default is0,0= disabled π§ΉNICE_LEVELβ nice level to run daemon with. Default is-19if possible; note: process must be started as root to increase priority β‘MASTER_HOSTβ address of LeilFS master host to connect with. Default isleil-masterπMASTER_PORTβ number of LeilFS master port to connect with. Default is9420πCLUSTER_IDβ only connect to metadata servers with thisCLUSTER_ID. Prevents accidental connections to wrong metadata servers. Default isdefaultπ‘οΈMASTER_RECONNECTION_DELAYβ delay in seconds before trying to reconnect to the master server after disconnection. Default is5β³MASTER_TIMEOUTβ timeout, in seconds, for the master server connection. Default is60, minimum is0.01β±οΈMASTER_NR_OF_WORKERSβ number of threads that the connection to master may use to process operations on chunks, like create, duplicate, replicate and truncate. Default is10, minimum is2π§΅MASTER_REPLICATION_NR_OF_WORKERSβ number of threads that the connection to master may use to process replications operations on chunks. Default is5, minimum in1πBIND_HOSTβ local address to use for connecting with the master server. Default is*, i.e. default local address πCSSERV_LISTEN_HOSTβ IP address to listen on for client (mount) connections.*means any πCSSERV_LISTEN_PORTβ port to listen on for client (mount) connections. Default is9422πͺHDD_CONF_FILENAMEβ alternative name ofleil-hdd.cfgfile πHDD_LEAVE_SPACE_DEFAULTβ free space threshold to set volume as 100% utisaued when there is less than the given amount of free space left. Default is"4GiB". This number is always added to the used disk space reported by chunkserver πΎHDD_TEST_FREQβ chunk test period in seconds. Default is10π©ΊHDD_CHECK_CRC_WHEN_READINGβ whether to check the CRC on every read operation. Default is1πHDD_CHECK_CRC_WHEN_WRITINGβ whether to check the CRC on every write operation. The safest and recommended value is1; disable it only to test maximum throughput. Default is1βοΈHDD_ADVISE_NO_CACHEβ whether to remove each chunk from page when closing it to reduce cache pressure generated by chunkserver. Default is0, i.e. no π§HDD_CHUNK_BULK_SIZEβ ADVANCED:: number of chunks to process in a single bulk operation when reporting chunks to the master (e.g., when registering chunks, reporting new chunks, or reporting damaged or lost chunks). Reloadable. Default is1000, minimum is1, maximum is100000π¦HDD_PUNCH_HOLESβ if enabled then chunkserver detects zero values in chunk data and frees corresponding file blocks, decreasing file system usage. This option works only on Linux with file systems supporting punching holes (XFS,ext4,Btrfs,tmpfs) π³οΈENABLE_LOAD_FACTORβ if enabled, chunkserver will send periodical reports of its I/O load to master, which will be taken into consideration when picking chunkservers for I/O operations πREPLICATION_BANDWIDTH_LIMIT_KBPSβ limit how many kilobytes can be replicated from other chunkservers to this chunkserver in every second. By default undefined, i.e. no limits π¦NR_OF_NETWORK_WORKERSβ number of threads which handle, in a round-robin manner, connections with clients. Default is4; these threads are responsible for reading from sockets and coping data from internal buffers to sockets π§βπ»NR_OF_HDD_WORKERS_PER_NETWORK_WORKERβ number of threads that each network worker may use to do disk operations like opening chunks, reading or writing them. Default is16π½BGJOBSCNT_PER_NETWORK_WORKERβ maximum number of jobs that each network worker may use for disk operations. Default is4000π§°POLL_TIMEOUT_MSβ maximum amount of time in milliseconds that the polling operation will wait for events. In the chunkservers, the same value is applied for the events loop and for the network worker threads. Smaller values could reduce latency at the cost of CPU usage. Default:50β²οΈMAX_BLOCKS_PER_HDD_WRITE_JOBβ maximum number of blocks written to the device in a single write job. If possible, will try to make a singlepwritecall. Default is16, minimum is1, maximum is64π§±MAX_BLOCKS_PER_HDD_READ_JOBβ maximum number of blocks read from the device in a single read job. If possible, will try to make a singlepreadcall. Default is16, minimum is1πMAX_PARALLEL_HDD_READ_JOBS_PER_CS_ENTRYβ maximum number of read jobs processed in parallel per client connection. Default is1πMAX_BUFFERS_POOL_SIZE_MBβ maximum size of the buffers pool used for read, write and replicate operations, in megabytes. Consider decreasing it if the system is running out of memory, or increasing it to improve performance if there is enough memory available. Unused buffers are regularly freed. Default is512π«§READ_AHEAD_KBβ additional number of kilobytes which should be passed toposix_fadvise(POSIX_FADV_WILLNEED)before reading data from a chunk. Default is0, i.e. useposix_fadviseonly with the amount of data that is really needed; the value is aligned down to64 KiBπMAX_READ_BEHIND_KBβ try to fix out-of-order read requests; the value tells how much of skipped data to read if an offset of some read operation is greater than the offset where the previous operation finished. Default is0, i.e. donβt read any skipped data; the value is aligned down to64 KiBπPERFORM_FSYNCβ callfsync()after a chunk is modified. In the case of individual write jobs it does not apply, but when closing the chunks. Default is1, i.e. enabled π½STAT_CHUNKS_AT_DISK_SCANβ verify that chunk metadata and data parts exists at scan time. If set to1, the data part is also checked to be multiple ofSFSBLOCKSIZE. Disabling this option accelerates the scan process, but does not check the chunk files. Warning: use it with caution, only in scenarios where a fast chunkserver restart is needed. Default is1, i.e. enabled π
β οΈ Warning: STAT_CHUNKS_AT_DISK_SCAN should be used with caution, only in scenarios where a fast chunkserver restart is needed. It accelerates the scan process but does not check the chunk files. Do not just vibe-check this one blindly, bestie. π
REPLICATION_TOTAL_TIMEOUT_MSβ total timeout for single replication operation. Replications that take longer than that are considered failed and are immediately aborted. Default:60000β°REPLICATION_CONNECTION_TIMEOUT_MSβ connection for single replication operation. If connecting to another chunkserver takes longer than this timeout, the operation is considered failed and is immediately aborted. Default:1000π‘REPLICATION_WAVE_TIMEOUT_MSβ ADVANCED:: timeout for single wave in replication. After this timeout, next wave of read requests is sent to other chunkservers. Default:500πPLUGINS_DIRβ directory to search for Chunkserver plugins, as an absolute path. When set, the plugin manager will search this directory first. If not set, then it will search in usual plugin locations, likePLUGINS_PATH/chunkserver(PLUGINS_PATHis defined at build time),/usr/local/lib/saunafs/plugins/chunkserver, and/usr/lib/saunafs/plugins/chunkserver. Default is empty string, i.e. disabled πCHUNK_TRASH_ENABLEDβ enables or disables the chunk trash feature. When enabled, deleted chunks are moved to a trash directory instead of being immediately removed. Default:0ποΈCHUNK_TRASH_EXPIRATION_SECONDSβ specifies the timeout in seconds for chunks to remain in the trash before being permanently deleted. Default:259200β³CHUNK_TRASH_FREE_SPACE_THRESHOLD_GBβ sets the available space threshold in gigabytes. If the available space on the disk falls below this threshold, the system will start deleting older chunks from the trash to free up space. A suggested value is about the 15% of the capacity of the smaller configured disk. Default:0π½CHUNK_TRASH_GC_BATCH_SIZEβ defines the maximum bulk size per disk for the garbage collector when processing chunks in the trash. This value is used when no I/O pressure is detected and is dynamically scaled down based on current disk load. Default:500β»οΈCHUNK_TRASH_GC_SPACE_RECOVERY_BATCH_SIZEβ[ADVANCED]the number of files to remove from the trash in a single GC cycle, in case the disk is full and space needs to be recovered. Default:100π§ΉCHUNK_TRASH_GC_PURGE_WORKERS_NRβ the number of workers purging files in parallel. Default:5π―LOG_LEVELβ setup logging. Uses the environment variableSAUNAFS_LOG_LEVELor config valueLOG_LEVELto determine logging level. Valid log levels are:tracedebuginfowarnorwarningerrorerrorcritorcriticaloff
π
IO_PRIORITY_MODE (EXPERIMENTAL) π
okay so this one defines the prioritization scheme for IO jobs, i.e. reads and writes from drives. the available modes are:
FIFOβ prioritizes the IO jobs that were enqueued first. first come, first served energy β¨SWITCHβ alternates read and write jobs (interleaving) so one class of IO doesn't starve the other. Not reloadable.
Default: FIFO π (that's the default, bestie)
π«§ WRITE_BUFFERING_SIZE_MB (EXPERIMENTAL) π«§
Caps the amount of data in MiB the chunkserver "buffers" β like, it fast-replies to the client as if it was synced to the drives, but it was only read from the network and stored in memory. Similar to page cache. This feature has the following constraints:
- does not work on standard (replica) chunks.
- must have chunkserver side chunk locking enabled (see
USE_CHUNKSERVER_SIDE_CHUNK_LOCKin master config). - it is also suggested to set
IO_PRIORITY_MODEtoSWITCH.
The PERFORM_FSYNC continues working as intended, as it affects the time spent closing of the written chunk. Can provide better results for writes in general, but may significantly improve performance for small files. Reloadable. (Default: 0)
π TLS_CERT_FILE (EXPERIMENTAL) π
Path to the TLS certificate file the chunk server will use for TLS connections. There is no default value. ngl, you gotta hand it over.
π TLS_KEY_FILE (EXPERIMENTAL) π
Path to the TLS private key file the chunk server will use for TLS connections. There is no default value. again, no default β bring your own key π
π‘οΈ TLS_CA_CERT_FILE (EXPERIMENTAL) π‘οΈ
Path to the trusted CA certificate which is used to authenticate through TLS to the master server. There is no default value. yep, you provide this too β¨
π REPORTING BUGS π
Report bugs to the GitHub repository https://github.com/leil-io/leilfs as an issue. periodt. π«Ά
π COPYRIGHT π
Copyright 2008-2009 Gemius SA
Copyright 2013-2019 Skytechnology sp. z o.o.
Copyright 2023-2024 Leil Storage OΓ
LeilFS is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3.
LeilFS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with LeilFS. If not, see http://www.gnu.org/licenses/.
π SEE ALSO π
and that's the whole manual vibe for LEIL-CHUNKSERVER.CFG(5), dated 1980-01-01 β stay slaying, bestie π
β¨π
π¦ where this page comes from
- nixpkgs unstable: saunafs 5.12.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms