From dbf9ecd171087457bd7a66ee67019752b22c986c Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Mon, 31 Mar 2025 21:12:09 +0300 Subject: [PATCH] Move osd_network to config/network docs --- docs/config/network.en.md | 58 +++++++++++++++++-------- docs/config/network.ru.md | 61 +++++++++++++++++--------- docs/config/osd.en.md | 29 ++----------- docs/config/osd.ru.md | 29 +++---------- docs/config/src/network.yml | 85 +++++++++++++++++++++++++------------ docs/config/src/osd.yml | 44 ++++--------------- docs/intro/quickstart.en.md | 2 +- docs/intro/quickstart.ru.md | 2 +- 8 files changed, 158 insertions(+), 152 deletions(-) diff --git a/docs/config/network.en.md b/docs/config/network.en.md index 16b38854..ed1ef160 100644 --- a/docs/config/network.en.md +++ b/docs/config/network.en.md @@ -9,8 +9,8 @@ These parameters apply to clients and OSDs and affect network connection logic between clients, OSDs and etcd. -- [tcp_header_buffer_size](#tcp_header_buffer_size) -- [use_sync_send_recv](#use_sync_send_recv) +- [osd_network](#osd_network) +- [osd_cluster_network](#osd_cluster_network) - [use_rdma](#use_rdma) - [use_rdmacm](#use_rdmacm) - [disable_tcp](#disable_tcp) @@ -33,28 +33,28 @@ between clients, OSDs and etcd. - [etcd_keepalive_timeout](#etcd_keepalive_timeout) - [etcd_ws_keepalive_interval](#etcd_ws_keepalive_interval) - [etcd_min_reload_interval](#etcd_min_reload_interval) +- [tcp_header_buffer_size](#tcp_header_buffer_size) +- [use_sync_send_recv](#use_sync_send_recv) -## tcp_header_buffer_size +## osd_network -- Type: integer -- Default: 65536 +- Type: string or array of strings -Size of the buffer used to read data using an additional copy. Vitastor -packet headers are 128 bytes, payload is always at least 4 KB, so it is -usually beneficial to try to read multiple packets at once even though -it requires to copy the data an additional time. The rest of each packet -is received without an additional copy. You can try to play with this -parameter and see how it affects random iops and linear bandwidth if you -want. +Network mask of public OSD network(s) (IPv4 or IPv6). Each OSD listens on all +addresses of UP + RUNNING interfaces matching one of these networks, on the +same port. Port is auto-selected except if [bind_port](osd.en.md#bind_port) is +explicitly specified. Bind address(es) may also be overridden manually by +specifying [bind_address](osd.en.md#bind_address). If OSD networks are not specified +at all, OSD just listens on a wildcard address (0.0.0.0). -## use_sync_send_recv +## osd_cluster_network -- Type: boolean -- Default: false +- Type: string or array of strings -If true, synchronous send/recv syscalls are used instead of io_uring for -socket communication. Useless for OSDs because they require io_uring anyway, -but may be required for clients with old kernel versions. +Network mask of separate network(s) (IPv4 or IPv6) to use for OSD +cluster connections. I.e. OSDs will always attempt to use these networks +to connect to other OSDs, while clients will attempt to use networks from +[osd_network](#osd_network). ## use_rdma @@ -299,3 +299,25 @@ detect disconnections quickly. Minimum interval for full etcd state reload. Introduced to prevent excessive load on etcd during outages when etcd can't keep up with event streams and cancels them. + +## tcp_header_buffer_size + +- Type: integer +- Default: 65536 + +Size of the buffer used to read data using an additional copy. Vitastor +packet headers are 128 bytes, payload is always at least 4 KB, so it is +usually beneficial to try to read multiple packets at once even though +it requires to copy the data an additional time. The rest of each packet +is received without an additional copy. You can try to play with this +parameter and see how it affects random iops and linear bandwidth if you +want. + +## use_sync_send_recv + +- Type: boolean +- Default: false + +If true, synchronous send/recv syscalls are used instead of io_uring for +socket communication. Useless for OSDs because they require io_uring anyway, +but may be required for clients with old kernel versions. diff --git a/docs/config/network.ru.md b/docs/config/network.ru.md index 96e66028..1c349abf 100644 --- a/docs/config/network.ru.md +++ b/docs/config/network.ru.md @@ -9,8 +9,8 @@ Данные параметры используются клиентами и OSD и влияют на логику сетевого взаимодействия между клиентами, OSD, а также etcd. -- [tcp_header_buffer_size](#tcp_header_buffer_size) -- [use_sync_send_recv](#use_sync_send_recv) +- [osd_network](#osd_network) +- [osd_cluster_network](#osd_cluster_network) - [use_rdma](#use_rdma) - [use_rdmacm](#use_rdmacm) - [disable_tcp](#disable_tcp) @@ -33,30 +33,27 @@ - [etcd_keepalive_timeout](#etcd_keepalive_timeout) - [etcd_ws_keepalive_interval](#etcd_ws_keepalive_interval) - [etcd_min_reload_interval](#etcd_min_reload_interval) +- [tcp_header_buffer_size](#tcp_header_buffer_size) +- [use_sync_send_recv](#use_sync_send_recv) -## tcp_header_buffer_size +## osd_network -- Тип: целое число -- Значение по умолчанию: 65536 +- Тип: строка или массив строк -Размер буфера для чтения данных с дополнительным копированием. Пакеты -Vitastor содержат 128-байтные заголовки, за которыми следуют данные размером -от 4 КБ и для мелких операций ввода-вывода обычно выгодно за 1 вызов читать -сразу несколько пакетов, даже не смотря на то, что это требует лишний раз -скопировать данные. Часть каждого пакета за пределами значения данного -параметра читается без дополнительного копирования. Вы можете попробовать -поменять этот параметр и посмотреть, как он влияет на производительность -случайного и линейного доступа. +Маски подсетей (IPv4 или IPv6) публичной сети или сетей OSD. Каждый OSD слушает +один и тот же порт на всех адресах поднятых (UP + RUNNING) сетевых интерфейсов, +соответствующих одной из указанных сетей. Порт выбирается автоматически, если +только [bind_port](osd.ru.md#bind_port) не задан явно. Адреса для подключений можно +также переопределить явно, задав [bind_address](osd.ru.md#bind_address). Если сети OSD +не заданы вообще, OSD слушает все адреса (0.0.0.0). -## use_sync_send_recv +## osd_cluster_network -- Тип: булево (да/нет) -- Значение по умолчанию: false +- Тип: строка или массив строк -Если установлено в истину, то вместо io_uring для передачи данных по сети -будут использоваться обычные синхронные системные вызовы send/recv. Для OSD -это бессмысленно, так как OSD в любом случае нуждается в io_uring, но, в -принципе, это может применяться для клиентов со старыми версиями ядра. +Маски подсетей (IPv4 или IPv6) отдельной кластерной сети или сетей OSD. +То есть, OSD будут всегда стараться использовать эти сети для соединений +с другими OSD, а клиенты будут стараться использовать сети из [osd_network](#osd_network). ## use_rdma @@ -309,3 +306,27 @@ etcd_report_interval, чтобы keepalive гарантированно рабо Минимальный интервал полной перезагрузки состояния из etcd. Добавлено для предотвращения избыточной нагрузки на etcd во время отказов, когда etcd не успевает рассылать потоки событий и отменяет их. + +## tcp_header_buffer_size + +- Тип: целое число +- Значение по умолчанию: 65536 + +Размер буфера для чтения данных с дополнительным копированием. Пакеты +Vitastor содержат 128-байтные заголовки, за которыми следуют данные размером +от 4 КБ и для мелких операций ввода-вывода обычно выгодно за 1 вызов читать +сразу несколько пакетов, даже не смотря на то, что это требует лишний раз +скопировать данные. Часть каждого пакета за пределами значения данного +параметра читается без дополнительного копирования. Вы можете попробовать +поменять этот параметр и посмотреть, как он влияет на производительность +случайного и линейного доступа. + +## use_sync_send_recv + +- Тип: булево (да/нет) +- Значение по умолчанию: false + +Если установлено в истину, то вместо io_uring для передачи данных по сети +будут использоваться обычные синхронные системные вызовы send/recv. Для OSD +это бессмысленно, так как OSD в любом случае нуждается в io_uring, но, в +принципе, это может применяться для клиентов со старыми версиями ядра. diff --git a/docs/config/osd.en.md b/docs/config/osd.en.md index d138ed03..2ae2a302 100644 --- a/docs/config/osd.en.md +++ b/docs/config/osd.en.md @@ -10,8 +10,6 @@ These parameters only apply to OSDs, are not fixed at the moment of OSD drive initialization and can be changed - in /etc/vitastor/vitastor.conf or [vitastor-disk update-sb](../usage/disk.en.md#update-sb) with an OSD restart or, for some of them, even without restarting by updating configuration in etcd. -- [osd_network](#osd_network) -- [osd_cluster_network](#osd_cluster_network) - [bind_address](#bind_address) - [bind_port](#bind_port) - [osd_iothread_count](#osd_iothread_count) @@ -66,33 +64,14 @@ with an OSD restart or, for some of them, even without restarting by updating co - [min_discard_size](#min_discard_size) - [allow_net_split](#allow_net_split) -## osd_network - -- Type: string or array of strings - -Network mask of public OSD network(s) (IPv4 or IPv6). Each OSD listens on all -addresses of UP + RUNNING interfaces matching one of these networks, on the -same port. Port is auto-selected except if [bind_port](#bind_port) is -explicitly specified. Bind address(es) may also be overridden manually by -specifying [bind_address](#bind_address). If OSD networks are not specified -at all, OSD just listens on a wildcard address (0.0.0.0). - -## osd_cluster_network - -- Type: string or array of strings - -Network mask of separate network(s) (IPv4 or IPv6) to use for OSD -cluster connections. I.e. OSDs will always attempt to use these networks -to connect to other OSDs, while clients will attempt to use networks from -[osd_network](#osd_network). - ## bind_address - Type: string or array of strings -Instead of the network mask, you can also set OSD listen addresses explicitly -using this parameter. May be useful if you want to start OSDs on interfaces -that are not UP + RUNNING. +Instead of the network masks ([osd_network](network.en.md#osd_network) and +[osd_cluster_network](network.en.md#osd_cluster_network)), you can also set +OSD listen addresses explicitly using this parameter. May be useful if you +want to start OSDs on interfaces that are not UP + RUNNING. ## bind_port diff --git a/docs/config/osd.ru.md b/docs/config/osd.ru.md index 37ef79d5..96c284b7 100644 --- a/docs/config/osd.ru.md +++ b/docs/config/osd.ru.md @@ -11,8 +11,6 @@ момент с перезапуском OSD в /etc/vitastor/vitastor.conf или [vitastor-disk update-sb](../usage/disk.ru.md#update-sb), а некоторые и без перезапуска, с помощью изменения конфигурации в etcd. -- [osd_network](#osd_network) -- [osd_cluster_network](#osd_cluster_network) - [bind_address](#bind_address) - [bind_port](#bind_port) - [osd_iothread_count](#osd_iothread_count) @@ -67,32 +65,15 @@ - [min_discard_size](#min_discard_size) - [allow_net_split](#allow_net_split) -## osd_network - -- Тип: строка или массив строк - -Маски подсетей (IPv4 или IPv6) публичной сети или сетей OSD. Каждый OSD слушает -один и тот же порт на всех адресах поднятых (UP + RUNNING) сетевых интерфейсов, -соответствующих одной из указанных сетей. Порт выбирается автоматически, если -только [bind_port](#bind_port) не задан явно. Адреса для подключений можно -также переопределить явно, задав [bind_address](#bind_address). Если сети OSD -не заданы вообще, OSD слушает все адреса (0.0.0.0). - -## osd_cluster_network - -- Тип: строка или массив строк - -Маски подсетей (IPv4 или IPv6) отдельной кластерной сети или сетей OSD. -То есть, OSD будут всегда стараться использовать эти сети для соединений -с другими OSD, а клиенты будут стараться использовать сети из [osd_network](#osd_network). - ## bind_address - Тип: строка или массив строк -Этим параметром можно явным образом задать адрес(а), на котором будет ожидать -соединений OSD (вместо использования маски подсети). Может быть полезно, -например, чтобы запускать OSD на неподнятых интерфейсах (не UP + RUNNING). +Вместо использования масок подсети ([osd_network](network.ru.md#osd_network) и +[osd_cluster_network](network.ru.md#osd_cluster_network)), вы также можете явно +задать адрес(а), на которых будут ожидать соединений OSD, с помощью данного +параметра. Это может быть полезно, например, чтобы запускать OSD на неподнятых +интерфейсах (не UP + RUNNING). ## bind_port diff --git a/docs/config/src/network.yml b/docs/config/src/network.yml index e1a302d3..a3f93534 100644 --- a/docs/config/src/network.yml +++ b/docs/config/src/network.yml @@ -1,35 +1,32 @@ -- name: tcp_header_buffer_size - type: int - default: 65536 +- name: osd_network + type: string or array of strings + type_ru: строка или массив строк info: | - Size of the buffer used to read data using an additional copy. Vitastor - packet headers are 128 bytes, payload is always at least 4 KB, so it is - usually beneficial to try to read multiple packets at once even though - it requires to copy the data an additional time. The rest of each packet - is received without an additional copy. You can try to play with this - parameter and see how it affects random iops and linear bandwidth if you - want. + Network mask of public OSD network(s) (IPv4 or IPv6). Each OSD listens on all + addresses of UP + RUNNING interfaces matching one of these networks, on the + same port. Port is auto-selected except if [bind_port](osd.en.md#bind_port) is + explicitly specified. Bind address(es) may also be overridden manually by + specifying [bind_address](osd.en.md#bind_address). If OSD networks are not specified + at all, OSD just listens on a wildcard address (0.0.0.0). info_ru: | - Размер буфера для чтения данных с дополнительным копированием. Пакеты - Vitastor содержат 128-байтные заголовки, за которыми следуют данные размером - от 4 КБ и для мелких операций ввода-вывода обычно выгодно за 1 вызов читать - сразу несколько пакетов, даже не смотря на то, что это требует лишний раз - скопировать данные. Часть каждого пакета за пределами значения данного - параметра читается без дополнительного копирования. Вы можете попробовать - поменять этот параметр и посмотреть, как он влияет на производительность - случайного и линейного доступа. -- name: use_sync_send_recv - type: bool - default: false + Маски подсетей (IPv4 или IPv6) публичной сети или сетей OSD. Каждый OSD слушает + один и тот же порт на всех адресах поднятых (UP + RUNNING) сетевых интерфейсов, + соответствующих одной из указанных сетей. Порт выбирается автоматически, если + только [bind_port](osd.ru.md#bind_port) не задан явно. Адреса для подключений можно + также переопределить явно, задав [bind_address](osd.ru.md#bind_address). Если сети OSD + не заданы вообще, OSD слушает все адреса (0.0.0.0). +- name: osd_cluster_network + type: string or array of strings + type_ru: строка или массив строк info: | - If true, synchronous send/recv syscalls are used instead of io_uring for - socket communication. Useless for OSDs because they require io_uring anyway, - but may be required for clients with old kernel versions. + Network mask of separate network(s) (IPv4 or IPv6) to use for OSD + cluster connections. I.e. OSDs will always attempt to use these networks + to connect to other OSDs, while clients will attempt to use networks from + [osd_network](#osd_network). info_ru: | - Если установлено в истину, то вместо io_uring для передачи данных по сети - будут использоваться обычные синхронные системные вызовы send/recv. Для OSD - это бессмысленно, так как OSD в любом случае нуждается в io_uring, но, в - принципе, это может применяться для клиентов со старыми версиями ядра. + Маски подсетей (IPv4 или IPv6) отдельной кластерной сети или сетей OSD. + То есть, OSD будут всегда стараться использовать эти сети для соединений + с другими OSD, а клиенты будут стараться использовать сети из [osd_network](#osd_network). - name: use_rdma type: bool default: true @@ -356,3 +353,35 @@ Минимальный интервал полной перезагрузки состояния из etcd. Добавлено для предотвращения избыточной нагрузки на etcd во время отказов, когда etcd не успевает рассылать потоки событий и отменяет их. +- name: tcp_header_buffer_size + type: int + default: 65536 + info: | + Size of the buffer used to read data using an additional copy. Vitastor + packet headers are 128 bytes, payload is always at least 4 KB, so it is + usually beneficial to try to read multiple packets at once even though + it requires to copy the data an additional time. The rest of each packet + is received without an additional copy. You can try to play with this + parameter and see how it affects random iops and linear bandwidth if you + want. + info_ru: | + Размер буфера для чтения данных с дополнительным копированием. Пакеты + Vitastor содержат 128-байтные заголовки, за которыми следуют данные размером + от 4 КБ и для мелких операций ввода-вывода обычно выгодно за 1 вызов читать + сразу несколько пакетов, даже не смотря на то, что это требует лишний раз + скопировать данные. Часть каждого пакета за пределами значения данного + параметра читается без дополнительного копирования. Вы можете попробовать + поменять этот параметр и посмотреть, как он влияет на производительность + случайного и линейного доступа. +- name: use_sync_send_recv + type: bool + default: false + info: | + If true, synchronous send/recv syscalls are used instead of io_uring for + socket communication. Useless for OSDs because they require io_uring anyway, + but may be required for clients with old kernel versions. + info_ru: | + Если установлено в истину, то вместо io_uring для передачи данных по сети + будут использоваться обычные синхронные системные вызовы send/recv. Для OSD + это бессмысленно, так как OSD в любом случае нуждается в io_uring, но, в + принципе, это может применяться для клиентов со старыми версиями ядра. diff --git a/docs/config/src/osd.yml b/docs/config/src/osd.yml index a88c1101..1594b4f5 100644 --- a/docs/config/src/osd.yml +++ b/docs/config/src/osd.yml @@ -1,43 +1,17 @@ -- name: osd_network - type: string or array of strings - type_ru: строка или массив строк - info: | - Network mask of public OSD network(s) (IPv4 or IPv6). Each OSD listens on all - addresses of UP + RUNNING interfaces matching one of these networks, on the - same port. Port is auto-selected except if [bind_port](#bind_port) is - explicitly specified. Bind address(es) may also be overridden manually by - specifying [bind_address](#bind_address). If OSD networks are not specified - at all, OSD just listens on a wildcard address (0.0.0.0). - info_ru: | - Маски подсетей (IPv4 или IPv6) публичной сети или сетей OSD. Каждый OSD слушает - один и тот же порт на всех адресах поднятых (UP + RUNNING) сетевых интерфейсов, - соответствующих одной из указанных сетей. Порт выбирается автоматически, если - только [bind_port](#bind_port) не задан явно. Адреса для подключений можно - также переопределить явно, задав [bind_address](#bind_address). Если сети OSD - не заданы вообще, OSD слушает все адреса (0.0.0.0). -- name: osd_cluster_network - type: string or array of strings - type_ru: строка или массив строк - info: | - Network mask of separate network(s) (IPv4 or IPv6) to use for OSD - cluster connections. I.e. OSDs will always attempt to use these networks - to connect to other OSDs, while clients will attempt to use networks from - [osd_network](#osd_network). - info_ru: | - Маски подсетей (IPv4 или IPv6) отдельной кластерной сети или сетей OSD. - То есть, OSD будут всегда стараться использовать эти сети для соединений - с другими OSD, а клиенты будут стараться использовать сети из [osd_network](#osd_network). - name: bind_address type: string or array of strings type_ru: строка или массив строк info: | - Instead of the network mask, you can also set OSD listen addresses explicitly - using this parameter. May be useful if you want to start OSDs on interfaces - that are not UP + RUNNING. + Instead of the network masks ([osd_network](network.en.md#osd_network) and + [osd_cluster_network](network.en.md#osd_cluster_network)), you can also set + OSD listen addresses explicitly using this parameter. May be useful if you + want to start OSDs on interfaces that are not UP + RUNNING. info_ru: | - Этим параметром можно явным образом задать адрес(а), на котором будет ожидать - соединений OSD (вместо использования маски подсети). Может быть полезно, - например, чтобы запускать OSD на неподнятых интерфейсах (не UP + RUNNING). + Вместо использования масок подсети ([osd_network](network.ru.md#osd_network) и + [osd_cluster_network](network.ru.md#osd_cluster_network)), вы также можете явно + задать адрес(а), на которых будут ожидать соединений OSD, с помощью данного + параметра. Это может быть полезно, например, чтобы запускать OSD на неподнятых + интерфейсах (не UP + RUNNING). - name: bind_port type: int info: | diff --git a/docs/intro/quickstart.en.md b/docs/intro/quickstart.en.md index 765dda65..dd399582 100644 --- a/docs/intro/quickstart.en.md +++ b/docs/intro/quickstart.en.md @@ -50,7 +50,7 @@ On the monitor hosts: ## Configure OSDs -- Put etcd_address and osd_network into `/etc/vitastor/vitastor.conf`. Example: +- Put etcd_address and [osd_network](../config/network.en.md#osd_network) into `/etc/vitastor/vitastor.conf`. Example: ``` { "etcd_address": ["10.200.1.10:2379","10.200.1.11:2379","10.200.1.12:2379"], diff --git a/docs/intro/quickstart.ru.md b/docs/intro/quickstart.ru.md index 068e9c02..53d1eb14 100644 --- a/docs/intro/quickstart.ru.md +++ b/docs/intro/quickstart.ru.md @@ -50,7 +50,7 @@ ## Настройте OSD -- Пропишите etcd_address и osd_network в `/etc/vitastor/vitastor.conf`. Например: +- Пропишите etcd_address и [osd_network](../config/network.ru.md#osd_network) в `/etc/vitastor/vitastor.conf`. Например: ``` { "etcd_address": ["10.200.1.10:2379","10.200.1.11:2379","10.200.1.12:2379"],