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