{"id":34364718,"url":"https://github.com/akiradeveloper/dm-writeboost","last_synced_at":"2025-12-18T06:58:52.580Z","repository":{"id":8631863,"uuid":"10278002","full_name":"akiradeveloper/dm-writeboost","owner":"akiradeveloper","description":"Log-structured Caching for Linux","archived":false,"fork":false,"pushed_at":"2025-01-10T02:04:33.000Z","size":28108,"stargazers_count":123,"open_issues_count":21,"forks_count":19,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-01-10T03:18:18.861Z","etag":null,"topics":["caching","device-mapper","linux-kernel","ssd"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akiradeveloper.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","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":"2013-05-25T01:22:17.000Z","updated_at":"2024-12-10T00:02:24.000Z","dependencies_parsed_at":"2024-12-10T01:17:49.553Z","dependency_job_id":"67a17188-f6f5-404d-bfe3-14deec87ec0d","html_url":"https://github.com/akiradeveloper/dm-writeboost","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/akiradeveloper/dm-writeboost","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akiradeveloper%2Fdm-writeboost","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akiradeveloper%2Fdm-writeboost/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akiradeveloper%2Fdm-writeboost/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akiradeveloper%2Fdm-writeboost/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akiradeveloper","download_url":"https://codeload.github.com/akiradeveloper/dm-writeboost/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akiradeveloper%2Fdm-writeboost/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27792966,"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-12-18T02:00:09.725Z","response_time":55,"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":["caching","device-mapper","linux-kernel","ssd"],"created_at":"2025-12-18T06:58:51.960Z","updated_at":"2025-12-18T06:58:52.574Z","avatar_url":"https://github.com/akiradeveloper.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dm-writeboost \n\n![CI](https://github.com/akiradeveloper/dm-writeboost/actions/workflows/ci.yml/badge.svg)\n\nLog-structured Caching for Linux\n\n## Overview\ndm-writeboost is originated from [Disk Caching Disk (DCD)](http://www.ele.uri.edu/research/hpcl/DCD/DCD.html).\nDCD, implemented in Solaris, is an OS-level IO controller that builds logs from in-coming writes\n(data and metadata) and then writes the logs sequentially similar to log-structured filesystem.\ndm-writeboost implements the concept on Linux's device-mapper in more sophisticated way.\nAs a further extension, dm-writeboost supports read-caching which also writes data sequentially.\n\n## Documents\n- [dm-writeboost-quickstart](https://docs.google.com/presentation/d/1v-L8Ma138o7jNBFqRl0epyc1Lji3XhUH1RGj8p7DVe8/edit?usp=sharing)  \n- doc/dm-writeboost-readme.txt  \n- [dm-writeboost-internal](https://docs.google.com/presentation/d/1mDh5ct3OR-eRxBbci3LQgaTvUFx9WTLw-kkBxNBeTD8/edit?usp=sharing)  \n- [Wiki](https://github.com/akiradeveloper/dm-writeboost/wiki)\n\n## Features\n* **Durable**: Any power failure can't break consistency because each log consists of data, metadata and\n  the checksum of the log itself.  \n* **Lifetime**: Other caching software (e.g. dm-cache) separates data and\n  metadata and therefore submits writes to SSD too frequently. dm-writeboost,\n  on the other hand, submits only one  writes for hundreds of data and\n  metadata updates so the SSD lives longer since SSD's lifetime depends on\n  how many writes are submitted.  \n* **Fast**: Since the sequential write is the best I/O pattern for every SSD and the code base is optimized for\n  in-coming random writes, the write performance is the best among all caching drivers including dm-cache and\n  bcache.  \n* **Portable**: All kernel version 3.10 or later is supported with minimum compile-time macros.\n\n## Usage\n- **Install**: `sudo make install` to install and `sudo make uninstall` to uninstall.\n  `sudo make uninstall MODULE_VERSION=xxx` can uninstall specific version that's installed.\n  DKMS is required so please install it beforehand. (usually available in package system)\n- **Make a device**: Make a script to build a caching device. Please read doc/dm-writeboost-readme.txt for\n  the dmsetup command detail.\n  After reboot, you need to rebuild the caching device rather than reformatting as in the initial setup.\n\n## Distribution Packages\n- [Debian](https://packages.debian.org/search?keywords=dm-writeboost-dkms)  \n- [Ubuntu](https://packages.ubuntu.com/search?keywords=dm-writeboost-dkms)  \n\n## Related Projects\n* https://github.com/akiradeveloper/dm-writeboost-tools: Tools to help users analyze the state of the cache device  \n* https://gitlab.com/onlyjob/writeboost: A management tool including init script  \n* https://github.com/akiradeveloper/device-mapper-tests: Testing framework written in Rust\n\n## Related works\n* Y. Hu and Q. Yang -- DCD Disk Caching Disk: A New Approach for Boosting I/O Performance (1995)\n  (http://www.ele.uri.edu/research/hpcl/DCD/DCD.html)  \n* G. Soundararajan et. al. -- Extending SSD Lifetimes with Disk-Based Write Caches (2010)\n  (https://www.usenix.org/conference/fast-10/extending-ssd-lifetimes-disk-based-write-caches)  \n* Y. Oh -- SSD RAID as Cache (SRC) with Log-structured Approach for Performance and Reliability (2014)\n  (https://ysoh.files.wordpress.com/2009/05/dm-src-ibm.pdf)\n\n## Award\nAwarded by Japanese OSS Encouragement Award. Thanks!\n\n## License\n```\nCopyright (C) 2012-2025 Akira Hayakawa \u003cruby.wktk@gmail.com\u003e\n\nThis program is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along\nwith this program; if not, write to the Free Software Foundation, Inc.,\n51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n```\n\n## Developer Info\nAkira Hayakawa (@akiradeveloper)  \ne-mail: ruby.wktk@gmail.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakiradeveloper%2Fdm-writeboost","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakiradeveloper%2Fdm-writeboost","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakiradeveloper%2Fdm-writeboost/lists"}