How-to Stratis storage

Introduction

Stratis (which includes stratisd as well as stratis-cli), provides ZFS/Btrfs-style features by integrating layers of existing technology: Linux’s devicemapper subsystem, and the XFS filesystem. The stratisd daemon manages collections of block devices, and exports a D-Bus API. The stratis-cli provides a command-line tool which itself uses the D-Bus API to communicate with stratisd.

1. Installation

# dnf install stratisd stratis-cli

2. Start the service

# systemctl start stratisd
# systemctl enable stratisd
Created symlink /etc/systemd/system/sysinit.target.wants/stratisd.service →
/usr/lib/systemd/system/stratisd.service.

3. Locate a block device that is empty. You can use something like lsblk and blkid to locate, eg.

 
# lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   28G  0 disk 
    ├─sda1   8:1    0    1G  0 part /boot
    ├─sda2   8:2    0  2.8G  0 part [SWAP]
    └─sda3   8:3    0   15G  0 part /
    sdb      8:16   0    1T  0 disk  

# blkid -p /dev/sda
  /dev/sda: PTUUID="b7168b63" PTTYPE="dos"

Not empty

# blkid -p /dev/sdb

Empty

4. Create a Stratis pool

# stratis pool create stratis_howto /dev/sdb
# stratis pool list
  Name             Total Physical Size  Total Physical Used
  stratis_howto                  1 TiB               52 MiB

5. Create a file system from the pool

# stratis filesystem create stratis_howto fs_howto
# stratis filesystem list
Pool Name      Name      Used     Created            Device                               
stratis_howto  fs_howto  546 MiB  Nov 02 2018 07:55  /stratis/stratis_howto/fs_howto

6. Mount FS

# mount /stratis/stratis_howto/fs_howto /mnt

7. Add mount point to /etc/fstab using file system UUID

# blkid -p /stratis/stratis_howto/fs_howto
/stratis/stratis_howto/fs_howto: UUID="a38780e5-04e3-49da-8b95-2575d77e947c" TYPE="xfs" USAGE="filesystem"

# echo "UUID=a38780e5-04e3-49da-8b95-2575d77e947c /mnt xfs defaults 0 0" >> /etc/fstab