{"id":27185047,"url":"https://github.com/threefoldtech/0-fs","last_synced_at":"2025-08-02T20:34:56.071Z","repository":{"id":47168124,"uuid":"142876555","full_name":"threefoldtech/0-fs","owner":"threefoldtech","description":"A new filesystem for zero-os that leverage on unionfs and a thin fuse layer to get the files on demand","archived":false,"fork":false,"pushed_at":"2024-04-24T14:02:01.000Z","size":7369,"stargazers_count":0,"open_issues_count":5,"forks_count":1,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-04-09T17:10:33.427Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/threefoldtech.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-07-30T13:04:33.000Z","updated_at":"2024-04-24T14:02:02.000Z","dependencies_parsed_at":"2025-04-09T17:10:19.457Z","dependency_job_id":"2dc17741-b7ed-4eb0-b93b-03a0cff01599","html_url":"https://github.com/threefoldtech/0-fs","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/threefoldtech/0-fs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/threefoldtech%2F0-fs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/threefoldtech%2F0-fs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/threefoldtech%2F0-fs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/threefoldtech%2F0-fs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/threefoldtech","download_url":"https://codeload.github.com/threefoldtech/0-fs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/threefoldtech%2F0-fs/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268448362,"owners_count":24252019,"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","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2025-04-09T17:10:15.170Z","updated_at":"2025-08-02T20:34:55.992Z","avatar_url":"https://github.com/threefoldtech.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 0-fs ![Tests and Build](https://github.com/threefoldtech/0-fs/workflows/Tests%20and%20Build/badge.svg)\n\n\u003e IMPORTANT: Due to issues with the fuse library, g8ufs should be built with golang v1.8.*. Newer versions of go will cause unexpected issues\n\n0-fs is the fuse file system of Zero-OS.\n\n0-fs can be mounted only using a relatively small meta data database (currently support RocksDB). On accessing\nthe file it fetches the required file chunks from a remote store, and cache it locally. The idea of using this file system\nis to speed up container creation by just mounting the container root from any image metadata file (we call it a `flist` file) and once\nthe container starts, it fetches only the required files from the remote store. So no need to clone large images locally.\n\n## Design\n\nThe fuse mount point is actually a `unionfs` mount of two layers:\n- **RW** (read-write) layer that is just an actual directory on the raw file system of your hard disk\n- **RO** (read-only) layer that is the actual fuse mount point. The read-only layer will download the files into a cache when they are opened for reading the first time\n\nBy `merging` those 2 layers on top of each other, (read-write on top) the merged mount point will\nexpose a read-write file system where all file changes, and new files get written to the RW layer,\nwhile reading file operations will be forwarded to the underlaying read-only layer. Once a file is opened\nfor writing (that is only available on the read-only layer) it will be copied (copy on write) to the\nread-write layer and afterwards all read and write operations will be handled directly by the RW layer.\n\n## Building\n\nMake sure you have `librocksdb` v5.2.1 or higher.\n\n```bash\ngodep restore\nmake\n```\n\n## Mounting the file system\n\n```\n$ ./g8ufs -h\nUsage of ./g8ufs:\n  -backend string\n    \tWorking directory of the filesystem (cache and others) (default \"/tmp/backend\")\n  -debug\n    \tPrint debug messages\n  -meta string\n    \tPath to metadata database (rocksdb)\n  -reset\n    \tReset filesystem on mount\n  -storage-url string\n    \tStorage url (default \"ardb://hub.gig.tech:16379\")\n```\n\n## More\n\nAll documentation is in the [`/docs`](./docs) directory, including a [table of contents](/docs/SUMMARY.md).\n\nIn [Getting Started with 0-fs](/docs/gettingstarted/README.md) you find the recommended path to quickly get up and running.\n\n# Owner\n[muhamadazmy](https://github.com/muhamadazmy)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthreefoldtech%2F0-fs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthreefoldtech%2F0-fs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthreefoldtech%2F0-fs/lists"}