Vitaliy Filippov
43f8ea47a0
Ok, something is not allowed somewhere in C99
2021-11-24 11:28:10 +03:00
Vitaliy Filippov
6e0e172e15
Implement OSD address selection from a specified subnet
2021-11-23 21:59:26 +03:00
Vitaliy Filippov
655a2c871d
Move make-osd.sh into vitastor-client package
2021-11-21 16:33:33 +03:00
Vitaliy Filippov
879fe9b2b4
Add a patch for qemu 6.1 and replace _ with - in qemu options
2021-11-21 16:24:30 +03:00
Vitaliy Filippov
660c3f7b0d
Change default RDMA settings to 128x 129K buffers
...
129K to leave extra space for the header
The problem with 8x 1M buffers is that the following happens with,
for example, 2 OSDs and 4M T1Q1 write:
- Server posts 8 receives
- Client posts 8 sends
- WRs are processed by the RDMA stack, but the OSD doesn't have the time
to handle them and doesn't refill buffers
- Client posts 1 more send
- RNR retransmission happens and performance drops to zero
Overall it seems that RDMA support should be reworked to use real 'RDMA'
operations i.e. operations writing into remote memory. This has an
additional advantage of avoiding a copy at the receive side of the OSD.
2021-11-21 12:05:52 +03:00
Vitaliy Filippov
f0ebfae3b8
Fix vitastor-cli alloc-osd, use vitastor-cli in make-osd.sh
2021-11-21 00:01:03 +03:00
Vitaliy Filippov
eb7ad2c114
Fix empty size syntax, use C version of simple-offsets in tests
2021-11-20 23:51:26 +03:00
Vitaliy Filippov
cd21ff0b6a
Rewrite simple-offsets.js in C/C++
2021-11-19 02:39:56 +03:00
Vitaliy Filippov
d3903f039c
Implement alloc-osd (allocate a new OSD number) command
2021-11-19 02:39:37 +03:00
Vitaliy Filippov
66fe1a469b
Additionally balance parity chunks over OSDs using round-robin when generating initial distribution
2021-11-16 21:02:39 +03:00
Vitaliy Filippov
24409bd4c4
Oops # 2. Fix vitastor-cli create broken due to json11 :D
2021-11-16 12:52:35 +03:00
Vitaliy Filippov
c5029961ea
Oops. Fix vitastor-cli ls
2021-11-16 12:39:41 +03:00
Vitaliy Filippov
1ca1143d4a
Add fio_version and qemu_version variable example files back
2021-11-15 17:21:01 +03:00
Vitaliy Filippov
920345f7b6
Release 0.6.8
...
- Build separate packages for OSD, monitor, client, C header, fio and QEMU drivers
instead of one package which included everything
2021-11-15 00:49:21 +03:00
Vitaliy Filippov
75b47a6298
Generate pkg-config file
2021-11-15 00:49:21 +03:00
Vitaliy Filippov
6e446653ae
Include README
2021-11-15 00:00:02 +03:00
Vitaliy Filippov
e51edf2542
Split into multiple rpm packages
2021-11-14 23:48:50 +03:00
Vitaliy Filippov
ce170af91f
Split into multiple Debian packages
2021-11-14 23:31:30 +03:00
Vitaliy Filippov
7eabc364bf
Release 0.6.7
...
- 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`
2021-11-13 23:23:55 +03:00
Vitaliy Filippov
a346f84c69
Allow to show only specific images in listing
2021-11-13 23:23:55 +03:00
Vitaliy Filippov
71a0c1a7b9
Fix list sorting
2021-11-13 23:23:55 +03:00
Vitaliy Filippov
20e86c7d84
Note about vitastor-cli
2021-11-13 22:39:17 +03:00
Vitaliy Filippov
110b39900b
Rename the new "set" command to "modify"
2021-11-13 22:39:17 +03:00
Vitaliy Filippov
697ee30a26
Add ARG REL into build Dockerfiles
2021-11-13 22:39:17 +03:00
Vitaliy Filippov
42479b4590
Fix vitastor-nbd list, add ls alias
2021-11-13 22:39:17 +03:00
Vitaliy Filippov
6e82044e84
Add vita symlink
2021-11-13 22:39:17 +03:00
Vitaliy Filippov
2cb3e84882
Implement CLI set (resize, change readonly status) command
2021-11-13 22:39:17 +03:00
Vitaliy Filippov
32614c5bc8
Add a test for the last change ("split-brain avoidance", lol)
2021-11-13 22:39:17 +03:00
Vitaliy Filippov
aa436027c8
Report pg/history from OSD on every degraded activation
...
Required to prevent data loss due to activation of an OSD with older data
when PG OSD set change doesn't occur. I.e. fixes the simplest case:
- Run 2 OSDs with 1 PG
- Start writing into the PG
- Stop OSD 2
- Stop OSD 1
- Start OSD 2
After this change the PG will refuse to start after the last step.
2021-11-13 22:39:17 +03:00
Vitaliy Filippov
577a563b91
Allow to disable colored output
2021-11-11 01:41:58 +03:00
Vitaliy Filippov
e4efa2c08a
Improve vitastor-cli ls - show I/O statistics, allow to sort & limit output
2021-11-11 01:41:58 +03:00
Vitaliy Filippov
0f3f0a9d29
Calculate average statistics in mon, remove buggy "fix_stat_overflows"
2021-11-11 00:20:57 +03:00
Vitaliy Filippov
d528cd77f1
Fix install_symlink
2021-11-09 16:42:29 +03:00
Vitaliy Filippov
6e6f407df3
Simplify & fix monitor stats aggregation
2021-11-09 01:41:22 +03:00
Vitaliy Filippov
4d43774cbb
Use 5s etcd_report_interval by default
2021-11-09 01:27:12 +03:00
Vitaliy Filippov
a1488f7217
Fix qemu_driver to build with QEMU 2.x (previously it was only correct for QEMU 2.0)
2021-11-08 23:07:31 +03:00
Vitaliy Filippov
404e07d365
Implement image/snapshot/clone creation and listing by pool
2021-11-07 01:01:07 +03:00
Vitaliy Filippov
b3dcee0d43
Also print "bare" inodes with missing config if they occupy space
2021-11-06 14:56:41 +03:00
Vitaliy Filippov
609bd4eb59
Remove naggy RDMA messages when log level is zero
2021-11-06 14:36:23 +03:00
Vitaliy Filippov
8e445ddc9a
Begin to implement CLI: implement listing, add help, add create stub
2021-11-06 14:32:19 +03:00
Vitaliy Filippov
ffb06536ff
Revoke lease in mon on SIGINT & SIGTERM, fix raw_to_usable calculation
2021-11-06 13:54:35 +03:00
Vitaliy Filippov
cfe8de9b84
Autosync based on number of unstable ops to prevent journal stalls
2021-10-30 14:26:48 +03:00
Vitaliy Filippov
24b9b19066
Change rm to rm-data as it was renamed
2021-10-23 10:39:20 +03:00
Vitaliy Filippov
da99686a15
Correctly aggregate pool statistics for unknown pools
2021-10-21 18:58:56 +03:00
Vitaliy Filippov
dcc03ee41f
Add go.sum
2021-10-19 02:42:10 +03:00
Vitaliy Filippov
fb2f7a0d3c
Release 0.6.6
...
- 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
2021-10-19 02:26:37 +03:00
Vitaliy Filippov
38d85da19a
Fix build for older gcc
2021-10-19 02:26:37 +03:00
Vitaliy Filippov
dc3caee284
Add Dockerfile
2021-10-19 02:26:37 +03:00
Vitaliy Filippov
89dcda1fed
Remove "bool" from the C header
2021-10-18 01:49:07 +03:00
Vitaliy Filippov
1526e2055e
Do not crash with RDMA when receiving garbage, free RDMA buffers when connection is closed
2021-10-15 23:56:22 +03:00
Vitaliy Filippov
74cb3911db
Rebase children of the "inverse" child when it is removed, change /index/image/%s keys during metadata ops
2021-09-26 13:41:48 +03:00
Vitaliy Filippov
d5efbbb6b9
Rename commands and add CLI help
2021-09-26 13:14:36 +03:00
Vitaliy Filippov
4319091bd3
Implement "inverse merge" optimisation
2021-09-26 12:59:04 +03:00
Vitaliy Filippov
6d307d5391
Ignore "readonly" flag when merging snapshots
2021-09-26 11:32:42 +03:00
Vitaliy Filippov
065dfef683
Rename vitastor-cmd to vitastor-cli
2021-09-26 00:52:05 +03:00
Vitaliy Filippov
4d6b85fe67
Split one big cmd.cpp into multiple files
2021-09-26 00:48:08 +03:00
Vitaliy Filippov
2dd2f29f46
Move get_inode_cfg to cli_tool_t
2021-09-25 23:36:45 +03:00
Vitaliy Filippov
fc3a1e076a
Fix minor bugs in snapshot removal, check it in tests
2021-09-25 19:30:29 +03:00
Vitaliy Filippov
3a3e168c42
Implement high-level snapshot flatten and remove commands
2021-09-25 01:36:44 +03:00
Vitaliy Filippov
95c55da0ad
Implement merge with CAS
2021-08-01 20:06:05 +03:00
Vitaliy Filippov
5cf1157f16
Return real version on CAS failure
2021-08-01 20:05:19 +03:00
Vitaliy Filippov
acf637950c
Implement layer merge
...
A new command merges multiple snapshot/clone layers into one of them,
so merged layers can be deleted after this procedure
2021-07-31 00:23:30 +03:00
Vitaliy Filippov
a02b02eb04
Use new listing methods in rm_inode
2021-07-20 00:19:34 +03:00
Vitaliy Filippov
7d3d696110
Implement object listing with controllable parallelism in cluster_client
2021-07-20 00:19:34 +03:00
Vitaliy Filippov
28bd94d2c2
Make diagnostics slightly better
2021-07-18 01:24:38 +03:00
Vitaliy Filippov
148ff04aa8
Do not lose flusher queue entries when an "older object rescan" happens in parallel with flushing of an older version of another object
2021-07-18 01:20:54 +03:00
Vitaliy Filippov
e74af9745e
Print journal flusher diagnostics on slow ops
2021-07-17 16:13:41 +03:00
Vitaliy Filippov
0e0509e3da
Dump op states in slow operation log
2021-07-16 01:58:50 +03:00
Vitaliy Filippov
cb282d25e0
Release 0.6.5
...
- 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
2021-07-10 11:01:21 +03:00
Vitaliy Filippov
8b2a4c9539
Fix centos builds (yum-builddep stopped working in el7, cmake in el8..)
2021-07-10 11:01:21 +03:00
Vitaliy Filippov
b66a079892
State basic OpenStack support
2021-07-10 01:11:20 +03:00
Vitaliy Filippov
e90bbe6385
Implement OpenStack Cinder driver for Vitastor
...
It can't delete snapshots yet because Vitastor layer merge isn't
implemented yet. You can only delete volumes with all snapshots.
This will be fixed in the near future.
2021-07-10 01:06:29 +03:00
Vitaliy Filippov
4be761254c
Move patches to patches/
2021-07-09 21:51:19 +03:00
Vitaliy Filippov
7a45c5f86c
buster-backports has broken mesa
2021-07-09 12:29:39 +03:00
Vitaliy Filippov
bff413584d
Fix qemuBlockStorageSourceGetVitastorProps
2021-07-09 02:09:47 +03:00
Vitaliy Filippov
bb31050ab5
Add missing image, config_path options to QEMU QAPI
2021-07-09 02:09:47 +03:00
Vitaliy Filippov
b52dd6843a
Rename qemu_rbd_unescape and qemu_rbd_next_tok to *_vitastor_*
2021-07-03 23:14:44 +03:00
Vitaliy Filippov
b66160a7ad
Aggregate per-pool statistics in mon
2021-07-03 23:14:44 +03:00
Vitaliy Filippov
30bb602681
Add _VITASTOR to missing switches in libvirt 7.0 patch
2021-06-28 22:00:23 +03:00
Vitaliy Filippov
eb0a3adafc
Patch libvirt schema, add an example to test libvirt
2021-06-28 01:20:55 +03:00
Vitaliy Filippov
24301b116c
Add libvirt 5.0 patch
2021-06-27 18:43:29 +03:00
Vitaliy Filippov
1d00c17d68
Add libvirt 7.5 patch
2021-06-27 10:58:12 +03:00
Vitaliy Filippov
24f19c4b80
Add libvirt 7.0 patch
2021-06-27 00:58:56 +03:00
Vitaliy Filippov
dfdf5c1f9c
Fix comments in mon.js
2021-06-20 00:23:56 +03:00
Vitaliy Filippov
aad7792d3f
Check for loops in parent inode chains
2021-06-20 00:23:03 +03:00
Vitaliy Filippov
6ca8afffe5
Add CAS version parameter to the C wrapper
2021-06-19 01:00:52 +03:00
Vitaliy Filippov
511a89948b
Rework qemu_proxy into a C wrapper library with public header
2021-06-19 00:39:11 +03:00
Vitaliy Filippov
3de553ecd7
Add a test for CAS write operation
2021-06-15 00:12:35 +03:00
Vitaliy Filippov
9c45d43e74
Extract common 3 OSD code from several test scripts
2021-06-15 00:12:35 +03:00
Vitaliy Filippov
891250d355
Implement CAS writes
...
From now on, reads will return the server-side object version numbers
and writes and deletes will have an additional "version" parameter
which, if set to a non-zero value, will be atomically compared with
the current version of the object plus 1 and the modification will
fail if it doesn't match.
This feature opens the road to correct online flattening of snapshot
layers and other interesting things.
2021-06-15 00:12:35 +03:00
Vitaliy Filippov
f9fe72d40a
Release 0.6.4
...
- Implement a basic Kubernetes CSI driver
- Minor fixes for vitastor-nbd
- Fix build without RDMA broken in 0.6.3
2021-05-16 01:38:01 +03:00
Vitaliy Filippov
10ee4f7c1d
Add notes about CSI to README
2021-05-16 01:38:01 +03:00
Vitaliy Filippov
fd8244699b
Implement basic CSI driver
...
Currently can create and remove volumes, but resizing and snapshots is not supported yet
2021-05-16 01:15:43 +03:00
Vitaliy Filippov
eaac1fc5d1
Log to stderr in etcd_state_client, too
2021-05-16 01:09:25 +03:00
Vitaliy Filippov
57be1923d3
Daemonize NBD_DO_IT process, correctly cleanup unmounted NBD clients
2021-05-16 01:09:25 +03:00
Vitaliy Filippov
c467acc388
Fix /v3 appendage to etcd URLs without /v3
2021-05-15 19:22:24 +03:00
Vitaliy Filippov
bf591ba3ee
Fix nbd module load check
2021-05-15 19:22:24 +03:00
Vitaliy Filippov
699a0fbbc7
Log to stderr instead of stdout in client
2021-05-15 19:22:24 +03:00
Vitaliy Filippov
6b2dd50f27
Fix build without RDMA
2021-05-08 18:20:43 +03:00
Vitaliy Filippov
caf2f3c56f
Release 0.6.3
...
- RDMA support
- Client performance optimisations (4k randread ~120k -> ~180k on 1 core)
- JSON configuration file (/etc/vitastor/vitastor.conf) support
- Bug fixes
2021-05-02 17:47:43 +03:00