Stratis是RHEL发行版附带的新功能之一。Stratis是一种本地存储管理解决方案,专注于简单性和提高可用性,同时提供对高级存储功能的访问。它使用 XFS 文件系统并授予您访问高级存储功能的权限,例如:精简配置、文件系统快照、分层、基于池的管理、监控。
基本上,Stratis是一个由一个或多个本地磁盘或磁盘分区创建的存储池。Stratis 可帮助系统管理员设置和管理复杂的存储配置。
在我们继续之前,让我们先来看看您在学习过程中必然会遇到的一些技术术语:
pool:pool由一个或多个块设备组成。pool的总大小等于块设备的总和。
blockdev:您可能已经猜到了,这指的是块设备,例如磁盘分区。
文件系统:文件系统是一个精简配置层,其总大小并不固定。文件系统的实际大小会随着数据的增加而增长。当数据大小接近文件系统的虚拟大小时,Stratis 会自动增加文件系统的大小。
可以与 Stratis 一起使用的块设备包括:
LVM 逻辑卷
LUKS
SSD(固态硬盘)
设备映射器多路径
互联网SCSI
HDD(硬盘驱动器)
mdraid
NVMe 存储设备
Stratis 的软件组件
Stratis 提供 2 个软件实用程序:
Stratis-cli:这是 Stratis 附带的命令行工具。
Stratisd 守护进程:这是一个创建和管理块设备的守护进程,并起到提供DBUS API的作用。
如何在 RHEL 9/8 上安装 Stratis
了解了Stratis是什么并定义了一些术语后,我们现在在RHEL 9/8发行版(也适用于CentOS 8 )上安装和配置Stratis。
在 RHEL 9/8 上安装 Stratis
让我们看看如何在RHEL 9/8系统上安装Stratis,以 root 用户身份登录并运行命令。
# dnf install stratisd stratis-cli
要查找有关已安装软件包的更多信息,请运行该命令。
# rpm -qi stratisd stratis-cli
Stratis安装成功后,运行命令启动服务。
# systemctl enable --now stratisd
要检查Stratis的状态,请运行命令。
# systemctl status stratisd
创建 Stratis 池
要创建Stratis池,您需要未使用或未安装的块设备。此外,假设Stratisd服务已启动并正在运行。此外,您要使用的块设备大小至少需要为1 GB 。
在我们的 RHEL 9/8 系统上,我们有四个额外的块设备:/dev/xvdb、/dev/xvdc、/dev/xvdd 和 /dev/xvde。要显示块设备,请运行 lsblk 命令。
# lsblk
这些块设备都不应该有分区表。您可以使用命令来确认这一点。
# blkid -p /dev/xvdb
如果没有输出,则表示块设备上没有任何分区表。但是,如果存在分区表,则可以使用以下命令将其擦除:
# wipefs -a /<device-path>
从一个块设备创建Stratis池
您可以使用语法从单个块设备创建Stratis池。
# stratis pool create <pool-name> <block-device>
例如,要从 /dev/xvdb 创建一个池,请运行以下命令。
# stratis pool create my_pool_1 /dev/xvdb
确认创建的池运行。
# stratis pool list
从多个块设备创建 Stratis 池
要从多个设备创建池,请使用以下语法在一行上列出所有设备。
# stratis pool create <pool_name> device-1 device-2 device-n
要从 /dev/xvdc、/dev/xvdd 和 /dev/xvde 创建一个池,请运行以下命令。
# stratis pool create my_pool_2 /dev/xvdc /dev/xvdd/ /dev/xvde
再次使用命令列出可用的池。
# stratis pool list
此时,您应该有 2 个池:my_pool_1和my_pool_2。
从上图可以看出,池 my_pool_2 占用的硬盘空间是我们仅从一个具有 10GB 内存的块设备创建的第一个池的三倍。
从池中创建文件系统
创建文件系统后,您可以使用语法从其中一个池中创建文件系统。
# stratis fs create <poolname> <filesystemname>
例如,要分别从my_pool_1和my_pool_2创建filesystem-1和filesystem-2,请运行命令:
# stratis fs create my_pool_1 filesystem-1
# stratis fs create my_pool_2 filesystem-2
要查看新创建的文件系统,请运行该命令。
# stratis fs list
要将文件系统的结果缩小到一个池,请运行以下命令:
# stratis fs list <poolname>
例如,要检查my_pool_2中的文件系统,请运行该命令。
# stratis fs list my_pool_2
现在,如果您运行lsblk 命令,输出应该与下面的示例输出有些类似。
# lsblk
挂载 Stratis 文件系统
我们现在要挂载现有的文件系统以便访问它们。首先,创建挂载点。
对于第一个池中的文件系统,运行以下命令:
# mkdir /data
# mount /stratis/my_pool_1/filesystem-1 /data
对于第二个池中的第二个文件系统,运行该命令。
# mkdir /block
# mount /stratis/my_pool_2/filesystem-2 /block
要验证当前挂载点是否存在,请运行df 命令:
# df -Th | grep stratis
完美!我们可以清楚地看到我们的挂载点已经存在。
持久挂载 Stratis 文件系统
我们刚刚创建的挂载点在重启后无法继续存在。要使它们持久存在,首先获取每个文件系统的UUID :
# blkid -p /stratis/my_pool_1/filesystem-1
# blkid -p /stratis/my_pool_2/filesystem-2
现在继续并将 UUID 和挂载点选项复制到/etc/fstab,如图所示。
# echo "UUID=c632dcf5-3e23-46c8-82b6-b06a4cc9d6a7 /data xfs defaults 0 0" | sudo tee -a /etc/fstab
# echo "UUID=b485ce80-be18-4a06-8631-925132bbfd78 /block xfs defaults 0 0" | sudo tee -a /etc/fstab
为了使系统注册新配置,请运行以下命令:
# systemctl daemon-reload
要验证配置是否按预期工作,请挂载文件系统。
# mount /data
# mount /block
删除 Stratis 文件系统
要删除文件系统,首先需要卸载文件系统,如下所示。
# umount /mount-point
在这种情况下,我们应该这样做。
# umount /data
要销毁文件系统,请使用以下语法:
# stratis filesystem destroy <poolname> <filesystem-name>
因此,我们将有:
# stratis filesystem destroy my_pool_1 filesystem-1
要确认删除文件系统,请发出命令。
# stratis filesystem list my_pool_1
从输出中,我们可以清楚地看到与my_pool_1关联的文件系统已被删除。
将磁盘添加到现有 Stratis 池
您可以使用以下命令将磁盘添加到现有池:
# stratis pool add-data <poolname> /<devicepath>
例如,要向 my_pool_1 添加附加磁盘/dev/xvdf,请运行以下命令:
# stratis pool add-data my_pool_1 /dev/xvdf
请注意,添加额外的卷后, my_pool_1的大小增加了一倍。
创建 Stratis 快照
快照是在给定时间点以精简配置的方式读取和写入文件系统的副本。
要创建快照,请运行以下命令:
# stratis fs snapshot <poolname> <fsname> <snapshotname>
在这种情况下,命令将是:
# stratis fs snapshot my_pool_2 filesystem-2 mysnapshot
您可以将数据属性附加-$(date +%Y-%m-%d)到快照并添加日期标签,如下面的截图所示。
要验证快照的创建,请运行以下命令:
# stratis filesystem list <poolname>
在这种情况下,命令将是:
# stratis filesystem list my_pool_2
使用文件系统恢复到上一个快照
要将 Stratis 文件系统恢复到以前创建的快照,首先,卸载并销毁原始文件系统。
# umount /stratis/<poolname>/filesystem
在我们的场景中,情况确实如此。
# umount /stratis/my_pool_2/filesystem-2
然后使用原始文件系统创建快照的副本:
# stratis filesystem snapshot <poolname> filesystem-snapshot filesystem
命令如下:
# stratis filesystem snapshot my_pool_2 mysnapshot-2019-10-24 block
最后,挂载快照。
# mount /stratis/my-pool/my-fs mount-point
删除 Stratis 快照
要删除快照,首先要卸载快照。
# unmount /stratis/my_pool_2/mysnapshot-2019-10-24
接下来继续,继续销毁快照:
# stratis filesystem destroy my_pool_2 mysnapshot-2019-10-24
删除 Stratis 池
要删除 Stratis 池,请按照以下简单步骤操作。
1.列出池中存在的文件系统。
# stratis filesystem list <poolname>
2.接下来,卸载池中的所有文件系统。
# umount /stratis//filesystem-1
# umount /stratis//filesystem-2
# umount /stratis//filesystem-3
3.销毁文件系统。
# stratis filesystem destroy <poolname> fs-1 fs-2
4.然后,删除该池。
# stratis pool destroy poolname
在这种情况下,语法将是。
# stratis pool destroy my_pool_2
您可以再次验证池列表。
# stratis pool list
最后,删除文件系统的/etc/fstab中的条目。
在本教程中,我们将介绍如何安装和使用 Stratis 来管理 RHEL 上的分层本地存储。我们希望您觉得它有用。试一试,然后告诉我们效果如何。