2022-01-29 23:43:22 +03:00
|
|
|
|
[Документация](../../README-ru.md#документация) → [Конфигурация](../config.ru.md) → Изменяемые параметры OSD
|
|
|
|
|
|
|
|
|
|
-----
|
|
|
|
|
|
|
|
|
|
[Read in English](osd.en.md)
|
|
|
|
|
|
|
|
|
|
# Изменяемые параметры OSD
|
|
|
|
|
|
|
|
|
|
Данные параметры используются только OSD, но, в отличие от дисковых параметров,
|
|
|
|
|
не фиксируются в момент инициализации дисков OSD и могут быть изменены в любой
|
2023-04-21 02:18:37 +03:00
|
|
|
|
момент с помощью перезапуска OSD, а некоторые и без перезапуска, с помощью
|
|
|
|
|
изменения конфигурации в etcd.
|
2022-01-29 23:43:22 +03:00
|
|
|
|
|
|
|
|
|
- [etcd_report_interval](#etcd_report_interval)
|
2023-10-27 14:09:26 +03:00
|
|
|
|
- [etcd_stats_interval](#etcd_stats_interval)
|
2022-01-29 23:43:22 +03:00
|
|
|
|
- [run_primary](#run_primary)
|
|
|
|
|
- [osd_network](#osd_network)
|
|
|
|
|
- [bind_address](#bind_address)
|
|
|
|
|
- [bind_port](#bind_port)
|
|
|
|
|
- [autosync_interval](#autosync_interval)
|
|
|
|
|
- [autosync_writes](#autosync_writes)
|
|
|
|
|
- [recovery_queue_depth](#recovery_queue_depth)
|
2023-12-30 19:48:35 +03:00
|
|
|
|
- [recovery_sleep_us](#recovery_sleep_us)
|
2022-12-30 01:53:29 +03:00
|
|
|
|
- [recovery_pg_switch](#recovery_pg_switch)
|
2022-01-29 23:43:22 +03:00
|
|
|
|
- [recovery_sync_batch](#recovery_sync_batch)
|
|
|
|
|
- [readonly](#readonly)
|
|
|
|
|
- [no_recovery](#no_recovery)
|
|
|
|
|
- [no_rebalance](#no_rebalance)
|
|
|
|
|
- [print_stats_interval](#print_stats_interval)
|
|
|
|
|
- [slow_log_interval](#slow_log_interval)
|
2022-06-04 00:37:52 +03:00
|
|
|
|
- [inode_vanish_time](#inode_vanish_time)
|
2022-01-29 23:43:22 +03:00
|
|
|
|
- [max_write_iodepth](#max_write_iodepth)
|
|
|
|
|
- [min_flusher_count](#min_flusher_count)
|
|
|
|
|
- [max_flusher_count](#max_flusher_count)
|
|
|
|
|
- [inmemory_metadata](#inmemory_metadata)
|
|
|
|
|
- [inmemory_journal](#inmemory_journal)
|
2023-08-06 01:14:44 +03:00
|
|
|
|
- [data_io](#data_io)
|
|
|
|
|
- [meta_io](#meta_io)
|
|
|
|
|
- [journal_io](#journal_io)
|
2022-01-29 23:43:22 +03:00
|
|
|
|
- [journal_sector_buffer_count](#journal_sector_buffer_count)
|
|
|
|
|
- [journal_no_same_sector_overwrites](#journal_no_same_sector_overwrites)
|
|
|
|
|
- [throttle_small_writes](#throttle_small_writes)
|
|
|
|
|
- [throttle_target_iops](#throttle_target_iops)
|
|
|
|
|
- [throttle_target_mbs](#throttle_target_mbs)
|
|
|
|
|
- [throttle_target_parallelism](#throttle_target_parallelism)
|
|
|
|
|
- [throttle_threshold_us](#throttle_threshold_us)
|
|
|
|
|
- [osd_memlock](#osd_memlock)
|
2023-04-22 02:44:10 +03:00
|
|
|
|
- [auto_scrub](#auto_scrub)
|
2023-05-21 12:52:30 +03:00
|
|
|
|
- [no_scrub](#no_scrub)
|
2023-04-22 02:44:10 +03:00
|
|
|
|
- [scrub_interval](#scrub_interval)
|
|
|
|
|
- [scrub_queue_depth](#scrub_queue_depth)
|
|
|
|
|
- [scrub_sleep](#scrub_sleep)
|
|
|
|
|
- [scrub_list_limit](#scrub_list_limit)
|
2023-05-21 12:15:37 +03:00
|
|
|
|
- [scrub_find_best](#scrub_find_best)
|
2023-04-22 02:44:10 +03:00
|
|
|
|
- [scrub_ec_max_bruteforce](#scrub_ec_max_bruteforce)
|
2023-12-30 19:48:35 +03:00
|
|
|
|
- [recovery_tune_interval](#recovery_tune_interval)
|
|
|
|
|
- [recovery_tune_util_low](#recovery_tune_util_low)
|
|
|
|
|
- [recovery_tune_util_high](#recovery_tune_util_high)
|
|
|
|
|
- [recovery_tune_client_util_low](#recovery_tune_client_util_low)
|
|
|
|
|
- [recovery_tune_client_util_high](#recovery_tune_client_util_high)
|
|
|
|
|
- [recovery_tune_agg_interval](#recovery_tune_agg_interval)
|
|
|
|
|
- [recovery_tune_sleep_min_us](#recovery_tune_sleep_min_us)
|
2024-02-11 12:16:20 +03:00
|
|
|
|
- [recovery_tune_sleep_cutoff_us](#recovery_tune_sleep_cutoff_us)
|
2022-01-29 23:43:22 +03:00
|
|
|
|
|
|
|
|
|
## etcd_report_interval
|
|
|
|
|
|
|
|
|
|
- Тип: секунды
|
|
|
|
|
- Значение по умолчанию: 5
|
|
|
|
|
|
2023-10-27 14:09:26 +03:00
|
|
|
|
Интервал, с которым OSD сообщает о том, что жив, в etcd. Значение параметра
|
|
|
|
|
влияет на время резервации (lease) OSD и поэтому - на скорость переключения
|
2022-01-29 23:43:22 +03:00
|
|
|
|
при падении OSD. Время lease равняется значению этого параметра плюс
|
|
|
|
|
max_etcd_attempts * etcd_quick_timeout.
|
|
|
|
|
|
2023-10-27 14:09:26 +03:00
|
|
|
|
## etcd_stats_interval
|
|
|
|
|
|
|
|
|
|
- Тип: секунды
|
|
|
|
|
- Значение по умолчанию: 30
|
|
|
|
|
|
|
|
|
|
Интервал, с которым OSD обновляет свою статистику в etcd. Сильно влияет на
|
|
|
|
|
создаваемую нагрузку на etcd, потому что статистика содержит по ключу на
|
|
|
|
|
каждый OSD и на каждую PG. В то же время низкий интервал делает
|
|
|
|
|
статистику, печатаемую `vitastor-cli`, отзывчивей.
|
|
|
|
|
|
2022-01-29 23:43:22 +03:00
|
|
|
|
## run_primary
|
|
|
|
|
|
|
|
|
|
- Тип: булево (да/нет)
|
|
|
|
|
- Значение по умолчанию: true
|
|
|
|
|
|
|
|
|
|
Запускать логику первичного OSD на данном OSD. На данный момент отключать
|
|
|
|
|
эту опцию может иметь смысл только в целях отладки. В теории, можно
|
|
|
|
|
реализовать дополнительный режим для монитора, который позволит отделять
|
|
|
|
|
первичные OSD от вторичных, но пока не понятно, зачем это может кому-то
|
|
|
|
|
понадобиться, поэтому это не реализовано.
|
|
|
|
|
|
|
|
|
|
## osd_network
|
|
|
|
|
|
|
|
|
|
- Тип: строка или массив строк
|
|
|
|
|
|
|
|
|
|
Маска подсети (IPv4 или IPv6) для использования для соединений с OSD.
|
|
|
|
|
Имейте в виду, что хотя сейчас и можно передать в этот параметр несколько
|
|
|
|
|
подсетей, это не означает, что OSD будут создавать несколько слушающих
|
|
|
|
|
сокетов - они лишь будут выбирать адрес первого поднятого (состояние UP +
|
|
|
|
|
RUNNING), подходящий под заданную маску. Также не реализовано разделение
|
|
|
|
|
кластерной и публичной сетей OSD. Правда, от него обычно всё равно довольно
|
|
|
|
|
мало толку, так что особенной проблемы в этом нет.
|
|
|
|
|
|
|
|
|
|
## bind_address
|
|
|
|
|
|
|
|
|
|
- Тип: строка
|
|
|
|
|
- Значение по умолчанию: 0.0.0.0
|
|
|
|
|
|
|
|
|
|
Этим параметром можно явным образом задать адрес, на котором будет ожидать
|
|
|
|
|
соединений OSD (вместо использования маски подсети). Может быть полезно,
|
|
|
|
|
например, чтобы запускать OSD на неподнятых интерфейсах (не UP + RUNNING).
|
|
|
|
|
|
|
|
|
|
## bind_port
|
|
|
|
|
|
|
|
|
|
- Тип: целое число
|
|
|
|
|
|
|
|
|
|
По умолчанию OSD сами выбирают случайные порты для входящих подключений.
|
|
|
|
|
С помощью данной опции вы можете задать порт для отдельного OSD вручную.
|
|
|
|
|
|
|
|
|
|
## autosync_interval
|
|
|
|
|
|
|
|
|
|
- Тип: секунды
|
|
|
|
|
- Значение по умолчанию: 5
|
2023-04-21 02:18:37 +03:00
|
|
|
|
- Можно менять на лету: да
|
2022-01-29 23:43:22 +03:00
|
|
|
|
|
|
|
|
|
Временной интервал отправки автоматических fsync-ов (операций очистки кэша)
|
|
|
|
|
каждым OSD для случая, когда режим immediate_commit отключён. fsync-и нужны
|
|
|
|
|
OSD, чтобы успевать очищать журнал - без них OSD быстро заполняют журналы и
|
|
|
|
|
перестают обрабатывать операции записи. Также эта опция ограничивает объём
|
|
|
|
|
недавних незафиксированных изменений, которые OSD могут терять при
|
|
|
|
|
отключении питания, если клиенты вообще не отправляют fsync.
|
|
|
|
|
|
|
|
|
|
## autosync_writes
|
|
|
|
|
|
|
|
|
|
- Тип: целое число
|
|
|
|
|
- Значение по умолчанию: 128
|
2023-04-21 02:18:37 +03:00
|
|
|
|
- Можно менять на лету: да
|
2022-01-29 23:43:22 +03:00
|
|
|
|
|
|
|
|
|
Аналогично autosync_interval, но задаёт не временной интервал, а
|
|
|
|
|
максимальное количество незафиксированных операций записи перед
|
|
|
|
|
принудительной отправкой fsync-а.
|
|
|
|
|
|
|
|
|
|
## recovery_queue_depth
|
|
|
|
|
|
|
|
|
|
- Тип: целое число
|
2023-12-30 19:48:35 +03:00
|
|
|
|
- Значение по умолчанию: 1
|
2023-04-21 02:18:37 +03:00
|
|
|
|
- Можно менять на лету: да
|
2022-01-29 23:43:22 +03:00
|
|
|
|
|
2023-12-30 19:48:35 +03:00
|
|
|
|
Максимальное число параллельных операций восстановления, инициируемых одним
|
|
|
|
|
OSD в любой момент времени. Имейте в виду, что каждый OSD обычно работает с
|
|
|
|
|
многими другими OSD, так что на практике параллелизм восстановления больше,
|
|
|
|
|
чем просто recovery_queue_depth. Увеличение значения этого параметра может
|
|
|
|
|
ускорить восстановление если [автотюнинг скорости](#recovery_tune_interval)
|
|
|
|
|
разрешает это или если он отключён.
|
|
|
|
|
|
|
|
|
|
## recovery_sleep_us
|
|
|
|
|
|
|
|
|
|
- Тип: микросекунды
|
|
|
|
|
- Значение по умолчанию: 0
|
|
|
|
|
- Можно менять на лету: да
|
|
|
|
|
|
|
|
|
|
Delay for all recovery- and rebalance- related operations. If non-zero,
|
|
|
|
|
such operations are artificially slowed down to reduce the impact on
|
|
|
|
|
client I/O.
|
2022-01-29 23:43:22 +03:00
|
|
|
|
|
2022-12-30 01:53:29 +03:00
|
|
|
|
## recovery_pg_switch
|
|
|
|
|
|
|
|
|
|
- Тип: целое число
|
|
|
|
|
- Значение по умолчанию: 128
|
2023-04-21 02:18:37 +03:00
|
|
|
|
- Можно менять на лету: да
|
2022-12-30 01:53:29 +03:00
|
|
|
|
|
|
|
|
|
Число операций восстановления перед переключением на восстановление другой PG.
|
|
|
|
|
Идея заключается в том, чтобы восстанавливать все PG одновременно для более
|
|
|
|
|
равномерного распределения места и нагрузки, но при этом всё равно выигрывать
|
|
|
|
|
от глубины очереди восстановления, большей, чем 1. Деградированные PG в любом
|
|
|
|
|
случае сканируются первыми.
|
|
|
|
|
|
2022-01-29 23:43:22 +03:00
|
|
|
|
## recovery_sync_batch
|
|
|
|
|
|
|
|
|
|
- Тип: целое число
|
|
|
|
|
- Значение по умолчанию: 16
|
2023-04-21 02:18:37 +03:00
|
|
|
|
- Можно менять на лету: да
|
2022-01-29 23:43:22 +03:00
|
|
|
|
|
|
|
|
|
Максимальное число операций восстановления перед дополнительным fsync.
|
|
|
|
|
|
|
|
|
|
## readonly
|
|
|
|
|
|
|
|
|
|
- Тип: булево (да/нет)
|
|
|
|
|
- Значение по умолчанию: false
|
|
|
|
|
|
|
|
|
|
Режим "только чтение". Если включить этот режим, OSD не будет писать ничего
|
|
|
|
|
на диск. Может быть полезно в целях восстановления.
|
|
|
|
|
|
|
|
|
|
## no_recovery
|
|
|
|
|
|
|
|
|
|
- Тип: булево (да/нет)
|
|
|
|
|
- Значение по умолчанию: false
|
2023-04-21 02:18:37 +03:00
|
|
|
|
- Можно менять на лету: да
|
2022-01-29 23:43:22 +03:00
|
|
|
|
|
|
|
|
|
Отключить автоматическое фоновое восстановление объектов. Обратите внимание,
|
|
|
|
|
что эта опция не отключает восстановление объектов, происходящее при
|
|
|
|
|
записи - запись всегда производится в полный набор из как минимум pg_minsize
|
|
|
|
|
OSD.
|
|
|
|
|
|
|
|
|
|
## no_rebalance
|
|
|
|
|
|
|
|
|
|
- Тип: булево (да/нет)
|
|
|
|
|
- Значение по умолчанию: false
|
2023-04-21 02:18:37 +03:00
|
|
|
|
- Можно менять на лету: да
|
2022-01-29 23:43:22 +03:00
|
|
|
|
|
|
|
|
|
Отключить фоновое перемещение объектов между разными OSD. Отключение
|
|
|
|
|
означает, что PG, находящиеся в состоянии `has_misplaced`, будут оставлены
|
|
|
|
|
в нём на неопределённый срок.
|
|
|
|
|
|
|
|
|
|
## print_stats_interval
|
|
|
|
|
|
|
|
|
|
- Тип: секунды
|
|
|
|
|
- Значение по умолчанию: 3
|
2023-04-21 02:18:37 +03:00
|
|
|
|
- Можно менять на лету: да
|
2022-01-29 23:43:22 +03:00
|
|
|
|
|
|
|
|
|
Временной интервал, с которым OSD печатают простую человекочитаемую
|
|
|
|
|
статистику выполнения операций в стандартный вывод.
|
|
|
|
|
|
|
|
|
|
## slow_log_interval
|
|
|
|
|
|
|
|
|
|
- Тип: секунды
|
|
|
|
|
- Значение по умолчанию: 10
|
2023-04-21 02:18:37 +03:00
|
|
|
|
- Можно менять на лету: да
|
2022-01-29 23:43:22 +03:00
|
|
|
|
|
|
|
|
|
Временной интервал, с которым OSD выводят в стандартный вывод список
|
|
|
|
|
медленных или зависших операций, если таковые имеются. Также время, при
|
|
|
|
|
превышении которого операция считается "медленной".
|
|
|
|
|
|
2022-06-04 00:37:52 +03:00
|
|
|
|
## inode_vanish_time
|
|
|
|
|
|
|
|
|
|
- Тип: секунды
|
|
|
|
|
- Значение по умолчанию: 60
|
2023-04-21 02:18:37 +03:00
|
|
|
|
- Можно менять на лету: да
|
2022-06-04 00:37:52 +03:00
|
|
|
|
|
|
|
|
|
Число секунд, через которое удалённые инод удаляется и из статистики OSD.
|
|
|
|
|
|
2022-01-29 23:43:22 +03:00
|
|
|
|
## max_write_iodepth
|
|
|
|
|
|
|
|
|
|
- Тип: целое число
|
|
|
|
|
- Значение по умолчанию: 128
|
2023-04-21 02:18:37 +03:00
|
|
|
|
- Можно менять на лету: да
|
2022-01-29 23:43:22 +03:00
|
|
|
|
|
|
|
|
|
Максимальное число одновременных клиентских операций записи на один OSD.
|
|
|
|
|
Операции, превышающие этот лимит, не исполняются сразу, а сохраняются во
|
|
|
|
|
временной очереди.
|
|
|
|
|
|
|
|
|
|
## min_flusher_count
|
|
|
|
|
|
|
|
|
|
- Тип: целое число
|
|
|
|
|
- Значение по умолчанию: 1
|
2023-04-21 02:18:37 +03:00
|
|
|
|
- Можно менять на лету: да
|
2022-01-29 23:43:22 +03:00
|
|
|
|
|
|
|
|
|
Flusher - это микро-поток (корутина), которая копирует данные из журнала в
|
|
|
|
|
основную область устройства данных. Их число настраивается динамически между
|
|
|
|
|
минимальным и максимальным значением. Этот параметр задаёт минимальное число.
|
|
|
|
|
|
|
|
|
|
## max_flusher_count
|
|
|
|
|
|
|
|
|
|
- Тип: целое число
|
|
|
|
|
- Значение по умолчанию: 256
|
2023-04-21 02:18:37 +03:00
|
|
|
|
- Можно менять на лету: да
|
2022-01-29 23:43:22 +03:00
|
|
|
|
|
|
|
|
|
Максимальное число микро-потоков очистки журнала (см. выше min_flusher_count).
|
|
|
|
|
|
|
|
|
|
## inmemory_metadata
|
|
|
|
|
|
|
|
|
|
- Тип: булево (да/нет)
|
|
|
|
|
- Значение по умолчанию: true
|
|
|
|
|
|
|
|
|
|
Данный параметр заставляет Vitastor всегда держать область метаданных диска
|
|
|
|
|
в памяти. Это нужно, чтобы избегать дополнительных операций чтения с диска
|
|
|
|
|
при записи. Размер области метаданных на данный момент составляет примерно
|
|
|
|
|
224 МБ на 1 ТБ данных. При включении потребление памяти снизится примерно
|
|
|
|
|
на эту величину, но при этом также снизится и производительность. В будущем,
|
|
|
|
|
после обновления схемы хранения метаданных, это ограничение, скорее всего,
|
|
|
|
|
будет ликвидировано.
|
|
|
|
|
|
|
|
|
|
## inmemory_journal
|
|
|
|
|
|
|
|
|
|
- Тип: булево (да/нет)
|
|
|
|
|
- Значение по умолчанию: true
|
|
|
|
|
|
|
|
|
|
Данный параметр заставляет Vitastor всегда держать в памяти журналы OSD.
|
|
|
|
|
Отключение параметра, опять же, снижает потребление памяти, но ухудшает
|
|
|
|
|
производительность, так как для копирования данных из журнала в основную
|
|
|
|
|
область устройства OSD будут вынуждены читать их обратно с диска. Выигрыш
|
|
|
|
|
по памяти при этом обычно крайне низкий, так как для SSD OSD обычно
|
|
|
|
|
достаточно 16- или 32-мегабайтного журнала. Однако в теории отключение
|
|
|
|
|
параметра может оказаться полезным для гибридных OSD (HDD+SSD) с большими
|
|
|
|
|
журналами, расположенными на быстром по сравнению с HDD устройстве.
|
|
|
|
|
|
2023-08-06 01:14:44 +03:00
|
|
|
|
## data_io
|
2023-07-14 23:32:07 +03:00
|
|
|
|
|
2023-08-06 01:14:44 +03:00
|
|
|
|
- Тип: строка
|
|
|
|
|
- Значение по умолчанию: direct
|
2023-07-14 23:32:07 +03:00
|
|
|
|
|
2023-08-06 01:14:44 +03:00
|
|
|
|
Режим ввода-вывода для *данных*. Одно из значений "direct", "cached" или
|
|
|
|
|
"directsync", означающих O_DIRECT, O_SYNC и O_DIRECT|O_SYNC, соответственно.
|
2023-07-14 23:32:07 +03:00
|
|
|
|
|
2023-08-06 01:14:44 +03:00
|
|
|
|
Выберите "cached", чтобы использовать системный кэш Linux (page cache) при
|
|
|
|
|
чтении и записи. Это может улучшить скорость чтения горячих данных с
|
|
|
|
|
относительно медленных дисков - HDD и, возможно, SATA SSD - но немного
|
|
|
|
|
снижает производительность записи для быстрых дисков, так как кэш сам по
|
|
|
|
|
себе тоже добавляет накладные расходы.
|
2023-07-14 23:32:07 +03:00
|
|
|
|
|
2023-08-06 01:14:44 +03:00
|
|
|
|
Выберите "directsync", если хотите задействовать
|
|
|
|
|
[immediate_commit](layout-cluster.ru.md#immediate_commit) (требующий
|
|
|
|
|
включенияd disable_data_fsync) на дисках с неотключаемым кэшем. Пример таких
|
|
|
|
|
дисков - Intel Optane. При этом также стоит иметь в виду, что *некоторые*
|
|
|
|
|
настольные SSD (например, HP EX950) игнорируют флаг O_SYNC, делая отключение
|
|
|
|
|
fsync небезопасным даже с режимом "directsync".
|
|
|
|
|
|
|
|
|
|
## meta_io
|
2023-07-14 23:32:07 +03:00
|
|
|
|
|
2023-08-06 01:14:44 +03:00
|
|
|
|
- Тип: строка
|
|
|
|
|
- Значение по умолчанию: direct
|
|
|
|
|
|
|
|
|
|
Режим ввода-вывода для *метаданных*. Одно из значений "direct", "cached" или
|
|
|
|
|
"directsync".
|
|
|
|
|
|
|
|
|
|
"cached" может улучшить скорость чтения, если:
|
|
|
|
|
1. у вас медленные диски (HDD, SATA SSD)
|
|
|
|
|
2. контрольные суммы включены
|
|
|
|
|
3. параметр [inmemory_metadata](#inmemory_metadata) отключён.
|
|
|
|
|
При этих условиях блоки метаданных читаются с диска при каждом запросе чтения
|
2023-07-14 23:32:07 +03:00
|
|
|
|
для проверки контрольных сумм и их кэширование может снизить дополнительную
|
2023-08-06 01:14:44 +03:00
|
|
|
|
нагрузку на диск. Без (3) метаданные никогда не читаются с диска после
|
|
|
|
|
запуска OSD, а без (2) блоки метаданных читаются только при сбросе журнала.
|
2023-07-14 23:32:07 +03:00
|
|
|
|
|
2023-08-06 01:14:44 +03:00
|
|
|
|
Если одно и то же устройство используется для данных и метаданных, режим
|
|
|
|
|
ввода-вывода метаданных по умолчанию устанавливается равным [data_io](#data_io).
|
2023-07-14 23:32:07 +03:00
|
|
|
|
|
2023-08-06 01:14:44 +03:00
|
|
|
|
## journal_io
|
2023-07-14 23:32:07 +03:00
|
|
|
|
|
2023-08-06 01:14:44 +03:00
|
|
|
|
- Тип: строка
|
|
|
|
|
- Значение по умолчанию: direct
|
2023-07-14 23:32:07 +03:00
|
|
|
|
|
2023-08-06 01:14:44 +03:00
|
|
|
|
Режим ввода-вывода для *журнала*. Одно из значений "direct", "cached" или
|
|
|
|
|
"directsync".
|
2023-07-14 23:32:07 +03:00
|
|
|
|
|
2023-08-06 01:14:44 +03:00
|
|
|
|
Здесь "cached" может улучшить скорость чтения только недавно записанных
|
|
|
|
|
данных и только если параметр [inmemory_journal](#inmemory_journal)
|
2023-07-14 23:32:07 +03:00
|
|
|
|
отключён.
|
|
|
|
|
|
|
|
|
|
Если одно и то же устройство используется для метаданных и журнала,
|
2023-08-06 01:14:44 +03:00
|
|
|
|
режим ввода-вывода журнала по умолчанию устанавливается равным
|
|
|
|
|
[meta_io](#meta_io).
|
2023-07-14 23:32:07 +03:00
|
|
|
|
|
2022-01-29 23:43:22 +03:00
|
|
|
|
## journal_sector_buffer_count
|
|
|
|
|
|
|
|
|
|
- Тип: целое число
|
|
|
|
|
- Значение по умолчанию: 32
|
|
|
|
|
|
|
|
|
|
Максимальное число буферов, разрешённых для использования под записываемые
|
|
|
|
|
в журнал блоки метаданных. Единственная ситуация, в которой этот параметр
|
|
|
|
|
нужно менять - это если вы включаете journal_no_same_sector_overwrites. В
|
|
|
|
|
этом случае установите данный параметр, например, в 1024.
|
|
|
|
|
|
|
|
|
|
## journal_no_same_sector_overwrites
|
|
|
|
|
|
|
|
|
|
- Тип: булево (да/нет)
|
|
|
|
|
- Значение по умолчанию: false
|
|
|
|
|
|
|
|
|
|
Включайте данную опцию для SSD вроде Intel D3-S4510 и D3-S4610, которые
|
|
|
|
|
ОЧЕНЬ не любят, когда ПО перезаписывает один и тот же сектор несколько раз
|
|
|
|
|
подряд. Такие SSD при многократной перезаписи одного и того же сектора
|
|
|
|
|
сильно замедляются - условно, с 25000 и более iops до 3000 iops. Когда
|
|
|
|
|
данная опция установлена, Vitastor всегда переходит к следующему сектору
|
|
|
|
|
журнала после записи вместо потенциально повторной перезаписи того же
|
|
|
|
|
самого сектора.
|
|
|
|
|
|
|
|
|
|
Почти все другие SSD (99% моделей) не требуют данной опции.
|
|
|
|
|
|
|
|
|
|
## throttle_small_writes
|
|
|
|
|
|
|
|
|
|
- Тип: булево (да/нет)
|
|
|
|
|
- Значение по умолчанию: false
|
2023-04-21 02:18:37 +03:00
|
|
|
|
- Можно менять на лету: да
|
2022-01-29 23:43:22 +03:00
|
|
|
|
|
|
|
|
|
Разрешить мягкое ограничение скорости журналируемой записи. Полезно для
|
|
|
|
|
гибридных OSD с быстрыми устройствами метаданных и медленными устройствами
|
|
|
|
|
данных. Идея заключается в том, что мелкие записи в этой ситуации могут
|
|
|
|
|
завершаться очень быстро, так как они изначально записываются на быстрое
|
|
|
|
|
журнальное устройство (SSD). Но перемещать их потом на основное медленное
|
|
|
|
|
устройство долго. Поэтому если OSD быстро примет от клиентов очень много
|
|
|
|
|
мелких операций записи, он быстро заполнит свой журнал, после чего
|
|
|
|
|
производительность записи резко упадёт практически до нуля. Ограничение
|
|
|
|
|
скорости записи призвано решить эту проблему с помощью искусственного
|
|
|
|
|
замедления операций записи на основании объёма свободного места в журнале.
|
|
|
|
|
Когда эта опция включена, производительность мелких операций записи будет
|
|
|
|
|
снижаться плавно, а не резко в момент окончательного заполнения журнала.
|
|
|
|
|
|
|
|
|
|
## throttle_target_iops
|
|
|
|
|
|
|
|
|
|
- Тип: целое число
|
|
|
|
|
- Значение по умолчанию: 100
|
2023-04-21 02:18:37 +03:00
|
|
|
|
- Можно менять на лету: да
|
2022-01-29 23:43:22 +03:00
|
|
|
|
|
|
|
|
|
Расчётное максимальное число ограничиваемых операций в секунду при условии
|
|
|
|
|
отсутствия свободного места в журнале. Устанавливайте приблизительно равным
|
|
|
|
|
максимальной производительности случайной записи ваших устройств данных
|
|
|
|
|
(HDD) в операциях в секунду.
|
|
|
|
|
|
|
|
|
|
## throttle_target_mbs
|
|
|
|
|
|
|
|
|
|
- Тип: целое число
|
|
|
|
|
- Значение по умолчанию: 100
|
2023-04-21 02:18:37 +03:00
|
|
|
|
- Можно менять на лету: да
|
2022-01-29 23:43:22 +03:00
|
|
|
|
|
|
|
|
|
Расчётный максимальный размер в МБ/с ограничиваемых операций в секунду при
|
|
|
|
|
условии отсутствия свободного места в журнале. Устанавливайте приблизительно
|
|
|
|
|
равным максимальной производительности линейной записи ваших устройств
|
|
|
|
|
данных (HDD).
|
|
|
|
|
|
|
|
|
|
## throttle_target_parallelism
|
|
|
|
|
|
|
|
|
|
- Тип: целое число
|
|
|
|
|
- Значение по умолчанию: 1
|
2023-04-21 02:18:37 +03:00
|
|
|
|
- Можно менять на лету: да
|
2022-01-29 23:43:22 +03:00
|
|
|
|
|
|
|
|
|
Расчётный максимальный параллелизм ограничиваемых операций в секунду при
|
|
|
|
|
условии отсутствия свободного места в журнале. Устанавливайте приблизительно
|
|
|
|
|
равным внутреннему параллелизму ваших устройств данных (1 для HDD, 4-8
|
|
|
|
|
для SSD).
|
|
|
|
|
|
|
|
|
|
## throttle_threshold_us
|
|
|
|
|
|
|
|
|
|
- Тип: микросекунды
|
|
|
|
|
- Значение по умолчанию: 50
|
2023-04-21 02:18:37 +03:00
|
|
|
|
- Можно менять на лету: да
|
2022-01-29 23:43:22 +03:00
|
|
|
|
|
|
|
|
|
Минимальная применимая к ограничиваемым операциям задержка. Обычно не
|
|
|
|
|
требует изменений.
|
|
|
|
|
|
|
|
|
|
## osd_memlock
|
|
|
|
|
|
|
|
|
|
- Тип: булево (да/нет)
|
|
|
|
|
- Значение по умолчанию: false
|
|
|
|
|
|
2023-04-22 02:44:10 +03:00
|
|
|
|
Блокировать всю память OSD с помощью mlockall, чтобы запретить её выгрузку
|
|
|
|
|
в пространство подкачки. Требует достаточного значения ulimit -l (лимита
|
|
|
|
|
заблокированной памяти).
|
|
|
|
|
|
2023-05-21 12:52:30 +03:00
|
|
|
|
## auto_scrub
|
2023-04-22 02:44:10 +03:00
|
|
|
|
|
|
|
|
|
- Тип: булево (да/нет)
|
|
|
|
|
- Значение по умолчанию: false
|
|
|
|
|
- Можно менять на лету: да
|
|
|
|
|
|
2023-05-21 12:52:30 +03:00
|
|
|
|
Скраб - процесс фоновой проверки копий данных, предназначенный, чтобы
|
|
|
|
|
находить и исправлять повреждённые блоки. По умолчанию эти проверки ещё не
|
|
|
|
|
запускаются автоматически, так как являются новой функцией. Чтобы включить
|
|
|
|
|
автоматическое планирование скрабов, установите данный параметр в true.
|
2023-04-22 02:44:10 +03:00
|
|
|
|
|
2023-05-21 12:52:30 +03:00
|
|
|
|
Включённый параметр заставляет OSD автоматически планировать фоновую
|
|
|
|
|
проверку чистых PG раз в `scrub_interval` (см. ниже). Вы также можете
|
|
|
|
|
запустить или запланировать проверку вручную, установив значение ключа JSON
|
|
|
|
|
`next_scrub` внутри ключей etcd `/pg/history/...` в UNIX-время следующей
|
|
|
|
|
желаемой проверки.
|
|
|
|
|
|
|
|
|
|
## no_scrub
|
2023-04-22 02:44:10 +03:00
|
|
|
|
|
|
|
|
|
- Тип: булево (да/нет)
|
|
|
|
|
- Значение по умолчанию: false
|
|
|
|
|
- Можно менять на лету: да
|
|
|
|
|
|
2023-05-21 12:52:30 +03:00
|
|
|
|
Временно отключить и остановить запущенные скрабы.
|
2023-04-22 02:44:10 +03:00
|
|
|
|
|
|
|
|
|
## scrub_interval
|
|
|
|
|
|
|
|
|
|
- Тип: строка
|
|
|
|
|
- Значение по умолчанию: 30d
|
|
|
|
|
- Можно менять на лету: да
|
|
|
|
|
|
|
|
|
|
Интервал автоматической фоновой проверки по умолчанию для всех пулов.
|
|
|
|
|
Значения без указанной единицы измерения считаются в секундах, допустимые
|
|
|
|
|
символы единиц измерения в конце: 's' (секунды),
|
|
|
|
|
'm' (минуты), 'h' (часы), 'd' (дни), 'M' (месяца) или 'y' (годы).
|
|
|
|
|
|
|
|
|
|
## scrub_queue_depth
|
|
|
|
|
|
|
|
|
|
- Тип: целое число
|
|
|
|
|
- Значение по умолчанию: 1
|
|
|
|
|
- Можно менять на лету: да
|
|
|
|
|
|
|
|
|
|
Число параллельных операций фоновой проверки на один OSD.
|
|
|
|
|
|
|
|
|
|
## scrub_sleep
|
|
|
|
|
|
|
|
|
|
- Тип: миллисекунды
|
|
|
|
|
- Значение по умолчанию: 0
|
|
|
|
|
- Можно менять на лету: да
|
|
|
|
|
|
|
|
|
|
Дополнительный интервал ожидания после фоновой проверки каждого объекта на
|
|
|
|
|
одном OSD. Может использоваться для замедления скраба, если он слишком
|
|
|
|
|
сильно влияет на пользовательскую нагрузку.
|
|
|
|
|
|
|
|
|
|
## scrub_list_limit
|
|
|
|
|
|
|
|
|
|
- Тип: целое число
|
|
|
|
|
- Значение по умолчанию: 1000
|
|
|
|
|
- Можно менять на лету: да
|
|
|
|
|
|
|
|
|
|
Размер загружаемых за одну операцию списков объектов в процессе фоновой
|
|
|
|
|
проверки.
|
|
|
|
|
|
2023-05-21 12:15:37 +03:00
|
|
|
|
## scrub_find_best
|
|
|
|
|
|
|
|
|
|
- Тип: булево (да/нет)
|
|
|
|
|
- Значение по умолчанию: true
|
|
|
|
|
- Можно менять на лету: да
|
|
|
|
|
|
|
|
|
|
Находить и автоматически восстанавливать "лучшие версии" объектов с
|
|
|
|
|
несовпадающими копиями/частями. При использовании репликации "лучшая"
|
|
|
|
|
версия - версия, доступная в большем числе экземпляров, чем другие. При
|
2023-05-21 18:36:44 +03:00
|
|
|
|
использовании кодов коррекции ошибок "лучшая" версия - это подмножество
|
2023-05-21 12:15:37 +03:00
|
|
|
|
частей данных и чётности, полностью соответствующих друг другу.
|
|
|
|
|
|
|
|
|
|
Гипотетическая ситуация, в которой вы можете захотеть отключить этот
|
|
|
|
|
поиск - это если у вас 3 реплики и вы боитесь, что 2 диска из 3 могут
|
|
|
|
|
незаметно и одинаково повредить данные одного и того же объекта, например,
|
|
|
|
|
занулив его, и только 1 диск останется неповреждённым. В этой ситуации
|
|
|
|
|
отключение этого параметра поможет вам восстановить данные! Смотрите также
|
|
|
|
|
описание следующего параметра - scrub_ec_max_bruteforce.
|
|
|
|
|
|
2023-04-22 02:44:10 +03:00
|
|
|
|
## scrub_ec_max_bruteforce
|
|
|
|
|
|
|
|
|
|
- Тип: целое число
|
|
|
|
|
- Значение по умолчанию: 100
|
|
|
|
|
- Можно менять на лету: да
|
|
|
|
|
|
|
|
|
|
Vitastor старается определить повреждённые части объектов при использовании
|
|
|
|
|
EC (кодов коррекции ошибок) с более, чем 1 диском чётности, путём перебора
|
|
|
|
|
всех возможных комбинаций ошибочных частей. Данное значение конфигурации
|
|
|
|
|
ограничивает число перебираемых комбинаций. Вы можете попробовать поднять
|
|
|
|
|
его, если используете схему кодирования EC N+K с N и K, достаточно большими
|
|
|
|
|
для того, чтобы число сочетаний `C(N+K-1, K-1) = (N+K-1)! / (K-1)! / N!`
|
|
|
|
|
было больше, чем стандартное значение 100.
|
|
|
|
|
|
|
|
|
|
Если возможных комбинаций слишком много или если корректная комбинаций не
|
|
|
|
|
определяется однозначно, объекты помечаются неконсистентными (inconsistent)
|
|
|
|
|
и не восстанавливаются автоматически.
|
|
|
|
|
|
|
|
|
|
При использовании репликации перебор не нужен, Vitastor просто предполагает,
|
|
|
|
|
что вариант объекта с наибольшим количеством одинаковых копий корректен.
|
|
|
|
|
Например, если вы используете 3 реплики и 1 из них отличается, эта 1 копия
|
|
|
|
|
считается некорректной. Однако, если "лучшую" версию с числом доступных
|
|
|
|
|
копий большим, чем у всех других версий, найти невозможно, то объект тоже
|
|
|
|
|
маркируется неконсистентным.
|
2023-12-30 19:48:35 +03:00
|
|
|
|
|
|
|
|
|
## recovery_tune_interval
|
|
|
|
|
|
|
|
|
|
- Тип: секунды
|
|
|
|
|
- Значение по умолчанию: 1
|
|
|
|
|
- Можно менять на лету: да
|
|
|
|
|
|
|
|
|
|
Интервал, с которым OSD пересматривает клиентскую нагрузку и нагрузку
|
|
|
|
|
восстановления и автоматически подстраивает [recovery_sleep_us](#recovery_sleep_us).
|
|
|
|
|
Автотюнинг (автоподстройка) отключается, если recovery_tune_interval
|
|
|
|
|
устанавливается в значение 0.
|
|
|
|
|
|
|
|
|
|
Автотюнинг регулирует утилизацию. Утилизация является мерой нагрузки
|
|
|
|
|
и равна произведению числа операций в секунду и средней задержки
|
|
|
|
|
(то есть, она может быть выше 1). Вы задаёте два уровня клиентской
|
|
|
|
|
утилизации - "низкий" и "высокий" (low и high) и два соответствующих
|
|
|
|
|
целевых уровня утилизации операциями восстановления. OSD рассчитывает
|
|
|
|
|
желаемый уровень утилизации восстановления линейной интерполяцией от
|
|
|
|
|
клиентской утилизации и подстраивает задержку операций восстановления
|
|
|
|
|
так, чтобы фактическая утилизация восстановления совпадала с желаемой.
|
|
|
|
|
|
|
|
|
|
Это позволяет снизить влияние восстановления и ребаланса на клиентские
|
|
|
|
|
операции. Конечно, невозможно исключить такое влияние полностью, но оно
|
|
|
|
|
должно становиться адекватнее. В некоторых тестах перебалансировка могла
|
|
|
|
|
снижать клиентскую скорость записи с 1.5 ГБ/с до 50-100 МБ/с, а теперь, с
|
|
|
|
|
настройками автотюнинга по умолчанию, она снижается только до ~1 ГБ/с.
|
|
|
|
|
|
|
|
|
|
## recovery_tune_util_low
|
|
|
|
|
|
|
|
|
|
- Тип: число
|
|
|
|
|
- Значение по умолчанию: 0.1
|
|
|
|
|
- Можно менять на лету: да
|
|
|
|
|
|
|
|
|
|
Желаемая утилизация восстановления в моменты, когда клиентская нагрузка
|
|
|
|
|
высокая, то есть, находится на уровне или выше recovery_tune_client_util_high.
|
|
|
|
|
|
|
|
|
|
## recovery_tune_util_high
|
|
|
|
|
|
|
|
|
|
- Тип: число
|
|
|
|
|
- Значение по умолчанию: 1
|
|
|
|
|
- Можно менять на лету: да
|
|
|
|
|
|
|
|
|
|
Желаемая утилизация восстановления в моменты, когда клиентская нагрузка
|
|
|
|
|
низкая, то есть, находится на уровне или ниже recovery_tune_client_util_low.
|
|
|
|
|
|
|
|
|
|
## recovery_tune_client_util_low
|
|
|
|
|
|
|
|
|
|
- Тип: число
|
|
|
|
|
- Значение по умолчанию: 0
|
|
|
|
|
- Можно менять на лету: да
|
|
|
|
|
|
|
|
|
|
Клиентская утилизация, которая считается "низкой".
|
|
|
|
|
|
|
|
|
|
## recovery_tune_client_util_high
|
|
|
|
|
|
|
|
|
|
- Тип: число
|
|
|
|
|
- Значение по умолчанию: 0.5
|
|
|
|
|
- Можно менять на лету: да
|
|
|
|
|
|
|
|
|
|
Клиентская утилизация, которая считается "высокой".
|
|
|
|
|
|
|
|
|
|
## recovery_tune_agg_interval
|
|
|
|
|
|
|
|
|
|
- Тип: целое число
|
|
|
|
|
- Значение по умолчанию: 10
|
|
|
|
|
- Можно менять на лету: да
|
|
|
|
|
|
|
|
|
|
Число последних итераций автоподстройки для расчёта задержки как среднего
|
|
|
|
|
значения. Меньшие значения параметра ускоряют отклик на изменение нагрузки,
|
|
|
|
|
большие значения делают задержку стабильнее. Значение по умолчанию 10
|
|
|
|
|
обычно нормальное и не требует изменений.
|
|
|
|
|
|
|
|
|
|
## recovery_tune_sleep_min_us
|
|
|
|
|
|
|
|
|
|
- Тип: микросекунды
|
|
|
|
|
- Значение по умолчанию: 10
|
|
|
|
|
- Можно менять на лету: да
|
|
|
|
|
|
|
|
|
|
Минимальное возможное значение авто-подстроенного recovery_sleep_us.
|
2024-02-11 12:16:20 +03:00
|
|
|
|
Меньшие значения заменяются на 0.
|
|
|
|
|
|
|
|
|
|
## recovery_tune_sleep_cutoff_us
|
|
|
|
|
|
|
|
|
|
- Тип: микросекунды
|
|
|
|
|
- Значение по умолчанию: 10000000
|
|
|
|
|
- Можно менять на лету: да
|
|
|
|
|
|
|
|
|
|
Максимальное возможное значение авто-подстроенного recovery_sleep_us.
|
|
|
|
|
Большие значения считаются случайными выбросами и игнорируются в
|
|
|
|
|
усреднении.
|