Vitaliy Filippov
0ee5e0a7fe
Implement vitastor-cli df command
2021-12-10 02:37:02 +03:00
Vitaliy Filippov
0a1640d169
Some important fixes for our new Proxmox driver
2021-12-10 01:17:06 +03:00
Vitaliy Filippov
3482bb0860
Fix readonly/readwrite option parsing
2021-12-10 00:52:59 +03:00
Vitaliy Filippov
526995f486
Do not skip empty iops in listings
2021-12-10 00:52:59 +03:00
Vitaliy Filippov
073b505928
Package Proxmox plugin as pve-storage-vitastor
2021-12-10 00:22:45 +03:00
Vitaliy Filippov
a8b21a22d0
Add patch for pve-qemu 6.1
2021-12-09 02:57:43 +03:00
Vitaliy Filippov
0b1ffba62b
Add Proxmox storage driver
2021-12-09 02:26:54 +03:00
Vitaliy Filippov
8dfbd7943c
Use logical block size = 512 bytes by default
2021-12-08 23:43:40 +03:00
Vitaliy Filippov
39e7f98e54
Allow to change etcd IP in tests
2021-12-08 23:00:48 +03:00
Vitaliy Filippov
3a83a32cb7
Aaand now fix create --parent :D
2021-12-08 23:00:34 +03:00
Vitaliy Filippov
20d5ed799a
Add glob pattern matching for ls
2021-12-08 23:00:34 +03:00
Vitaliy Filippov
b262938bca
Fix naggy "Failed to get RDMA device list: Unknown error -38"
2021-12-08 02:02:30 +03:00
Vitaliy Filippov
7e54242251
Add patches for Proxmox QEMU 5.1 and 52
2021-12-05 17:45:01 +03:00
Vitaliy Filippov
c3c2e68cc1
Now fix resize command :D
2021-12-05 01:38:08 +03:00
Vitaliy Filippov
aa1e21dd99
Release 0.6.9
...
New features:
- Build Vitastor driver as part of QEMU
- Implement renaming images in CLI (vitastor-cli modify --rename)
- Add vitastor-cli alloc-osd and simple-offsets commands and use them in make-osd,
thus removing the dependency on etcdctl
- Make monitor remove stale deleted inode statistics from etcd automatically
- Implement OSD address selection from a subnet, thus removing the need to specify
OSD addresses in startup scripts explicitly
Bug fixes:
- Fix client failover in case of etcd shutdown or crash (make client survive etcd failures)
- Stick to the last live etcd in OSD and mon to prevent random failures when one of etcds is down
- Fix incorrect copying of data from journal to the data device which could lead to data corruption
- Prefer local etcd IPs in OSD
- Remove the total PG count restriction in optimize_change which was sometimes leading
to inability to redistribute PGs over OSDs
- Fix error response parsing on a failed pg state report
- Fix slow linear writes with RDMA by changing default buffer settings
- Fix possible 'TypeError' in openstack nova when using Vitastor cinder driver
- Fix bugs in vitastor-cli create, ls, rm, modify commands
Patch changes:
- Add a patch for libvirt 7.6
- Add patches for QEMU 6.0 and 6.1
- Fix config file path XML location parsing in libvirt patches
- Replace _ with - in QEMU options
- Fix possible 'TypeError' in openstack nova when using Vitastor cinder driver
- Fix possible crashes of QEMU block driver in case of incorrect options
2021-12-03 10:58:54 +03:00
Vitaliy Filippov
f4b57d487f
Remove +deb10u1 from libvirt version
2021-12-03 10:56:44 +03:00
Vitaliy Filippov
711ecd2f8e
Add a Dockerfile to build libvirt
2021-12-03 03:00:10 +03:00
Vitaliy Filippov
9fca01dc62
Add a forgotten return statement
2021-12-03 00:41:49 +03:00
Vitaliy Filippov
0bd3a94efd
Use qdict_get_try_int because qdict_get_int may segfault on a missing key
2021-12-03 00:22:17 +03:00
Vitaliy Filippov
9ffdeef93b
Install the built liburing version in el8 dockerfile
2021-12-03 00:04:18 +03:00
Vitaliy Filippov
589892d501
Fix rpm dockerfiles
2021-12-02 10:19:47 +03:00
Vitaliy Filippov
5fe3a40416
More fixes for QEMU 2.x :)
2021-12-02 02:25:50 +03:00
Vitaliy Filippov
a453db9c8e
An attempt to automatically build patched specs inside Docker is mostly broken for now
2021-12-02 01:51:48 +03:00
Vitaliy Filippov
e6498a52ca
Rename 4.2 el7 spec patch
2021-12-02 01:47:44 +03:00
Vitaliy Filippov
4bc41aed9d
Add patches for QEMU 6.0 and for 6.0 RPM spec
2021-12-02 01:47:20 +03:00
Vitaliy Filippov
4da51f9c4c
Update QEMU 3.1 patch
2021-12-02 01:29:21 +03:00
Vitaliy Filippov
c6cee6f734
Update QEMU 5.0 patch
2021-12-02 01:27:00 +03:00
Vitaliy Filippov
6fc08f5581
Update CentOS 8 QEMU 4.2 spec patch
2021-12-02 01:23:43 +03:00
Vitaliy Filippov
15957b7d13
Update QEMU 4.2 patch and CentOS 7 QEMU 4.2 spec patch
2021-12-02 01:03:19 +03:00
Vitaliy Filippov
09a3987e83
Remove vitastor-qemu from RPM specs
2021-12-01 23:42:20 +03:00
Vitaliy Filippov
cd6820c439
Update QEMU 5.1/5.2 patch to include internal vitastor driver
2021-12-01 02:08:02 +03:00
Vitaliy Filippov
dcd8f5e76c
Remove qemu shenanigans from vitastor build dockerfile
2021-12-01 02:00:14 +03:00
Vitaliy Filippov
5859f913fc
Fix client failover in case of etcd shutdown or crash
2021-12-01 00:33:02 +03:00
Vitaliy Filippov
cac6a1d8d1
Don't need to download fio in qemu dockerfile anymore
2021-11-30 22:24:48 +03:00
Vitaliy Filippov
a0c32e7de9
Update patch for libvirt 7.6
2021-11-30 10:23:51 +03:00
Vitaliy Filippov
8b37610dd0
Rename patch to Nova 23 because it's actually closer
2021-11-30 02:05:24 +03:00
Vitaliy Filippov
ae82ca3b08
Pass config path in <config file="" /> element instead of an attribute
...
libvirt has always had config in the element for Ceph, we don't want to break it
2021-11-30 02:02:07 +03:00
Vitaliy Filippov
92362027a8
Build vitastor driver as part of the QEMU package by default
...
Old behaviour can be restored with cmake var WITH_QEMU=true
2021-11-29 02:05:26 +03:00
Vitaliy Filippov
c4aeeda143
Fix index removal in vitastor-cli rm
2021-11-29 02:00:05 +03:00
Vitaliy Filippov
24f0f8278a
Fix modify --readwrite
2021-11-29 01:52:21 +03:00
Vitaliy Filippov
95496d0845
Implement renaming images in CLI (vitastor-cli modify --rename)
2021-11-28 22:38:57 +03:00
Vitaliy Filippov
94b1f09ef2
Create snapshots in the same pool by default
2021-11-28 21:50:42 +03:00
Vitaliy Filippov
32b1312abb
Remove stale deleted inode statistics in monitor
2021-11-28 21:02:05 +03:00
Vitaliy Filippov
d5c8fde5de
Remove kludgy $IP and $ETCD_MON parsing from make-osd.sh, suggest to use vitastor.conf
2021-11-28 18:27:05 +03:00
Vitaliy Filippov
7a0b5212fe
Exit if unable to restart watches
...
FIXME: It's probably not OK for the client to exit in this case
2021-11-28 01:43:31 +03:00
Vitaliy Filippov
a8f5c71ae8
Use the same etcd address selection algorithm in the monitor
2021-11-28 01:19:42 +03:00
Vitaliy Filippov
ce5b6253ab
Make OSDs stick to the last successful etcd address
...
Previously OSDs were selecting a new random etcd from the cluster
on every request so they were failing randomly when part of etcds was down
2021-11-27 23:48:56 +03:00
Vitaliy Filippov
8398ad0117
Fix #36 - Fix old version data sometimes overriding new version data
...
Reproduction case:
- v3 = (offset 4kb, length 16kb)
- v2 = (offset 24kb, length 16kb)
- v1 = (offset 16kb, length 16kb)
- At the third step it was inserting 16..24kb instead of 20..24kb
2021-11-27 01:17:45 +03:00
Vitaliy Filippov
fea451b4db
Prefer local etcd in OSD
2021-11-27 00:36:53 +03:00
Vitaliy Filippov
6e12aca53b
Remove the total PG count restriction in optimize_change which was leading to unfeasible problems sometimes
2021-11-26 23:05:37 +03:00
Vitaliy Filippov
300d507026
Fix capture of out in alloc_osd
2021-11-25 10:20:01 +03:00
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