Files
tromcho.net/docs/installation/docker.ru.md
Vitaliy Filippov 63fe3c323a Release 3.0.12
Important fixes (except the new store):

- Fixed a possible use-after-free in the OSD during error handling of initial
  commit/rollback of objects in EC pools.
- Fixed a possible free of an invalid pointer in the OSD during read errors
  from snapshot/clone chains in EC pools.
- Fixed possibly incorrect handling of commit/rollback operations in EC pools
  during pool PG count changes.
- Fixed the inverted fsync enable parameter in the ublk driver (fsync was not
  enabled on pools without immediate_commit).
- Added the raw-ls command for debugging purposes to find object versions in
  the cluster using listing operations.

New store fixes:

- Improved startup speed by using LSN-based sorting only for objects with a
  large number of intermediate versions.
- Added skip_double_claim option as a temporary workaround to fix the rare OSD
  startup error with the "double claimed block" message, observed by several
  users. This option does not affect data integrity.
- Fixed incorrect rechecking of small writes during startup, which in theory
  could lead to duplicate small write object entries on the OSD.
- Fixed fsync operation for disks with a writeback cache (without capacitors):
  - Fixed incorrect semantics of consecutive fsyncs (next fsync was not blocked
    by the previous one).
  - Added fsync when copying small writes from the buffer to the data device
    (somehow forgotten during initial development).
  - Added fsync after the initial garbage collection during OSD startup.
  - Fixed incorrect cast of LSN from uint64 to uint32, breaking fsync when
    reaching LSN 2^32.
- Added missing verification of the metadata header checksum during startup.
- Fixed incorrect updating of object checksums in perfect_csum_update=true mode.
- Fixed a possible OSD crash with "assertion failed" when processing a malformed
  EC STABILIZE operation.
- Fixed the accounting of active compactor coroutines.
- Removed broken and untested new->old store conversion support.

Minor issues fixed:

- Incorrect accounting of OSD local operation statistics in replicated pools.
- Missing non-zero exitcodes on vitastor-disk resize command errors.
- Missing reset of the list of inconsistent objects during PG restarts.
- Theoretically possible hangs of various OSD operations when working with
  completely corrupted objects (without a single available copy), and possibly
  in some other very rare situations.
- Incorrect fsyncs when deleting objects from pools without immediate_commit
  (on disks with a writeback cache), which previously could leave garbage when
  deleting misplaced objects.
- Possible crash/memory corruption of the NFS server during a targeted attack
  on NFS-RDMA.
- Possibly incorrect handling of ENOSPC/EIO write errors in replicated pools,
  leading to inability to retry the write later.
- Possible crash instead of a clean error exit when starting an OSD with the
  old storage engine on a disk with corrupted journal data.
- Shallow copying of PG configuration in the monitor, however, not related to
  actual bugs.
- Incorrect checking of allocated blocks in the QEMU driver in an unused code
  branch (without the BDRV_WANT_ZERO flag).
- Possible memory leak on read errors of corrupted objects.
- Possible incorrect PG states when corrupted objects are detected.
- Possible failure to mark all "bad" copies of an object during scrubs without
  checksums and with a large number of replicas (> 4).
- Incorrect checksum calculation in the old storage engine when
  bitmap_granularity < 4096 (a practically unused configuration).
- Theoretically possible OSD crash in rare cases during a scrub and simultaneous
  object recovery.
- Theoretically possible OSD crash when handling PING operation errors.
- Slightly suboptimal logic for reusing the RDMA send buffer.
- Possible memory leak when canceling an already running scrub via no_scrub.
- Possible memory corruption when a client (e.g., QEMU code) passes invalid
  buffers and the writeback cache is enabled.
- Potentially incorrect search for corrupted parts of EC objects (inability
  to find a "good" combination) during a scrub with checksums disabled.
- Possible additional memory usage on the OSD side when handling failed reads
  from snapshots (not a leak however - the memory was freed upon client
  disconnection).
- Potential sudden write slowdown at certain pg epoch values due to incorrect
  epoch update logic in etcd.
2026-05-18 02:24:22 +03:00

4.4 KiB

Документация → Установка → Установка в Docker


Read in English

Установка в Docker

Vitastor можно установить в Docker/Podman. При этом etcd, мониторы и OSD запускаются в контейнерах, но всё остальное выглядит максимально приближенно к установке из пакетов:

  • используется сеть хост-системы
  • для автозапуска используются udev и systemd
  • журналы записываются в journald (не в json-файлы журналов docker)
  • в хост-систему устанавливаются обёртки для вызова консольных инструментов vitastor-disk, vitastor-cli и других через контейнер

Такая установка полезна тогда, когда установка из пакетов невозможна или неудобна, например, в нестандартных Linux-дистрибутивах.

Если вам нужна не просто контейнеризованная инсталляция, вы также можете обратить внимание на Vitastor Kubernetes-оператор: https://github.com/Antilles7227/vitastor-operator

Установка контейнеров

Инструкция по установке максимально простая.

  1. Скачайте Docker-образ желаемой версии:
    docker pull vitalif/vitastor:v3.0.12
  2. Установите скрипты в хост-систему командой:
    docker run --rm -it -v /etc:/host-etc -v /usr/bin:/host-bin vitalif/vitastor:v3.0.12 install.sh
  3. Перезагрузите правила udev:
    udevadm control --reload-rules
  4. Включите сервис vitastor-host:
    systemctl enable --now vitastor-host

После этого вы можете возвращаться к разделу Быстрый старт.

Podman

Если вы используете Podman, перед установкой контейнеров Vitastor выполните следующие команды от имени суперпользователя:

ln -s podman /usr/bin/docker

mkdir -p /etc/systemd/system/systemd-udevd.service.d

cat >/etc/systemd/system/systemd-udevd.service.d/override.conf <<EOF
[Service]
CapabilityBoundingSet=~
SystemCallFilter=@mount capset
EOF

systemctl daemon-reload

systemctl restart systemd-udevd

Без этих настроек udev не может делать вызовы внутрь Podman-контейнеров и определение дисков Vitastor не работает.

Обновление контейнеров

Сначала обязательно проверьте раздел Обновление Vitastor, чтобы понять, не требуются ли вам какие-то дополнительные действия.

После этого для обновления Docker-инсталляции вам нужно просто поменять опцию VITASTOR_VERSION в файле /etc/vitastor/docker.conf и перезапустить все сервисы Vitastor командой:

systemctl restart vitastor.target

QEMU

В Docker-образ также входят QEMU, qemu-img и qemu-storage-daemon, собранные с поддержкой Vitastor.

Однако настроить запуск QEMU в Docker сложнее и способ запуска зависит от используемого интерфейса виртуализации (OpenNebula, Proxmox и т.п.). Также для OpenNebula, например, требуется патченый Libvirt.

Поэтому по умолчанию Docker-сборка пока что не включает в себя готового способа запуска QEMU и QEMU рекомендуется устанавливать из пакетов или собирать самостоятельно.

fio

fio также входит в Docker-контейнер vitastor, и в хост-систему устанавливается обёртка vitastor-fio для запуска fio в контейнер.