• v2.4.0 59f87c3e30

    Release 2.4.0
    Some checks failed
    Test / buildenv (push) Successful in 10s
    Test / build (push) Successful in 4m1s
    Test / npm_lint (push) Successful in 9s
    Test / test_cas (push) Successful in 9s
    Test / test_change_pg_count (push) Successful in 33s
    Test / make_test (push) Successful in 1m8s
    Test / test_add_osd (push) Successful in 1m14s
    Test / test_change_pg_count_ec (push) Successful in 32s
    Test / test_change_pg_size (push) Successful in 10s
    Test / test_create_nomaxid (push) Successful in 9s
    Test / test_etcd_fail (push) Successful in 44s
    Test / test_change_pg_count_online (push) Successful in 1m9s
    Test / test_etcd_fail_antietcd (push) Successful in 40s
    Test / test_interrupted_rebalance (push) Successful in 48s
    Test / test_interrupted_rebalance_imm (push) Successful in 45s
    Test / test_interrupted_rebalance_ec (push) Successful in 46s
    Test / test_create_halfhost (push) Successful in 5s
    Test / test_failure_domain (push) Successful in 12s
    Test / test_snapshot (push) Successful in 12s
    Test / test_snapshot_ec (push) Successful in 13s
    Test / test_rm (push) Successful in 8s
    Test / test_minsize_1 (push) Successful in 12s
    Test / test_move_reappear (push) Successful in 16s
    Test / test_interrupted_rebalance_ec_imm (push) Successful in 47s
    Test / test_snapshot_down (push) Successful in 12s
    Test / test_snapshot_chain (push) Successful in 27s
    Test / test_snapshot_down_ec (push) Successful in 13s
    Test / test_snapshot_chain_ec (push) Successful in 35s
    Test / test_splitbrain (push) Successful in 13s
    Test / test_rebalance_verify (push) Successful in 1m41s
    Test / test_rebalance_verify_imm (push) Successful in 1m43s
    Test / test_rebalance_verify_ec (push) Successful in 1m48s
    Test / test_dd (push) Successful in 14s
    Test / test_root_node (push) Successful in 7s
    Test / test_rm_degraded (push) Failing after 3m5s
    Test / test_switch_primary (push) Successful in 33s
    Test / test_write (push) Successful in 33s
    Test / test_write_no_same (push) Successful in 10s
    Test / test_write_xor (push) Successful in 36s
    Test / test_write_iothreads (push) Successful in 38s
    Test / test_rebalance_verify_ec_imm (push) Successful in 1m39s
    Test / test_heal_pg_size_2 (push) Successful in 2m15s
    Test / test_reweight_half (push) Successful in 11s
    Test / test_heal_local_read (push) Successful in 2m16s
    Test / test_snapshot_pool2 (push) Successful in 14s
    Test / test_heal_ec (push) Successful in 2m19s
    Test / test_snapshot_read_bitmap (push) Successful in 10s
    Test / test_heal_antietcd (push) Successful in 2m20s
    Test / test_heal_csum_32k_dj (push) Successful in 2m28s
    Test / test_heal_csum_32k (push) Successful in 2m26s
    Test / test_heal_csum_4k_dmj (push) Successful in 2m27s
    Test / test_heal_csum_32k_dmj (push) Failing after 2m40s
    Test / test_resize (push) Successful in 16s
    Test / test_resize_auto (push) Successful in 10s
    Test / test_osd_tags (push) Successful in 10s
    Test / test_enospc (push) Successful in 12s
    Test / test_enospc_xor (push) Successful in 14s
    Test / test_enospc_imm (push) Successful in 10s
    Test / test_enospc_imm_xor (push) Successful in 16s
    Test / test_scrub (push) Successful in 16s
    Test / test_scrub_zero_osd_2 (push) Successful in 14s
    Test / test_scrub_xor (push) Successful in 17s
    Test / test_scrub_pg_size_3 (push) Successful in 16s
    Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 19s
    Test / test_scrub_ec (push) Successful in 16s
    Test / test_nfs (push) Successful in 13s
    Test / test_heal_csum_4k_dj (push) Successful in 2m20s
    Test / test_heal_csum_4k (push) Successful in 2m22s
    Stable

    vitalif released this 2025-09-24 15:40:41 +03:00 | 2 commits to master since this release

    New features:

    • Support UBLK in CSI and make it the default
    • Add image tree output: vitastor-cli ls --tree

    Bug fixes:

    • Fix OSDs crashing on localized reads from snapshotted images
    • Several NFS fixes from github PR #95
    • Fix snapshotted bitmap reads not working in EC pools (fix #92)
    • Fix UBLK reporting incorrect device size (1/8 of actual size), report logical_block_size=4096
    • Do not repeer when stopping PEER_CONNECTING osd_clients (increase PG peering stability on failover)
    • Fix marking PGs as incomplete when peers are unavailable
    • Fix FS formatter (mkfs and fsck) error handling in CSI (it didn't report mounting errors)
    • Fix removal of block PVC devices not working in CSI
    • Do not attempt to free outbound ops in clear_immediate_ops (fix #88)
    • Add vitastor-disk prepare --dry-run option
    • Add librdmacm-dev to build-deps
    • Log has_invalid objects
    • Do not warn on incomplete+has_invalid PG states as unexpected
    • Fix OSD reweight values between 0 and 1 not working in monitor
    • Fix OSD assertion failed: n_subops != sent when all object copies are corrupted
    • Install ibverbs-providers in vitastor Docker builds
    • Fix #86 - base64_decode on arm64 O_o
    • Fix Proxmox 9.0 support (remove some kind of a whitelist added in upstream)
    Downloads
  • v2.3.0 0c89886374

    Release 2.3.0
    All checks were successful
    Test / buildenv (push) Successful in 15s
    Test / build (push) Successful in 4m28s
    Test / npm_lint (push) Successful in 11s
    Test / test_cas (push) Successful in 10s
    Test / make_test (push) Successful in 39s
    Test / test_change_pg_count (push) Successful in 31s
    Test / test_change_pg_count_ec (push) Successful in 36s
    Test / test_change_pg_size (push) Successful in 8s
    Test / test_create_nomaxid (push) Successful in 9s
    Test / test_add_osd (push) Successful in 1m15s
    Test / test_etcd_fail (push) Successful in 42s
    Test / test_etcd_fail_antietcd (push) Successful in 40s
    Test / test_change_pg_count_online (push) Successful in 1m12s
    Test / test_interrupted_rebalance (push) Successful in 46s
    Test / test_create_halfhost (push) Successful in 6s
    Test / test_failure_domain (push) Successful in 10s
    Test / test_interrupted_rebalance_imm (push) Successful in 49s
    Test / test_interrupted_rebalance_ec (push) Successful in 53s
    Test / test_snapshot (push) Successful in 13s
    Test / test_snapshot_ec (push) Successful in 13s
    Test / test_interrupted_rebalance_ec_imm (push) Successful in 49s
    Test / test_minsize_1 (push) Successful in 12s
    Test / test_rm (push) Successful in 10s
    Test / test_move_reappear (push) Successful in 16s
    Test / test_snapshot_down (push) Successful in 11s
    Test / test_snapshot_chain (push) Successful in 28s
    Test / test_snapshot_down_ec (push) Successful in 11s
    Test / test_snapshot_chain_ec (push) Successful in 35s
    Test / test_splitbrain (push) Successful in 12s
    Test / test_rm_degraded (push) Successful in 1m4s
    Test / test_rebalance_verify (push) Successful in 1m47s
    Test / test_rebalance_verify_imm (push) Successful in 1m46s
    Test / test_dd (push) Successful in 12s
    Test / test_rebalance_verify_ec (push) Successful in 1m51s
    Test / test_root_node (push) Successful in 10s
    Test / test_rebalance_verify_ec_imm (push) Successful in 1m46s
    Test / test_switch_primary (push) Successful in 32s
    Test / test_write (push) Successful in 37s
    Test / test_write_no_same (push) Successful in 11s
    Test / test_write_xor (push) Successful in 39s
    Test / test_write_iothreads (push) Successful in 41s
    Test / test_heal_pg_size_2 (push) Successful in 2m20s
    Test / test_heal_local_read (push) Successful in 2m21s
    Test / test_heal_ec (push) Successful in 2m22s
    Test / test_heal_csum_32k_dmj (push) Successful in 2m21s
    Test / test_heal_csum_32k_dj (push) Successful in 2m20s
    Test / test_heal_csum_32k (push) Successful in 2m19s
    Test / test_resize (push) Successful in 14s
    Test / test_heal_csum_4k_dmj (push) Successful in 2m25s
    Test / test_resize_auto (push) Successful in 9s
    Test / test_osd_tags (push) Successful in 8s
    Test / test_snapshot_pool2 (push) Successful in 15s
    Test / test_enospc (push) Successful in 19s
    Test / test_enospc_xor (push) Successful in 20s
    Test / test_enospc_imm (push) Successful in 12s
    Test / test_enospc_imm_xor (push) Successful in 16s
    Test / test_scrub (push) Successful in 17s
    Test / test_scrub_zero_osd_2 (push) Successful in 19s
    Test / test_scrub_xor (push) Successful in 18s
    Test / test_scrub_pg_size_3 (push) Successful in 16s
    Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 18s
    Test / test_scrub_ec (push) Successful in 16s
    Test / test_nfs (push) Successful in 12s
    Test / test_heal_csum_4k_dj (push) Successful in 2m20s
    Test / test_heal_csum_4k (push) Successful in 2m22s
    Test / test_heal_antietcd (push) Successful in 2m21s
    Stable

    vitalif released this 2025-08-25 21:39:19 +03:00 | 34 commits to master since this release

    New features:

    • Add a new kernel device mounting method: ublk.
      It's the fastest method for random IOPS, and it's on par with VDUSE for linear MB/s.
    • Disable io_uring waits being reported as iowait on kernels which support it (6.15+)
    • Allow to enforce permissions at the VitastorFS NFS server side
    • Add qemu_file_mirror_path option to the config to allow to trick Veeam and make it work
    • Speed up CRC32C calculation in OSD by fixing a bug and enabling AVX512 version
    • Support QEMU 10
    • Support Debian 13 Trixie and Proxmox 9.0
    • Remove the dependency on system liburing in package builds (build it statically)

    Bug fixes:

    • Fix checksums NEVER BEING ENABLED in vitastor-disk prepare, even when explicitly requested :-D
    • Use default uid and gid from NFS AUTH_SYS when creating files
    • Fix object bitmaps supposedly & possibly being corrupted in some rare cases with EC N+2+
    • Avoid multiple inflight overwrites to meta blocks - fixes possible data corruption with
      one specific SSD model: Memblaze PBlaze5 910 (github #79)
    • Fix a bug in antietcd which was leading to leases sometimes not expiring correctly
    • Fix a bug in NFS where ".." entry had its cookie equal to 0 instead of 1 (github #78)
    • Fix snapshots not being deleted during VM deletion in Proxmox plugin (github #85)
    • Fix monitor not filtering OSDs by block size correctly
    Downloads
  • v2.2.3 b529f77264

    Release 2.2.3 Stable

    vitalif released this 2025-07-30 10:50:02 +03:00 | 69 commits to master since this release

    • Support Ubuntu 24.04 Noble
    • Fix clients hanging on online PG count change with in-flight operations
    • Fix volume_size_info in PVE VitastorPlugin
    • Implement bdrv_refresh_filename for the QEMU driver
    • Fix RDMA-CM broken in 2.2.0
    • Fix possible "invalid %N$ use detected" OSD crashes
    • Fix vitastor-nfs build without RDMA
    • Fix docker build by adding the forgotten apt/preferences
    • Fix libfio_blockstore.so
    • Fix "trigger event loop automatically" API version check in the QEMU driver
    • Add Content-Type header for prometheus metrics
    • Add a patch for libvirt 11.5
    Downloads
  • v2.2.2 97bb809b54

    Release 2.2.2
    Some checks reported warnings
    Test / test_snapshot (push) Blocked by required conditions
    Test / test_snapshot_ec (push) Blocked by required conditions
    Test / test_minsize_1 (push) Blocked by required conditions
    Test / test_move_reappear (push) Blocked by required conditions
    Test / test_rm (push) Blocked by required conditions
    Test / test_rm_degraded (push) Blocked by required conditions
    Test / test_snapshot_chain (push) Blocked by required conditions
    Test / test_snapshot_chain_ec (push) Blocked by required conditions
    Test / test_snapshot_down (push) Blocked by required conditions
    Test / test_snapshot_down_ec (push) Blocked by required conditions
    Test / test_splitbrain (push) Blocked by required conditions
    Test / test_rebalance_verify (push) Blocked by required conditions
    Test / test_rebalance_verify_imm (push) Blocked by required conditions
    Test / test_rebalance_verify_ec (push) Blocked by required conditions
    Test / test_rebalance_verify_ec_imm (push) Blocked by required conditions
    Test / test_dd (push) Blocked by required conditions
    Test / test_root_node (push) Blocked by required conditions
    Test / test_switch_primary (push) Blocked by required conditions
    Test / test_write (push) Blocked by required conditions
    Test / test_write_xor (push) Blocked by required conditions
    Test / test_write_iothreads (push) Blocked by required conditions
    Test / test_write_no_same (push) Blocked by required conditions
    Test / test_heal_pg_size_2 (push) Blocked by required conditions
    Test / test_heal_local_read (push) Blocked by required conditions
    Test / test_heal_ec (push) Blocked by required conditions
    Test / test_heal_antietcd (push) Blocked by required conditions
    Test / test_heal_csum_32k_dmj (push) Blocked by required conditions
    Test / test_heal_csum_32k_dj (push) Blocked by required conditions
    Test / test_heal_csum_32k (push) Blocked by required conditions
    Test / test_heal_csum_4k_dmj (push) Blocked by required conditions
    Test / test_heal_csum_4k_dj (push) Blocked by required conditions
    Test / test_heal_csum_4k (push) Blocked by required conditions
    Test / test_resize (push) Blocked by required conditions
    Test / test_resize_auto (push) Blocked by required conditions
    Test / test_snapshot_pool2 (push) Blocked by required conditions
    Test / test_osd_tags (push) Blocked by required conditions
    Test / test_enospc (push) Blocked by required conditions
    Test / test_enospc_xor (push) Blocked by required conditions
    Test / test_enospc_imm (push) Blocked by required conditions
    Test / test_enospc_imm_xor (push) Blocked by required conditions
    Test / test_scrub (push) Blocked by required conditions
    Test / test_scrub_zero_osd_2 (push) Blocked by required conditions
    Test / test_scrub_xor (push) Blocked by required conditions
    Test / test_scrub_pg_size_3 (push) Blocked by required conditions
    Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Blocked by required conditions
    Test / test_scrub_ec (push) Blocked by required conditions
    Test / test_nfs (push) Blocked by required conditions
    Test / buildenv (push) Successful in 10s
    Test / make_test (push) Has been cancelled
    Test / npm_lint (push) Has been cancelled
    Test / test_add_osd (push) Has been cancelled
    Test / test_cas (push) Has been cancelled
    Test / build (push) Has been cancelled
    Test / test_change_pg_count (push) Has been cancelled
    Test / test_change_pg_count_ec (push) Has been cancelled
    Test / test_change_pg_size (push) Has been cancelled
    Test / test_create_nomaxid (push) Has been cancelled
    Test / test_etcd_fail (push) Has been cancelled
    Test / test_etcd_fail_antietcd (push) Has been cancelled
    Test / test_interrupted_rebalance (push) Has been cancelled
    Test / test_interrupted_rebalance_imm (push) Has been cancelled
    Test / test_interrupted_rebalance_ec (push) Has been cancelled
    Test / test_interrupted_rebalance_ec_imm (push) Has been cancelled
    Test / test_create_halfhost (push) Has been cancelled
    Test / test_failure_domain (push) Has been cancelled
    Stable

    vitalif released this 2025-06-07 12:56:48 +03:00 | 92 commits to master since this release

    • Fix a bug introduced in 2.2.0 - pg_locks weren't disabled for pools without local_reads
      correctly which could lead to inactive pools during various operations
    • Fix an old bug where OSDs could send sub-operations to incorrect peer OSDs when their
      connections were stopped and reestablished quickly, in 2.2.0 it was usually leading
      to "sequencing broken" messages in OSD logs
    • Fix debug use_sync_send_recv mode
    Downloads
  • v2.2.1 957a4fce7e

    Release 2.2.1
    All checks were successful
    Test / buildenv (push) Successful in 10s
    Test / build (push) Successful in 4m19s
    Test / npm_lint (push) Successful in 12s
    Test / test_cas (push) Successful in 9s
    Test / make_test (push) Successful in 38s
    Test / test_change_pg_size (push) Successful in 7s
    Test / test_change_pg_count (push) Successful in 32s
    Test / test_change_pg_count_ec (push) Successful in 32s
    Test / test_create_nomaxid (push) Successful in 8s
    Test / test_add_osd (push) Successful in 1m16s
    Test / test_etcd_fail_antietcd (push) Successful in 39s
    Test / test_etcd_fail (push) Successful in 43s
    Test / test_interrupted_rebalance (push) Successful in 51s
    Test / test_create_halfhost (push) Successful in 7s
    Test / test_failure_domain (push) Successful in 10s
    Test / test_interrupted_rebalance_imm (push) Successful in 47s
    Test / test_snapshot (push) Successful in 13s
    Test / test_snapshot_ec (push) Successful in 14s
    Test / test_interrupted_rebalance_ec_imm (push) Successful in 54s
    Test / test_interrupted_rebalance_ec (push) Successful in 57s
    Test / test_minsize_1 (push) Successful in 13s
    Test / test_rm (push) Successful in 10s
    Test / test_move_reappear (push) Successful in 17s
    Test / test_snapshot_down (push) Successful in 11s
    Test / test_snapshot_chain (push) Successful in 28s
    Test / test_snapshot_down_ec (push) Successful in 11s
    Test / test_snapshot_chain_ec (push) Successful in 36s
    Test / test_splitbrain (push) Successful in 12s
    Test / test_rm_degraded (push) Successful in 1m1s
    Test / test_dd (push) Successful in 11s
    Test / test_root_node (push) Successful in 10s
    Test / test_switch_primary (push) Successful in 33s
    Test / test_rebalance_verify_imm (push) Successful in 1m39s
    Test / test_write (push) Successful in 34s
    Test / test_rebalance_verify_ec (push) Successful in 1m46s
    Test / test_rebalance_verify_ec_imm (push) Successful in 1m47s
    Test / test_write_no_same (push) Successful in 9s
    Test / test_write_xor (push) Successful in 36s
    Test / test_write_iothreads (push) Successful in 36s
    Test / test_heal_pg_size_2 (push) Successful in 2m15s
    Test / test_heal_local_read (push) Successful in 2m21s
    Test / test_heal_ec (push) Successful in 2m16s
    Test / test_heal_antietcd (push) Successful in 2m18s
    Test / test_heal_csum_32k_dmj (push) Successful in 2m29s
    Test / test_heal_csum_32k_dj (push) Successful in 2m24s
    Test / test_heal_csum_32k (push) Successful in 2m29s
    Test / test_heal_csum_4k_dmj (push) Successful in 2m27s
    Test / test_resize_auto (push) Successful in 11s
    Test / test_resize (push) Successful in 18s
    Test / test_osd_tags (push) Successful in 10s
    Test / test_snapshot_pool2 (push) Successful in 18s
    Test / test_enospc (push) Successful in 12s
    Test / test_enospc_xor (push) Successful in 14s
    Test / test_enospc_imm (push) Successful in 11s
    Test / test_enospc_imm_xor (push) Successful in 15s
    Test / test_scrub (push) Successful in 12s
    Test / test_scrub_zero_osd_2 (push) Successful in 14s
    Test / test_scrub_xor (push) Successful in 16s
    Test / test_scrub_pg_size_3 (push) Successful in 13s
    Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 16s
    Test / test_scrub_ec (push) Successful in 17s
    Test / test_nfs (push) Successful in 11s
    Test / test_heal_csum_4k_dj (push) Successful in 2m24s
    Test / test_heal_csum_4k (push) Successful in 2m27s
    Test / test_rebalance_verify (push) Successful in 1m51s
    Stable

    vitalif released this 2025-05-25 01:04:48 +03:00 | 102 commits to master since this release

    • Fix vitastor-disk purge broken after adding the "OSD is still running" check
    • Fix iothreads hanging after adding zero-copy send support
    • Fix enabling localized reads online (without restarting OSDs) in the default PG lock mode
    Downloads
  • v2.2.0 95ec750b8c

    Release 2.2.0
    All checks were successful
    Test / buildenv (push) Successful in 10s
    Test / build (push) Successful in 4m15s
    Test / npm_lint (push) Successful in 12s
    Test / test_cas (push) Successful in 11s
    Test / make_test (push) Successful in 42s
    Test / test_change_pg_size (push) Successful in 7s
    Test / test_change_pg_count (push) Successful in 35s
    Test / test_change_pg_count_ec (push) Successful in 38s
    Test / test_create_nomaxid (push) Successful in 7s
    Test / test_add_osd (push) Successful in 1m22s
    Test / test_etcd_fail_antietcd (push) Successful in 38s
    Test / test_etcd_fail (push) Successful in 43s
    Test / test_interrupted_rebalance (push) Successful in 45s
    Test / test_create_halfhost (push) Successful in 7s
    Test / test_failure_domain (push) Successful in 13s
    Test / test_interrupted_rebalance_imm (push) Successful in 47s
    Test / test_snapshot (push) Successful in 15s
    Test / test_interrupted_rebalance_ec (push) Successful in 47s
    Test / test_interrupted_rebalance_ec_imm (push) Successful in 49s
    Test / test_snapshot_ec (push) Successful in 16s
    Test / test_minsize_1 (push) Successful in 12s
    Test / test_rm (push) Successful in 10s
    Test / test_move_reappear (push) Successful in 16s
    Test / test_snapshot_down (push) Successful in 14s
    Test / test_snapshot_chain (push) Successful in 30s
    Test / test_snapshot_down_ec (push) Successful in 11s
    Test / test_snapshot_chain_ec (push) Successful in 37s
    Test / test_splitbrain (push) Successful in 12s
    Test / test_rm_degraded (push) Successful in 1m3s
    Test / test_rebalance_verify (push) Successful in 1m37s
    Test / test_rebalance_verify_imm (push) Successful in 1m37s
    Test / test_dd (push) Successful in 13s
    Test / test_rebalance_verify_ec (push) Successful in 1m42s
    Test / test_root_node (push) Successful in 9s
    Test / test_rebalance_verify_ec_imm (push) Successful in 1m43s
    Test / test_write_no_same (push) Successful in 7s
    Test / test_switch_primary (push) Successful in 34s
    Test / test_write (push) Successful in 31s
    Test / test_write_xor (push) Successful in 34s
    Test / test_heal_pg_size_2 (push) Successful in 2m16s
    Test / test_heal_local_read (push) Successful in 2m17s
    Test / test_heal_antietcd (push) Successful in 2m19s
    Test / test_heal_csum_32k_dmj (push) Successful in 2m29s
    Test / test_heal_csum_32k_dj (push) Successful in 2m29s
    Test / test_heal_csum_32k (push) Successful in 2m22s
    Test / test_heal_csum_4k_dmj (push) Successful in 2m30s
    Test / test_resize (push) Successful in 16s
    Test / test_resize_auto (push) Successful in 10s
    Test / test_osd_tags (push) Successful in 11s
    Test / test_snapshot_pool2 (push) Successful in 16s
    Test / test_enospc (push) Successful in 12s
    Test / test_enospc_xor (push) Successful in 13s
    Test / test_enospc_imm (push) Successful in 11s
    Test / test_enospc_imm_xor (push) Successful in 12s
    Test / test_scrub (push) Successful in 14s
    Test / test_scrub_zero_osd_2 (push) Successful in 14s
    Test / test_scrub_xor (push) Successful in 14s
    Test / test_scrub_pg_size_3 (push) Successful in 14s
    Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 16s
    Test / test_scrub_ec (push) Successful in 18s
    Test / test_nfs (push) Successful in 11s
    Test / test_heal_csum_4k_dj (push) Successful in 2m20s
    Test / test_heal_csum_4k (push) Successful in 2m23s
    Test / test_heal_ec (push) Successful in 2m16s
    Stable

    vitalif released this 2025-05-11 00:26:08 +03:00 | 113 commits to master since this release

    New features:

    • Localized read support for multi-datacenter setups.
    • io_uring-based zero-copy send support - 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 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 inodes 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.
    Downloads
  • v2.1.0 891b2811c7

    Release 2.1.0
    All checks were successful
    Test / buildenv (push) Successful in 17s
    Test / build (push) Successful in 4m13s
    Test / npm_lint (push) Successful in 13s
    Test / test_cas (push) Successful in 15s
    Test / test_change_pg_count (push) Successful in 22s
    Test / make_test (push) Successful in 37s
    Test / test_change_pg_count_ec (push) Successful in 22s
    Test / test_change_pg_size (push) Successful in 13s
    Test / test_create_nomaxid (push) Successful in 13s
    Test / test_add_osd (push) Successful in 1m11s
    Test / test_etcd_fail (push) Successful in 48s
    Test / test_etcd_fail_antietcd (push) Successful in 44s
    Test / test_interrupted_rebalance (push) Successful in 51s
    Test / test_create_halfhost (push) Successful in 11s
    Test / test_interrupted_rebalance_imm (push) Successful in 50s
    Test / test_failure_domain (push) Successful in 13s
    Test / test_snapshot (push) Successful in 18s
    Test / test_interrupted_rebalance_ec (push) Successful in 53s
    Test / test_interrupted_rebalance_ec_imm (push) Successful in 50s
    Test / test_snapshot_ec (push) Successful in 18s
    Test / test_rm (push) Successful in 16s
    Test / test_minsize_1 (push) Successful in 20s
    Test / test_move_reappear (push) Successful in 23s
    Test / test_snapshot_down (push) Successful in 16s
    Test / test_snapshot_chain (push) Successful in 34s
    Test / test_snapshot_down_ec (push) Successful in 17s
    Test / test_snapshot_chain_ec (push) Successful in 42s
    Test / test_splitbrain (push) Successful in 17s
    Test / test_rm_degraded (push) Successful in 1m7s
    Test / test_rebalance_verify (push) Successful in 1m42s
    Test / test_rebalance_verify_imm (push) Successful in 1m45s
    Test / test_dd (push) Successful in 18s
    Test / test_rebalance_verify_ec (push) Successful in 1m50s
    Test / test_root_node (push) Successful in 13s
    Test / test_rebalance_verify_ec_imm (push) Successful in 1m52s
    Test / test_write_no_same (push) Successful in 14s
    Test / test_write (push) Successful in 37s
    Test / test_switch_primary (push) Successful in 39s
    Test / test_write_xor (push) Successful in 42s
    Test / test_heal_pg_size_2 (push) Successful in 2m20s
    Test / test_heal_ec (push) Successful in 2m22s
    Test / test_heal_antietcd (push) Successful in 2m22s
    Test / test_heal_csum_32k_dmj (push) Successful in 2m24s
    Test / test_heal_csum_32k_dj (push) Successful in 2m22s
    Test / test_heal_csum_32k (push) Successful in 2m24s
    Test / test_heal_csum_4k_dmj (push) Successful in 2m24s
    Test / test_heal_csum_4k_dj (push) Successful in 2m22s
    Test / test_resize_auto (push) Successful in 13s
    Test / test_resize (push) Successful in 17s
    Test / test_snapshot_pool2 (push) Successful in 21s
    Test / test_osd_tags (push) Successful in 12s
    Test / test_enospc (push) Successful in 16s
    Test / test_enospc_imm (push) Successful in 16s
    Test / test_enospc_xor (push) Successful in 19s
    Test / test_enospc_imm_xor (push) Successful in 19s
    Test / test_scrub (push) Successful in 17s
    Test / test_scrub_zero_osd_2 (push) Successful in 21s
    Test / test_scrub_xor (push) Successful in 20s
    Test / test_scrub_pg_size_3 (push) Successful in 20s
    Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 22s
    Test / test_scrub_ec (push) Successful in 19s
    Test / test_nfs (push) Successful in 17s
    Test / test_heal_csum_4k (push) Successful in 2m22s
    Stable

    vitalif released this 2025-04-01 20:16:27 +03:00 | 151 commits to master since this release

    New features:

    • Support separate OSD cluster network - osd_cluster_network
      and, in general, multiple OSD networks, including RDMA
    • Add an alternative RDMA implementation via RDMA-CM - use_rdmacm,
      required for iWARP and, maybe, for some IB setups (but not for RoCE)
    • Change default PG behaviour to wait for all "up" OSDs to be connected before starting it.
      The old behaviour may be returned by enabling a new allow_net_split
      option.
    • Add a patch for QEMU 9.2

    Bug fixes:

    • Fix incorrect "has_xxx" PG state names in ls-pgs
    • Fix possible QEMU crashes after detaching of Vitastor disks (and update all QEMU builds in Vitastor repos)
    • Fix clients sometimes spamming OSDs with infinite reconnections when some PGs are offline
    • Fall back to TCP on RDMA connection failures
    • Add missing logging of RDMA ibv_modify_qp() errors
    • Add a minimum interval for etcd_state_client to reload state
    Downloads
  • v2.0.0 48c026bfa0

    Release 2.0.0
    All checks were successful
    Test / buildenv (push) Successful in 15s
    Test / build (push) Successful in 4m9s
    Test / npm_lint (push) Successful in 12s
    Test / test_cas (push) Successful in 13s
    Test / make_test (push) Successful in 38s
    Test / test_change_pg_count (push) Successful in 27s
    Test / test_change_pg_count_ec (push) Successful in 23s
    Test / test_change_pg_size (push) Successful in 12s
    Test / test_create_nomaxid (push) Successful in 12s
    Test / test_add_osd (push) Successful in 1m16s
    Test / test_etcd_fail (push) Successful in 46s
    Test / test_etcd_fail_antietcd (push) Successful in 43s
    Test / test_interrupted_rebalance (push) Successful in 50s
    Test / test_create_halfhost (push) Successful in 11s
    Test / test_failure_domain (push) Successful in 11s
    Test / test_interrupted_rebalance_imm (push) Successful in 51s
    Test / test_interrupted_rebalance_ec (push) Successful in 52s
    Test / test_interrupted_rebalance_ec_imm (push) Successful in 50s
    Test / test_snapshot (push) Successful in 17s
    Test / test_snapshot_ec (push) Successful in 17s
    Test / test_rm (push) Successful in 14s
    Test / test_minsize_1 (push) Successful in 18s
    Test / test_move_reappear (push) Successful in 21s
    Test / test_snapshot_down (push) Successful in 16s
    Test / test_snapshot_chain (push) Successful in 33s
    Test / test_snapshot_down_ec (push) Successful in 15s
    Test / test_snapshot_chain_ec (push) Successful in 40s
    Test / test_splitbrain (push) Successful in 17s
    Test / test_rm_degraded (push) Successful in 1m6s
    Test / test_rebalance_verify (push) Successful in 1m43s
    Test / test_rebalance_verify_imm (push) Successful in 1m42s
    Test / test_root_node (push) Successful in 13s
    Test / test_dd (push) Successful in 16s
    Test / test_rebalance_verify_ec (push) Successful in 1m49s
    Test / test_rebalance_verify_ec_imm (push) Successful in 1m51s
    Test / test_write_no_same (push) Successful in 13s
    Test / test_switch_primary (push) Successful in 36s
    Test / test_write (push) Successful in 36s
    Test / test_write_xor (push) Successful in 39s
    Test / test_heal_pg_size_2 (push) Successful in 2m20s
    Test / test_heal_ec (push) Successful in 2m21s
    Test / test_heal_antietcd (push) Successful in 2m22s
    Test / test_heal_csum_32k_dmj (push) Successful in 2m23s
    Test / test_heal_csum_32k_dj (push) Successful in 2m22s
    Test / test_heal_csum_32k (push) Successful in 2m24s
    Test / test_heal_csum_4k_dmj (push) Successful in 2m24s
    Test / test_heal_csum_4k_dj (push) Successful in 2m21s
    Test / test_resize_auto (push) Successful in 13s
    Test / test_resize (push) Successful in 16s
    Test / test_snapshot_pool2 (push) Successful in 18s
    Test / test_osd_tags (push) Successful in 13s
    Test / test_enospc (push) Successful in 15s
    Test / test_enospc_xor (push) Successful in 19s
    Test / test_enospc_imm (push) Successful in 16s
    Test / test_enospc_imm_xor (push) Successful in 18s
    Test / test_scrub (push) Successful in 17s
    Test / test_scrub_zero_osd_2 (push) Successful in 18s
    Test / test_scrub_xor (push) Successful in 19s
    Test / test_scrub_pg_size_3 (push) Successful in 18s
    Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 22s
    Test / test_scrub_ec (push) Successful in 19s
    Test / test_nfs (push) Successful in 15s
    Test / test_heal_csum_4k (push) Successful in 2m21s
    Stable

    vitalif released this 2025-03-16 14:34:31 +03:00 | 176 commits to master since this release

    No breaking features, it's 2.0.0 just because it includes S3 and because there are already too many 1.x releases :).

    New features:

    Bug fixes:

    • Fix several bugs in the node.js addon (a memory leak, an incorrectly triggered event loop)
    • Fix a client crash (vitastor-cli rm) during deletion when writeback is enabled
    • Fix PG object count statistics on deletion of non-existing objects
    • Fix vitastor-nbd crash when mapping by ID instead of inode name
    • Fix a client memory leak with enabled immediate_commit and write-back cache
    • Add seccomp=unconfined for vitastor docker OSDs to not break io_uring
    • Add udev and systemd to vitastor docker image
    • Fix upgrading from pre-0.7.1 (very old) systemd units O_o
    • Fix total object count calculation in rm_data
    Downloads
  • Release 1.11.0
    All checks were successful
    Test / buildenv (push) Successful in 15s
    Test / build (push) Successful in 4m0s
    Test / npm_lint (push) Successful in 12s
    Test / test_cas (push) Successful in 13s
    Test / make_test (push) Successful in 36s
    Test / test_change_pg_count (push) Successful in 23s
    Test / test_change_pg_count_ec (push) Successful in 23s
    Test / test_change_pg_size (push) Successful in 11s
    Test / test_create_nomaxid (push) Successful in 12s
    Test / test_add_osd (push) Successful in 1m25s
    Test / test_etcd_fail (push) Successful in 47s
    Test / test_etcd_fail_antietcd (push) Successful in 42s
    Test / test_interrupted_rebalance (push) Successful in 54s
    Test / test_create_halfhost (push) Successful in 11s
    Test / test_failure_domain (push) Successful in 12s
    Test / test_interrupted_rebalance_imm (push) Successful in 49s
    Test / test_interrupted_rebalance_ec (push) Successful in 52s
    Test / test_interrupted_rebalance_ec_imm (push) Successful in 51s
    Test / test_snapshot (push) Successful in 17s
    Test / test_snapshot_ec (push) Successful in 19s
    Test / test_minsize_1 (push) Successful in 19s
    Test / test_rm (push) Successful in 16s
    Test / test_move_reappear (push) Successful in 22s
    Test / test_snapshot_down (push) Successful in 17s
    Test / test_snapshot_chain (push) Successful in 33s
    Test / test_snapshot_down_ec (push) Successful in 18s
    Test / test_snapshot_chain_ec (push) Successful in 42s
    Test / test_splitbrain (push) Successful in 16s
    Test / test_rm_degraded (push) Successful in 1m8s
    Test / test_rebalance_verify_imm (push) Successful in 1m31s
    Test / test_rebalance_verify (push) Successful in 1m41s
    Test / test_dd (push) Successful in 15s
    Test / test_root_node (push) Successful in 14s
    Test / test_rebalance_verify_ec (push) Successful in 1m47s
    Test / test_rebalance_verify_ec_imm (push) Successful in 1m35s
    Test / test_write_no_same (push) Successful in 12s
    Test / test_switch_primary (push) Successful in 38s
    Test / test_write (push) Successful in 37s
    Test / test_write_xor (push) Successful in 39s
    Test / test_heal_pg_size_2 (push) Successful in 2m19s
    Test / test_heal_antietcd (push) Successful in 2m21s
    Test / test_heal_csum_32k_dmj (push) Successful in 2m29s
    Test / test_heal_ec (push) Successful in 2m45s
    Test / test_heal_csum_32k_dj (push) Successful in 2m30s
    Test / test_heal_csum_32k (push) Successful in 2m29s
    Test / test_heal_csum_4k_dmj (push) Successful in 2m33s
    Test / test_resize (push) Successful in 19s
    Test / test_heal_csum_4k_dj (push) Successful in 2m28s
    Test / test_resize_auto (push) Successful in 13s
    Test / test_osd_tags (push) Successful in 11s
    Test / test_snapshot_pool2 (push) Successful in 18s
    Test / test_enospc (push) Successful in 14s
    Test / test_enospc_xor (push) Successful in 16s
    Test / test_enospc_imm (push) Successful in 15s
    Test / test_enospc_imm_xor (push) Successful in 17s
    Test / test_scrub (push) Successful in 17s
    Test / test_scrub_zero_osd_2 (push) Successful in 17s
    Test / test_scrub_xor (push) Successful in 17s
    Test / test_scrub_pg_size_3 (push) Successful in 19s
    Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 20s
    Test / test_scrub_ec (push) Successful in 21s
    Test / test_nfs (push) Successful in 16s
    Test / test_heal_csum_4k (push) Successful in 2m27s
    Stable

    vitalif released this 2025-03-01 13:39:42 +03:00 | 201 commits to master since this release

    New features:

    • Support containerized Vitastor installations: https://vitastor.io/docs/installation/docker.html
    • Add new functions to the node.js binding: delete(), get_immediate_commit(), on_ready(),
      get_min_io_size(), get_max_atomic_write_size()
    • S3 (Zenko Cloudserver with Vitastor support) is coming shortly and will be released separately

    Bug fixes:

    • Use IP-derived etcd node names in make-etcd
    • Set short name of the OSD process to display in top
    • Fix snap-create without pool_id failing when there are multiple pools
    • Several bugs are fixed in the write-back cache, it should now be stable:
      • Fix incorrect snapshot reads from dirty write-back cache
      • Do not try to repeat pending writebacks on OSD reconnections
      • Fix client hangs with multiple SYNCs in the writeback queue
      • Fix client hangs do to incorrect calculation of the writeback queue size
    • Several improvements for NBD mapping/unmapping:
      • Add a workaround for race condition in the Linux kernel NBD driver leading
        to vitastor-nbd sometimes breaking a previously mapped device instead of
        setting up a new one
      • Check if the device is actually mapped in vitastor-nbd unmap
      • Fix device name/number validation in vitastor-nbd
    • Fix OSD crashes after starting with corrupted metadata - from now it will skip
      corrupted metadata entries and heal itself
    • Fix scrubbing of misplaced objects and object state recalculation after
      vitastor-cli fix - previously, an OSD restart could be required to fix object states
    • Make primary OSD distribution more stable by using murmur3 hash instead of the old pseudo-rng
    • Fix monitor sometimes racing with itself - do not touch /pool/stats from stats
      aggregation if PG recheck is active
    • Sort vitastor-cli ls output by name by default
    • Update antietcd to 1.1.2
    Downloads
  • Release 1.10.1
    All checks were successful
    Test / buildenv (push) Successful in 13s
    Test / build (push) Successful in 4m11s
    Test / npm_lint (push) Successful in 11s
    Test / test_cas (push) Successful in 11s
    Test / test_change_pg_count (push) Successful in 20s
    Test / make_test (push) Successful in 34s
    Test / test_change_pg_count_ec (push) Successful in 21s
    Test / test_change_pg_size (push) Successful in 9s
    Test / test_create_nomaxid (push) Successful in 10s
    Test / test_add_osd (push) Successful in 1m11s
    Test / test_etcd_fail (push) Successful in 45s
    Test / test_interrupted_rebalance (push) Successful in 50s
    Test / test_interrupted_rebalance_imm (push) Successful in 48s
    Test / test_create_halfhost (push) Successful in 8s
    Test / test_interrupted_rebalance_ec (push) Successful in 50s
    Test / test_failure_domain (push) Successful in 12s
    Test / test_interrupted_rebalance_ec_imm (push) Successful in 48s
    Test / test_snapshot (push) Successful in 14s
    Test / test_snapshot_ec (push) Successful in 16s
    Test / test_minsize_1 (push) Successful in 15s
    Test / test_move_reappear (push) Successful in 19s
    Test / test_rm (push) Successful in 11s
    Test / test_snapshot_chain (push) Successful in 32s
    Test / test_snapshot_chain_ec (push) Successful in 41s
    Test / test_snapshot_down (push) Successful in 15s
    Test / test_snapshot_down_ec (push) Successful in 14s
    Test / test_rm_degraded (push) Successful in 1m4s
    Test / test_splitbrain (push) Successful in 16s
    Test / test_rebalance_verify (push) Successful in 1m36s
    Test / test_rebalance_verify_imm (push) Successful in 1m36s
    Test / test_root_node (push) Successful in 11s
    Test / test_dd (push) Successful in 14s
    Test / test_rebalance_verify_ec (push) Successful in 1m45s
    Test / test_rebalance_verify_ec_imm (push) Successful in 1m47s
    Test / test_write_no_same (push) Successful in 10s
    Test / test_switch_primary (push) Successful in 34s
    Test / test_write (push) Successful in 33s
    Test / test_write_xor (push) Successful in 37s
    Test / test_heal_pg_size_2 (push) Successful in 2m18s
    Test / test_heal_ec (push) Successful in 2m20s
    Test / test_heal_antietcd (push) Successful in 2m18s
    Test / test_heal_csum_32k_dmj (push) Successful in 2m23s
    Test / test_heal_csum_32k_dj (push) Successful in 2m22s
    Test / test_heal_csum_32k (push) Successful in 2m19s
    Test / test_heal_csum_4k_dmj (push) Successful in 2m24s
    Test / test_heal_csum_4k_dj (push) Successful in 2m21s
    Test / test_resize (push) Successful in 17s
    Test / test_resize_auto (push) Successful in 11s
    Test / test_osd_tags (push) Successful in 11s
    Test / test_snapshot_pool2 (push) Successful in 16s
    Test / test_enospc (push) Successful in 12s
    Test / test_enospc_xor (push) Successful in 14s
    Test / test_enospc_imm (push) Successful in 13s
    Test / test_enospc_imm_xor (push) Successful in 15s
    Test / test_scrub (push) Successful in 16s
    Test / test_scrub_zero_osd_2 (push) Successful in 16s
    Test / test_scrub_xor (push) Successful in 18s
    Test / test_scrub_pg_size_3 (push) Successful in 19s
    Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 18s
    Test / test_scrub_ec (push) Successful in 17s
    Test / test_nfs (push) Successful in 13s
    Test / test_heal_csum_4k (push) Successful in 2m13s
    Test / test_etcd_fail_antietcd (push) Successful in 41s
    Stable

    vitalif released this 2025-01-03 16:22:09 +03:00 | 237 commits to master since this release

    New features:

    • Add "deleted" image flag which is set when vitastor-cli rm starts to delete an image,
      but can't delete it fully due to inactive PGs or stopped OSDs
    • Support JSON output in vitastor-disk prepare and purge
    • Show backfillfull pools in vitastor-cli status
    • Make object listings consistent (used in vitastor-cli rm/rm-data/merge/etc).
      This means that there is now a guarantee that if a data block is present when you invoke rm,
      rm will attempt to delete it, even if rm is invoked when the PG switches state. Previously in
      such cases rm could skip and leave some objects behind as garbage, and merge probably could
      incorrectly move data between snapshots.
    • Make deletions (rm/rm-data) consistent. This means that rm/rm-data will either complete
      successfully and delete all requested image data or complete with an error if some objects
      could not be deleted or if there is a possibility that some data is left on stopped OSDs.
      Previously, when some PGs or OSDs were inactive at the moment of deletion, rm-data was
      behaving incorrectly: it wasn't retrying deletions failed due to dropped OSD connections,
      it could hang waiting for PGs to activate, and it could return with a successful error
      code while some garbage was still possibly left on some OSDs. Deletions are not fully atomic
      cluster-wide yet, which means that you still have to repeat the deletion request after you
      return stopped OSDs back, but now you always know for sure if you have to repeat it.

    Bug fixes:

    • Fix vitastor-cli rm --exact / --matching command not working
    • Finally fix "Unexpected status" in the Proxmox plugin
    • Fix vitastor-cli create-snap incorrectly linking multiple snapshots in a different pool
    • Fix incomplete image parent_id loop check in OSD
    • Fix reads from snapshots in a different pool not working if there are more than 2 snapshots
    • Fix append of VITASTOR_CONF to cmdline in the opennebula prebackup script
    • Fix OSDs crashing again when the cluster is full with EC (was meant to work since 1.6.0 but didn't)
    • Improve logging of subop failures
    Downloads