• Stable v0.8.0 11ec9ad874

    Release 0.8.0

    vitalif released this 4 weeks ago | 0 commits to master since this release

    • Implement automatic OSD activation via udev and simple on-disk superblock storage
    • Add a new vitastor-disk tool and merge all disk-related functionality there.
      Now it can prepare new OSD disks, upgrade plain old systemd units to the new scheme,
      resize OSD data area, manage OSD services by disk paths, manage superblocks,
      automatically check and disable disk cache, dump and write back journal and metadata.
    • Add a documentation section about vitastor-disk (read it if you want details!)
    • Install systemd services during package installation instead of the older method
      of manually creating them via separate shell scripts
    • Add a new make-etcd script that reuses /etc/vitastor/vitastor.conf to configure etcd
    • Allow to configure block_size, bitmap_granularity and immediate_commit per-pool
    • Fix "fatal error: tried to overwrite non-zero metadata entry" which was possible
      in some cases after unclean OSD shutdown (caused by old metadata entries not being zeroed)
    Downloads
     
  • Stable v0.7.1 101592bbff

    Release 0.7.1

    vitalif released this 4 months ago | 66 commits to master since this release

    • Add ISA-L erasure code implementation, now used automatically instead of jerasure when available
    • Fix listings sending too many parallel requests to OSDs
    • Fix rm-data crashing with --wait-list
    • Remove empty inodes from statistics and ls output, after <inode_vanish_time> seconds after deletion
    • Make monitor delete pool statistics when the pool is deleted and thus remove them from df output
    • Log multiple etcd addresses in OSD logs correctly
    • Fix true/false parsing in json configs like no_recovery/no_rebalance
    • Show no_recovery, no_rebalance, readonly flags in status
    Downloads
     
  • Stable v0.7.0 d8313e939a

    Release 0.7.0

    vitalif released this 4 months ago | 80 commits to master since this release

    • Add documentation! :-) in Russian and English
    • Implement an NFS proxy for file-based access emulation to Vitastor
      images for non-QEMU based hypervisors like VMWare, as a better way
      than iSCSI
    • Implement "primary affinity tags"
    • Add a patch for libvirt 6.0
    • Fix free_down_raw in cli status
    • Fix a rare bug where OSDs could drop unrelated connections on errors
    Downloads
     
  • Stable v0.6.17 bb84379db6

    Release 0.6.17

    vitalif released this 5 months ago | 95 commits to master since this release

    • Fix incorrect reading of extra metadata block leading to extra unknown objects in stats
    • Fix CSI driver volumeMode: Block support
    • Add block PVC and pod examples
    • Fix build under 32 bit architectures
    • Fix slow connection ramp-up caused by up_wait_retry_interval
    Downloads
     
  • Stable v0.6.16 340a4b4f27

    Release 0.6.16

    vitalif released this 6 months ago | 105 commits to master since this release

    • Implement vitastor-cli status (print cluster status) command
    • Add a new make-osd-hybrid.js script to quickly prepare a lot of hybrid (HDD+SSD) OSDs
    • Implement snapshot deletion for Cinder driver (only works in a healthy cluster)
    • Fix a huge :) bug causing reads to return all zeroes during rebalance. Add a test to prevent it in the future
    • Disconnect NBD proxy correctly without leaving a zombie [vitastor-nbd] process in D state
    • Fix a rare write hang appearing with small write throttling enabled
    Downloads
     
  • Stable v0.6.15 85298ddae2

    Release 0.6.15

    vitalif released this 7 months ago | 123 commits to master since this release

    • Make peering much faster in medium to large clusters
    • Fix a reenterability issue which could rarely lead to peering process hangs
    Downloads
     
  • Stable v0.6.14 117d6f0612

    Release 0.6.14

    vitalif released this 8 months ago | 133 commits to master since this release

    • Fix IPv6 address parsing
    • Fix "cannot read bytes of undefined" in the monitor on a fresh DB
    • Fix possible hangs of read requests on OSD restarts without immediate_commit=all mode
    • Fix OSDs skipping misplaced recovery in some cases
    • Fix OSDs possibly dying with "map::at" errors when other OSDs are stopped
    • Fix division by zero in ls if all pool OSDs are down
    Downloads
     
  • Stable v0.6.13 36f352f06f

    Release 0.6.13

    vitalif released this 8 months ago | 143 commits to master since this release

    • Fix client hangs possible on OSD restarts (bug affected versions from 0.5.11)
    • Fix "Assertion `sqe != NULL' failed" io_uring-related crashes possible
      on some kernels (0.6.11 increased probability of this bug)
    • Fix timeout=0 in NBD proxy
    • Fix build under centos 7
    Downloads
     
  • Stable v0.6.12 c1929cabe0

    Release 0.6.12

    vitalif released this 8 months ago | 164 commits to master since this release

    etcd connection stability, clang & elbrus support

    • Fix build under CLang and Elbrus LCC compilers, making Vitastor compatible
      with Elbrus CPUs :)
    • Completely fix the bug where OSDs didn't connect to peers and incorrectly marked
      PGs as incomplete
    • Limit I/O depth for deletes the same way as for small writes. Makes OSD crashes
      with "Assertion failed: sqe != NULL" during image deletion go away
    • Fix a very old, but rare, journaling bug (credits to https://github.com/mirrorll)
    • Fix flushing of unclean journaled objects leading to OSDs sometimes hanging
      after failover in EC setups (bug was introduced in 0.6.7)
    • Fix several problems that could prevent smooth operation of a Vitastor cluster
      under the condition of partial etcd failure:
      • OSDs could randomly fail due to too strict error handling
      • New clients and OSDs could be unable to start because of the lack of retries
      • CLI could fail some commands because of the lack of retries
      • Monitor could stop receiving state updates because of the lack of websocket pings
    • Fix monitor being unable to rebalance PGs after a downscale of pool pg_size (3->2)
    • Exit with failure when trying to nbd map or benchmark a non-existing image
    • Use HTTP keep-alive for etcd connections
    • Allow to configure etcd request timeouts and retries
    • Allow to configure NBD timeout, max devices and partitions, and set default to
      up to 64 devices with up to 3 partitions each
    Downloads
     
  • Stable v0.6.11 0785bdf8b3

    Release 0.6.11

    vitalif released this 9 months ago | 199 commits to master since this release

    • Slightly reduce journaling write amplification (requires no_same_sector_overwrites=false)
    • Fix listen_backlog (it was 0) because it could more than halve OSD socket send speed
    • Support IPv6 OSD addresses
    • Do not try to initialize client in simple-offsets
    • Fix OSDs sometimes marking PGs incomplete instead of trying to connect with peers
    • Allow to configure OSD placement in node_placement
    • Allow to run with 4k sector size block devices. Natural, but it was forbidden
    Downloads
     
  • Stable v0.6.10 2020608a39

    Release 0.6.10

    vitalif released this 10 months ago | 212 commits to master since this release

    • Implement a storage plugin for Proxmox. Now you can use Vitastor with Proxmox!
    • Implement vitastor-cli df (pool space usage statistics) command
    • Add glob pattern support for vitastor-cli ls
    • Fix several bugs in other CLI commands (resize, create --parent, modify --readonly)
    • Use 512 byte logical block size in QEMU driver by default (and thus don't require to set it in QEMU options)
    Downloads
     
  • Stable v0.6.9 aa1e21dd99

    Release 0.6.9

    vitalif released this 10 months ago | 232 commits to master since this release

    New features:

    • Build Vitastor driver as part of QEMU
    • Implement renaming images in CLI (vitastor-cli modify --rename)
    • Add vitastor-cli alloc-osd and simple-offsets commands and use them in make-osd,
      thus removing the dependency on etcdctl
    • Make monitor remove stale deleted inode statistics from etcd automatically
    • Implement OSD address selection from a subnet, thus removing the need to specify
      OSD addresses in startup scripts explicitly

    Bug fixes:

    • Fix client failover in case of etcd shutdown or crash (make client survive etcd failures)
    • Stick to the last live etcd in OSD and mon to prevent random failures when one of etcds is down
    • Fix incorrect copying of data from journal to the data device which could lead to data corruption
    • Prefer local etcd IPs in OSD
    • Remove the total PG count restriction in optimize_change which was sometimes leading
      to inability to redistribute PGs over OSDs
    • Fix error response parsing on a failed pg state report
    • Fix slow linear writes with RDMA by changing default buffer settings
    • Fix possible 'TypeError' in openstack nova when using Vitastor cinder driver
    • Fix bugs in vitastor-cli create, ls, rm, modify commands

    Patch changes:

    • Add a patch for libvirt 7.6
    • Add patches for QEMU 6.0 and 6.1
    • Fix config file path XML location parsing in libvirt patches
    • Replace _ with - in QEMU options
    • Fix possible 'TypeError' in openstack nova when using Vitastor cinder driver
    • Fix possible crashes of QEMU block driver in case of incorrect options
    Downloads
     
  • Stable v0.6.8 920345f7b6

    Release 0.6.8

    vitalif released this 11 months ago | 286 commits to master since this release

    • Build separate packages for OSD, monitor, client, C header, fio and QEMU drivers
      instead of one package which included everything
    Downloads
     
  • Stable v0.6.7 7eabc364bf

    Release 0.6.7

    vitalif released this 11 months ago | 291 commits to master since this release

    • Implement CLI commands for listing, viewing I/O statistics, creating,
      snapshotting, cloning, resizing and modifying images. All these operations
      are covered by 3 commands: ls, create, modify
    • Implement an important fix to prior OSD set tracking for PGs. The previous
      version had an issue which could lead to data loss due to an OSD with older
      copy of the data thinking it has the newest copy
    • Fix I/O statistics aggregation in the monitor
    • Several minor fixes for Cinder driver
    • Fix QEMU driver to be compatible with QEMU 2.x > 2.0
    • Fix stalls sometimes possible in configurations without immediate_commit due
      to insufficient amount of automatic internal fsync operations
    • Add vita alias for vitastor-cli
    Downloads
     
  • Stable v0.6.6 fb2f7a0d3c

    Release 0.6.6

    vitalif released this 12 months ago | 326 commits to master since this release

    • New command-line tool: vitastor-cli
    • Implement layer (snapshot/clone) merge and delete
    • Remove 'bool' from the C header
    • Fix a very rare flusher stall
    • More diagnostics now printed for slow ops in the log
    Downloads
     
  • Stable v0.6.5 cb282d25e0

    Release 0.6.5

    vitalif released this 1 year ago | 351 commits to master since this release

    • Basic support for OpenStack: Cinder driver, patches for Nova and libvirt
    • Add missing "image" and "config_path" QEMU options
    • Calculate aggregate per-pool statistics in monitor
    • Implement writes with Check-And-Set semantics
    • Add a C wrapper library with public header
    Downloads
     
  • Stable v0.6.4 f9fe72d40a

    Release 0.6.4

    vitalif released this 1 year ago | 373 commits to master since this release

    • Implement a basic Kubernetes CSI driver
    • Minor fixes for vitastor-nbd
    • Fix build without RDMA broken in 0.6.3
    Downloads
     
  • Stable v0.6.3 caf2f3c56f

    Release 0.6.3

    vitalif released this 1 year ago | 382 commits to master since this release

    • RDMA support
    • Client performance optimisations (4k randread ~120k -> ~180k on 1 core)
    • JSON configuration file (/etc/vitastor/vitastor.conf) support
    • Bug fixes
    Downloads
     
  • Stable v0.6.2 715bc8d53d

    Release 0.6.2

    vitalif released this 1 year ago | 405 commits to master since this release

    • Fix a possible crash during SYNC when journal fsyncs are enabled
    • Fix a memory leak in the chained read implementation
    Downloads
     
  • Stable v0.6.1 ede1c1d667

    Release 0.6.1

    vitalif released this 1 year ago | 409 commits to master since this release

    A bugfix for the new "chained read from snapshot" feature

    Downloads
     
  • Stable v0.6.0 0b41ffc08d

    Release 0.6.0

    vitalif released this 2 years ago | 413 commits to master since this release

    Warning: upgrading from 0.5.x is currently not supported!
    Please create an issue if you really need upgrade capability.

    New features:

    • Snapshots and Copy-on-Write clones
    • Inode (image) names
    • Inode I/O and space statistics
    • Write throttling for smoothing random write workloads in SSD+HDD configurations
    Downloads
     
  • Stable v0.5.13 ec90fe6ec1

    Release 0.5.13

    vitalif released this 2 years ago | 456 commits to master since this release

    Another followup to 0.5.11

    Downloads
     
  • Stable v0.5.12 59fbcef734

    Release 0.5.12

    vitalif released this 2 years ago | 458 commits to master since this release

    Fix qemu driver broken in 0.5.11 :)

    Downloads
     
  • Stable v0.5.11 462650134e

    Release 0.5.11

    vitalif released this 2 years ago | 461 commits to master since this release

    Another bunch of fixes, including important ones. Now OSDs are stable in SSD+HDD
    configurations and everything is mostly ready for the merge of master branch.

    Features:

    • Add min_flusher_count configuration (good for HDDs)
    • Shuffle PGs for better data device utilisation
    • Make OSDs benefit from the immediate_commit=small setting if it's applicable

    Bug fixes:

    • Rework client code to fix write ordering during operation replay
    • Rework error handling code so OSDs don't crash in reaction to a crash of their peer OSDs
    • Fix several block layer problems related to the journal, some of which
      were leading to double allocations of the same block during journal replay
    • Fix monitors crashing during the removal of OSD keys from etcd
    • Fix data fsyncs being incorrectly disabled when only disable_journal_fsync was set
    • Always zero out unused part of request/reply headers
    • Fix some theoretically possible read/write ordering issues
    • Don't try to "recover" misplaced objects if it would make them degraded
    • Fix heartbeats sometimes preventing OSD to establish connections
    Downloads
     
  • Stable v0.5.10 7e6e1a5a82

    Release 0.5.10

    vitalif released this 2 years ago | 498 commits to master since this release

    The version seems to be stable after this bunch of fixes :)

    • Fix delete & write operation ordering during rebalance to not lose objects in the immediate_commit=off mode
    • Fix a possible crash caused by very high iodepths
    • Re-distribute PG primaries over OSDs that come up after a short downtime
    • Allow to specify etcd URLs for OSDs with http://, do not die with a strange error if -etcd option is missing for fio
    • Fix a journal flushing deadlock which sometimes occurred in the immediate_commit=off mode
    • Fix a bug where OSDs could hang if the data device filled up
    • Fix an allocator bug where it was unable to allocate up to last (n%64) data device blocks
    • Fix monitor crash that occurred on removal of some etcd keys
    • Fix a bug where PGs could remain incomplete due to incorrect PG history with just zeroes in osd_sets
    Downloads
     
  • Stable v0.5.9 036555638e

    Release 0.5.9

    vitalif released this 2 years ago | 512 commits to master since this release

    • Fix two monitor bugs which led to objects being "logically lost" (physically
      present on some secondary OSDs while primary doesn't know about it) after multiple
      interrupted rebalancings
    • Implement "no_recovery" and "no_rebalance" flags
    Downloads
     
  • Stable v0.5.7 88a03f4e98

    Release 0.5.7

    vitalif released this 2 years ago | 522 commits to master since this release

    • Fix multiple bugs leading to OSDs sometimes being unable to correctly activate PGs
      when a lot of PG peering events occurred in a small amount of time
    • Fix a bug where OSDs could list incomplete object versions during peering. The bug
      manifested with "local rollback operation failed" messages in OSD logs
    • Fix a bug where misplaced chunks for degraded and incomplete objects were not removed
      from extra OSDs during recovery
    • Fix incorrect PG history configuration resulting in OSDs being unable to find some
      of the objects after a PG count change
    • Simplify block layer write ordering logic
    • Avoid extra data move when a lot of OSDs are first stopped for long time and then restarted
    • Fix incorrect degraded & misplaced object statistics after a completed rebalance
    • Fix incorrect usage of pg_minsize instead of the minimal possible object chunk count in EC pools
    Downloads
     
  • Stable v0.5.6 ab90ed747f

    Release 0.5.6

    vitalif released this 2 years ago | 543 commits to master since this release

    • Fix operation statistics
    • Fix a rebalance hang introduced in 0.5.5
    • Test PG count changes with actual data moving
    • Fix a possible 'unexpected pg state: 0' error during PG count change
    Downloads
     
  • Stable v0.5.5 bb2d9a3afe

    Release 0.5.5

    vitalif released this 2 years ago | 551 commits to master since this release

    • Transition to CMake build system
    • Fix Monitor being unable to change PG sizes
    • Fix PG optimizer not using some OSDs in some cases
    • Fix inability to change PG count online
    • Improve journal flusher performance
    • Add a little better systemd unit generator
    • Use w=8 with jerasure (breaking change for EC pools)
    Downloads
     
  • Stable v0.5.4 b9e7d31aa1

    Release v0.5.4

    vitalif released this 2 years ago | 576 commits to master since this release

    • Fix a rare hang, more or less reproducible with very slow drives
    • Fix a hang with the no_same_sector_overwrites mode
    Downloads