Commit Graph
2171 Commits
Author SHA1 Message Date
Vitaliy Filippov 5ae6fea49c Add a note about local reads 2025-05-11 01:23:48 +03:00
Vitaliy Filippov 95ec750b8c Release 2.2.0
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.
v2.2.0
2025-05-11 00:26:08 +03:00
Vitaliy Filippov 90b1de307b Support local reads in client 2025-05-10 16:42:02 +03:00
Vitaliy Filippov 7e6a95c678 Support primary-reads from clean replicated PGs on secondary OSDs 2025-05-10 16:42:02 +03:00
Vitaliy Filippov b2416afb28 Lock PGs on secondary OSDs to allow local reads and guarantee splitbrain prevention 2025-05-10 15:18:00 +03:00
Vitaliy Filippov 66dc116f60 Cleanup PG_INCOMPLETE peering states 2025-05-10 02:51:26 +03:00
Vitaliy Filippov 0cb8629ab6 Remove finish_stop_pg shortcut 2025-05-08 16:14:35 +03:00
Vitaliy Filippov b7322a405a Move gethostname_str to utils 2025-05-05 02:16:06 +03:00
Vitaliy Filippov 5692630005 Move check_sequencing indication into config response features subkey 2025-05-05 02:07:50 +03:00
Vitaliy Filippov 00ced7cea7 Fix monitor crash with non-existing node_placement nodes 2025-05-05 02:05:04 +03:00
Vitaliy Filippov ebdb75e287 Fix typo in docker docs 2025-05-04 18:09:33 +03:00
Vitaliy Filippov f397fe9c6a Add compatibility with ISA-L 2.31+ 2025-05-04 18:09:33 +03:00
Vitaliy Filippov 28560b4ae5 Write K/V listings in buffered manner 2025-05-03 15:06:59 +03:00
Vitaliy Filippov 2d07449e74 Postpone cb() to set_immediate() to prevent stack overflows in kv_db 2025-05-03 15:06:59 +03:00
Vitaliy Filippov 80c4e8c20f Add missing wakeup in ringloop->set_immediate to prevent slowdowns in code using set_immediate 2025-05-03 14:40:48 +03:00
Vitaliy Filippov 2ab0ae3bc9 Check operation sequencing and stop clients when it breaks 2025-05-02 17:01:50 +03:00
Vitaliy Filippov 05e59c1b4f Fix MSG_WAITALL assertion added in the zero-copy patch 2025-05-02 17:01:43 +03:00
Vitaliy Filippov e6e1c5b962 Check if OSDs are still up in rm-osd 2025-05-02 13:05:59 +03:00
Vitaliy Filippov 9556eeae45 Implement io_uring zero-copy send support 2025-05-01 18:47:10 +03:00
Vitaliy Filippov 96b5a72630 Allow removal of bad direntries in VitastorFS (direntries referring non-existent inodes) 2025-05-01 01:14:23 +03:00
Vitaliy Filippov ef80f121f6 Fix "duplicate inode during create" deletion in VitastorFS 2025-04-30 20:37:49 +03:00
Vitaliy Filippov bbdd1f3aa7 Fix modify-pool -s PG_SIZE without --pg_minsize 2025-04-28 02:20:54 +03:00
Vitaliy Filippov 5dd37f519a Fix node folding in case of empty rules (pool with size 1), add a test 2025-04-28 02:16:49 +03:00
Vitaliy Filippov a2278be84d Improve data distribution: solve LP task on failure domains instead of individual OSDs
This greatly speeds up PG placement and makes it more uniform both because the LP task
becomes simpler and because the distribution of individual OSDs is optimised manually
2025-04-27 01:44:46 +03:00
Vitaliy Filippov 1393a2671c Change default vitastor-etcd data dir to /var/lib/etcd/vitastor 2025-04-27 01:44:46 +03:00
Vitaliy Filippov 9fa8ae5384 Reset OSD ping state on receiving data from it via RDMA 2025-04-26 14:17:09 +03:00
Vitaliy Filippov 169a35a067 Followup to latency aggregation fix 2025-04-26 01:32:46 +03:00
Vitaliy Filippov 2b2a10581d Prevent double handle_primary_subop in rare cases 2025-04-26 01:16:53 +03:00
Vitaliy Filippov 10fd51862a Fix latency aggregation in global stats (/vitastor/stats in etcd) 2025-04-25 00:08:10 +03:00
Vitaliy Filippov 15d0204f96 Hide "Ran out of journal space" log messages by default 2025-04-20 01:21:03 +03:00
Vitaliy Filippov 21d6e88a1b Add instructions to change NFS_MAX_FILE_IO_SIZE 2025-04-18 13:39:32 +03:00
Vitaliy Filippov df2847df2d Wait for RDMA-CM EVENT_ESTABLISHED after rdma_accept(), handle rdma_accept() before acking the event 2025-04-15 15:19:36 +03:00
Vitaliy Filippov 327c98a4b6 Fix index_tree 2025-04-13 16:13:44 +03:00
Vitaliy Filippov 3cc0abfd81 Fix NFS total & free multiplied by extra 2 2025-04-12 19:09:26 +03:00
Vitaliy Filippov 80e5f8ba76 Add missing WITH_RDMACM defines 2025-04-12 19:06:27 +03:00
Vitaliy Filippov 4b660f1ce8 Fix systemd unit name in make-etcd 2025-04-11 02:05:08 +03:00
Vitaliy Filippov dfde0e60f0 Do not allow reweight > 1 2025-04-05 12:21:14 +03:00
Vitaliy Filippov 013f688ffe Run check_peer_config on RDMA-CM connections too 2025-04-02 01:32:28 +03:00
Vitaliy Filippov cf9738ddbe Fix docker 2.1.0 build :) 2025-04-01 22:46:22 +03:00
Vitaliy Filippov 891b2811c7 Release 2.1.0
New features:

- Support separate OSD cluster network - [osd_cluster_network](https://vitastor.io/docs/config/network.html#osd_cluster_network)
  and, in general, multiple OSD networks, including RDMA
- Add an alternative RDMA implementation via RDMA-CM - [use_rdmacm](https://vitastor.io/docs/config/network.html#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](https://vitastor.io/docs/config/osd.html#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
v2.1.0
2025-04-01 20:16:27 +03:00
Vitaliy Filippov 01590df6da Update QEMU version in vitastor-csi Dockerfile 2025-04-01 20:16:27 +03:00
Vitaliy Filippov 3e5f0be52c Use separate port numbers for RDMA-CM 2025-04-01 16:16:03 +03:00
Vitaliy Filippov 58af897e73 s/listen on/listen to/ :) 2025-04-01 12:07:15 +03:00
Vitaliy Filippov dbf9ecd171 Move osd_network to config/network docs 2025-03-31 21:12:09 +03:00
Vitaliy Filippov 8508e78288 Add an alternative RDMA implementation via RDMA-CM
Required for non-RoCE cards: iWARP and, possibly, Infiniband
2025-03-31 21:01:25 +03:00
Vitaliy Filippov f32dea02bf Support multiple RDMA networks 2025-03-31 21:01:25 +03:00
Vitaliy Filippov a103065d12 Support multiple OSD networks and separate OSD cluster network 2025-03-31 21:01:15 +03:00
Vitaliy Filippov 5d2e28d4a9 Remove unused used_max_cqe from nfs_proxy_rdma 2025-03-30 02:13:24 +03:00
Vitaliy Filippov 18e14eed11 Fix --pg_count formula in docs/usage/cli 2025-03-29 17:54:53 +03:00
Vitaliy Filippov ccc32b9e68 Use TCP on RDMA connection failure 2025-03-23 12:04:23 +03:00