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

Reply via email to