{"id":13508160,"url":"https://github.com/nvfuse/nvfuse","last_synced_at":"2025-03-30T09:33:25.374Z","repository":{"id":216995936,"uuid":"89671950","full_name":"nvfuse/nvfuse","owner":"nvfuse","description":"NVMe based File System in User-space","archived":false,"fork":false,"pushed_at":"2020-02-16T03:49:14.000Z","size":7083,"stargazers_count":98,"open_issues_count":2,"forks_count":26,"subscribers_count":17,"default_branch":"master","last_synced_at":"2024-11-01T07:33:26.817Z","etag":null,"topics":["dpdk","filesystem","nvme","objectstore","spdk","userspace"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nvfuse.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-04-28T05:49:31.000Z","updated_at":"2024-10-30T12:42:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"0f394bda-34d8-4403-b558-25a1533e6944","html_url":"https://github.com/nvfuse/nvfuse","commit_stats":null,"previous_names":["nvfuse/nvfuse"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nvfuse%2Fnvfuse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nvfuse%2Fnvfuse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nvfuse%2Fnvfuse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nvfuse%2Fnvfuse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nvfuse","download_url":"https://codeload.github.com/nvfuse/nvfuse/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246301963,"owners_count":20755512,"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":["dpdk","filesystem","nvme","objectstore","spdk","userspace"],"created_at":"2024-08-01T02:00:49.069Z","updated_at":"2025-03-30T09:33:25.362Z","avatar_url":"https://github.com/nvfuse.png","language":"C","readme":"NVFUSE\n======\n\nNVFUSE is an embeddable file system as a library running in the user-space incorporated with [SPDK library](https://github.com/spdk/spdk) which is a user-space NVMe driver newly introduced by Intel. Using this file system applications can directly submit I/O requests to NVMe SSDs. Then, it provides high performance, high reliability as well as POSIX-like interfaces (e.g., nvfuse_open, nvfuse_read, nvfuse_write, and nvfuse_close functions). Note that this file system doesn't make use of well-known FUSE (File System in Userspace) library to provide POSIX compatibility. Key features are listed as follows.\n\n - Running in userspace without any interactions with kernel driver so that interrupts, context switches, and memory copies are eliminated. \n - Embeddable file system as a library that introduces new interfaces are similar to POSIX API.\n - Simple file system layout that is identical to EXT family file system (e.g., EXT3).\n - Strong file system consistency and durability without pessimistic journaling mechanism (e.g., EXT4 journaling) through NVMe metadata feature as described [NVMe spec](http://nvmexpress.org/wp-content/uploads/NVM_Express_1_2_Gold_20141209.pdf). \n\nPrerequisites\n=============\nIn order to build NVFUSE, some relevant libraries must be configured. \n\n[DPDK](http://dpdk.org/doc/quick-start) and [SPDK](https://github.com/spdk/spdk) are required.\n\n    1) Move onto https://github.com/spdk/spdk\n    2) DPDK and SPDK must be installed based on their install guide explained in README.\n\nUbuntu/Debian:\n\t\n    # sudo apt-get install -y gcc make libaio-dev libfuse-dev\n\t# sudo apt-get install -y gcc g++ libcunit1-dev libaio-dev libssl-dev\n\nSPDK compile:\n\n\t# git clone https://github.com/spdk/spdk.git\n\t# cd ~/spdk\n\t# git submodule update --init\n\t# ./configure\n\t# make\n\nBuilding\n========\n\nOnce the prerequisites are installed, run 'make' within the NVFUSE directory to build the NVFUSE library and examples.\n\n    # make SPDK_ROOT_DIR=/home/ysoh/spdk DPDK_DIR=/home/ysoh/spdk/dpdk/build\n\nBefore conducting an NVFUSE application, the kernel NVMe driver must be unloaded and some hugepages must be allocated. It can be done with the automation script like the below command line.\n\n    # sudo scripts/setup.sh config\n\nDisabling ASLR (Address Space Layout Randomization) is also required like this.\n\n\t# sudo scripts/disable_aslr.sh\n\nMove to examples directory and execute helloworld. \n\n    # cd examples/helloworld\n    # sudo ./start_helloworld.sh\n\nMake use of performance benchmark.\n\t# cd examples/perf\n\t# sudo ./start_perf.sh\n\nAfter finalizing an NVFUSE application, the kernel NVMe driver and hugepages can be reverted with the automation script.\n\n    # sudo scripts/setup.sh reset\n\n| Examples Not Working (To Be Enabled) |\n|--|\n|control_plane_proc|\n|dpdk_simple_mp|\n|fio_plugin|\n|libfuse|\n|multi_process|\n|raw_block_device_perf|\n|regression_test|\n|create_1m_files|\n|fio-nvfuse|\n|fsync_test|\n|kernel_filesystem|\n|mkfs|\n|reactor|\n\nTo do\n=====\n\n - File system consistency management via light-weight journaling\n - Integration with scalable file system such as Ceph and GlusterFS\n\nContact\n=======\nYongseok Oh (yongseok.oh@sk.com)\n","funding_links":[],"categories":["C","others"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnvfuse%2Fnvfuse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnvfuse%2Fnvfuse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnvfuse%2Fnvfuse/lists"}