|
| 1 | +# CHANGELOG of v2.7 |
| 2 | + |
| 3 | +Previous change logs can be found at [CHANGELOG-2.6](https://github.com/opencurve/curve/blob/master/CHANGELOG-2.6.md) |
| 4 | + |
| 5 | +## Features |
| 6 | + |
| 7 | +* [curvefs/client: add quota for S3 client](https://github.com/opencurve/curve/pull/2836), thanks to [@h0hmj][h0hmj]. |
| 8 | +* [curvefs/client: now we support hadoop sdk](https://github.com/opencurve/curve/pull/2807), thanks to [@Wine93][Wine93]. |
| 9 | +* [curvefs/client: make user agent configurable](https://github.com/opencurve/curve/pull/2501), thanks to [@Ziy1-Tan][Ziy1-Tan]. |
| 10 | +* [curvefs/mds: add ability to change capacity in fsinfo](https://github.com/opencurve/curve/pull/2821), thanks to [@h0hmj][h0hmj]. |
| 11 | +* [curvefs/metaserver: support asynchronous snapshot](https://github.com/opencurve/curve/pull/2691), thanks to [@NaturalSelect][NaturalSelect]. |
| 12 | +* [curvefs/{client,metaserver}: support braft lease read](https://github.com/opencurve/curve/pull/2599), thanks to [@Xinlong-Chen][Xinlong-Chen]. |
| 13 | +* [curvefs/*: support space deallocate for curvebs volume as backend](https://github.com/opencurve/curve/pull/2313), thanks to [@ilixiaocui][ilixiaocui]. |
| 14 | +* [curvefs/monitor: add memcache](https://github.com/opencurve/curve/pull/2834), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 15 | +* [curvefs/monitor: add cluster usage](https://github.com/opencurve/curve/pull/2842), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 16 | +* [curvefs/monitor: support plugin](https://github.com/opencurve/curve/pull/2830), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 17 | +* [curvefs/docker: support run curvefs on Openeuler 22.03-lts-sp2 platform](https://github.com/opencurve/curve/pull/2789), thanks to [@peter5232][peter5232]. |
| 18 | +* [curvebs/chunkserver: support format chunkfile pool in asynchronous](https://github.com/opencurve/curve/pull/2775), thanks to [@Vigor-jpg][Vigor-jpg]. |
| 19 | +* [curvebs/{client,chunkserver}: support braft lease read](https://github.com/opencurve/curve/pull/2543), thanks to [@Xinlong-Chen][Xinlong-Chen]. |
| 20 | +* [curvebs/*: support poolset](https://github.com/opencurve/curve/pull/1988), thanks to [@jolly-sy][jolly-sy]. |
| 21 | +* [curvebs/*: support 512 aligned IO](https://github.com/opencurve/curve/pull/2538), thanks to [@wu-hanqing][wu-hanqing]. |
| 22 | +* [curvebs/tool: support list or query scan status](https://github.com/opencurve/curve/pull/2481), thanks to [@lianzhanbiao][lianzhanbiao]. |
| 23 | +* [curvebs/tool: support get copyset status](https://github.com/opencurve/curve/pull/2520), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 24 | +* [curvebs/tool: support list may-broken-vol](https://github.com/opencurve/curve/pull/2518), thanks to [@baytan0720][baytan0720]. |
| 25 | +* [curvebs/tool: support update leader-schedule[-all]](https://github.com/opencurve/curve/pull/2551), thanks to [@montaguelhz][montaguelhz]. |
| 26 | +* [curvebs/tool: support get cluster status](https://github.com/opencurve/curve/pull/2530), thanks to [@caoxianfei1][caoxianfei1]. |
| 27 | +* [curvebs/tool: support update volume flatten](https://github.com/opencurve/curve/pull/2757), thanks to [@baytan0720][baytan0720]. |
| 28 | +* [curvebs/tool: support check chunkserver](https://github.com/opencurve/curve/pull/2632), thanks to [@lng2020][lng2020]. |
| 29 | +* [curvebs/tool: support create snapshot for all copyset](https://github.com/opencurve/curve/pull/2618), thanks to [@montaguelhz][montaguelhz]. |
| 30 | +* [curvebs/tool: add snapshot utils](https://github.com/opencurve/curve/pull/2758), thanks to [@baytan0720][baytan0720]. |
| 31 | + |
| 32 | +## Improve |
| 33 | + |
| 34 | +* [curvefs/client: optimizing the read amplification problem, especially for memcache](https://github.com/opencurve/curve/pull/2792), thanks to [@wuhongsong][wuhongsong]. |
| 35 | +* [curvefs/client: split latency metric into data and attr](https://github.com/opencurve/curve/pull/2824), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 36 | +* [curvefs/client: add kvcache metric](https://github.com/opencurve/curve/pull/2806), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 37 | +* [curvefs/client: add discache metric](https://github.com/opencurve/curve/pull/2798), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 38 | +* [curvefs/client: support list or stop warmup progress](https://github.com/opencurve/curve/pull/2652), thanks to [@ken90242][ken90242]. |
| 39 | +* [curvefs/client: support warmup symbol link](https://github.com/opencurve/curve/pull/2723), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 40 | +* [curvefs/client: merge two rpc into one rpc for makenode](https://github.com/opencurve/curve/pull/2680), thanks to [@201341][201341]. |
| 41 | +* [curvefs/client: delete apply index](https://github.com/opencurve/curve/pull/2631), thanks to [@Xinlong-Chen][Xinlong-Chen]. |
| 42 | +* [curvefs/client: make enableSumInDir to false in default](https://github.com/opencurve/curve/pull/2767), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 43 | +* [curvefs/client: add s3,diskcache,kvcache io metric](https://github.com/opencurve/curve/pull/2735), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 44 | +* [curvefs/mds: support modify some configs on fly](https://github.com/opencurve/curve/pull/2813), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 45 | +* [curvefs/mds: change hostname to optional for register server](https://github.com/opencurve/curve/pull/2574), thanks to [@201341][201341]. |
| 46 | +* [curvefs/mds: split large test cases into focused smaller ones](https://github.com/opencurve/curve/pull/2717), thanks to [@ken90242][ken90242]. |
| 47 | +* [curvefs/metaserver: remove some unnecessary error logs](https://github.com/opencurve/curve/pull/2831), thanks to [@SeanHai][SeanHai]. |
| 48 | +* [curvefs/metaserver: add delete inode metric](https://github.com/opencurve/curve/pull/2822), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 49 | +* [curvefs/metaserver: separate raft read and write apply queue](https://github.com/opencurve/curve/pull/2498), thanks to [@Xinlong-Chen][Xinlong-Chen]. |
| 50 | +* [curvefs/{mds,metaserver}: add idle_timeout_sec option](https://github.com/opencurve/curve/pull/2479), thanks to [@201341][201341]. |
| 51 | +* [curvefs/tool: enable go modules](https://github.com/opencurve/curve/pull/2804), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 52 | +* [curvefs/tool: support update copyset avail flag](https://github.com/opencurve/curve/pull/2455), thanks to [@baytan0720][baytan0720]. |
| 53 | +* [curvebs/client: add slow request metric](https://github.com/opencurve/curve/pull/2746), thanks to [@wu-hanqing][wu-hanqing]. |
| 54 | +* [curvebs/client: delete apply index](https://github.com/opencurve/curve/pull/2630), thanks to [@Xinlong-Chen][Xinlong-Chen]. |
| 55 | +* [curvebs/chunkserver: add some common functions](https://github.com/opencurve/curve/pull/2826), thanks to [@Xinlong-Chen][Xinlong-Chen]. |
| 56 | +* [curvebs/chunkserver: enable odsync by default](https://github.com/opencurve/curve/pull/2614), thanks to [@wu-hanqing][wu-hanqing]. |
| 57 | +* [curvebs/chunkserver: unify apply queue](https://github.com/opencurve/curve/pull/2641), thanks to [@Xinlong-Chen][Xinlong-Chen]. |
| 58 | +* [curvebs/tool: refactor for remove duplicate codes](https://github.com/opencurve/curve/pull/2534), thanks to [@baytan0720][baytan0720]. |
| 59 | +* [curvebs/docker: upgrade base image to debian11](https://github.com/opencurve/curve/pull/2629), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 60 | +* [build: install clang-format-14 in dev docker](https://github.com/opencurve/curve/pull/2828), thanks to [@wu-hanqing][wu-hanqing]. |
| 61 | +* [build: add braft format patch](https://github.com/opencurve/curve/pull/2661), thanks to [@wu-hanqing][wu-hanqing]. |
| 62 | +* [build: support build specified library](https://github.com/opencurve/curve/pull/2829), thanks to [@quas-modo][quas-modo]. |
| 63 | +* [build: replace spdlog repo mirror address](https://github.com/opencurve/curve/pull/2786), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 64 | +* [build: replace fmt repo mirror address](https://github.com/opencurve/curve/pull/2796), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 65 | +* [build: deprecate mk-deb.sh mk-tar.sh and use make targets instead](https://github.com/opencurve/curve/pull/2644), thanks to [@charlie0129][charlie0129]. |
| 66 | +* [build: speed up bazel build](https://github.com/opencurve/curve/pull/2679), thanks to [@h0hmj][h0hmj]. |
| 67 | +* [build: support build on GCC 11+](https://github.com/opencurve/curve/pull/2642), thanks to [@NaturalSelect][NaturalSelect]. |
| 68 | +* [tool: support shell completion](https://github.com/opencurve/curve/pull/2662), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 69 | +* [tool: support upgrade curve tool online](https://github.com/opencurve/curve/pull/2674), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 70 | +* [tool: refactor all *map to map](https://github.com/opencurve/curve/pull/2541), thanks to [@XR-stb][XR-stb]. |
| 71 | +* [test: upgrade googletest to v1.12.1](https://github.com/opencurve/curve/pull/2558), thanks to [@wu-hanqing][wu-hanqing]. |
| 72 | +* [ci: add clang-format action](https://github.com/opencurve/curve/pull/2739), thanks to [@peter5232][peter5232]. |
| 73 | +* [ci: add cppcheck action, sanitizers](https://github.com/opencurve/curve/pull/2784), thanks to [@czm23333][czm23333]. |
| 74 | + |
| 75 | +## Bugfix |
| 76 | +* [curvefs/client: fixed diskcache lru bug](https://github.com/opencurve/curve/pull/2815), thanks to [@wuhongsong][wuhongsong]. |
| 77 | +* [curvefs/client: fixed some minor bugs.](https://github.com/opencurve/curve/pull/2522), thanks to [@Wine93][Wine93]. |
| 78 | +* [curvefs/client: fixed check filetype with wrong method](https://github.com/opencurve/curve/pull/2729), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 79 | +* [curvefs/client: fixed ut fail](https://github.com/opencurve/curve/pull/2743), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 80 | +* [curvefs/client: fixed wrong metric name](https://github.com/opencurve/curve/pull/2694), thanks to [@SeanHai][SeanHai]. |
| 81 | +* [curvefs/client: fixed warmup issue which will leads data inconsitent](https://github.com/opencurve/curve/pull/2562), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 82 | +* [curvefs/mds: fixed partition range cross](https://github.com/opencurve/curve/pull/2727), thanks to [@SeanHai][SeanHai]. |
| 83 | +* [curvefs/tool: fixed list copyset information error](https://github.com/opencurve/curve/pull/2523), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 84 | +* [curvebs/tool: get copyset status from braft metric on chunkserver](https://github.com/opencurve/curve/pull/2731), thanks to [@caoxianfei1][caoxianfei1]. |
| 85 | +* [build: fixed buildfs.sh run failed on debian11](https://github.com/opencurve/curve/pull/2511), thanks to [@201341][201341]. |
| 86 | +* [test: fixed filepool test invalid memory access](https://github.com/opencurve/curve/pull/2575), thanks to [@wu-hanqing][wu-hanqing]. |
| 87 | +* [ci: let ci works better](https://github.com/opencurve/curve/pull/2812), thanks to [@wu-hanqing][wu-hanqing]. |
| 88 | + |
| 89 | +## Doc |
| 90 | +* [doc: updated maintainers for curve project](https://github.com/opencurve/curve/pull/2695), thanks to [@aspirer][aspirer]. |
| 91 | +* [doc: fix typo](https://github.com/opencurve/curve/pull/2799), thanks to [@NopeDl][NopeDl]. |
| 92 | +* [doc: updated tool's readme](https://github.com/opencurve/curve/pull/2506), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 93 | +* [doc: replace harbor with opencurve](https://github.com/opencurve/curve/pull/2549), thanks to [@Cyber-SiKu][Cyber-SiKu]. |
| 94 | +* [doc: fixed some wrong usage exmaple for tool](https://github.com/opencurve/curve/pull/2675), thanks to [@montaguelhz][montaguelhz]. |
| 95 | + |
| 96 | +[Cyber-SiKu]: https://github.com/Cyber-SiKu |
| 97 | +[h0hmj]: https://github.com/h0hmj |
| 98 | +[wu-hanqing]: https://github.com/wu-hanqing |
| 99 | +[Wine93]: https://github.com/Wine93 |
| 100 | +[Vigor-jpg]: https://github.com/Vigor-jpg |
| 101 | +[SeanHai]: https://github.com/SeanHai |
| 102 | +[quas-modo]: https://github.com/quas-modo |
| 103 | +[wuhongsong]: https://github.com/wuhongsong |
| 104 | +[peter5232]: https://github.com/peter5232 |
| 105 | +[aspirer]: https://github.com/aspirer |
| 106 | +[Xinlong-Chen]: https://github.com/Xinlong-Chen |
| 107 | +[NopeDl]: https://github.com/NopeDl |
| 108 | +[charlie0129]: https://github.com/charlie0129 |
| 109 | +[201341]: https://github.com/201341 |
| 110 | +[baytan0720]: https://github.com/baytan0720 |
| 111 | +[caoxianfei1]: https://github.com/caoxianfei1 |
| 112 | +[czm23333]: https://github.com/czm23333 |
| 113 | +[dependabot]: https://github.com/dependabot |
| 114 | +[ilixiaocui]: https://github.com/ilixiaocui |
| 115 | +[jolly-sy]: https://github.com/jolly-sy |
| 116 | +[ken90242]: https://github.com/ken90242 |
| 117 | +[lianzhanbiao]: https://github.com/lianzhanbiao |
| 118 | +[lng2020]: https://github.com/lng2020 |
| 119 | +[montaguelhz]: https://github.com/montaguelhz |
| 120 | +[NaturalSelect]: https://github.com/NaturalSelect |
| 121 | +[setcy]: https://github.com/setcy |
| 122 | +[XR-stb]: https://github.com/XR-stb |
| 123 | +[Ziy1-Tan]: https://github.com/Ziy1-Tan |
| 124 | + |
| 125 | +# Performance |
| 126 | + |
| 127 | +## Hardware |
| 128 | +3 nodes (3*mds, 9*metaserver), each with: |
| 129 | + - Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz |
| 130 | + - 256G RAM |
| 131 | + - disk cache: INTEL SSDSC2BB80 800G (IOPS is about 30000+, bandwidth is about 300 MiB) |
| 132 | + |
| 133 | +## Configure |
| 134 | + |
| 135 | +```yaml |
| 136 | +fs.cto: true |
| 137 | +fs.lookupCache.negativeTimeoutSec: 1 |
| 138 | +fs.lookupCache.minUses: 3 |
| 139 | +fuseClient.supportKVcache: true |
| 140 | +client.loglevel: 0 |
| 141 | +``` |
| 142 | +
|
| 143 | +## fio |
| 144 | +
|
| 145 | +```bash |
| 146 | +[global] |
| 147 | +rw=randread |
| 148 | +direct=1 |
| 149 | +size=50G |
| 150 | +iodepth=128 |
| 151 | +ioengine=libaio |
| 152 | +bsrange=4k-4k |
| 153 | +ramp_time=10 |
| 154 | +runtime=300 |
| 155 | +group_reporting |
| 156 | + |
| 157 | +[disk01] |
| 158 | +filename=/path/to/mountpoint/1.txt |
| 159 | +``` |
| 160 | + |
| 161 | +| fio | IOPS/bandwidth | avg-latency(ms) | clat 99.00th (ms) | clat 99.99th (ms) | |
| 162 | +| :----: | :----: | :----: | :----: | :----: | |
| 163 | +| numjobs=1 / size=50GB / 4k randwrite | 4243 | 0.23 | 0.176 | 2 | |
| 164 | +| numjobs=1 / size=50GB / 4k randwrite | 908 | 1.0 | 3.5 | 104 | |
| 165 | +| numjobs=1 / size=50GB / 512k write | 412 MiB/s | 2.4 | 19 | 566 | |
| 166 | +| numjobs=1 / size=50GB / 512k read | 333 MiB/s | 2.9 | 20 | 115 | |
| 167 | + |
| 168 | +## mdtest |
| 169 | + |
| 170 | +```bash |
| 171 | +for i in 1 4 8; do mpirun --allow-run-as-root -np $i mdtest -z 2 -b 3 -I 10000 -d /path/to/mountpoint; done |
| 172 | +``` |
| 173 | + |
| 174 | +| Case | Dir creation | Dir stat | Dir removal | File creation | File stat | File read | File removal | Tree creation | Tree removal | |
| 175 | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | |
| 176 | +| client*1 | 341 | 395991 | 291 | 334 | 383844 | 3694 | 309 | 322 | 851 | |
| 177 | +| client*4 | 385 | 123266 | 288 | 361 | 1515592 | 15056 | 310 | 363 | 16 | |
| 178 | +| client*8 | 415 | 22138 | 314 | 400 | 2811416 | 20976 | 347 | 355 | 8 | |
0 commit comments