{"id":13503077,"url":"https://github.com/stratis-storage/stratisd","last_synced_at":"2025-03-29T13:30:41.869Z","repository":{"id":37663881,"uuid":"66564704","full_name":"stratis-storage/stratisd","owner":"stratis-storage","description":"Easy to use local storage management for Linux.","archived":false,"fork":false,"pushed_at":"2024-05-01T22:32:54.000Z","size":23764,"stargazers_count":786,"open_issues_count":113,"forks_count":58,"subscribers_count":34,"default_branch":"master","last_synced_at":"2024-05-01T22:51:26.735Z","etag":null,"topics":["dbus","linux","rust","storage","stratis","xfs"],"latest_commit_sha":null,"homepage":"https://stratis-storage.github.io","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stratis-storage.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.txt","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":"2016-08-25T14:24:19.000Z","updated_at":"2024-05-03T18:30:56.847Z","dependencies_parsed_at":"2024-05-03T18:30:42.732Z","dependency_job_id":"c31451d4-f82f-4abd-b507-ed041eeac145","html_url":"https://github.com/stratis-storage/stratisd","commit_stats":{"total_commits":3414,"total_committers":29,"mean_commits":"117.72413793103448","dds":"0.34270650263620384","last_synced_commit":"6f70734deeae6250e100d6a8dbe7823e25297e11"},"previous_names":[],"tags_count":73,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stratis-storage%2Fstratisd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stratis-storage%2Fstratisd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stratis-storage%2Fstratisd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stratis-storage%2Fstratisd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stratis-storage","download_url":"https://codeload.github.com/stratis-storage/stratisd/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245966935,"owners_count":20701759,"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":["dbus","linux","rust","storage","stratis","xfs"],"created_at":"2024-07-31T22:02:35.972Z","updated_at":"2025-03-29T13:30:41.377Z","avatar_url":"https://github.com/stratis-storage.png","language":"Rust","readme":"# stratisd\n\nA daemon that manages a pool of block devices to create flexible filesystems.\n\n## Background\n\nStratis (which includes [stratisd](https://github.com/stratis-storage/stratisd)\nas well as [stratis-cli](https://github.com/stratis-storage/stratis-cli)),\nprovides ZFS/Btrfs-style features by integrating layers of existing technology:\nLinux's devicemapper subsystem, and the XFS filesystem. `stratisd` manages\ncollections of block devices, and exports a D-Bus API. Stratis-cli's `stratis`\nprovides a command-line tool which itself uses the D-Bus API to communicate\nwith `stratisd`.\n\n## Website\n\nSee [https://stratis-storage.github.io/](https://stratis-storage.github.io/).\n\n## Getting involved\n\n### Communication channels\n\nIf you have questions, please don't hesitate to ask them, either on the mailing list or\nIRC.\n\n#### Mailing list\n\nDevelopment mailing list: stratis-devel@lists.fedorahosted.org, -- subscribe\n[here](https://lists.fedoraproject.org/admin/lists/stratis-devel.lists.fedorahosted.org/).\n\n#### IRC\n\nirc.libera.chat #stratis-storage.\n\n## For Developers\n\nStratisd is written in [Rust](https://www.rust-lang.org), which helps the\nimplementation be small, correct, and avoid requiring shipping with a large\nlanguage runtime.\n\n### Issue tracking and Development\n\nStratisd development uses GitHub issue tracking, and new development occurs via\nGitHub pull requests (PRs). Patches or bug reports may also be sent to the\nmailing list, if preferred.\n\n### Setting up for development\n\n#### Development Toolchain\nstratisd can be built using a range of Rust toolchain versions. The\nrecommended development toolchain usually tracks the Rust stable version,\nalthough it may lag it slightly. stratisd is guaranteed to be able to be\nbuilt on its lowest supported toolchain, which may lag the recommended\ndevelopment toolchain by a few minor versions.\n\nContributors should use the recommended development toolchain if possible, since\nthe CI makes use of the Rust linter and formatter for that version. The\nrecommended development toolchain version can be determined by inspecting the\nCI configuration files for the project.\n\n\n#### Building\nStratisd requires Rust and Cargo to build. These may be available via\nyour distribution's package manager. If not, [Rustup](https://www.rustup.rs/)\nis available to install and update the Rust toolchain.\nOnce toolchain and other dependencies are in place, run `make build` to build, and then run the\n`stratisd` executable as root.\n\n##### Building tests\nThe Makefile provides a target, `build-tests` which allows compiling the\ntests without running any of them, as a convenience to developers.\n\n##### Secondary dependencies\nThe [Stratis ci repo](https://github.com/stratis-storage/ci) includes a\nscript, `dependencies_fedora.sh`, which installs all the development\ndependencies for stratisd and its CLI on Fedora.\n\n#### Formatting\nStratisd makes use of `rustfmt` to enforce consistent formatting in Rust\nfiles.  PRs must pass the `fmt` task in the CI in order to be merged.\nRun `make fmt` to ensure your changes conform to the expected formatting\nbefore submitting a pull request. Formatting changes a bit with different\nversions of the compiler; make sure to use the current development version.\n\n#### Linting\nStratisd makes use of `clippy` to detect Rust lints. PRs must pass the\n`clippy` task in the CI in order to be merged. To check for lints, run\n`make clippy`. The lints change a bit with different versions of the compiler;\nmake sure to use the current development version.\n\n#### Configuring\n\nStratisd runs as root, and requires access to the D-Bus system bus. Thus in\norder to work properly, a D-Bus conf file must exist to grant access, either\ninstalled by distribution packaging; or manually, by copying `stratisd.conf`\nto `/etc/dbus-1/system.d/`.\n\n#### Setting Log Levels\nThe command-line option, `--log-level`, may be used to set the stratisd log\nlevel. This option sets the level for the stratisd components only.\n\nFor finer-grained control over the log level of any stratisd component or\ndependency use the `RUST_LOG` environment variable. Please consult the\ndocumentation for the `env_logger` crate for additional information on the use\nof `RUST_LOG`.\n\n#### Testing\n\nStratisd is tested in two ways. The first way makes use of the Rust test\ninfrastructure and has more access to stratisd internals. The second way\nmakes use of the stratisd D-Bus interface.\n\n##### Tests that make use of the Rust test infrastructure\nStratisd incorporates two testing modalities:\n* safe unit tests, which can be run without affecting your storage configuration\n* unsafe unit tests, which may create and destroy devices during execution\n\nTo run the safe unit tests:\n\n```bash\n$ make test\n```\n\nFor a description of the unsafe unit tests, necessary setup steps, and how to\nrun them, see [`README_tests.md`](README_tests.md).\n\n##### Test that interact with stratisd via the D-Bus\nFor a description of the D-Bus-based tests see\n[`tests/client-dbus/README.rst`](tests/client-dbus/README.rst).\n\n## Allowed Bugs\n`stratisd` has some bugs; most of these we intend to address in due course.\n\nThere is one bug that we have chosen not to fix. This is a bug in our D-Bus\nlayer that will allow incorrect un-marshalling of certain D-Bus values if\na D-Bus method is invoked with arguments that do not conform to the expected\nsignature of the method.  See\n[the GitHub issue](https://github.com/stratis-storage/project/issues/11) for\nadditional details about this bug. Behavior of `stratisd` is undefined if a\nmethod is called under the particular circumstances that allow the bug to\nmanifest.\n\n## Licensing\n\n[MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). All\ncontributions retain ownership by their original author, but must also be\nlicensed under the MPL 2.0 to be merged.\n","funding_links":[],"categories":["Rust","linux","rust"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstratis-storage%2Fstratisd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstratis-storage%2Fstratisd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstratis-storage%2Fstratisd/lists"}