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
Vitaliy Filippov
3094358ec2
Fix autovivification leading to extra empty keys in pool-create
2024-04-20 02:04:09 +03:00
Vitaliy Filippov
87f666d2a2
Filter out OSDs reweighted to 0
2024-04-20 02:03:53 +03:00
Vitaliy Filippov
bd7fe4ef8f
Filter out non-existing OSDs added in node_placement
2024-04-20 02:03:36 +03:00
Vitaliy Filippov
1b3f9a1416
Do not set non-existing OSD weight to 0, we'll remove them instead
2024-04-20 02:03:11 +03:00
Vitaliy Filippov
a7b7354f38
Do not recheck primary distribution when pool has no PGs
2024-04-20 02:02:47 +03:00
Vitaliy Filippov
765befa22f
Remove empty nodes from tree because PG DSL expects that all leaf nodes are OSDs
2024-04-20 02:02:28 +03:00
Vitaliy Filippov
87b3ab94fe
Do not disable require-atomic-updates and no-unused-vars
2024-04-20 02:02:13 +03:00
Vitaliy Filippov
2c0801f6e4
Configure ESLint and add it to CI
2024-04-16 02:39:31 +03:00
Vitaliy Filippov
fd83fef1d9
Fix pool deletion
2024-04-16 02:20:26 +03:00
Vitaliy Filippov
8d1067971b
Fix pg_effsize (and thus "used space") calculation in monitor
2024-04-16 02:20:18 +03:00
Vitaliy Filippov
ae5af04fde
Add noout flag for OSDs
2024-04-16 02:19:55 +03:00
Vitaliy Filippov
266d038b11
Fix 32-bit build warnings and one error again :-)
2024-04-11 22:49:33 +03:00
Vitaliy Filippov
ff4414d37e
Release 1.6.0
...
New features:
- Implement "hierarchical failure domains" and other complex distribution rules, for example
EC 4+2 over 3 DC, with 2 chunks per each DC ([documentation](docs/config/pool.en.md#level_placement))
- Make OSDs handle ENOSPC - now cluster stays online even if some OSDs fill up
to 100 %, only writes requiring free space hang
- Implement Stage/Unstage & volume locking for CSI to prevent parallel mounting
and/or modifications of the same volume
- Warn about full and almost full OSDs in vitastor-cli status
- Add an experimental NBD netlink map mode as an option ([documentation](docs/usage/nbd.en.md))
- Add --pg parameter to vitastor-cli describe, print objects with 0x in human-readable format too
- Add [administration docs](docs/usage/admin.en.md)
Bug fixes:
- Fix client operation retry timeout - previously the timeout wasn't applied and writes were
retries almost instantly
- Fix monitors crashing on invalid pool configurations
- Fix journaling - make each journal write wait for all previous journal writes
- Fix monitor thinking that OSD weight is 0 after deleting /osd/config/ key online
- Fix a write stall caused by flusher possibly not trimming journal on rollback
- Set 32k csum_block_size for HDD by default in vitastor-disk
2024-04-09 16:57:59 +03:00
Vitaliy Filippov
0fa7ecc03f
Add also a test for OSD tags
2024-04-09 16:57:59 +03:00
Vitaliy Filippov
c29bfe12eb
Oops - fix filter_by_root_node, add a test for it
2024-04-09 15:48:44 +03:00
Vitaliy Filippov
57bf84ddb2
Fix filtering in mon
2024-04-09 14:51:05 +03:00
Vitaliy Filippov
dff4879c8c
Check if NBD_ATTR_BACKEND_IDENTIFIER is defined
2024-04-09 13:16:58 +03:00
Vitaliy Filippov
af9a853db6
Move NBD netlink map&unmap to separate commands, add "netlink-revive" command
2024-04-08 16:34:41 +03:00
Vitaliy Filippov
b7a3275af3
Make netlink optional
2024-04-08 01:51:28 +03:00
Vitaliy Filippov
64c5c4ca26
Fix code style
2024-04-08 01:35:03 +03:00
Vitaliy Filippov
6366972fe8
Warn about full and almost full OSDs in status
2024-04-07 19:39:51 +03:00
Vitaliy Filippov
2b863fb715
Add ENOSPC handling tests
2024-04-07 19:39:33 +03:00
Vitaliy Filippov
3bf4dd5abd
Fix client op retry timeout - do not retry immediately
2024-04-07 19:08:36 +03:00
Vitaliy Filippov
3b84dcaedd
Handle ENOSPC during write - rollback partial EC writes, remember partial replica writes
2024-04-07 18:02:05 +03:00
Vitaliy Filippov
20fbc4a745
Add --pg parameter to vitastor-cli describe, print objects with 0x in human-readable format too
2024-04-07 12:39:46 +03:00
Vitaliy Filippov
02993ee1dd
Implement Stage/Unstage & volume locking for CSI to prevent parallel modifications of the same volume
2024-04-07 11:48:19 +03:00
Vitaliy Filippov
3629dbc54d
Plug the new PG combinator into monitor
2024-04-07 02:44:17 +03:00
Vitaliy Filippov
29284bef40
Implement new DSL/rule-based PG generation algorithm
2024-04-07 00:36:20 +03:00
Vitaliy Filippov
6a924d6066
Extract PG combinator into a separate module
2024-04-07 00:36:20 +03:00
Vitaliy Filippov
9fe779a691
Do not die on invalid pool configurations
2024-04-07 00:36:20 +03:00
Vitaliy Filippov
31c2751b9b
Move NBD/VDUSE map/unmap functions to a separate file
2024-04-07 00:36:09 +03:00
Vitaliy Filippov
c5195666cd
Fix journal sequencing: make each journal write wait for all previous journal writes
2024-04-06 23:53:12 +03:00
Vitaliy Filippov
f36d7eb76c
Fix monitor thinking that OSD weight is 0 after deleting /osd/config/ key
2024-04-05 23:14:46 +03:00
Vitaliy Filippov
dd7f651de1
Add --max-request-bytes=104857600 to etcd params in tests
2024-04-05 23:14:46 +03:00
Vitaliy Filippov
a2994ecd0d
Fix flusher possibly not trimming journal on rollback
2024-04-05 23:14:39 +03:00
Vitaliy Filippov
5d3aaf016b
Add administration docs
2024-03-31 01:54:52 +03:00
Vitaliy Filippov
0b097ca3f2
Set 32k csum_block_size for HDD by default
2024-03-30 16:16:49 +03:00