Stratis Description

Dennis Keefe, Stratis Team

Stratis Description

Stratis is a tool to easily configure pools and filesystems with enhanced storage functionality that works within the existing Linux storage management stack. To achieve this, Stratis prioritizes a straightforward command-line experience, a rich API, and a fully automated approach to storage management. It builds upon elements of the existing storage stack as much as possible. Specifically, Stratis uses device-mapper, LUKS, XFS, and Clevis. Stratis may also incorporate additional technologies in the future.

Stratis 3.8.0 Release Notes

mulhern, Stratis Team

Stratis 3.8.0, which consists of stratisd 3.8.0 and stratis-cli 3.8.0 includes two significant enhancements, as well as a number of minor improvements.

Most significantly, Stratis 3.8.0, introduces a revised storage stack. The motivation for this change and overall structure of the storage stack is described in a separate post.

Stratis 3.8.0 also introduces support for multiple bindings for encryption using the same mechanism. Previously, Stratis only allowed a single binding that used a key in the kernel keyring, now multiple bindings with different keys may be used for the same pool. Similarly, multiple bindings that make use of a Clevis encryption mechanism may be used with the same pool. The number of total bindings is limited to 15.

This change enables a number of use cases that the previous scheme did not allow. For example, a pool might be configured so that it can be unlocked with one key belonging to a storage administrator, for occasional necessary maintenance, and with a different key by the designated user of the pool.

Previously, when starting an encrypted pool, the user was required to designate an unlock method, clevis or keyring. Since this release allows multiple bindings with one unlock method, it introduces a more general method of specifying an unlock mechanism on pool start. The user may specify --unlock-method=any and all available methods may be tried. The user may also specify that the pool should be opened with one particular binding, using the --token-slot option. Or the user may choose to enter a passphrase to unlock the pool instead, either by specifying the --capture-key option or a keyfile using the --keyfile-path option. Similarly, the unbind command now requires the user to specify which binding to unbind using the --token-slot option. And the rebind method requires that the user specify a particular token slot with the --token-slot option if the pool has more than one binding with the same method.

On-disk metadata format and storage stack modifications

John Baublitz, Stratis Team

Until now, Stratis has had a metadata format that, with a few exceptions, works remarkably well for our current feature set. However, as we plan for more features like RAID, integrity, and online reencryption, we've decided that we require some reworks to the order of our devicemapper devices in the storage stack and the addition of space reservation ahead of time for the metadata of new devicemapper layers. The metadata rework has been a large effort to pave the way for Stratis moving forward and will provide the ability for additional flexibility in enabling and disabling certain layers after pool creation time once the features are added.

Stratis 3.7.2 Release Notes

mulhern, Stratis Team

Stratis 3.7.2, which consists of stratisd 3.7.2 and stratis-cli 3.7.0 includes one significant enhancement, several minor enhancements, and a number of small improvements.

stratisd 3.6.5 Release Notes

mulhern, Stratis Team

stratisd 3.6.5 includes a modification to its internal locking mechanism which allows a lock which does not conflict with a currently held lock to precede a lock that does. This change relaxes a fairness restriction that gave precedence to locks based solely on the order in which they had been placed on a wait queue. This release also includes a number of housekeeping commits and minor improvements.

stratisd 3.5.8 Release Notes

mulhern, Stratis Team

stratisd 3.5.8 principally contains changes to make handling of partially
set up or torn down pools more robust. It also fixes a few errors and omissions in the management of stratisd's D-Bus layer, including supplying some previously missing D-Bus property change signals and removing D-Bus object paths to partially torn down pools which had in some cases persisted past the point when the pool should be considered stopped. In addition, it removes the dracut subpackage's dependency on plymouth.

Stratis root filesystem installation with stratify.py

Bryn Reeves, Stratis team

Support for using Stratis as the root filesystem was added in version 2.4.0 but without support in distribution installers it can be tricky for users to build systems for testing.

This blog post will look at a quick method for installing systems with Stratis as the root filesystem using the Fedora Live ISO, kickstart, and a Python script to simplify and automate the process.

stratisd filesystem as root filesystem on Fedora

John Baublitz, Stratis Team

Based on recent questions, we wanted to develop a specific guide for additional steps that need to be taken on Fedora to enable Stratis as the root filesystem for a Fedora install.

If you have not already looked at the guide for root filesystem work, please read that first. It is a prerequisite.

Stratis 3.3.0 Release Notes

mulhern, Stratis Team

Stratis 3.3.0 includes one significant enhancement and several smaller enhancements as well as number of stability and efficiency improvements.

Stratis 3.1.0 Release Notes

mulhern, Stratis Team

Stratis 3.1.0 includes significant improvements to the management of the thin-provisioning layers, as well as a number of other user-visible enhancements and bug fixes.

Thin provisioning redesign

John Baublitz, Stratis Team

Overview

For a while, we've bumped into a number of problems with our thin provisioning implementation around reliability and safety for users. After gathering a lot of feedback on our thin provisioning layer, we put together a proposal for improvements to how we currently handle allocations.

The changes can largely be divided up into three areas of improvement:

  • Predictability
  • Safety
  • Reliability

Addition of per-pool locking

John Baublitz, Stratis Team

Overview

Recently, we've merged a PR that completes our work on improved concurrency in stratisd. Previously, we had made some changes to the IPC layer to provide the ability for stratisd to handle incoming requests in parallel which you can read about here. This work allowed IPC requests to each be handled in a separate tokio task, but the Stratis engine, the part of our code that handles all of the storage stack operations, could still only be accessed sequentially.

stratisd 2.4.2 Release Notes

mulhern, Stratis Team

stratisd 2.4.2 is a bug fix release. It specifies two additional command-line dependencies for the stratis dracut module. stratisd and stratisd-min both require these dependencies to be available in order to start up.

Packaging for stratisd 2.4.1

mulhern, Stratis Team

For Fedora packaging, we have decided to split out the dracut support into a separate subpackage, stratisd-dracut. This package must be installed in order to support booting from a Stratis filesystem. All other functionality is included in the stratisd package.

Stratis 2.4.0 Release Notes

mulhern, Stratis Team

Stratis 2.4.0 includes two major user-visible changes:

  • All the functionality required to boot from a Stratis-managed root filesystem. See the prior post Stratis filesystems as the root filesystem for a more detailed discussion.
  • An enhancement to existing encryption support that allows the user to create a pool with encryption managed either by the kernel keyring or Clevis, and to subsequently bind an already encrypted pool using either mechanism. Previously, the user could create an encrypted pool using the kernel keyring only, and could bind or unbind using Clevis only.

Stratis filesystems as the root filesystem

John Baublitz, Stratis Team

While Stratis unencrypted pools could previously be used as the root filesystem for a Linux installation with proper customization of the initramfs, our most recent feature provides all of the plumbing to fully support Stratis filesystems as the root filesystem of a Linux installation.

Stratis 2.2.0 Release Notes

mulhern, Stratis Team

Stratis 2.2.0 now places Stratis filesystem symlinks in /dev/stratis, rather than /stratis. Stratis creates and maintains the symlinks by means of udev rules, rather than directly via stratisd as previously. The /stratis directory is neither created nor used by stratisd 2.2.0.

This release places management of the terminal setting for interactive encryption-key entry in stratisd rather than in stratis-cli.

This release also includes enhancements to the stratisd D-Bus interface, various bug fixes, and a change in the stratisd CLI specification for log levels.

Stratis 2.1.0 Release Notes

mulhern, Stratis Team

Stratis 2.1.0 introduces support for encryption.

It supports per-pool encryption of the devices that form a pool's data tier. A pool may be encrypted, or its constituent encrypted devices may be activated, by means of a key stored in the kernel keyring.

Stratis 2.0.0 Release Notes

mulhern, Stratis Team

Stratis 2.0 is a significant update for both the daemon and the CLI. The changes to the daemon are covered first, followed by the changes to the CLI.

stratisd 1.0.6 Release Notes

mulhern, Stratis Team

This release includes one significant bug fix and a substantial refactoring.

The bug was caused by an inconsistency in the metadata handling which led to a failure to properly update the Stratis metadata if stratisd was restarted in an environment where the system clock indicated a time earlier than when it had previously been running. See stratisd issue 1509 for further details.

Stratis 1.0 Release Notes

Friday September 28, 2018

New Features

Initial Stable Stratis Release

Stratis is a Linux local storage management tool that aims to enable easy use of advanced storage features such as thin provisioning, snapshots, and pool-based management and monitoring.

After two years of development, Stratis 1.0 has stabilized its on-disk metadata format and command-line interface, and is ready for more widespread testing and evaluation by potential users. Stratis is implemented as a daemon – stratisd – as well as a command-line configuration tool called stratis, and works with Linux kernel versions 4.14 and up.

Stratis 0.5 Release Notes

March 8, 2018

This release is suitable for developers and early testers. It should not be used with valuable data, and pools created with this release will not be supported in Stratis 1.0, due to upcoming on-disk format changes.