New features: - [Localized read support](https://vitastor.io/docs/config/pool.html#local_reads) for multi-datacenter setups. - io_uring-based [zero-copy send support](https://vitastor.io/docs/config/network.html#min_zerocopy_send_size) - read the instruction carefully for optimal performance! - Improve and speedup data distribution, especially in cases of very large hosts (100 OSD+). Previously, PG optimization speed depended on the number of OSDs, now it only depends on the number of failure domains. Distribution over specific OSDs is now also more even and becomes strictly more even when you increase the number of PGs. - Add a [very interesting instruction](https://vitastor.io/en/docs/usage/nfs.html#linux-nfs-write-size) to change NFS_MAX_FILE_IO_SIZE - Check operation sequencing and stop connections when it breaks - should help catch some very rare RDMA packet loss problems. - `vitastor-cli rm-osd` now refuses to remove OSDs which are still up and suggests to use `vitastor-disk purge`. - Allow removal of direntries referring non-existent in VitastorFS. - Change default vitastor-etcd data dir to /var/lib/etcd/vitastor. Bug fixes: - Fix compatibility with ISA-L 2.31+. ⚠️Very important: please upgrade Vitastor before upgrading ISA-L to 2.31+. - Fix in-memory state cleanup for incomplete PGs. - Fix monitor crash with non-existent node_placement nodes. - Slightly speedup `vitastor-kv dump` command by adding output buffering. - Fix theoretically possible slowdowns in OSD sub-operation failure handling code. - Fix very rare stack overflows in vitastor-kv. - Fix a possible crash in VitastorFS during handling of file creation race condition. - Fix modify-pool -s PG_SIZE which didn't work without --pg_minsize. - Fix marking peer OSDs as alive on receiving data from them via RDMA - in theory, the bug could result in instability with RDMA under high load with slow disks. - Fix a rare OSD crash due to double handle_primary_subop() call. - Fix latency aggregation in global stats (/vitastor/stats in etcd) - do not sum it. - Hide "Ran out of journal space" log messages by default. - Wait for RDMA-CM EVENT_ESTABLISHED after rdma_accept(), handle rdma_accept() before acking the event. - Fix VitastorFS total & free numbers multiplied by extra 2. - Fix systemd unit name in make-etcd. - Do not allow reweight > 1 in vitastor-cli modify-osd. - Fix docker build.
2.3 KiB
Documentation → Installation → Dockerized Installation
Dockerized Installation
Vitastor may be installed in Docker/Podman. In such setups etcd, monitors and OSD all run in containers, but everything else looks as close as possible to a usual setup with packages:
- host network is used
- auto-start is implemented through udev and systemd
- logs are written to journald (not docker json log files)
- command-line wrapper scripts are installed to the host system to call vitastor-disk, vitastor-cli and others through the container
Such installations may be useful when it's impossible or inconvenient to install Vitastor from packages, for example, in exotic Linux distributions.
If you don't want just a simple containerized installation, you can also take a look at Vitastor Kubernetes operator: https://github.com/Antilles7227/vitastor-operator
Installing Containers
The instruction is very simple.
- Download a Docker image of the desired version:
docker pull vitastor:v2.2.0 - Install scripts to the host system:
docker run --rm -it -v /etc:/host-etc -v /usr/bin:/host-bin vitastor:v2.2.0 install.sh - Reload udev rules:
udevadm control --reload-rules
And you can return to Quick Start.
Upgrading Containers
First make sure to check the topic Upgrading Vitastor to figure out if you need any additional steps.
Then, to upgrade a containerized installation, you just need to change the VITASTOR_VERSION
option in /etc/vitastor/docker.conf and restart all Vitastor services:
systemctl restart vitastor.target
QEMU
Vitastor Docker image also contains QEMU, qemu-img and qemu-storage-daemon built with Vitastor support.
However, running QEMU in Docker is harder to setup and it depends on the used virtualization UI (OpenNebula, Proxmox and so on). Some of them also required patched Libvirt.
That's why containerized installation of Vitastor doesn't contain a ready-made QEMU setup and it's recommended to install QEMU from packages or build it manually.
fio
Vitastor Docker image also contains fio and installs a wrapper called vitastor-fio to use it from
the host system.