Commit Graph
100 Commits
Author SHA1 Message Date
Vitaliy Filippov 09342d7189 node.js binding fixes 2024-08-05 00:10:37 +03:00
Vitaliy Filippov eb3e8b8c19 Do not print "PG disappeared after reload" verbose log messages when *it* was not present 2024-08-04 01:42:05 +03:00
Vitaliy Filippov e2ca3ad99e Add a note about storage ID in proxmox storage config doc 2024-07-31 01:19:44 +03:00
Vitaliy Filippov dd4b0aed2b Support scattered write in node.js binding 2024-07-31 01:17:06 +03:00
Vitaliy Filippov 42851a061c Always continue operations to not miss resuming after the lack of PG primary
Should fix spurious client hangs during PG primary switchover
2024-07-31 01:17:03 +03:00
Vitaliy Filippov 8e0f242d30 Add downgrade docs 2024-07-31 01:15:37 +03:00
Vitaliy Filippov 0daa8ea39b Support seamless upgrade to new PG config and stats etcd key names 2024-07-31 01:15:37 +03:00
Vitaliy Filippov b263d311ef Use separate watch revisions for different watchers 2024-07-31 01:15:37 +03:00
Vitaliy Filippov 8720185780 Run tests in CI in memory (in tmpfs) 2024-07-31 01:15:37 +03:00
Vitaliy Filippov 20584414d8 Report OSD version in /osd/state/ and /osd/stats/ (for the future) 2024-07-31 01:15:37 +03:00
Vitaliy Filippov 306a3db7f3 Rename VERSION define to VITASTOR_VERSION 2024-07-31 01:15:37 +03:00
Vitaliy Filippov 5b0aebada4 Rename /config/pgs to /pg/config and /pg/stats/* to /pgstats/* 2024-07-31 01:15:37 +03:00
Vitaliy Filippov d6f0b480c8 Fix broken link 2024-07-22 14:01:53 +03:00
Vitaliy Filippov f1f8531fd4 Make tests compatible with antietcd, add 2 antietcd tests to CI 2024-07-20 02:16:38 +03:00
Vitaliy Filippov 8d79d59964 Update antietcd to 1.1.0 2024-07-20 02:15:48 +03:00
Vitaliy Filippov 551a209a50 Fix persistence filter initialization 2024-07-20 02:15:48 +03:00
Vitaliy Filippov 06cafd7702 Do not merge config an extra unneeded time 2024-07-20 02:15:48 +03:00
Vitaliy Filippov 3018352443 Fix clustered Antietcd support 2024-07-19 18:58:58 +03:00
Vitaliy Filippov f8edfb4a71 No need to check for PG intersection if a history set is smaller than EC data part count 2024-07-18 19:29:05 +03:00
Vitaliy Filippov 8239ea2356 Do not try to purge the same OSD multiple times if its multiple devices are passed to purge 2024-07-16 16:48:16 +03:00
Vitaliy Filippov e898335b8d Release 1.7.1
Some stupid hotfixes for 1.7.0 :)

- Fix NFS mount
- Fix modify-osd
- Fix use_antietcd not taken from /etc
2024-07-16 00:07:03 +03:00
Vitaliy Filippov e7869611fa Another stupid fix for NFS (no idea how it worked for me) 2024-07-16 00:05:51 +03:00
Vitaliy Filippov e1c2500b60 Use modify-osd in the disk removal instruction 2024-07-16 00:01:42 +03:00
Vitaliy Filippov 42cf3a11df Oops, fix reweight :) 2024-07-16 00:01:11 +03:00
Vitaliy Filippov 4d9293f0e9 Fix QEMU 8.2 and 9.0 patches (add @location comments) 2024-07-15 16:30:14 +03:00
Vitaliy Filippov 7a13f85ae2 Fix mon config merge 2024-07-15 16:25:22 +03:00
Vitaliy Filippov fc219b8602 Add pg-list to docs 2024-07-15 13:29:22 +03:00
Vitaliy Filippov 989d73f874 Release 1.7.0
Omnidirectional release

New features:

- Support handling TCP I/O in simple separate io_uring-based [I/O threads](https://git.yourcmc.ru/vitalif/vitastor/src/branch/master/docs/config/client.en.md#client_iothread_count) - may increase linear performance to 7-8 GB/s
- Experimental internal etcd replacement - [antietcd](https://git.yourcmc.ru/vitalif/vitastor/src/branch/master/docs/config/monitor.en.md#use_antietcd)
- Monitor now has a [built-in Prometheus exporter](https://git.yourcmc.ru/vitalif/vitastor/src/branch/master/docs/config/monitor.en.md#enable_prometheus)
- Added a reference [Grafana dashboard](https://git.yourcmc.ru/vitalif/vitastor/src/branch/master/mon/scripts/Vitastor-Grafana-6+.json)
- Implement vitastor-cli [osd-tree](https://git.yourcmc.ru/vitalif/vitastor/src/branch/master/docs/usage/cli.en.md#osd-tree) and [ls-osd](https://git.yourcmc.ru/vitalif/vitastor/src/branch/master/docs/usage/cli.en.md#ls-osd) commands
- Implement vitastor-cli [modify-osd](https://git.yourcmc.ru/vitalif/vitastor/src/branch/master/docs/usage/cli.en.md#modify-osd) command
- Implement vitastor-cli [pg-list](https://git.yourcmc.ru/vitalif/vitastor/src/branch/master/docs/usage/cli.en.md#pg-list) command
- Implement [VitastorFS defragmentation](https://git.yourcmc.ru/vitalif/vitastor/src/branch/master/docs/usage/nfs.en.md#defrag)
- Implement basic node.js binding (not published on npm yet)

Changes:

- Make immediate_commit=all the default everywhere to match default vitastor-disk behaviour
- Make pool-create error message more obvious and add details to it
- Set default etcd_ws_keepalive_interval to 5 seconds (speedup client etcd failover)
- Support OpenStack 2023.2 in Nova and Cinder drivers/patches
- Add patches for libvirt 10.x
- Add patches for QEMU 8.2 and 9.0
- Implement internal restart / run_forever in monitor
- Some source tree refactoring - sources are now moved into subdirectories, monitor is now split into multiple files
- Add vitastor_c_inode_get_immediate_commit in vitastor_c client library
- Make vitastor_kv.h header public

Bug fixes:

- Fix total statistics usec/count/bytes not being reported when delta (bps/iops/lat) is zero
- Prevent infinite loop in NFS on files with incorrect metadata pointing to an empty volume
- Fix READDIR offsets (cookies) in VitastorFS sometimes leading to client infinite loops when reading a directory
- Fix a rare infinite loop during OSD journal flushing (OSD hanging and eating 100 % CPU)
- Fix several bugs which could lead to lost writes in setups without immediate_commit:
  - Client library treated writes as completed before actually completing them, thus missing them in a subsequent fsync
  - Client library didn't repeat writes on the new PG primary when it changed
  - OSDs didn't drop peer connections with dirty writes when stopping PG
- Fix Block Pseudo-FS initialization leading to ENOENTs some time after start
- Fix vitastor-cli merge-based commands (merge/flatten/rm snapshot) slowing down and finally failing when using CAS optimistic locks
- Fix pool create/modify --block_size validation
- Fix TTL comparison for determining failed lease/keepalive requests in OSD
- Add support for size suffixes in pool-create --block_size and --immediate_commit values
2024-07-15 11:48:35 +03:00
Vitaliy Filippov f0630722ce Make pool-create error message more obvious, add details 2024-07-15 11:47:49 +03:00
Vitaliy Filippov 93b0947720 Support size suffixes in pool-create --block_size / --bitmap_granularity 2024-07-15 11:47:05 +03:00
Vitaliy Filippov 9c628646fa Remove bullseye-backports from build, remove buster-backports from docs 2024-07-15 11:47:05 +03:00
Vitaliy Filippov cf476a3b95 Add mkdir /var/lib/vitastor 2024-07-15 11:47:05 +03:00
Vitaliy Filippov 23f9273ba3 Take use_antietcd setting from /etc/vitastor/vitastor.conf too 2024-07-15 02:02:56 +03:00
Vitaliy Filippov 74b88bf8ba Use own repo instead of buster-backports as it is EOL 2024-07-14 20:25:44 +03:00
Vitaliy Filippov 1254d5a0de Fix delta stats when counters may be hypothetically reset 2024-07-14 13:11:00 +03:00
Vitaliy Filippov f87bece253 Fix build with antietcd & tinyraft, remove some version hardcode 2024-07-14 13:04:25 +03:00
Vitaliy Filippov ba85d0ef16 Add vitastor_kv.h to RPM specs 2024-07-14 11:20:37 +03:00
Vitaliy Filippov 17a909ea3a Stop metrics/future API HTTP server when closing Monitor instance 2024-07-14 11:16:41 +03:00
Vitaliy Filippov a4dfc220ab Implement basic node.js binding (not published on npm yet) 2024-07-14 10:58:38 +03:00
Vitaliy Filippov 26426dd95e Return it back, but fix stats in another way 2024-07-13 19:14:34 +03:00
Vitaliy Filippov 9f38b7e5c1 Fix osd_ping_time_remaining reset from 990c3ba7eb, leading to osd disconnections 2024-07-13 16:09:56 +03:00
Vitaliy Filippov 20057defbe Revert 8ad63465cd 2024-07-13 15:34:34 +03:00
Vitaliy Filippov b4e9140755 Add defrag docs, fix trace message 2024-07-13 00:45:53 +03:00
Vitaliy Filippov 413959e75a Prevent infinite loop in NFS - return EIO when an inode points to an incorrect volume position 2024-07-12 20:53:54 +03:00
Vitaliy Filippov 8973982570 Delete keys from internal state instead of setting them to null on DELETE event in mon 2024-07-12 16:42:21 +03:00
Vitaliy Filippov 990c3ba7eb Implement FS defragmentation 2024-07-12 16:11:35 +03:00
Vitaliy Filippov 1771d2ef36 Fix READDIR cookie/offset bug 2024-07-12 16:11:35 +03:00
Vitaliy Filippov d88ab76636 Fix active mon stat 2024-07-11 01:34:59 +03:00
Vitaliy Filippov c010a0aa54 Fix OSD "local write" latency sum 2024-07-11 01:30:03 +03:00
Vitaliy Filippov 0d42712d29 Fix refresh in dashboard variable 2024-07-11 01:13:02 +03:00
Vitaliy Filippov 66b438106a Add vitastor-cli pg-list command 2024-07-10 02:27:41 +03:00
Vitaliy Filippov 3aef6682fb Add vitastor-cli modify-osd command 2024-07-09 16:52:19 +03:00
Vitaliy Filippov 8535bccf4c Add a note about antietcd dump/load 2024-07-09 15:58:03 +03:00
Vitaliy Filippov 0487b3b239 Add clusterid to Grafana dashboard 2024-07-09 15:58:03 +03:00
Vitaliy Filippov a54ef97f5d Add Grafana dashboard link 2024-07-09 15:37:25 +03:00
Vitaliy Filippov 10434a9b2b Add notes about antietcd to documentation 2024-07-09 15:01:41 +03:00
Vitaliy Filippov c6be194508 Implement experimental antietcd-based version of monitor 2024-07-09 13:54:58 +03:00
Vitaliy Filippov df668286fb Add Grafana dashboard 2024-07-09 02:39:36 +03:00
Vitaliy Filippov 667c5999c9 Report all PG states 2024-07-08 19:52:56 +03:00
Vitaliy Filippov 8ad63465cd Do not wipe previous metrics at moments when difference is 0 2024-07-08 02:20:12 +03:00
Vitaliy Filippov 976290e6a9 Implement built-in Prometheus exporter in monitor 2024-07-08 02:20:12 +03:00
Vitaliy Filippov 79f1d1969b Make immediate_commit=all the default 2024-07-07 11:45:18 +03:00
Vitaliy Filippov 918e1f83b0 Add JSON output for ls-osd 2024-07-07 02:24:36 +03:00
Vitaliy Filippov abbba6ade4 Support handling TCP I/O in simple separate io_uring-based I/O threads
Required mainly for clients, allows to scale parallel client I/O with TCP
from 100-150k iops to ~400k iops and from 2-3 GB/s to at least 7-8 GB/s
with 4 I/O threads, at the same time increasing Q=1 latency by 2x thread
switching delay, which is ~10 us when CPU powersaving is disabled and may
be as high as 200 us when it's enabled.
2024-07-04 13:29:20 +03:00
Vitaliy Filippov 21d1171ba4 Fix parsing after "slightly decopypasting" :) 2024-06-29 00:09:30 +03:00
Vitaliy Filippov ceb18f25db Add libvirt 10.0 patch (same as 9.10 and 10.4 actually) 2024-06-28 00:03:46 +03:00
Vitaliy Filippov ed51a89f70 Add QEMU 8.2 and 9.0 patches 2024-06-27 12:33:16 +03:00
Vitaliy Filippov f59456f22d Add libvirt 10.4 patch (same as 9.10 actually) 2024-06-27 01:35:29 +03:00
Vitaliy Filippov ca63cd507d Fix possible infinite loop in flusher (surprisingly reproduced in test_write.sh with iothreads) 2024-06-27 00:38:01 +03:00
Vitaliy Filippov ea0d72289c Treat copied buffers as written only after completing the write in client
SYNC operation fsyncs only completed operations, so treating writes as "eligible
for fsync" before actually completing them is incorrect

It affected SCHEME=ec test_heal.sh (with immediate_commit=none) test - it was
flapping with lost writes - some non-fsynced writes were legitimately lost by
the OSD, but weren't repeated by the client
2024-06-20 02:11:53 +03:00
Vitaliy Filippov e400a851f4 Repeat dirty buffer flushes on any PG primary change because the new primary may not know about unfinished operations of the old primary 2024-06-19 00:28:26 +03:00
Vitaliy Filippov 0fec7a9fea Drop dirty peer connections also when stopping PG to guarantee that clients do not miss fsync 2024-06-19 00:28:26 +03:00
Vitaliy Filippov b9de2a92a9 Print OSD performance stats 2024-06-17 13:02:58 +03:00
Vitaliy Filippov 5360a70853 Make OSD also report derived stats 2024-06-17 13:02:52 +03:00
Vitaliy Filippov 4c2328eb13 Implement ls-osd command 2024-06-17 02:22:14 +03:00
Vitaliy Filippov 313daef12d Slightly decopypaste etcd key parsing 2024-06-17 01:38:42 +03:00
Vitaliy Filippov ad9c12e1b9 Fix Pseudo-FS initialization leading to ENOENTs some time after start 2024-06-16 23:43:09 +03:00
Vitaliy Filippov 4473eb5512 Fix slow & failing CAS layer merge 2024-06-14 02:15:49 +03:00
Vitaliy Filippov 6501abc060 Set default etcd_ws_keepalive_interval to 5 2024-06-08 00:38:48 +03:00
Vitaliy Filippov 1228403e74 Implement internal restart / run_forever in monitor 2024-06-08 00:35:18 +03:00
Vitaliy Filippov 4eabebd245 Put all configuration to Mon.config 2024-06-07 00:20:38 +03:00
Vitaliy Filippov cf60b6818c Extract PG generation into pg_gen.js 2024-06-05 11:22:06 +03:00
Vitaliy Filippov 1a4a7cdc37 Extract OSD Tree generation functions to osd_tree.js 2024-06-05 11:19:35 +03:00
Vitaliy Filippov 1b48085e21 Extract remote etcd interaction to etcd_adapter.js 2024-06-05 11:19:35 +03:00
Vitaliy Filippov a71847244e Rename PGUtil.js to pg_utils.js 2024-06-05 10:51:20 +03:00
Vitaliy Filippov 848c2d2722 Move LPOptimizer, DSL and tests to lp_optimizer/ 2024-06-05 10:51:20 +03:00
Vitaliy Filippov 86832dc43f Add eslint import/no-unresolved 2024-06-05 10:51:20 +03:00
Vitaliy Filippov 1f6da79463 Extract stats calculation into a separate file 2024-06-05 10:51:20 +03:00
Vitaliy Filippov 9bf57c3760 Mention generic Toshiba MG instead of specific MGxx, fix russian vitastorfs link 2024-06-05 02:08:09 +03:00
Vitaliy Filippov a0305b5b4a Extract pool configuration validation into a separate file 2024-06-05 02:08:08 +03:00
Vitaliy Filippov 1546f8e447 Extract etcd data "schema" into a separate file 2024-06-05 02:07:53 +03:00
Vitaliy Filippov 8ce962b312 Move scripts 2024-06-05 02:07:53 +03:00
Vitaliy Filippov 50e56b3b92 Add vitastor_c_inode_get_immediate_commit 2024-05-19 01:57:18 +03:00
Vitaliy Filippov a12d328793 Rename cli/ to cmd/, fix cmake install 2024-05-15 23:04:50 +03:00
Vitaliy Filippov c79b38bd26 Move all sources to subdirs 2024-05-15 11:06:01 +03:00
Vitaliy Filippov 44692d148a Make vitastor_kv.h header public 2024-05-15 01:49:38 +03:00
Vitaliy Filippov ba52359611 Fix last master commit 2024-05-15 01:49:31 +03:00
Vitaliy Filippov 23a9aa93b5 Fix pool create/modify --block_size validation 2024-05-04 16:33:22 +03:00
Vitaliy Filippov 2412d9e239 Fix TTL comparison for lease/keepalive 2024-04-30 01:53:05 +03:00
Vitaliy Filippov 9301c857b1 Release 1.6.1
A bunch of monitor fixes

- Add noout flag for OSDs (/vitastor/config/osd/xx)
- Fix "effective" size of degraded PGs (and thus "used space") calculation in monitor
- Fix monitor not clearing PGs of deleted pools
- Fix incorrect PG generation with hosts with 0 OSDs
- Fix monitor crashing during primary OSD recheck when pool has no PGs
- Fix monitor crashing when node_placement included non-existing OSDs
- Fix possible data movement after removing OSDs reweighted to 0
- Remove extra empty keys from pool configurations created by vitastor-cli create-pool
- Fix 32-bit build
2024-04-22 02:01:29 +03:00