diff --git a/README-ru.md b/README-ru.md index 3f828e63..95e581cc 100644 --- a/README-ru.md +++ b/README-ru.md @@ -26,11 +26,15 @@ Vitastor поддерживает QEMU-драйвер, протоколы UBLK, ## Презентации и записи докладов +- KuberConf'2025: [видео](https://vitastor.io/presentation/kuberconf.webm) +- Highload'2025: [видео](https://vitastor.io/presentation/hl2025/hl2025.webm), + [на youtube](https://www.youtube.com/watch?v=0R8MLjFtz7g), презентация + ([на русском](https://vitastor.io/presentation/hl2025/), [на английском](https://vitastor.io/presentation/hl2025/en.html)) +- Highload'2022: презентация ([на русском](https://vitastor.io/presentation/highload/highload.html)), + [видео](https://vitastor.io/presentation/highload/talk.webm) - DevOpsConf'2021: презентация ([на русском](https://vitastor.io/presentation/devopsconf/devopsconf.html), [на английском](https://vitastor.io/presentation/devopsconf/devopsconf_en.html)), [видео](https://vitastor.io/presentation/devopsconf/talk.webm) -- Highload'2022: презентация ([на русском](https://vitastor.io/presentation/highload/highload.html)), - [видео](https://vitastor.io/presentation/highload/talk.webm) ## Документация diff --git a/README.md b/README.md index 865e4529..63b12bf8 100644 --- a/README.md +++ b/README.md @@ -26,11 +26,15 @@ Read more details in the documentation. You can start from here: [Quick Start](d ## Talks and presentations +- KuberConf'2025: [video](https://vitastor.io/presentation/kuberconf.webm) +- Highload'2025: [video](https://vitastor.io/presentation/hl2025/hl2025.webm), + [youtube](https://www.youtube.com/watch?v=0R8MLjFtz7g), presentation + ([in Russian](https://vitastor.io/presentation/hl2025/), [in English](https://vitastor.io/presentation/hl2025/en.html)) +- Highload'2022: presentation ([in Russian](https://vitastor.io/presentation/highload/highload.html)), + [video](https://vitastor.io/presentation/highload/talk.webm) - DevOpsConf'2021: presentation ([in Russian](https://vitastor.io/presentation/devopsconf/devopsconf.html), [in English](https://vitastor.io/presentation/devopsconf/devopsconf_en.html)), [video](https://vitastor.io/presentation/devopsconf/talk.webm) -- Highload'2022: presentation ([in Russian](https://vitastor.io/presentation/highload/highload.html)), - [video](https://vitastor.io/presentation/highload/talk.webm) ## Documentation diff --git a/docs/config/osd.en.md b/docs/config/osd.en.md index 1676e85e..f7e68e58 100644 --- a/docs/config/osd.en.md +++ b/docs/config/osd.en.md @@ -676,12 +676,20 @@ Retry interval for failed PG lock attempts. Maximum data device atomic write size allowed for OSD to use. -Only affects the new metadata store ([meta_format](layout-osd.en.md#meta_format)=3). +Atomic writes allow to reduce the Write Amplification factor with the new store +([meta_format](layout-osd.en.md#meta_format)=3) to almost 1 (i.e. almost no extra writes) +with replicated pools and reach the best possible write performance. Default value is auto-detected during OSD initialization from `/sys/block/xx/queue/atomic_write_max_bytes` or assumed to be 4096 bytes because all known disks support 4 KB atomic writes. +You can also check if your NVMe drives support atomic writes by running +the command `nvme id-ctrl /dev/nvme0n1 | grep awupf`. If the reported value, +plus 1, multiplied by the currently selected block size of the NVMe, +is more than 4 KB, then the new store can utilize it for better performance. +The only drives known to support it currently are [Micron and Kioxia](../intro/quickstart.en.md). + Atomic writes allow to skip double data writes in replicated pools, thus reducing Write Amplification and improving write performance up to 2 times. diff --git a/docs/config/osd.ru.md b/docs/config/osd.ru.md index 38e22028..5bd97d2b 100644 --- a/docs/config/osd.ru.md +++ b/docs/config/osd.ru.md @@ -709,12 +709,22 @@ pg_minsize OSD во время переключений, что может по Максимальный размер атомарной записи на диск данных, который OSD разрешено использовать. -Затрагивает только новое хранилище ([meta_format](layout-osd.ru.md#meta_format)=3). +Поддержка атомарной записи позволяет снизить мультипликатор записи (Write Amplification) +на диск с новым хранилищем ([meta_format](layout-osd.ru.md#meta_format)=3) +практически до 1 (то есть, почти до нулевого объёма лишней записи) в реплицированных +пулах и достигнуть наилучшей возможной производительности записи. Значение по умолчанию авто-определяется во время инициализации OSD из `/sys/block/xx/queue/atomic_write_max_bytes` либо принимается равным 4096, так как все известные диски поддерживают атомарную запись 4 КБ блоков. +Вы также можете проверить, поддерживают ли ваши NVMe-диски атомарную запись, +с помощью команды `nvme id-ctrl /dev/nvme0n1 | grep awupf`. Если значение awupf +плюс 1, умноженное на текущий выбранный размер блока NVMe-диска, больше 4 КБ, +то новое хранилище может использовать атомарные записи для достижения лучшей +производительности. Единственные известные диски, которые поддерживают это сейчас - +[Micron и Kioxia](../intro/quickstart.ru.md). + Атомарная запись позволяет не использовать двойную запись данных (в журнал и на устройство данных) в реплицированных пулах и таким образом снижает амплификацию записи (объём служебной записи на диск) и улучшает производительность записи diff --git a/docs/config/src/osd.yml b/docs/config/src/osd.yml index 1ea18769..aa331f02 100644 --- a/docs/config/src/osd.yml +++ b/docs/config/src/osd.yml @@ -807,23 +807,41 @@ info: | Maximum data device atomic write size allowed for OSD to use. - Only affects the new metadata store ([meta_format](layout-osd.en.md#meta_format)=3). + Atomic writes allow to reduce the Write Amplification factor with the new store + ([meta_format](layout-osd.en.md#meta_format)=3) to almost 1 (i.e. almost no extra writes) + with replicated pools and reach the best possible write performance. Default value is auto-detected during OSD initialization from `/sys/block/xx/queue/atomic_write_max_bytes` or assumed to be 4096 bytes because all known disks support 4 KB atomic writes. + You can also check if your NVMe drives support atomic writes by running + the command `nvme id-ctrl /dev/nvme0n1 | grep awupf`. If the reported value, + plus 1, multiplied by the currently selected block size of the NVMe, + is more than 4 KB, then the new store can utilize it for better performance. + The only drives known to support it currently are [Micron and Kioxia](../intro/quickstart.en.md). + Atomic writes allow to skip double data writes in replicated pools, thus reducing Write Amplification and improving write performance up to 2 times. info_ru: | Максимальный размер атомарной записи на диск данных, который OSD разрешено использовать. - Затрагивает только новое хранилище ([meta_format](layout-osd.ru.md#meta_format)=3). + Поддержка атомарной записи позволяет снизить мультипликатор записи (Write Amplification) + на диск с новым хранилищем ([meta_format](layout-osd.ru.md#meta_format)=3) + практически до 1 (то есть, почти до нулевого объёма лишней записи) в реплицированных + пулах и достигнуть наилучшей возможной производительности записи. Значение по умолчанию авто-определяется во время инициализации OSD из `/sys/block/xx/queue/atomic_write_max_bytes` либо принимается равным 4096, так как все известные диски поддерживают атомарную запись 4 КБ блоков. + Вы также можете проверить, поддерживают ли ваши NVMe-диски атомарную запись, + с помощью команды `nvme id-ctrl /dev/nvme0n1 | grep awupf`. Если значение awupf + плюс 1, умноженное на текущий выбранный размер блока NVMe-диска, больше 4 КБ, + то новое хранилище может использовать атомарные записи для достижения лучшей + производительности. Единственные известные диски, которые поддерживают это сейчас - + [Micron и Kioxia](../intro/quickstart.ru.md). + Атомарная запись позволяет не использовать двойную запись данных (в журнал и на устройство данных) в реплицированных пулах и таким образом снижает амплификацию записи (объём служебной записи на диск) и улучшает производительность записи diff --git a/docs/intro/features.en.md b/docs/intro/features.en.md index 87432228..9503120c 100644 --- a/docs/intro/features.en.md +++ b/docs/intro/features.en.md @@ -14,6 +14,8 @@ - Basic part: highly-available block storage with symmetric clustering and no SPOF - [Performance](../performance/bench2.en.md) ;-D + - [NVMe atomic write support](../config/osd.en.md#atomic_write_size) for reducing the amount + of "extra" disk writes to almost zero (Write Amplification = 1) - [Multiple redundancy schemes](../config/pool.en.md#scheme): Replication, XOR n+1, Reed-Solomon erasure codes based on jerasure and ISA-L libraries with any number of data and parity drives in a group - Configuration via simple JSON data structures in etcd (parameters, pools and images) diff --git a/docs/intro/features.ru.md b/docs/intro/features.ru.md index b7f84537..4fa755b1 100644 --- a/docs/intro/features.ru.md +++ b/docs/intro/features.ru.md @@ -14,6 +14,8 @@ - Базовая часть - надёжное кластерное блочное хранилище без единой точки отказа - [Производительность](../performance/bench2.ru.md) ;-D + - [Поддержка атомарной записи NVMe](../config/osd.ru.md#atomic_write_size) для снижения объёма + служебной записи практически до нуля (Write Amplification = 1) - [Несколько схем отказоустойчивости](../config/pool.ru.md#scheme): репликация, XOR n+1 (1 диск чётности), коды коррекции ошибок Рида-Соломона на основе библиотек jerasure и ISA-L с любым числом дисков данных и чётности в группе - Конфигурация через простые человекочитаемые JSON-структуры в etcd diff --git a/docs/intro/quickstart.en.md b/docs/intro/quickstart.en.md index dd399582..3366fd6c 100644 --- a/docs/intro/quickstart.en.md +++ b/docs/intro/quickstart.en.md @@ -18,9 +18,10 @@ ## Preparation -- Get some SATA or NVMe SSDs with capacitors (server-grade drives). You can use desktop SSDs - with lazy fsync, but prepare for inferior single-thread latency. Read more about capacitors - [here](../config/layout-cluster.en.md#immediate_commit). +- Get some SATA or NVMe SSDs with capacitors (server-grade drives). The best performance + is achieved with Micron or Kioxia NVMes with atomic write support (see below). You can use desktop + SSDs with lazy fsync, but prepare for inferior single-thread latency. Read more about + capacitors [here](../config/layout-cluster.en.md#immediate_commit). - If you want to use HDDs, get modern HDDs with Media Cache or SSD Cache: HGST Ultrastar, Toshiba MG, Seagate EXOS or something similar. If your drives don't have such cache then you also need small SSDs for journal and metadata (even 2 GB per 1 TB of HDD space is enough). @@ -30,9 +31,11 @@ ## Recommended drives -- SATA SSD: Micron 5100/5200/5300/5400, Samsung PM863/PM883/PM893, Intel D3-S4510/4520/4610/4620, Kingston DC500M -- NVMe: Micron 9100/9200/9300/9400, Micron 7300/7450, Samsung PM983/PM9A3, Samsung PM1723/1735/1743, - Intel DC-P3700/P4500/P4600, Intel D5-P4320/P5530, Intel D7-P5500/P5600, Intel Optane, Kingston DC1000B/DC1500M +- NVMe with atomic write support (ideal!): Micron 7450/7500/7550, Kioxia CD6/CD7/CD8/CD9 +- Other NVMe: Micron 9100/9200/9300/9400/9550, Micron 7300, Samsung PM983/PM9A3, Samsung PM1723/1735/1743, + Intel DC-P3700/P4500/P4600, Intel/Solidigm D5-P4320/P5530, Intel/Solidigm D7-P5500/P5600, Solidigm D7-PS1010/PS1030/P5810, + Intel Optane, Kingston DC1000B/DC1500M, Kioxia CD6/CD7/CD8/CD9 +- SATA SSD: Micron 5100/5200/5300/5400, Samsung PM863/PM883/PM893, Intel/Solidigm D3-S4510/4520/4610/4620, Kingston DC500M - HDD: HGST Ultrastar, Toshiba MG, Seagate EXOS ## Configure monitors diff --git a/docs/intro/quickstart.ru.md b/docs/intro/quickstart.ru.md index 53d1eb14..494d1267 100644 --- a/docs/intro/quickstart.ru.md +++ b/docs/intro/quickstart.ru.md @@ -18,8 +18,9 @@ ## Подготовка -- Возьмите серверы с SSD (SATA или NVMe), желательно с конденсаторами (серверные SSD). Можно - использовать и десктопные SSD, включив режим отложенного fsync, но производительность будет хуже. +- Возьмите серверы с SSD (SATA или NVMe), желательно с конденсаторами (серверные SSD). Наилучшая + производительность достигается на дисках Micron и Kioxia с поддержкой атомарной записи (см. ниже). + Можно использовать и десктопные SSD, включив режим отложенного fsync, но производительность будет хуже. О конденсаторах читайте [здесь](../config/layout-cluster.ru.md#immediate_commit). - Если хотите использовать HDD, берите современные модели с Media или SSD кэшем - HGST Ultrastar, Toshiba MG, Seagate EXOS или что-то похожее. Если такого кэша у ваших дисков нет, @@ -30,9 +31,11 @@ ## Рекомендуемые диски -- SATA SSD: Micron 5100/5200/5300/5400, Samsung PM863/PM883/PM893, Intel D3-S4510/4520/4610/4620, Kingston DC500M -- NVMe: Micron 9100/9200/9300/9400, Micron 7300/7450, Samsung PM983/PM9A3, Samsung PM1723/1735/1743, - Intel DC-P3700/P4500/P4600, Intel D5-P4320/P5530, Intel D7-P5500/P5600, Intel Optane, Kingston DC1000B/DC1500M +- NVMe с поддержкой атомарной записи (идеально!): Micron 7450/7500/7550, Kioxia CD6/CD7/CD8/CD9 +- Другие NVMe: Micron 9100/9200/9300/9400/9550, Micron 7300, Samsung PM983/PM9A3, Samsung PM1723/1735/1743, + Intel DC-P3700/P4500/P4600, Intel/Solidigm D5-P4320/P5530, Intel/Solidigm D7-P5500/P5600, Solidigm D7-PS1010/PS1030/P5810, + Intel Optane, Kingston DC1000B/DC1500M, Kioxia CD6/CD7/CD8/CD9 +- SATA SSD: Micron 5100/5200/5300/5400, Samsung PM863/PM883/PM893, Intel/Solidigm D3-S4510/4520/4610/4620, Kingston DC500M - HDD: HGST Ultrastar, Toshiba MG, Seagate EXOS ## Настройте мониторы diff --git a/docs/performance/theoretical.en.md b/docs/performance/theoretical.en.md index b85d0a43..d6a8764b 100644 --- a/docs/performance/theoretical.en.md +++ b/docs/performance/theoretical.en.md @@ -14,7 +14,7 @@ Replicated setups: - Linear read: `min(total network bandwidth, sum(disk read MB/s))`. - Linear write: `min(total network bandwidth, sum(disk write MB/s / number of replicas))`. - Saturated parallel read iops: `min(total network bandwidth, sum(disk read iops))`. -- Saturated parallel write iops: `min(total network bandwidth / number of replicas, sum(disk write iops / number of replicas / (write amplification = 4)))`. +- Saturated parallel write iops: `min(total network bandwidth / number of replicas, sum(disk write iops / number of replicas / write amplification))`. EC/XOR setups (EC N+K): - Single-threaded (T1Q1) read latency: 1.5 network roundtrips + 1 disk read. @@ -26,28 +26,36 @@ EC/XOR setups (EC N+K): - Linear read: `min(total network bandwidth, sum(disk read MB/s))`. - Linear write: `min(total network bandwidth, sum(disk write MB/s * N/(N+K)))`. - Saturated parallel read iops: `min(total network bandwidth, sum(disk read iops))`. -- Saturated parallel write iops: roughly `total iops / (N+K) / WA`. More exactly, - `min(total network bandwidth * N/(N+K), sum(disk randrw iops / (N*4 + K*5 + 1)))` with - random read/write mix corresponding to `(N-1)/(N*4 + K*5 + 1)*100 % reads`. - - For example, with EC 2+1 it is: `(7% randrw iops) / 14`. - - With EC 6+3 it is: `(12.5% randrw iops) / 40`. +- Saturated parallel write iops: roughly `total iops / (N+K) / WA`. More exactly: + - With the new store: `min(total network bandwidth * N/(N+K), sum(disk randrw iops / (2 + N-1 + K*2)))`, + with random read/write mix corresponding to `(N-1)/(2 + N-1 + K*2)*100 % reads`. + - For example, with EC 2+1 it is: `(20% randrw iops) / 5`. + - With EC 6+3 it is: `(38% randrw iops) / 13`. + - With the old store: `min(total network bandwidth * N/(N+K), sum(disk randrw iops / (3 + N-1 + K*3)))`, + with random read/write mix corresponding to `(N-1)/(3 + N-1 + K*3)*100 % reads`. + - For example, with EC 2+1 it is: `(14% randrw iops) / 7`. + - With EC 6+3 it is: `(30% randrw iops) / 17`. -Write amplification for 4 KB blocks is usually 3-5 in Vitastor: -1. Journal block write -2. Journal data write -3. Metadata block write -4. Another journal block write for EC/XOR setups -5. Data block write +Write Amplification factor: +- For the new store and for 4 KB writes: WA is always 1 unless you set [atomic_write_size](../config/osd.en.md#atomic_write_size) to 0 manually. +- For the new store and for 8-124 KB writes: WA is 1 if you use NVMe drives with atomic write support, or roughly 2 if you use other drives. +- For the old store, WA is roughly `(2 * write size + 4 KB) / (write size)`. So, for 4 KB writes it's 3, and for 8-124 KB writes it's closer to 2. +- For both the new and the old store and for writes of [block_size](../config/layout-cluster.en.md#block_size): WA is almost 1. -If you manage to get an SSD which handles 512 byte blocks well (Optane?) you may -lower 1, 3 and 4 to 512 bytes (1/8 of data size) and get WA as low as 2.375. +Write Amplification consists of: +- For the new store: + - Buffer block write if non-atomic + - Data block write + - Metadata write(s) (amortized) +- For the old store: + - Journal block write (amortized) + - Journal data write + - Metadata block write + - Another journal block write for EC/XOR setups (amortized) + - Data block write -Implemented NVDIMM support can basically eliminate WA at all - all extra writes will -go to DRAM memory. But this requires a test cluster with NVDIMM - please contact me -if you want to provide me with such cluster for tests. - -Lazy fsync also reduces WA for parallel workloads because journal blocks are only -written when they fill up or fsync is requested. +Other possibilities to reduce WA would be to use SSDs with internal 512-byte blocks +or NVDIMM, but both options seem unavailable on the market at the moment. ## In Practice diff --git a/docs/performance/theoretical.ru.md b/docs/performance/theoretical.ru.md index d258545a..095fa3fa 100644 --- a/docs/performance/theoretical.ru.md +++ b/docs/performance/theoretical.ru.md @@ -27,29 +27,36 @@ - Линейное чтение: сумма МБ/с чтения всех дисков, либо общая производительность сети, если в сеть упрётся раньше. - Линейная запись: сумма МБ/с записи всех дисков * N/(N+K), либо производительность сети * N / (N+K), если в сеть упрётся раньше. - Параллельное случайное мелкое чтение: сумма IOPS чтения всех дисков либо производительность сети, если в сеть упрётся раньше. -- Параллельная случайная мелкая запись: грубо `(сумма IOPS / (N+K) / WA)`. Если точнее, то: - сумма смешанного IOPS всех дисков при `(N-1)/(N*4 + K*5 + 1)*100 %` чтения, делённая на `(N*4 + K*5 + 1)`. - Либо, производительность сети * N/(N+K), если в сеть упрётся раньше. - - Например, при EC 2+1 это: `(сумма IOPS при 7% чтения) / 14`. - - При EC 6+3 это: `(сумма IOPS при 12.5% чтения) / 40`. +- Параллельная случайная мелкая запись: грубо `(сумма IOPS / (N+K) / WA)`. + Либо `производительность сети * N/(N+K)`, если в сеть упрётся раньше. Если точнее, то: + - С новым хранилищем: сумма смешанного IOPS всех дисков при `(N-1)/(2 + N-1 + K*2)*100 %` чтения, делённая на `(2 + N-1 + K*2)`. + - Например, при EC 2+1 это: `(сумма IOPS при 20% чтения) / 5`. + - При EC 6+3 это: `(сумма IOPS при 38% чтения) / 13`. + - Со старым хранилищем: сумма смешанного IOPS всех дисков при `(N-1)/(3 + N-1 + K*3)*100 %` чтения, делённая на `(3 + N-1 + K*3)`. + - Например, при EC 2+1 это: `(сумма IOPS при 14% чтения) / 7`. + - При EC 6+3 это: `(сумма IOPS при 30% чтения) / 17`. -WA (мультипликатор записи) для 4 КБ блоков в Vitastor обычно составляет 3-5: -1. Запись метаданных в журнал -2. Запись блока данных в журнал -3. Запись метаданных в БД -4. Ещё одна запись метаданных в журнал при использовании EC -5. Запись блока данных на диск данных +WA (Write Amplification, мультипликатор записи): +- С новым хранилищем для 4 КБ записи: WA всегда примерно 1, если только вы не установите [atomic_write_size](../config/osd.ru.md#atomic_write_size) вручную в 0. +- С новым хранилищем и большими записями (8-124 КБ): WA примерно 1, если вы используете NVMe-диски с поддержкой атомарной записи, + или примерно 2, если вы используете другие диски. +- Со старым хранилищем, WA примерно `(2 * размер записи + 4 КБ) / (размер записи)`. То есть, для 4 КБ записи WA=3, а для 8-124 КБ WA ближе к 2. +- И с новым, и со старым хранилищем и для записи размером [block_size](../config/layout-cluster.ru.md#block_size): WA примерно равен 1. -Если вы найдёте SSD, хорошо работающий с 512-байтными блоками данных (Optane?), -то 1, 3 и 4 можно снизить до 512 байт (1/8 от размера данных) и получить WA всего 2.375. +Мультипликатор записи состоит из: +- С новым хранилищем: + - Запись блока буфера, если диски без поддержки атомарной записи + - Запись блока данных + - Запись(-и) блоков метаданных (амортизированные) +- Со старым хранилищем: + - Запись блока журнала (амортизированная) + - Запись данных в журнал + - Запись блока метаданных + - Ещё одна запись блока журнала для EC/XOR пулов (амортизированная) + - Запись блока данных -Если реализовать поддержку NVDIMM, то WA можно, условно говоря, ликвидировать вообще - все -дополнительные операции записи смогут обслуживаться DRAM памятью. Но для этого необходим -тестовый кластер с NVDIMM - пишите, если готовы предоставить такой для тестов. - -Кроме того, WA снижается при использовании отложенного/ленивого сброса при параллельной -нагрузке, т.к. блоки журнала записываются на диск только когда они заполняются или явным -образом запрашивается fsync. +Другими потенциальными возможностями снижения WA могли бы быть SSD с внутренним 512-байтным блоком +либо NVDIMM, но и то, и другое сейчас выглядит недоступным на рынке. ## На практике diff --git a/docs/usage/admin.en.md b/docs/usage/admin.en.md index ce6daabc..a4dd9dca 100644 --- a/docs/usage/admin.en.md +++ b/docs/usage/admin.en.md @@ -231,6 +231,18 @@ Upgrading from <= 0.5.x to >= 0.6.x is not supported. Downgrade are also allowed freely, except the following specific instructions: +### 3.x -> 2.x + +Versions 3.0.0 and newer contain two store implementations - an old one and a new +one, unsupported in 2.x and previous versions. So you should check your OSD store +versions before downgrading to 2.x with the following command: + +`vitastor-disk read-sb /dev/vitastor/osdXX-data | jq -r .meta_format` + +If it prints 3 then OSD uses the new store and you can't downgrade it to 2.x. + +If it prints 2 or nothing then OSD uses the old store and the downgrade is allowed. + ### 1.8.0 to 1.7.1 Before downgrading from version >= 1.8.0 to version <= 1.7.1 diff --git a/docs/usage/admin.ru.md b/docs/usage/admin.ru.md index a04c50bc..22ea287f 100644 --- a/docs/usage/admin.ru.md +++ b/docs/usage/admin.ru.md @@ -228,6 +228,18 @@ done Откат (понижение версии) тоже свободно разрешён, кроме указанных ниже случаев: +### 3.x -> 2.x + +Версии 3.0.0 и более новые содержат две реализации хранилища - старую и новую, не +поддерживаемую в 2.x и предыдущих версиях. Таким образом, перед откатом на 2.x вам +следует проверить, какая версия хранилища используется вашими OSD - командой: + +`vitastor-disk read-sb /dev/vitastor/osdXX-data | jq -r .meta_format` + +Если выводится 3, это новое хранилище и откатить такой OSD до 2.x нельзя. + +Если выводится 2 или не выводится ничего, это старое хранилище и откат разрешён. + ### 1.8.0 -> 1.7.1 Перед понижением версии с >= 1.8.0 до <= 1.7.1 вы должны скопировать ключ