{"id":20360094,"url":"https://github.com/harry-chen/hermes","last_synced_at":"2025-07-18T08:04:33.690Z","repository":{"id":68569380,"uuid":"186877681","full_name":"Harry-Chen/HERMES","owner":"Harry-Chen","description":"HERMES: sHallow dirEctory stRucture Many-filE fileSystem","archived":false,"fork":false,"pushed_at":"2019-06-09T10:41:33.000Z","size":620,"stargazers_count":20,"open_issues_count":0,"forks_count":2,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-07-11T19:59:21.172Z","etag":null,"topics":["berkeley-db","filesystem","fuse","key-value","leveldb","rocksdb"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Harry-Chen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-05-15T17:56:01.000Z","updated_at":"2023-01-30T16:37:26.000Z","dependencies_parsed_at":"2024-01-14T09:57:42.638Z","dependency_job_id":"f33a18e7-f3aa-4a5c-9b5f-e314c25897f8","html_url":"https://github.com/Harry-Chen/HERMES","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Harry-Chen/HERMES","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Harry-Chen%2FHERMES","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Harry-Chen%2FHERMES/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Harry-Chen%2FHERMES/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Harry-Chen%2FHERMES/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Harry-Chen","download_url":"https://codeload.github.com/Harry-Chen/HERMES/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Harry-Chen%2FHERMES/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265724573,"owners_count":23817827,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["berkeley-db","filesystem","fuse","key-value","leveldb","rocksdb"],"created_at":"2024-11-14T23:37:50.404Z","updated_at":"2025-07-18T08:04:33.665Z","avatar_url":"https://github.com/Harry-Chen.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HERMES\n\nHERMES, a.k.a. s**H**allow dir**E**ctory st**R**ucture **M**any-fil**E** file**S**ystem, is a filesystem base on FUSE designed for numerous small files with simple directory structure, on which occasion common file systems has a serious performance degradation.\n\n## Authors \u0026 License\n\nThe authors of `HERMES` are listed below:\n\n* [Shengqi Chen](https://github.com/Harry-Chen)\n* [Jiajie Chen](https://github.com/jiegec)\n* [Xiaoyi Liu](https://github.com/CircuitCoder)\n* [Jian Gao](https://github.com/IcicleF)\n\nThis project is an assignment of `Basics of Stroage Technology` course, Spring 2019, Tsinghua University. All code created by the authors is licensed under the MIT license, while open source code used in this project is subjected to their own licenses.\n\n## Dependencies\n\n### Project\n\n* `clang++` \u003e= 7.0\n* `gcc` \u003e= 5.0\n* `CMake` \u003e= 2.8\n\n### Backends\n\nHERMES supports several key-value databases as its backend, and you can choose one when configuring cmake project. \nLevelDB will be used as the default backend if you do not specify one. According to your choice, HERMES would depends on one of:\n\n* `LevelDB` \u003e= 1.20\n* `RocksDB` \u003e= 5.8.8\n* `BerkeleyDB` \u003e= 5.3.28\n* `Vedis`: no dependencies (using `git-submodule` to download source automatically)\n\nYou can either install prebuilt development packages (such as `libleveldb-dev`) or compile and install them manually.\nSee `CMakeModules/*.cmake` for how to specify non-default library locations.\n\n## Compilation \u0026 Running\n\n```bash\nmkdir build \u0026\u0026 cd build\nCXX=clang++ cmake .. -DBACKEND=[LevelDB/RocksDB/BerkeleyDB/Vedis]\ncmake --build .\n```\n\nThe executable can be located at `build/src/HERMES`. \n\nBesides common `fuse` options, filesystem-specific options are:\n\n```text\n--metadev=/path/to/meta # location to save the metadata\n--filedev=/path/to/file # location to save the file content\n```\n\nNote that different backends requires different types `metadev` and `filedev`.\nLevelDB and RocksDB need directories, while BerkeleyDB and Vedis need files.\n\nYou can use `--help` to see the complete help text and `--version` to see the compilation time and backend version of HERMES.\n\n## Tests\n\nThere are several tests in `tests` directory:\n\n* `read_write_perf.sh`: Test the read \u0026 write performance of different backends.\n* `file_list_perf.sh`: Test the performance of file creation \u0026 enumeration of different backends.\n* `test_correctness.sh`: Test the implementation correctness of different backends.\n\nThe first two tests requires `fio` to run, and will generate reports in `results` directory.\n\n## Implementation\n\nYou may refer to `doc/report.pdf` for more details (in Chinese).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharry-chen%2Fhermes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fharry-chen%2Fhermes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharry-chen%2Fhermes/lists"}