Wiki - https://fedoraproject.org/wiki/Changes/StratisAnacondaSupport Discussion thread - https://discussion.fedoraproject.org/t/f45-change-proposal-stratis-storage-in-anaconda-system-wide/195288
This is a proposed Change for Fedora Linux. This document represents a proposed Change. As part of the Changes process, proposals are publicly announced in order to receive community feedback. This proposal will only be implemented if approved by the Fedora Engineering Steering Committee. == Summary == This change aims to add support for installing Fedora on [https://stratis-storage.github.io/ Stratis] filesystems. This includes support in [[Anaconda/Kickstart|Kickstart]] for automated installation and manual partitioning in the Anaconda WebUI using [https://cockpit-project.org/ Cockpit Storage]. == Owner == * Name: [[User:vtrefny|Vojtech Trefny]] * Email: `vtrefny AT redhat.com` == Detailed Description == Stratis is a local storage management solution that simplifies filesystem feature orchestration by combining the block-layer and XFS filesystem into a unified CLI and D-Bus API control plane. Stratis has robust features such as, thin-provisioning, thin-safeguards, snapshots, cache tiers, and encryption. This change will make Stratis a bootable, installer-supported solution for Fedora. While Stratis has been available in Fedora for several years, this change integrates native Kickstart support to allow users to configure Stratis as their default, end-to-end storage management implementation for both the primary root (/) filesystem and supplementary filesystems. == Feedback == Stratis has been available in Fedora since [[Changes/StratisStorage|Fedora 28]] with new versions being added over the years, but support for using Stratis for the root filesystem is not yet available which limits our ability to gather feedback. We've seen [https://discussion.fedoraproject.org/t/f37-server-kickstarter-example-to-encrypt-root-fs-using-stratis/64953 some interest in using Stratis on Fedora] and there is [https://github.com/bmr-cymru/stratify a third-party tool] that allows manual installation on Stratis, but without support in the installer, we cannot really judge the popularity or potential of a new storage technology like this. == Benefit to Fedora == Stratis provides modern storage features such as thin provisioning, snapshots, cache tiers, and encryption, through a single, unified management layer. Achieving a comparable feature set requires manually layering multiple technologies, each with its own tooling and configuration. Stratis simplifies this into a single tool. While Stratis has been available in Fedora since Fedora 28, the lack of installer support has been a significant barrier to adoption: users could not use Stratis for their root filesystem without resorting to manual, unsupported workarounds. This change removes this barrier making Stratis a first-class installation option alongside Btrfs and LVM. == Scope == * Proposal owners: ** Kickstart: New kickstart commands for creating Stratis pools and filesystems will be added. Similar to the existing `volgroup` and `logvol` commands for creating LVM Volume Groups and Logical Volumes. ** Anaconda: New automatic partitioning "type" will be added for Stratis. ** Blivet: Blivet already supports Stratis, some small changes might be needed for the automatic partitioning support. * Other developers: ** The scope of this change is limited to the installer and its dependencies ([[Blivet]] and pykickstart). We are also coordinating with the Stratis project developers in case some changes or fixes are needed in Stratis itself. * Release engineering: [https://forge.fedoraproject.org/releng/tickets/issues/13395 #13395] * Policies and guidelines: N/A (not needed for this Change) * Trademark approval: N/A (not needed for this Change) * Alignment with the Fedora Strategy: == Upgrade/compatibility impact == This change does not affect upgrades. Only new installations will be affected by this change. == Early Testing (Optional) == <!-- This is an optional step for system-wide changes to avail of. If you would like to build an initial proof of concept of your change and have a member of Fedora QA help you write and/or run some initial basic tests on your code, please email [email protected] and include the link to your change proposal. This step is *optional*. --> Do you require 'QA Blueprint' support? No Early images for testing can be provided by the developers. Once Stratis is included on the installation images, manual installation using Cockpit or mountpoint assignment as described below, can be tested. == How To Test == === WebUI === The WebUI itself doesn't allow for selecting the storage technology which will be used for automated or guided partitioning. Stratis layout can be created through the external Cockpit storage editor. The installer will automatically use Stratis devices created this way. Preexisting Stratis filesystems can be also used in the mount point assignment installation method. Generic documentation for storage configuration in Anaconda can be found [https://anaconda-installer.readthedocs.io/en/latest/anaconda-webui/docs/installation-steps.html#storage-partitioning-scenarios here]. # On the ''Installation method'' page start Cockpit storage editor using the ''Launch storage editor'' option from the menu. # Create partitions required for booting (`/boot` and `/boot/efi` or `biosboot`). # Create Stratis pool. # Create Stratis filesystems for `/` and `/home` (and other filesystems as needed). # Return to the installer. # Newly created layout should be recognized and the ''Use configured storage'' option should be selected. # Finish the installation. [[File:Stratis1.png|thumb|center]][[File:Stratis2.png|thumb|center]] === Kickstart === Below are snippets of kickstart files with storage configuration. These are only examples and the exact syntax of the commands might change. Full example kickstart files for testing will be provided later. ==== Automatic partitioning ==== autopart --type=stratis Automatic partitioning with Stratis. The exact storage layout will be determined by the installer based on the available disk space. This doesn't differ from automatic partitioning with LVM or Btrfs. ==== Manual partitioning ==== part bd.01 --size=18000 --ondisk=vda part bd.02 --size=18000 --ondisk=vdb stratispool mypool bd.01 bd.02 stratisfs / --size=10000 --name=root --pool=mypool stratisfs /home --size=1 --grow --name=home --pool=mypool Example of manual Stratis configuration in kickstart. Two 18 GB partitions will be created on vda and vdb disks (`/boot` and other partitions needed for booting are not shown here). One new Stratis pool named `mypool` and two filesystems: 10 GB `root` for `/` and ~26 GB `home` for `/home` (remaining free space after creating the root filesystem) will be created. == User Experience == Users who are not using advanced storage configuration or are not interested in trying Stratis shouldn't notice any changes. Default behavior of the installer, storage type and layout will remain the same, as configured for the specific Fedora variant. For users that want to use Stratis, this will be a major simplification of the process. Stratis will be included on the Fedora images and users will be able to use Stratis for their root filesystem without any additional manual steps needed. Kickstart support is aimed mostly at advanced users, but with the Cockpit support in the WebUI, Stratis can be configured and used the same way as any other non-default storage technology. Note that there is no plan for including support for Stratis in the old GTK-based Anaconda interface. == Dependencies == Directly affected packages: blivet (`python3-blivet`), pykickstart (`python3-kickstart`), anaconda. We don't expect any other packages to be affected by this change and we don't require assistance from other packagers. `stratisd`, `stratis-cli` and `stratisd-dracut` packages will be added as new dependencies to Anaconda. Total installation size on Fedora Workstation Live image is 28 MiB. The resulting boot ISO image grows from about 1193 MiB to 1206 MiB with these packages included. == Contingency Plan == * Contingency mechanism: Reverting the changes in pykickstart and anaconda. * Contingency deadline: beta freeze * Blocks release? No == Documentation == The newly added kickstart commands will be documented in the [https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#chapter-2-kickstart-commands-in-fedora pykickstart documentation]. Documentation for Stratis can be found on the [https://stratis-storage.github.io/ project website]. Previous articles about Stratis are also available on Fedora Magazine: * [https://fedoramagazine.org/getting-started-with-stratis-up-and-running/ Getting started with Stratis – up and running] * [https://fedoramagazine.org/getting-started-with-stratis-encryption/ Getting started with Stratis – encryption] == Release Notes == -- Aoife Moloney Fedora Operations Architect Fedora Project Matrix: @amoloney:fedora.im IRC: amoloney -- _______________________________________________ devel-announce mailing list -- [email protected] To unsubscribe send an email to [email protected] Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/[email protected] Do not reply to spam, report it: https://forge.fedoraproject.org/infra/tickets/issues/new -- _______________________________________________ devel mailing list -- [email protected] To unsubscribe send an email to [email protected] Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/[email protected] Do not reply to spam, report it: https://forge.fedoraproject.org/infra/tickets/issues/new
