使用 Stratis 管理 RHEL 8/CentOS 8 上的本地存储
如何在 CentOS 8/RHEL 8 上安装 Stratis? Stratis 是一款适用于 Linux 的本地存储管理解决方案,注重简单性和易用性。它使用 Linux 的 devicemapper 子系统和 XFS 文件系统。 Stratis 还允许您访问高级存储功能,例如:
- 精简配置
- 文件系统快照
- 基于池的管理
- 监控。
作为系统管理员,您可以轻松设置新存储并管理 Stratis 高层系统集成的复杂存储配置。它是一个混合用户和内核本地存储管理系统,使用存储池的概念。
Stratis 是 RHEL 8 的新本地存储管理器。您可以在 Red Hat Enterprise Linux 8 (RHEL 8) 新功能和评论上查看其他 RHEL 8 新功能
Stratis 术语
使用 Stratis 时,您经常会遇到以下术语:
- blockdev:这是块设备,例如磁盘或磁盘分区。
- 池:池由一个或多个块设备组成,其总大小固定,等于块设备的大小。
- 文件系统:每个池可以包含一个或多个用于存储文件的文件系统。文件系统没有固定的总大小,因为它是精简配置的。如果数据大小接近文件系统的虚拟大小,Stratis 会自动增长精简卷和文件系统。
Stratis 池位于 /dev/stratis/
目录下。
Stratis 支持的设备
Stratis 可与以下块设备配合使用:
- iSCSI
- LVM 逻辑卷
- 设备映射器多路径
- 硬盘驱动器
- 卢克斯
- 固态硬盘
- NVMe存储设备
- 姆德莱德
Stratis 软件组件
Stratis 提供两个软件组件:
- stratisd 守护进程:管理块设备集合,并提供 D-Bus API。
- stratis-cli:它提供了一个命令行工具
stratis
,它本身使用 D-Bus API 与 stratisd 进行通信。
第 1 步:在 RHEL 8/CentOS 8 上安装 Stratis
RHEL 8 随 stratisd
和 stratis-cli
一起分发,可以使用 yum
包管理工具轻松安装。
sudo yum -y install stratisd stratis-cli
您可以使用 rpm 命令获取完整的软件包详细信息:
# rpm -qi stratisd stratis-cli
Name : stratisd
Version : 2.4.2
Release : 2.el8
Architecture: x86_64
Install Date: Mon 05 Jun 2023 10:57:36 PM UTC
Group : Unspecified
Size : 13527243
License : MPLv2.0
Signature : RSA/SHA256, Tue 09 Nov 2021 03:01:31 PM UTC, Key ID 15af5dac6d745a60
Source RPM : stratisd-2.4.2-2.el8.src.rpm
Build Date : Tue 09 Nov 2021 02:35:59 PM UTC
Build Host : ord1-prod-x86build004.svc.aws.rockylinux.org
Relocations : (not relocatable)
Packager : [email
.....
Name : stratis-cli
Version : 2.4.2
Release : 1.el8
Architecture: noarch
Install Date: Mon 05 Jun 2023 10:57:36 PM UTC
Group : Unspecified
Size : 311001
License : ASL 2.0
Signature : RSA/SHA256, Tue 09 Nov 2021 03:00:53 PM UTC, Key ID 15af5dac6d745a60
Source RPM : stratis-cli-2.4.2-1.el8.src.rpm
Build Date : Tue 09 Nov 2021 02:29:36 PM UTC
Build Host : ord1-prod-x86build003.svc.aws.rockylinux.org
Relocations : (not relocatable)
Packager : [email
第 2 步:启动 Stratis 服务
安装 Stratis 软件包后,您需要启动该服务并启用它。
systemctl enable --now stratisd
确认服务状态:
$ systemctl status stratisd
● stratisd.service - Stratis daemon
Loaded: loaded (/usr/lib/systemd/system/stratisd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-06-05 22:58:27 UTC; 11s ago
Docs: man:stratisd(8)
Main PID: 71943 (stratisd)
Tasks: 6 (limit: 23036)
Memory: 1.6M
CGroup: /system.slice/stratisd.service
└─71943 /usr/libexec/stratisd --log-level debug
Jun 05 22:58:27 rocky8.mylab.io stratisd[71943]: [2023-06-05T22:58:27Z INFO libstratis::stratis::run] stratis daemon version 2.4.2 started
Jun 05 22:58:27 rocky8.mylab.io stratisd[71943]: [2023-06-05T22:58:27Z INFO libstratis::stratis::run] Using StratEngine
Jun 05 22:58:27 rocky8.mylab.io stratisd[71943]: [2023-06-05T22:58:27Z INFO libstratis::engine::strat_engine::liminal::identify] Beginning initial search for Stratis block devices
Jun 05 22:58:27 rocky8.mylab.io stratisd[71943]: [2023-06-05T22:58:27Z DEBUG libstratis::stratis::run] 0: thread started
Jun 05 22:58:27 rocky8.mylab.io stratisd[71943]: [2023-06-05T22:58:27Z DEBUG libstratis::stratis::run] 1: thread started
Jun 05 22:58:27 rocky8.mylab.io stratisd[71943]: [2023-06-05T22:58:27Z DEBUG libstratis::stratis::run] 2: thread started
Jun 05 22:58:27 rocky8.mylab.io stratisd[71943]: [2023-06-05T22:58:27Z DEBUG libstratis::stratis::run] 3: thread started
Jun 05 22:58:27 rocky8.mylab.io stratisd[71943]: [2023-06-05T22:58:27Z INFO libstratis::stratis::ipc_support::dbus_support] D-Bus API is available
Jun 05 22:58:27 rocky8.mylab.io stratisd[71943]: [2023-06-05T22:58:27Z DEBUG libstratis::stratis::run] 4: thread started
Jun 05 22:58:27 rocky8.mylab.io systemd[1]: Started Stratis daemon.
第 3 步:创建 Stratis 池
为此,您需要未使用或未安装的块设备来创建 Stratis 池。每个块设备的大小应至少为 1 GiB
。
在我的 RHEL 8 服务器上,我有以下块设备:
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part
├─rhel-root 253:0 0 17G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
vdb 252:16 0 10G 0 disk
vdc 252:32 0 10G 0 disk
vdd 252:48 0 10G 0 disk
vde 252:64 0 10G 0 disk
我将使用单个块设备 /dev/vdb
创建第一个池,并使用三个块设备 /dev/vdc、/dev/vdd、/dev/vdd
创建另一个池>
这些块设备不应有分区表,请通过以下方式确认:
sudo blkid -p /<devicepath>
如果它有分区表并且您想使用它,请首先清除设备,以便 Stratis 可以使用它。
sudo wipefs -a /<devicepath>
使用一个块设备创建池
要使用一个块设备 /dev/vdb
创建池,请使用:
sudo stratis pool create mypool1 /dev/vdb
列出可用池:
$ sudo stratis pool list
Name Total Physical Size Total Physical Used
mypool1 10 GiB 52 MiB
创建包含三个块设备的池
现在,让我们创建另一个包含三个块设备的池 /dev/vdc、/dev/vdd、/dev/vdd
sudo stratis pool create mypool2 /dev/vdc /dev/vdd /dev/vde
您现在应该有两个池:
$ sudo stratis pool list
Name Total Physical Size Total Physical Used
mypool1 10 GiB 52 MiB
mypool2 30 GiB 60 MiB
从输出中我们可以看到卷的大小是所有块设备原始存储的总和。
第 4 步:从池创建文件系统
准备好池后,您可以使用以下语法在池上创建 Stratis 文件系统:
sudo stratis fs create <poolname> <filesystemname>
请参阅下面的示例。
在 mypool1 上创建文件系统
sudo stratis fs create mypool1 logs
在 mypool2 上创建文件系统
sudo stratis fs create mypool2 data
sudo stratis fs create mypool2 web
要列出已创建的文件系统,请使用:
$ sudo stratis fs list
Pool Name Name Used Created Device
mypool1 logs 546 MiB Dec 11 2018 01:00 /dev/stratis/mypool1/logs
mypool2 data 546 MiB Dec 11 2018 01:04 /dev/stratis/mypool2/data
您还可以将输出限制到指定池:
$ sudo stratis fs list mypool2
Pool Name Name Used Created Device
mypool2 data 546 MiB Dec 11 2018 01:04 /dev/stratis/mypool2/data
mypool2 web 546 MiB Dec 11 2018 01:06 /dev/stratis/mypool2/web
lsblk
输出应类似于以下内容:
$ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 19G 0 part
├─rhel-root 253:0 0 17G 0 lvm /
└─rhel-swap 253:1 0 2G 0 lvm [SWAP]
vdb 252:16 0 10G 0 disk
└─stratis-1-private-68bf465c93eb4aa98ed2264b38d8c42a-physical-originsub 253:2 0 1.8G 0 stratis
├─stratis-1-private-68bf465c93eb4aa98ed2264b38d8c42a-flex-thinmeta 253:3 0 16M 0 stratis
│ └─stratis-1-private-68bf465c93eb4aa98ed2264b38d8c42a-thinpool-pool 253:6 0 1.8G 0 stratis
│ ├─stratis-1-68bf465c93eb4aa98ed2264b38d8c42a-thin-fs-217bee04c2f14266b496eaada54a0311 253:12 0 1T 0 stratis
│ └─stratis-1-68bf465c93eb4aa98ed2264b38d8c42a-thin-fs-1f563ecb6e0c497ab3fc24d5b2e33fe1 253:13 0 1T 0 stratis
├─stratis-1-private-68bf465c93eb4aa98ed2264b38d8c42a-flex-thindata 253:4 0 1.8G 0 stratis
│ └─stratis-1-private-68bf465c93eb4aa98ed2264b38d8c42a-thinpool-pool 253:6 0 1.8G 0 stratis
│ ├─stratis-1-68bf465c93eb4aa98ed2264b38d8c42a-thin-fs-217bee04c2f14266b496eaada54a0311 253:12 0 1T 0 stratis
│ └─stratis-1-68bf465c93eb4aa98ed2264b38d8c42a-thin-fs-1f563ecb6e0c497ab3fc24d5b2e33fe1 253:13 0 1T 0 stratis
└─stratis-1-private-68bf465c93eb4aa98ed2264b38d8c42a-flex-mdv 253:5 0 16M 0 stratis
vdc 252:32 0 10G 0 disk
vdd 252:48 0 10G 0 disk
vde 252:64 0 10G 0 disk
└─stratis-1-private-557de29f274a45d583c62cafbab8edd6-physical-originsub 253:7 0 816M 0 stratis
├─stratis-1-private-557de29f274a45d583c62cafbab8edd6-flex-thinmeta 253:8 0 16M 0 stratis
│ └─stratis-1-private-557de29f274a45d583c62cafbab8edd6-thinpool-pool 253:11 0 768M 0 stratis
├─stratis-1-private-557de29f274a45d583c62cafbab8edd6-flex-thindata 253:9 0 768M 0 stratis
│ └─stratis-1-private-557de29f274a45d583c62cafbab8edd6-thinpool-pool 253:11 0 768M 0 stratis
└─stratis-1-private-557de29f274a45d583c62cafbab8edd6-flex-mdv 253:10 0 16M 0 stratis
第5步:挂载Stratis文件系统
要挂载文件系统,请使用 Stratis 在 /dev/stratis/
目录中维护的条目。请参阅下面的示例:
sudo mkdir /data
sudo mount /dev/stratis/mypool2/data /data
我还将挂载 /dev/stratis/mypool2/web
sudo mount /dev/stratis/mypool2/web /srv
检查当前挂载点:
$ sudo df -hT | grep stratis
输出是:
将持久挂载点添加到 /etc/fstab
要配置持久挂载,请获取文件系统的 UUID。
# blkid -p /dev/stratis/mypool2/web
/dev/stratis/mypool2/web: UUID="7d3b49be-51d5-499c-b12b-b5ebe118c416" TYPE="xfs" USAGE="filesystem"
# blkid -p /dev/stratis/mypool2/data
/dev/stratis/mypool2/data: UUID="a6f40f25-140c-43e3-97af-e9e771f08a54" TYPE="xfs" USAGE="filesystem"
复制打印的 UUID 并将安装选项添加到 /etc/fstab
文件
echo "UUID=7d3b49be-51d5-499c-b12b-b5ebe118c416 /srv xfs defaults 0 0" | sudo tee -a /etc/fstab
echo "UUID=a6f40f25-140c-43e3-97af-e9e771f08a54 /data xfs defaults 0 0" | sudo tee -a /etc/fstab
测试 :
sudo umount /data
sudo umount /srv
sudo mount -a
其他 Stratis 管理命令
以下是您可以在 Stratis 池上执行的其他管理任务。
删除 Stratis 文件系统
在删除 Stratis 文件系统之前,您需要先卸载它
sudo umount /mountpoint
然后销毁它:
sudo stratis filesystem destroy <poolname< <filesystemname>
例子
sudo umount /srv
sudo stratis filesystem destroy mypool2 web
确认 :
$ sudo stratis filesystem list mypool2
Pool Name Name Used Created Device
mypool2 data 546 MiB Dec 11 2018 01:04 /dev/stratis/mypool2/data
将磁盘添加到现有池
要将另一个磁盘添加到池中,请使用:
sudo stratis pool add-data <poolname> /<devicepath>
例子 :
sudo stratis pool add-data mypool1 /dev/vdf
确认 :
$ sudo stratis pool list
Name Total Physical Size Total Physical Used
mypool1 20 GiB 1.12 GiB
mypool2 30 GiB 606 MiB
创建 Stratis 快照
Stratis 快照是源 FS 的读/写
精简配置的时间点副本。
要创建 Stratis 快照,请使用:
sudo stratis fs snapshot <poolname> <fsname> <snapshotname>
例子 :
sudo stratis fs snapshot mypool2 web websnapshot-$(date +%Y-%m-%d)
确认 :
$ sudo stratis filesystem list mypool2
Pool Name Name Used Created Device
mypool2 web 546 MiB Dec 11 2018 01:06 /dev/stratis/mypool2/web
mypool2 websnapshot-2018-12-11 546 MiB Dec 11 2018 03:34 /dev/stratis/mypool2/websnapshot-2018-12-11
mypool2 data 546 MiB Dec 11 2018 01:04 /dev/stratis/mypool2/data
您可以独立于源文件系统挂载和操作快照。
sudo mount /dev/stratis/mypool2/websnapshot-2018-12-11 /mnt
for i in {1..10}; do sudo touch /mnt/$i.txt; done
ls /mnt
ls /srv
sudo umount /mnt
将 Stratis 文件系统恢复到以前的快照
可以将 Statis 文件系统恢复到之前创建的快照。见下文
首先卸载并删除原始文件系统:
sudo umount /srv
sudo stratis filesystem destroy mypool2 web
然后以原始文件系统的名称创建快照的副本:
sudo stratis filesystem snapshot mypool2 websnapshot-2018-12-11 web
挂载快照
sudo mount /dev/stratis/mypool2/web /srv
该文件系统应包含我们添加到快照的数据
$ ls /srv/
10.txt 1.txt 3.txt 5.txt 7.txt 9.txt
1..10.txt 2.txt 4.txt 6.txt 8.txt
同时更改 /etc/fstab
上的 UUID 以匹配新的文件系统 UUID。
# blkid -p /dev/stratis/mypool2/web
/dev/stratis/mypool2/web: UUID="110b737f-2117-4624-8c97-c3def8b2a539" TYPE="xfs" USAGE="filesystem"
# grep srv /etc/fstab
UUID=110b737f-2117-4624-8c97-c3def8b2a539 /srv xfs defaults 0 0
删除 Stratis 快照
要删除快照,请卸载快照。
sudo unmount /snapmountpoint
现在销毁快照:
sudo stratis filesystem destroy <poolname> <snapshotname>
例子 :
sudo stratis filesystem destroy mypool2 websnapshot-2018-12-11
查看 :
$ sudo stratis filesystem list mypool2
Pool Name Name Used Created Device
mypool2 web 546 MiB Dec 11 2018 03:58 /dev/stratis/mypool2/web
mypool2 data 546 MiB Dec 11 2018 01:04 /dev/stratis/mypool2/data
重命名文件系统
要重命名文件系统,请使用以下语法:
sudo stratis filesystem rename <poolname> <old-fsname> <new-fsname>
以下示例将日志文件系统重命名为备份
sudo stratis filesystem rename mypool1 logs backups
确认 :
$ sudo stratis filesystem list mypool1
Pool Name Name Used Created Device
mypool1 backups 546 MiB Dec 11 2018 01:00 /dev/stratis/mypool1/backups
删除 Stratis 池
要完全销毁 Stratis 池,您需要:
- 卸载池上的所有文件系统
- 销毁文件系统:
- 摧毁水池
在下面的示例中,我们将销毁 mypool2
1.
列出可用的文件系统
$ sudo stratis filesystem list mypool2
Pool Name Name Used Created Device
mypool2 data 546 MiB Dec 11 2018 01:04 /dev/stratis/mypool2/data
2.
卸载文件系统
sudo umount /dev/stratis/mypool2/data
3.
销毁文件系统:
sudo stratis filesystem destroy mypool2 data
4.
销毁池
sudo stratis pool destroy mypool2
4.
验证池是否不再存在:
$ sudo stratis pool list
Name Total Physical Size Total Physical Used
mypool1 20 GiB 1.12 GiB
6.
删除已损坏文件系统的 /etc/fstab
行
sudo vim /etc/fstab
您已经了解了如何安装和使用 Stratis 来管理 RHEL 8 和 Fedora Linux 发行版上的分层本地存储。我的下一篇文章将介绍 Stratis 在 CentOS 7、Debian 和 Ubuntu 上的安装和使用。
类似指南:
在 RHEL 8/CentOS 8 上安装和配置 NFS 服务器
在 CentOS 8/CentOS 7 上使用 Heketi 设置 GlusterFS 存储
如何使用 Minio 设置 S3 兼容的对象存储服务器